Digispark Attiny85 потребляет больше энергии для цифрового ввода, чем ожидалось
Я пытаюсь понять, почему мой attiny85 (на плате разработчика digistump) потребляет около 3 мА при напряжении 3 В при установке контакта в качестве ВХОДА и подключении его напрямую к земле. Ток измеряется мультиметром между указанным контактом и землей (таким образом, измеряется только ток, потребляемый этим контактом). Я бы предположил, что без подтягивающего резистора он будет потреблять намного меньше, но, похоже, независимо от того, настрою ли я кнопку как INPUT или INPUT_PULLUP, ток будет одинаковым.
Скетч:
void setup() {
pinMode(3, INPUT);
//Согласно таблице данных, вывод должен быть низким, чтобы отключить внутреннюю подтяжку
digitalWrite(3, LOW);
}
void loop() {
digitalRead(3);
delay(100);
}
Я хотел бы разработать схему, которая могла бы обнаруживать размыкание нормально замкнутого переключателя, но в данный момент энергопотребление в режиме простоя слишком велико. Я планировал использовать очень высокий внешний подтягивающий элемент, но, похоже, я не могу отключить внутренний...
@schneida, 👍0
Обсуждение3 ответа
Лучший ответ:
Схема платы разработки digistump показывает, что PB3 подключен к +5 В через два резистора (1,5 кОм + 66,5) Ом. Отсюда и большой ток (5В/1560 Ом = 0,0032051 А). См. схемы https://s3.amazonaws.com/digistump-resources/files/97a1bb28_DigisparkSchematic.pdf
Как вы упомянули в ответе на мой комментарий выше, использование PB2 показывает ожидаемое поведение вывода ввода-вывода AT85.
Входному контакту требуется всего 1 мкА, чтобы подтянуть его к высокому или низкому уровню.
Что еще подключено?
Внутренний подтягивающий резистор, от 30 000 до 50 000, будет потреблять всего 0,1 мА.
Включите его и попробуйте, измерьте ток Vcc с разомкнутым контактом, а затем заземлите его.
Я пришел к тому же выводу, что он должен потреблять только 0,1 мА с этими внутренними подтягиваниями 30-50k. Кроме того, я, вероятно, не был точен, говоря, что attiny потребляет 3 мА, а то, что штырь потребляет 3 мА при измерении мультиметром между штырем и землей. Теперь, когда я пишу это, мне нужно проверить свой мультиметр, может быть, он просто измеряет, я не проверял, переключая его на настройку мкА!, @schneida
Я снял микросхему soic с платы и использовал ее на своей плате. Я установил две идентичные платы SMT, одну с обычным китайским pdip, а другую с удаленным соиком, обе микросхемы припаяны, и я использовал один и тот же источник питания. Соик от digispark потреблял в 6 раз больше тока, чем pdip, в спящем режиме: 812мкА против 137мкА. Подозреваю подделку чипов. В этой базе трудно строить догадки.
- ArduinoMEGA: 64 цифровых входа вызывают случайные значения digitalRead
- Микроконтроллер зависает при срабатывании затвора N-канального МОП-транзистора.
- Питание светодиодной ленты - Сколько ампер?
- Связь последовательного порта Digispark
- Отключение внутренних подтягивающих резисторов i2c
- Библиотеки I2C для ATTiny85?
- Нужен ли подтягивающий/понижающий резистор для цепи светодиода кнопки?
- ATtiny85 Digispark clones failing USB handshake - как их запрограммировать?
Это кажется странным и неожиданным. Входы на КМОП-устройстве, таком как Arduino, должны быть емкостными и почти не потреблять ток после того, как они установится в своем состоянии. (Для перевода конденсатора на входе в высокое состояние требуется небольшой ток, но затем, когда он заряжен, ток должен упасть до тока утечки конденсатора.), @Duncan C
Не могли бы вы подключить контакт через резистор 10 кОм к земле, когда ваш переключатель замкнут? Этого должно быть достаточно, чтобы опустить контакт, но значительно уменьшить ток., @Duncan C
Вы пишете, что "attiny85 потребляет около 3мА", так вы замеряли ток, потребляемый штырьком, или это ток потребления всего чипа? Он меняется, когда вы ничего не настраиваете? Кроме того, измерение тока для определения состояния переключателя кажется слишком сложным, вы, вероятно, могли бы напрямую прочитать уровень напряжения на переключателе., @Sim Son
3 мА — это нормальный потребляемый ток для ATtiny85 при 3 В и 8 МГц. Это не имеет никакого отношения к входному контакту, это просто ток, необходимый ядру AVR для выполнения любых инструкций, которые вы просите его выполнить., @Edgar Bonet
Вы можете использовать спящий режим, чтобы уменьшить общее потребление тока..., @ElectronSurf
Я обновил вопрос, чтобы отразить, что 3 мА измеряется с помощью мультиметра, висящего между землей и сконфигурированным выводом INPUT (а не общим потреблением attiny). Также добавлено, что это происходит на плате разработчика digistump (с портом USB)., @schneida
Это первый раз, когда я вижу, что
digitalWrite
отключает подтягивание. Обычно у вас есть толькоpinMode(3, INPUT)
илиpinMode(3, INPUT_PULLUP)
для установки или отмены подтягивания. Контакт 3 также является аналоговым входом, возможно, с контактом 0 или 1 вы можете «сэкономить» некоторый ток. Важно также написать, какую плату-компонент вы использовали (их 3-4 для Arduino IDE)., @AdrianoНа вашей девборде PB3 подключен к +5В через два резистора (1,5 кОм + 66,5) Ом. Вот причина большого тока. Не PU резистор. ;-) См. схему https://s3.amazonaws.com/digistump-resources/files/97a1bb28_DigisparkSchematic.pdf (5/1560 = 0,0032051), @Peter Paul Kiefer
Возможно у вас версия на 3 Вольта, но схемы на нее я не нашел. Я думаю, что в трехвольтовой версии резисторы имеют меньшие номиналы., @Peter Paul Kiefer
@PeterPaulKiefer вы правильно поняли - переключение на P2 теперь потребляет только 146 мкА, а также без INPUT_PULLUP оставляет контакт плавающим. Пожалуйста, сформулируйте это как быстрый ответ, чтобы я мог его принять!, @schneida