Cuprins:

Reducerea consumului de energie a bateriei pentru Digispark ATtiny85: 7 pași
Reducerea consumului de energie a bateriei pentru Digispark ATtiny85: 7 pași

Video: Reducerea consumului de energie a bateriei pentru Digispark ATtiny85: 7 pași

Video: Reducerea consumului de energie a bateriei pentru Digispark ATtiny85: 7 pași
Video: Q&A Întreabă orice, adică 2024, Noiembrie
Anonim
Reducerea consumului de baterie pentru Digispark ATtiny85
Reducerea consumului de baterie pentru Digispark ATtiny85
Reducerea consumului de baterie pentru Digispark ATtiny85
Reducerea consumului de baterie pentru Digispark ATtiny85

sau: Rularea unui Arduino cu o celulă de monede 2032 timp de 2 ani.

Folosind placa Digispark Arduino din cutie cu un program Arduino, acesta atrage 20 mA la 5 volți.

Cu o bancă de putere de 5 volți de 2000 mAh, aceasta va funcționa doar timp de 4 zile.

Pasul 1: Reducerea tensiunii de alimentare utilizând o baterie LiPo

Reducerea tensiunii de alimentare prin utilizarea unei baterii LiPo
Reducerea tensiunii de alimentare prin utilizarea unei baterii LiPo

Folosind o baterie LiPo cu 3,7 volți ca sursă, placa Digispark atrage doar 13 mA.

Cu o baterie de 2000 mAh va funcționa timp de 6 zile.

Pasul 2: Reduceți ceasul CPU

Dacă nu utilizați conexiune USB, matematică intensă sau sondare rapidă în program, reduceți viteza ceasului. De exemplu. biblioteca de recepție cu infraroșu de sondare IRMP funcționează bine la 8 MHz.

La 1 MHz, Digispark dvs. atrage 6 mA. Cu o baterie de 2000 mAh va funcționa timp de 14 zile.

Pasul 3: Scoateți LED-ul de alimentare de pe bord și regulatorul de putere

Dezactivați LED-ul de alimentare rupând firul de cupru care conectează LED-ul de alimentare la diodă cu un cuțit sau scoateți / dezactivați rezistorul 102.

Deoarece utilizați acum o baterie LiPo, puteți scoate și IC regulatorul de putere de la bord. Ridicați mai întâi știfturile exterioare cu ajutorul unui fier de lipit și a unui știft. Apoi lipiți conectorul mare și scoateți regulatorul. Pentru regulatoarele mici, utilizați mult lipire și încălziți toți cei 3 pini împreună, apoi scoateți-l.

La 1 MHz și 3,8 volți, Digispark dvs. atrage acum 4,3 mA. Cu o baterie de 2000 mAh va funcționa timp de 19 zile.

Pasul 4: Deconectați rezistorul USB D-Pullup (marcat 152) de la 5 volți (VCC) și conectați-l la USB V +

Deconectarea rezistorului USB D-Pullup (marcat 152) de la 5 volți (VCC) și conectarea la USB V +
Deconectarea rezistorului USB D-Pullup (marcat 152) de la 5 volți (VCC) și conectarea la USB V +

Această modificare este compatibilă cu versiunile all1.x ale bootloaderului micronucleus. Dacă aveți deja un nou bootloader 2.x pe placa dvs., trebuie să faceți upgrade la una dintre versiunile 2.5 cu „activePullup” în numele său. Cel mai simplu mod de a face acest lucru este să instalați noul pachet digispark board și să ardeți bootloader-ul cu versiunea recomandată (!!! nu implicită sau agresivă !!!).

Rupeți firul de cupru de pe partea rezistorului care indică ATtiny. Aceasta dezactivează interfața USB și, la rândul său, posibilitatea de a programa placa Digispark prin USB. Pentru a-l activa din nou, dar pentru a economisi energie, conectați rezistorul (marcat 152) direct la USB V + care este ușor disponibil în partea exterioară a diodei shottky. Dioda și laturile sale corecte pot fi găsite folosind un tester de continuitate. O parte a acestei diode este conectată la pinul 8 al ATtiny (VCC) și Digispark 5V. Cealaltă parte este conectată la USB V +. Acum rezistorul USB pullup este activat doar dacă placa Digispark este conectată la USB de ex. în timpul programării.

Ultimii 2 pași sunt, de asemenea, documentați aici.

La 1 MHz și 3,8 volți, Digispark dvs. atrage acum 3 mA. Cu o baterie de 2000 mAh va funcționa timp de 28 de zile.

Pasul 5: utilizați Sleep în loc de întârziere ()

Folosiți somn în loc de întârziere ()
Folosiți somn în loc de întârziere ()

În loc de întârzieri lungi, puteți utiliza somnul de economisire a energiei CPU. Repausurile pot dura de la 15 milisecunde la 8 secunde în pași de 15, 30, 60, 120, 250, 500 milisecunde și 1, 2, 4, 8 secunde.

Deoarece timpul de pornire de la repaus este de 65 de milisecunde, cu setările de siguranță din fabrică, doar întârzierile mai mari de 80 ms pot fi înlocuite cu repaus.

În timpul somnului dvs. Digispark atrage 27 µA. Cu o celulă buton 200 mAh 2032 va dormi timp de 10 luni.

Pentru a fi corect, Digispark trebuie să se trezească cel puțin la fiecare 8 secunde, să funcționeze timp de cel puțin 65 de milisecunde și să treacă în jur de 2 mA curent. Acest lucru duce la un curent mediu de 42 µA și 6 luni. În acest scenariu, nu face aproape nicio diferență dacă programul dvs. rulează timp de 10 milisecunde (la fiecare 8 secunde).

Codul pentru utilizarea somnului este:

#include #include volatile uint16_t sNumberOfSleeps = 0; extern volatile unsigned long millis_timer_millis; void setup () {sleep_enable (); set_sleep_mode (SLEEP_MODE_PWR_DOWN); // cel mai profund mod de somn …} bucla void () {… sleepWithWatchdog (WDTO_250MS, adevărat); // dormi 250 ms … sleepWithWatchdog (WDTO_2S, adevărat); // dormiți 2 secunde …} / * * aWatchdogPrescaler poate fi de la 0 (15 ms) la 3 (120 ms), 4 (250 ms) până la 9 (8000 ms) * / uint16_t computeSleepMillis (uint8_t aWatchdogPrescaler) {uint16_t tResultMillis = 8000; for (uint8_t i = 0; i economisește 200 uA // folosește wdt_enable () deoarece gestionează faptul că bitul WDP3 se află în bitul 5 din registrul WDTCR wdt_enable (aWatchdogPrescaler); WDTCR | = _BV (WDIE) | _BV (WDIF); // Activare întrerupere supraveghere + resetare semnalizare întrerupere -> are nevoie de ISR (WDT_vect) sei (); // Activare întrerupe somn_cpu (); // Întreruperea supraveghetorului ne va trezi din somn wdt_disable (); // Pentru că următoarea întrerupere va fi altfel duce la o resetare, deoarece wdt_enable () setează WDE / Watchdog System Reset Enable ADCSRA | = ADEN; / * * Deoarece ceasul temporizatorului poate fi dezactivat, ajustați milis numai dacă nu sunteți în modul IDLE (SM2 … 0 biți sunt 000) * / dacă (aAdjustMillis && (MCUCR & ((_BV (SM1) | _BV (SM0))))! = 0) {millis_timer_millis + = computeSleepMillis (aWatchdogPrescaler);}} / * * Această întrerupere trezește cpu-ul din repaus * / ISR (WDT_vect) {sNumberOfSleeps ++;}

Pasul 6: Modificați siguranțele

22 mA din cei 27 mA sunt trasi de BOD (BrownOutDetection / detecție subtensiune). BOD-ul poate fi dezactivat numai prin reprogramarea siguranțelor, ceea ce se poate face numai cu un programator ISP. Utilizând acest script puteți reduce curentul până la 5,5 µA și, de asemenea, puteți reduce timpul de pornire de la repaus la 4 milisecunde.

5 din restul de 5,5 µA sunt trase de către contorul activ al câinelui de pază. Dacă puteți utiliza resetări externe pentru trezire, consumul curent poate scădea la 0,3 µA, așa cum se menționează în foaia de date.

Dacă nu puteți atinge această valoare, motivul poate fi acela că curentul invers al diodei schottky între VCC și pullup este prea mare. Rețineți că un rezistor de 12 MOhm atrage, de asemenea, 0,3 µA la 3,7 volți.

Acest lucru are ca rezultat un consum curent mediu de 9 µA (2,5 ani cu o celulă buton 200 mAh 2032) dacă de ex. procesează datele la fiecare 8 secunde timp de 3 milisecunde ca aici.

Pasul 7: Informații suplimentare

Desenul curent al unei plăci Digispark.

Proiectați folosind aceste instrucțiuni.

Recomandat: