Оглавление:

Снижение энергопотребления аккумулятора Digispark ATtiny85: 7 шагов
Снижение энергопотребления аккумулятора Digispark ATtiny85: 7 шагов

Видео: Снижение энергопотребления аккумулятора Digispark ATtiny85: 7 шагов

Видео: Снижение энергопотребления аккумулятора Digispark ATtiny85: 7 шагов
Видео: Arduino ATtiny85 режим энергосбережения 2024, Ноябрь
Anonim
Снижение энергопотребления аккумулятора Digispark ATtiny85
Снижение энергопотребления аккумулятора Digispark ATtiny85
Снижение энергопотребления аккумулятора Digispark ATtiny85
Снижение энергопотребления аккумулятора Digispark ATtiny85

или: Запуск Arduino с монетоприемником 2032 в течение 2 лет.

Используя вашу плату Digispark Arduino из коробки с программой Arduino, она потребляет 20 мА при 5 В.

С блоком питания на 5 В и емкостью 2000 мАч он проработает всего 4 дня.

Шаг 1. Снижение напряжения питания с помощью LiPo-аккумулятора

Снижение напряжения питания за счет использования литий-полимерной батареи
Снижение напряжения питания за счет использования литий-полимерной батареи

При использовании LiPo-аккумулятора на 3,7 В в качестве источника питания плата Digispark потребляет всего 13 мА.

С аккумулятором на 2000 мАч он проработает 6 дней.

Шаг 2. Уменьшите частоту процессора

Если вы не используете USB-соединение, тяжелую математику или быстрый опрос в своей программе, уменьшите тактовую частоту. Например. Библиотека IRMP для приема инфракрасных сигналов с интенсивным опросом хорошо работает на частоте 8 МГц.

На частоте 1 МГц ваш Digispark потребляет 6 мА. С аккумулятором на 2000 мАч он проработает 14 дней.

Шаг 3. Снимите встроенный индикатор питания и регулятор мощности

Отключите светодиод питания, оборвав медный провод, соединяющий светодиод питания с диодом, с помощью ножа или снимите / отключите резистор 102.

Поскольку сейчас вы используете LiPo аккумулятор, вы также можете удалить встроенную микросхему регулятора мощности. Сначала приподнимите внешние штыри с помощью паяльника и штифта. Затем припаяйте большой разъем и снимите регулятор. Для небольших регуляторов используйте много припоя и нагрейте все 3 контакта вместе, затем удалите его.

При 1 МГц и 3,8 В ваш Digispark теперь потребляет 4,3 мА. С аккумулятором на 2000 мАч он проработает 19 дней.

Шаг 4: Отсоедините подтягивающий резистор USB D (с пометкой 152) от напряжения 5 В (VCC) и подключите его к USB V +

Отсоединение подтягивающего резистора USB D (с пометкой 152) от напряжения 5 В (VCC) и подключение его к USB V +
Отсоединение подтягивающего резистора USB D (с пометкой 152) от напряжения 5 В (VCC) и подключение его к USB V +

Эта модификация совместима со всеми 1.x версиями загрузчика micronucleus. Если у вас уже есть новый загрузчик 2.x на вашей плате, вы должны обновить его до версии 2.5 с "activePullup" в названии. Самый простой способ сделать это - установить новый пакет платы digispark и записать загрузчик с рекомендованной (!!! не по умолчанию и не агрессивной !!!) версией.

Разорвите медный провод на стороне резистора, которая указывает на ATtiny. Это отключит интерфейс USB и, в свою очередь, возможность программирования платы Digispark через USB. Чтобы включить его снова, но при этом сохранить энергию, подключите резистор (помеченный 152) непосредственно к USB V +, который легко доступен на внешней стороне диода Шоттки. Диод и его правильные стороны можно найти с помощью прибора для проверки целостности цепи. Одна сторона этого диода подключена к выводу 8 ATtiny (VCC) и Digispark 5V. Другая сторона подключена к USB V +. Теперь подтягивающий резистор USB активируется только в том случае, если плата Digispark подключена к USB, например. во время программирования.

Последние 2 шага также описаны здесь.

При 1 МГц и 3,8 В ваш Digispark теперь потребляет 3 мА. С аккумулятором на 2000 мАч он проработает 28 дней.

Шаг 5. Используйте спящий режим вместо задержки ()

Используйте сон вместо задержки ()
Используйте сон вместо задержки ()

Вместо долгих задержек можно использовать энергосберегающий спящий режим ЦП. Сон может длиться от 15 миллисекунд до 8 секунд с шагом 15, 30, 60, 120, 250, 500 миллисекунд и 1, 2, 4, 8 секунд.

Поскольку время запуска из спящего режима составляет 65 миллисекунд с заводскими настройками предохранителя digispark, только задержки, превышающие 80 мс, могут быть заменены спящим.

Во время сна ваш Digispark потребляет 27 мкА. С кнопочным аккумулятором 2032 емкостью 200 мАч он будет спать 10 месяцев.

Чтобы быть правильным, Digispark должен просыпаться по крайней мере каждые 8 секунд, работать не менее 65 миллисекунд и потреблять ток около 2 мА. Это приводит к среднему току 42 мкА и 6 месяцам. В этом сценарии почти не имеет значения, работает ли ваша программа в течение 10 миллисекунд (каждые 8 секунд).

Код для использования сна:

#include #include volatile uint16_t sNumberOfSleeps = 0; внешний изменчивый беззнаковый длинный millis_timer_millis; недействительная настройка () {sleep_enable (); set_sleep_mode (SLEEP_MODE_PWR_DOWN); // самый глубокий спящий режим…} void loop () {… sleepWithWatchdog (WDTO_250MS, true); // засыпаем на 250 мс… sleepWithWatchdog (WDTO_2S, true); // сон на 2 с…} / * * aWatchdogPrescaler может быть от 0 (15 мс) до 3 (120 мс), от 4 (250 мс) до 9 (8000 мс) * / uint16_t computeSleepMillis (uint8_t aWatchdogPrescaler) {uint16_t tResultMillis = 8000; for (uint8_t i = 0; я экономит 200 мкА // используйте wdt_enable (), поскольку он обрабатывает бит WDP3 в бите 5 регистра WDTCR wdt_enable (aWatchdogPrescaler); WDTCR | = _BV (WDIE) | _BV (WDIF); // Разрешение прерывания сторожевого таймера + сброс флага прерывания -> требуется ISR (WDT_vect) sei (); // Разрешить прерывания sleep_cpu (); // Прерывание сторожевого таймера разбудит нас от сна wdt_disable (); // Потому что следующее прерывание будет иначе приведет к сбросу, поскольку wdt_enable () устанавливает WDE / Watchdog System Reset Enable ADCSRA | = ADEN; / * * Так как часы таймера могут быть отключены, настройте миллисекунды, только если не спали в режиме IDLE (SM2… 0 биты 000) * / if (aAdjustMillis && (MCUCR & ((_BV (SM1) | _BV (SM0))))! = 0) {millis_timer_millis + = computeSleepMillis (aWatchdogPrescaler);}} / * * Это прерывание выводит процессор из спящего режима * / ISR (WDT_vect) {sNumberOfSleeps ++;}

Шаг 6: модифицируйте предохранители

22 мА из 27 мА потребляются BOD (обнаружение коричневого выхода / обнаружение пониженного напряжения). BOD можно отключить только путем перепрограммирования предохранителей, что можно сделать только с помощью программиста ISP. С помощью этого сценария вы можете снизить ток до 5,5 мкА, а также сократить время запуска из спящего режима до 4 миллисекунд.

5 из оставшихся 5,5 мкА потребляются активным сторожевым счетчиком. Если вы можете использовать внешний сброс для пробуждения, потребление тока может снизиться до 0,3 мкА, как указано в таблице данных.

Если вы не можете достичь этого значения, причина может быть в том, что обратный ток диода Шоттки между VCC и подтяжкой слишком велик. Имейте в виду, что резистор на 12 МОм также потребляет 0,3 мкА при 3,7 вольт.

Это приводит к среднему потреблению тока 9 мкА (2,5 года с кнопочной ячейкой 2032 емкостью 200 мАч), если вы, например, обрабатывать данные каждые 8 секунд в течение 3 миллисекунд, как здесь.

Шаг 7: Дополнительная информация

Текущий чертеж доски Digispark.

Спроектируйте, используя эту инструкцию.

Рекомендуемые: