Sommario:
- Passaggio 1: riduzione della tensione di alimentazione utilizzando una batteria LiPo
- Passaggio 2: ridurre il clock della CPU
- Passaggio 3: rimuovere il LED di alimentazione integrato e il regolatore di alimentazione
- Passaggio 4: scollegare la resistenza di pullup USB D- (contrassegnata con 152) da 5 Volt (VCC) e collegarla a USB V+
- Passaggio 5: usa Sleep invece di Delay()
- Passaggio 6: modificare i fusibili
- Passaggio 7: ulteriori informazioni
Video: Ridurre il consumo di batteria per Digispark ATtiny85: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
oppure: far funzionare un Arduino con una cella a bottone 2032 per 2 anni.
Usando la tua scheda Arduino Digispark fuori dalla scatola con un programma Arduino, assorbe 20 mA a 5 volt.
Con un power bank da 5 volt di 2000 mAh funzionerà solo per 4 giorni.
Passaggio 1: riduzione della tensione di alimentazione utilizzando una batteria LiPo
Usando una batteria LiPo con 3,7 volt come alimentazione, la tua scheda Digispark assorbe solo 13 mA.
Con una batteria da 2000 mAh funzionerà per 6 giorni.
Passaggio 2: ridurre il clock della CPU
Se non si utilizza la connessione USB, la matematica pesante o il polling veloce nel programma, ridurre la velocità di clock. Per esempio. la libreria di ricezione a infrarossi a polling pesante IRMP funziona bene a 8 MHz.
A 1 MHz il tuo Digispark assorbe 6 mA. Con una batteria da 2000 mAh funzionerà per 14 giorni.
Passaggio 3: rimuovere il LED di alimentazione integrato e il regolatore di alimentazione
Disabilitare il LED di alimentazione rompendo con un coltello il filo di rame che collega il LED di alimentazione al diodo oppure rimuovere/disabilitare la resistenza da 102.
Poiché ora stai utilizzando una batteria LiPo, puoi anche rimuovere l'IC del regolatore di potenza di bordo. Per prima cosa sollevare i perni esterni con l'aiuto di un saldatore e un perno. Quindi saldare il connettore grande e rimuovere il regolatore. Per i regolatori piccoli, usa molta saldatura e riscalda tutti e 3 i pin insieme, quindi rimuovilo.
A 1 MHz e 3,8 volt il tuo Digispark ora assorbe 4,3 mA. Con una batteria da 2000 mAh funzionerà per 19 giorni.
Passaggio 4: scollegare la resistenza di pullup USB D- (contrassegnata con 152) da 5 Volt (VCC) e collegarla a USB V+
Questa modifica è compatibile con tutte le versioni 1.x del bootloader micronucleus. Se hai già un nuovo bootloader 2.x sulla tua scheda, devi aggiornare a una delle versioni 2.5 con "activePullup" nel nome. Il modo più semplice per farlo è installare il nuovo pacchetto della scheda digispark e masterizzare il bootloader con la versione consigliata (!!!non quella predefinita o aggressiva!!!).
Rompere il filo di rame sul lato del resistore che punta all'ATtiny. Questo disabilita l'interfaccia USB e a sua volta la possibilità di programmare la scheda Digispark tramite USB. Per abilitarlo di nuovo, ma comunque risparmiare energia, collega il resistore (contrassegnato con 152) direttamente all'USB V+ che è facilmente disponibile sul lato esterno del diodo shottky. Il diodo e i suoi lati corretti possono essere trovati utilizzando un tester di continuità. Un lato di questo diodo è collegato al pin 8 di ATtiny (VCC) e Digispark 5V. L'altro lato è collegato a USB V+. Ora la resistenza di pullup USB viene attivata solo se la scheda Digispark è collegata a USB, ad es. durante la programmazione.
Anche gli ultimi 2 passaggi sono documentati qui.
A 1 MHz e 3,8 volt il tuo Digispark ora assorbe 3 mA. Con una batteria da 2000 mAh funzionerà per 28 giorni.
Passaggio 5: usa Sleep invece di Delay()
Invece di lunghi ritardi è possibile utilizzare la sospensione della CPU a risparmio energetico. Le pause possono durare da 15 millisecondi a 8 secondi con incrementi di 15, 30, 60, 120, 250, 500 millisecondi e 1, 2, 4, 8 secondi.
Poiché il tempo di avvio dalla sospensione è di 65 millisecondi con le impostazioni di fabbrica del fusibile digispark, solo i ritardi superiori a 80 ms possono essere sostituiti dalla sospensione.
Durante il sonno il tuo Digispark assorbe 27 µA. Con una cella a bottone da 200 mAh 2032 dormirà per 10 mesi.
Per essere corretti, il Digispark deve svegliarsi almeno ogni 8 secondi, funzionando per almeno 65 millisecondi e assorbendo circa 2 mA di corrente. Questo porta a una corrente media di 42 µA e 6 mesi. In questo scenario non fa quasi alcuna differenza se il programma viene eseguito per 10 millisecondi (ogni 8 secondi).
Il codice per usare il sonno è:
#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); // modalità di sospensione più profonda … } void loop(){ … sleepWithWatchdog(WDTO_250MS, true); // dormi per 250 ms … sleepWithWatchdog(WDTO_2S, true); // sleep per 2 s … } /* * aWatchdogPrescaler può essere compreso tra 0 (15 ms) e 3 (120 ms), 4 (250 ms) fino a 9 (8000 ms) */ uint16_t computeSleepMillis(uint8_t aWatchdogPrescaler) { uint16_t tResultMillis = 8000; for (uint8_t i = 0; i salva 200 uA // usa wdt_enable() poiché gestisce che il bit WDP3 è nel bit 5 del registro WDTCR wdt_enable(aWatchdogPrescaler); WDTCR |= _BV(WDIE) | _BV(WDIF); // Abilita interrupt watchdog + reset flag interrupt -> necessita ISR(WDT_vect) sei(); // Abilita gli interrupt sleep_cpu(); // L'interrupt watchdog ci sveglierà dallo sleep wdt_disable(); // Perché il prossimo interrupt sarà altrimenti portare a un reset, dal momento che wdt_enable() imposta WDE / Watchdog System Reset Enable ADCSRA |= ADEN; /* * Poiché l'orologio del timer può essere disabilitato, regolare millis solo se non dormito in modalità IDLE (SM2…0 bit sono 000) */ if (aAdjustMillis && (MCUCR & ((_BV(SM1) | _BV(SM0)))) != 0) { millis_timer_millis += computeSleepMillis(aWatchdogPrescaler); } } /* * Questo interrupt riattiva la cpu dallo stato di sospensione */ ISR(WDT_vect) { sNumberOfSleeps++; }
Passaggio 6: modificare i fusibili
22 mA dei 27 mA vengono prelevati dal BOD (BrownOutDetection/rilevamento sottotensione). Il BOD può essere disabilitato solo riprogrammando i fusibili, operazione possibile solo con un programmatore ISP. Usando questo script puoi ridurre la corrente fino a 5,5 µA e anche ridurre il tempo di avvio dalla sospensione a 4 millisecondi.
5 dei restanti 5,5 µA vengono prelevati dal contatore di watchdog attivo. Se è possibile utilizzare reset esterni per il risveglio, il consumo di corrente può scendere a 0,3 µA come indicato nella scheda tecnica.
Se non riesci a raggiungere questo valore, il motivo può essere che la corrente inversa del diodo Schottky tra VCC e il pullup è troppo alta. Tieni presente che un resistore da 12 MOhm assorbe anche 0,3 µA a 3,7 volt.
Ciò si traduce in un consumo medio di corrente di 9 µA (2,5 anni con una pila a bottone da 200 mAh 2032) se ad es. elabora i dati ogni 8 secondi per 3 millisecondi come qui.
Passaggio 7: ulteriori informazioni
Disegno attuale di una tavola Digispark.
Progetto utilizzando queste istruzioni.
Consigliato:
Inseguitore solare Arduino fai da te (per ridurre il riscaldamento globale): 3 passaggi
Inseguitore solare Arduino fai da te (per ridurre il riscaldamento globale): ciao a tutti, in questo tutorial vi mostrerò come realizzare un inseguitore solare utilizzando il microcontrollore arduino. Nel mondo di oggi soffriamo di una serie di problemi preoccupanti. Uno di questi è il cambiamento climatico e il riscaldamento globale. Il bisogno di
Risparmio batteria, interruttore di protezione contro la scarica con ATtiny85 per auto al piombo o batteria Lipo: 6 passaggi
Risparmio batteria, interruttore di interruzione della protezione di scarica con ATtiny85 per auto al piombo o batteria Lipo: poiché ho bisogno di diverse protezioni della batteria per le mie auto e sistemi solari, avevo trovato quelle commerciali a $ 49 troppo costose. Usano anche troppa potenza con 6 mA. Non ho trovato indicazioni sull'argomento. Quindi ho creato il mio che disegna 2mA. Come
Come ridurre il contatto con il timer per lavarsi le mani #Covid-19: 3 passaggi
Come fare un timer meno contatto per lavarsi le mani #Covid-19: Ciao! Questo tutorial ti mostrerà come rendere meno contatto un timer. anzi in questo periodo di epidemia di coronavirus è davvero importante lavarsi bene le mani. Ecco perché ho creato questo timer. Per questo timer ho usato un LCD Nokia 5110
Come misurare correttamente il consumo energetico dei moduli di comunicazione wireless nell'era del basso consumo energetico?: 6 passaggi
Come misurare correttamente il consumo energetico dei moduli di comunicazione wireless nell'era del basso consumo energetico?: Il basso consumo energetico è un concetto estremamente importante nell'Internet delle cose. La maggior parte dei nodi IoT deve essere alimentata da batterie. Solo misurando correttamente il consumo energetico del modulo wireless possiamo stimare con precisione quanta batteria ho
Mod una batteria per elettroutensili a batteria per funzionare con la corrente a muro: 5 passaggi
Mod una batteria per utensili elettrici senza fili per funzionare con la corrente a muro: NOTA: ho scritto questo 'bile prima di avere una comprensione completa dell'elettronica. Questa è un'idea piuttosto cattiva e molto probabilmente distruggerà la tua batteria. Sembrava intelligente in quel momento. Vabbè, vivi e impara. Aggiungendo un jack alla batteria di un cor