Съдържание:

Намаляване на консумацията на енергия от батерията за Digispark ATtiny85: 7 стъпки
Намаляване на консумацията на енергия от батерията за Digispark ATtiny85: 7 стъпки

Видео: Намаляване на консумацията на енергия от батерията за Digispark ATtiny85: 7 стъпки

Видео: Намаляване на консумацията на енергия от батерията за Digispark ATtiny85: 7 стъпки
Видео: Распаковка. Тест. Аккумуляторная батарея серии AA GP ReCyko 2700, 2600 мАч. Pro Professional 2000 2024, Ноември
Anonim
Намаляване на консумацията на енергия от батерията за Digispark ATtiny85
Намаляване на консумацията на енергия от батерията за Digispark ATtiny85
Намаляване на консумацията на енергия от батерията за Digispark ATtiny85
Намаляване на консумацията на енергия от батерията за Digispark ATtiny85

или: Управление на Arduino с монетна клетка 2032 за 2 години.

Използвайки вашия Digispark Arduino Board извън кутията с програма Arduino, той извлича 20 mA при 5 волта.

С 5 -волтова захранваща банка от 2000 mAh тя ще работи само за 4 дни.

Стъпка 1: Намаляване на захранващото напрежение чрез използване на LiPo батерия

Намаляване на захранващото напрежение чрез използване на LiPo батерия
Намаляване на захранващото напрежение чрез използване на LiPo батерия

Използването на LiPo батерия с 3,7 волта като захранване вашата Digispark платка изразходва само 13 mA.

С батерия от 2000 mAh ще работи 6 дни.

Стъпка 2: Намалете часовника на процесора

Ако не използвате USB връзка, тежка математика или бързо анкетиране в програмата си, намалете тактовата честота. Напр. IRMP библиотеката за тежко анкетиране IRMP работи добре на 8 MHz.

При 1 MHz вашият Digispark извлича 6 mA. С батерия от 2000 mAh ще работи 14 дни.

Стъпка 3: Премахнете вградения светодиод за захранване и регулатора на захранването

Деактивирайте светодиода за захранване, като счупите медната жица, която свързва захранващия светодиод с диода с нож или премахнете / деактивирайте резистора 102.

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

При 1 MHz и 3,8 волта вашият Digispark сега извлича 4,3 mA. С батерия от 2000 mAh ще работи 19 дни.

Стъпка 4: Изключване на USB D-Pullup резистор (маркиран 152) от 5 волта (VCC) и го свържете към USB V+

Изключване на USB D-Pullup резистор (маркиран 152) от 5 волта (VCC) и го свържете към USB V+
Изключване на USB D-Pullup резистор (маркиран 152) от 5 волта (VCC) и го свържете към USB V+

Тази модификация е съвместима с всички версии 1.x на микроядрения буутлоудър. Ако вече имате нов 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 MHz и 3.8 волта вашият Digispark сега извлича 3 mA. С батерия от 2000 mAh той ще работи в продължение на 28 дни.

Стъпка 5: Използвайте Sleep вместо Delay ()

Използвайте сън вместо забавяне ()
Използвайте сън вместо забавяне ()

Вместо дълги забавяния можете да използвате енергоспестяващ CPU сън. Сънят може да продължи от 15 милисекунди до 8 секунди на стъпки от 15, 30, 60, 120, 250, 500 милисекунди и 1, 2, 4, 8 секунди.

Тъй като времето за стартиране от режим на заспиване е 65 милисекунди с фабричните настройки на предпазителя digispark, само закъснения, по -големи от 80 ms, могат да бъдат заменени от режим на заспиване.

По време на сън вашият Digispark извлича 27 µA. С клетка с бутон 200 mAh 2032 тя ще спи 10 месеца.

За да бъдем правилни, Digispark трябва да се събужда поне на всеки 8 секунди, да работи поне 65 милисекунди и да изтегля около 2 mA ток. Това води до среден ток от 42 µA и 6 месеца. В този сценарий няма почти никаква разлика, ако вашата програма работи в продължение на 10 милисекунди (на всеки 8 секунди).

Кодът за използване на сън е:

#include #include volatile uint16_t sNumberOfSleeps = 0; външни летливи неподписани дълги millis_timer_millis; void setup () {sleep_enable (); set_sleep_mode (SLEEP_MODE_PWR_DOWN); // най -дълбок режим на заспиване …} void loop () {… sleepWithWatchdog (WDTO_250MS, вярно); // спи за 250 ms … sleepWithWatchdog (WDTO_2S, вярно); // спи за 2 s…}/ * * aWatchdogPrescaler може да бъде 0 (15 ms) до 3 (120 ms), 4 (250 ms) до 9 (8000 ms) */ uint16_t computeSleepMillis (uint8_t aWatchdogPrescaler) {uint16_t tResultMillis = 8000; for (uint8_t i = 0; i спестява 200 uA // използвайте wdt_enable (), тъй като обработва, че битът WDP3 е в бит 5 на регистъра 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) * / ако (aAdjustMillis && (MCUCR & ((_BV (SM1) | _BV (SM0))))! = 0) {millis_timer_millis += computeSleepMillis (aWatchdogPrescaler);}} / * * Това прекъсване събужда процесора от режим на заспиване * / ISR (WDT_vect) {sNumberOfSleeps ++;}

Стъпка 6: Променете предпазителите

22 mA от 27 mA се изтеглят от BOD (BrownOutDetection/детекция на понижено напрежение). BOD може да бъде деактивиран само чрез препрограмиране на предпазителите, което може да стане само с ISP програмист. С помощта на този скрипт можете да намалите тока до 5,5 µA и също така да намалите времето за стартиране от режим на заспиване до 4 милисекунди.

5 от останалите 5.5 µA се изтеглят от брояча на активния пазач. Ако можете да използвате външни нулиране за събуждане, текущият консуматор може да слезе до 0,3 µA, както е посочено в листа с данни.

Ако не можете да достигнете тази стойност, причината може да бъде, че обратният ток на диода на Шотки между VCC и издърпването е твърде висок. Имайте предвид, че 12 MOhm резистор също извлича 0,3 µA при 3,7 волта.

Това води до средна консумация на ток от 9 µA (2,5 години с клетка с бутон 200 mAh 2032), ако например обработвайте данни на всеки 8 секунди за 3 милисекунди, както тук.

Стъпка 7: Допълнителна информация

Текущ чертеж на дъска Digispark.

Проектирайте, като използвате тези инструкции.

Препоръчано: