Taula de continguts:

Reducció del consum d'energia de la bateria per a Digispark ATtiny85: 7 passos
Reducció del consum d'energia de la bateria per a Digispark ATtiny85: 7 passos

Vídeo: Reducció del consum d'energia de la bateria per a Digispark ATtiny85: 7 passos

Vídeo: Reducció del consum d'energia de la bateria per a Digispark ATtiny85: 7 passos
Vídeo: 220 В переменного тока от 12 В 90 А Автомобильный генератор переменного тока 1000 Вт DIY 2024, De novembre
Anonim
Reducció del consum d'energia de la bateria per a Digispark ATtiny85
Reducció del consum d'energia de la bateria per a Digispark ATtiny85
Reducció del consum d'energia de la bateria per a Digispark ATtiny85
Reducció del consum d'energia de la bateria per a Digispark ATtiny85

o bé: executar un Arduino amb una cel·la de moneda 2032 durant 2 anys.

Utilitzant la vostra placa Digispark Arduino fora de la caixa amb un programa Arduino, atrau 20 mA a 5 volts.

Amb un banc de potència de 5 volts de 2000 mAh només funcionarà durant 4 dies.

Pas 1: reduir la tensió de subministrament mitjançant una bateria LiPo

Reducció del voltatge de subministrament mitjançant l’ús d’una bateria LiPo
Reducció del voltatge de subministrament mitjançant l’ús d’una bateria LiPo

Si utilitzeu una bateria LiPo de 3,7 volts com a subministrament, la vostra placa Digispark només consumeix 13 mA.

Amb una bateria de 2000 mAh funcionarà durant 6 dies.

Pas 2: reduïu el rellotge de la CPU

Si no utilitzeu connexió USB, càlculs intensos o sondeig ràpid al programa, reduïu la velocitat del rellotge. Per exemple. la biblioteca de recepció d'infrarojos de sondeig IRMP funciona molt bé a 8 MHz.

A 1 MHz, el vostre Digispark dibuixa 6 mA. Amb una bateria de 2000 mAh, funcionarà durant 14 dies.

Pas 3: traieu el LED d'alimentació de la placa i el regulador d'alimentació

Desactiveu el LED d'alimentació trencant el fil de coure que connecta el LED d'alimentació al díode amb un ganivet o traieu / desactiveu la resistència 102.

Com que ara feu servir una bateria LiPo, també podeu eliminar el circuit regulador de potència integrat. Primer aixequeu els passadors externs amb l'ajuda d'una planxa de soldar i un passador. A continuació, soldeu el connector gran i traieu el regulador. Per a reguladors petits, utilitzeu molta soldadura i escalfeu els 3 pins junts i traieu-los.

A 1 MHz i 3,8 volts, el vostre Digispark ara dibuixa 4,3 mA. Amb una bateria de 2000 mAh, funcionarà durant 19 dies.

Pas 4: desconnecteu la resistència USB D-Pullup (marcada 152) de 5 volts (VCC) i connecteu-la a USB V +

Desconnexió de la resistència d'extracció USB D (marcada 152) de 5 volts (VCC) i connexió a USB V +
Desconnexió de la resistència d'extracció USB D (marcada 152) de 5 volts (VCC) i connexió a USB V +

Aquesta modificació és compatible amb les versions all1.x del carregador d'arrencada de micronucleus. Si ja teniu un nou carregador d'arrencada 2.x al vostre tauler, heu d'actualitzar a una de les versions 2.5 amb "activePullup" al seu nom. La manera més senzilla de fer-ho és instal·lar el nou paquet de la placa digispark i gravar el carregador d’arrencada amb la versió recomanada (!!! no per defecte ni agressiva !!!).

Trencar el cable de coure al costat de la resistència que apunta a ATtiny. Això desactiva la interfície USB i, al seu torn, la possibilitat de programar la placa Digispark mitjançant USB. Per tornar-lo a habilitar, però encara estalvieu energia, connecteu la resistència (marcada amb 152) directament a l'USB V + que es troba fàcilment disponible a la part exterior del díode. El díode i els seus costats correctes es poden trobar mitjançant un provador de continuïtat. Un dels costats d’aquest díode està connectat al pin 8 de l’ATtiny (VCC) i el Digispark 5V. L'altra cara està connectada a l'USB V +. Ara, la resistència d’extracció USB només s’activa si la placa Digispark està connectada a USB, per exemple. durant la programació.

Els darrers 2 passos també es documenten aquí.

A 1 MHz i 3,8 volts, el vostre Digispark ara dibuixa 3 mA. Amb una bateria de 2000 mAh, funcionarà durant 28 dies.

Pas 5: feu servir Sleep en lloc de Delay ()

Utilitzeu el son en lloc del retard ()
Utilitzeu el son en lloc del retard ()

En lloc de llargs retards, podeu utilitzar el somni de la CPU per estalviar energia. La durada pot durar de 15 mil·lisegons a 8 segons en passos de 15, 30, 60, 120, 250, 500 mil·lisegons i 1, 2, 4, 8 segons.

Com que el temps d’inici des del mode de repòs és de 65 mil·lisegons amb la configuració de fusible de fàbrica digispark, només es poden substituir retards superiors a 80 ms per suspensió.

Durant el son, el vostre Digispark dibuixa 27 µA. Amb una cel·la de botó 2032 de 200 mAh dormirà durant 10 mesos.

Per ser correcte, el Digispark ha de despertar-se com a mínim cada 8 segons, funcionant durant almenys 65 mil·lisegons i dibuixant al voltant de 2 mA de corrent. Això condueix a un corrent mitjà de 42 µA i 6 mesos. En aquest escenari, gairebé no fa cap diferència si el programa s’executa durant 10 mil·lisegons (cada 8 segons).

El codi per utilitzar Sleep és:

#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); // mode de son més profund …} void loop () {… sleepWithWatchdog (WDTO_250MS, cert); // dormir durant 250 ms … sleepWithWatchdog (WDTO_2S, cert); // dormir durant 2 segons …} / * * aWatchdogPrescaler pot ser de 0 (15 ms) a 3 (120 ms), 4 (250 ms) fins a 9 (8000 ms) * / uint16_t computeSleepMillis (uint8_t aWatchdogPrescaler) {uint16_t tResultMillis = 8000; for (uint8_t i = 0; estalvio 200 uA // useu wdt_enable () ja que gestiona que el bit WDP3 es troba al bit 5 del registre WDTCR wdt_enable (aWatchdogPrescaler); WDTCR | = _BV (WDIE) | _BV (WDIF); // Activació de la interrupció del gos de vigilància + restabliment de la bandera de la interrupció -> necessita ISR (WDT_vect) sei (); // Habilita les interrupcions sleep_cpu (); // La interrupció del gos de vigilància ens despertarà del son wdt_disable (); // Perquè la propera interrupció en cas contrari condueix a un restabliment, ja que wdt_enable () estableix WDE / Watchdog System Reset Enable Hable ADCSRA | = ADEN; / * * Atès que el rellotge del temporitzador es pot desactivar, ajusteu mil·lis només si no dormiu en mode IDLE (SM2 … 0 bits són 000) * / si (aAdjustMillis && (MCUCR & ((_BV (SM1) | _BV (SM0))))! = 0) {millis_timer_millis + = computeSleepMillis (aWatchdogPrescaler);}} / * * Aquesta interrupció desperta la CPU des del son * / ISR (WDT_vect) {sNumberOfSleeps ++;}

Pas 6: Modifiqueu els fusibles

22 mA dels 27 mA són extrets per la DBO (BrownOutDetection / detecció de subtensió). El DBO només es pot desactivar reprogramant els fusibles, cosa que només es pot fer amb un programador ISP. Mitjançant aquest script podeu reduir el corrent fins a 5,5 µA i també reduir el temps d’inici del mode de repòs a 4 mil·lisegons.

5 dels 5,5 µA restants són dibuixats pel comptador actiu de vigilància. Si podeu utilitzar restabliments externs per despertar, el consum actual pot baixar a 0,3 µA tal com s’indica al full de dades.

Si no podeu assolir aquest valor, la raó pot ser que el corrent invers del díode schottky entre VCC i el pullup és massa alt. Tingueu en compte que una resistència de 12 MOhm també atrau 0,3 µA a 3,7 volts.

Això es tradueix en un consum actual mitjà de 9 µA (2,5 anys amb una cel·la de botó 2032 de 200 mAh) si, per exemple, processar dades cada 8 segons durant 3 mil·lisegons com aquí.

Pas 7: Més informació

Dibuix actual d'un tauler Digispark.

Projecte utilitzant aquestes instruccions.

Recomanat: