Inhoudsopgave:

Het energieverbruik van de batterij voor Digispark ATtiny85 verminderen: 7 stappen:
Het energieverbruik van de batterij voor Digispark ATtiny85 verminderen: 7 stappen:

Video: Het energieverbruik van de batterij voor Digispark ATtiny85 verminderen: 7 stappen:

Video: Het energieverbruik van de batterij voor Digispark ATtiny85 verminderen: 7 stappen:
Video: Energieke Vrijdag 13: Hernieuwbare energie maximaliseren, delen en laten renderen 2024, November
Anonim
Het energieverbruik van de batterij verminderen voor Digispark ATtiny85
Het energieverbruik van de batterij verminderen voor Digispark ATtiny85
Het energieverbruik van de batterij verminderen voor Digispark ATtiny85
Het energieverbruik van de batterij verminderen voor Digispark ATtiny85

of: Een Arduino met een 2032 knoopcel 2 jaar laten draaien.

Met behulp van uw Digispark Arduino Board uit de doos met een Arduino-programma trekt het 20 mA bij 5 volt.

Met een 5 volt powerbank van 2000 mAh gaat hij maar 4 dagen mee.

Stap 1: De voedingsspanning verlagen door een LiPo-batterij te gebruiken

De voedingsspanning verlagen door een LiPo-batterij te gebruiken
De voedingsspanning verlagen door een LiPo-batterij te gebruiken

Als u een LiPo-batterij met 3,7 volt als voeding gebruikt, verbruikt uw Digispark-bord slechts 13 mA.

Met een batterij van 2000 mAh gaat hij 6 dagen mee.

Stap 2: Verlaag de CPU-klok

Als u geen USB-verbinding, zware wiskunde of snelle polling in uw programma gebruikt, verlaag dan de kloksnelheid. bijv. de zware polling infrarood-ontvangstbibliotheek IRMP werkt goed op 8 MHz.

Bij 1 MHz trekt uw Digispark 6 mA. Met een batterij van 2000 mAh gaat hij 14 dagen mee.

Stap 3: Verwijder de ingebouwde voedings-LED en voedingsregelaar

Schakel de power-LED uit door de koperdraad die de power-LED met de diode verbindt te verbreken met een mes of verwijder / deactiveer de 102 weerstand.

Aangezien u nu een LiPo-batterij gebruikt, kunt u ook het ingebouwde stroomregelaar-IC verwijderen. Til eerst de buitenste pinnen op met behulp van een soldeerbout en een pin. Soldeer vervolgens de grote connector en verwijder de regelaar. Gebruik voor kleine regelaars veel soldeer en verwarm alle 3 de pinnen samen en verwijder deze vervolgens.

Bij 1 MHz en 3,8 volt trekt uw Digispark nu 4,3 mA. Met een batterij van 2000 mAh gaat hij 19 dagen mee.

Stap 4: De USB D- Pullup-weerstand (gemarkeerd met 152) loskoppelen van 5 Volt (VCC) en aansluiten op USB V+

De USB D- Pullup-weerstand (gemarkeerd met 152) loskoppelen van 5 Volt (VCC) en aansluiten op USB V+
De USB D- Pullup-weerstand (gemarkeerd met 152) loskoppelen van 5 Volt (VCC) en aansluiten op USB V+

Deze wijziging is compatibel met all1.x-versies van de micronucleus-bootloader. Als je al een nieuwe 2.x bootloader op je board hebt, moet je upgraden naar een van de 2.5 versies met "activePullup" in de naam. De gemakkelijkste manier om dit te doen, is door het nieuwe digispark-bordpakket te installeren en de bootloader te branden met de aanbevolen (!!!niet de standaard of agressieve!!!) versie.

Breek de koperdraad aan de kant van de weerstand die naar de ATtiny wijst. Hierdoor wordt de USB-interface uitgeschakeld en de mogelijkheid om het Digispark-bord via USB te programmeren. Om het weer in te schakelen, maar toch energie te besparen, sluit u de weerstand (gemarkeerd met 152) rechtstreeks aan op de USB V+ die gemakkelijk verkrijgbaar is aan de buitenkant van de shottky-diode. De diode en de juiste zijden kunnen worden gevonden met behulp van een continuïteitstester. Een zijde van deze diode wordt aangesloten op pin 8 van de ATtiny (VCC) en Digispark 5V. De andere kant wordt aangesloten op de USB V+. Nu wordt de USB pullup-weerstand alleen geactiveerd als het Digispark-bord is aangesloten op USB, b.v. tijdens het programmeren.

De laatste 2 stappen worden hier ook gedocumenteerd.

Bij 1 MHz en 3,8 volt trekt uw Digispark nu 3 mA. Met een batterij van 2000 mAh gaat hij 28 dagen mee.

Stap 5: Slaap gebruiken in plaats van uitstel()

Slaap gebruiken in plaats van uitstel()
Slaap gebruiken in plaats van uitstel()

In plaats van lange vertragingen kunt u de energiebesparende CPU-slaapstand gebruiken. Slaapstand kan 15 milliseconden tot 8 seconden duren in stappen van 15, 30, 60, 120, 250, 500 milliseconden en 1, 2, 4, 8 seconden.

Aangezien de opstarttijd vanuit de slaapstand 65 milliseconden is met de fabrieksinstellingen van de digispark-zekering, kunnen alleen vertragingen groter dan 80 ms worden vervangen door slaapstand.

Tijdens de slaap trekt uw Digispark 27 µA. Met een 200 mAh knoopcel 2032 slaapt hij 10 maanden.

Om correct te zijn, moet het Digispark minstens elke 8 seconden ontwaken, minimaal 65 milliseconden draaien en ongeveer 2 mA stroom trekken. Dit leidt tot een gemiddelde stroom van 42 µA en 6 maanden. In dit scenario maakt het bijna geen verschil of je programma 10 milliseconden (elke 8 seconden) draait.

De code voor het gebruik van slaap is:

#include #include vluchtig uint16_t sNumberOfSleeps = 0; externe vluchtige niet-ondertekende lange millis_timer_millis; void setup() { sleep_enable(); set_sleep_mode (SLEEP_MODE_PWR_DOWN); // diepste slaapmodus … } void loop(){ … sleepWithWatchdog(WDTO_250MS, true); // slaap 250 ms … sleepWithWatchdog (WDTO_2S, true); // 2 s slapen … } /* * aWatchdogPrescaler kan 0 (15 ms) tot 3 (120 ms), 4 (250 ms) tot 9 (8000 ms) zijn */ uint16_t computeSleepMillis(uint8_t aWatchdogPrescaler) { uint16_t tResultMillis = 8000; for (uint8_t i = 0; i bespaart 200 uA // gebruik wdt_enable() omdat het verwerkt dat de WDP3-bit in bit 5 van het WDTCR-register wdt_enable(aWatchdogPrescaler); WDTCR |= _BV(WDIE) | _BV(WDIF); // Watchdog interrupt inschakelen + reset interrupt vlag -> heeft ISR(WDT_vect) sei() nodig; // Interrupts inschakelen sleep_cpu(); // De watchdog interrupt zal ons wakker maken uit de slaap wdt_disable(); // Omdat de volgende interrupt anders zal zijn leiden tot een reset, aangezien wdt_enable() WDE / Watchdog-systeemreset instelt Activeer ADCSRA |= ADEN; /* * Aangezien de timerklok kan worden uitgeschakeld, moet u millis alleen aanpassen als u niet in de IDLE-modus slaapt (SM2…0 bits zijn 000) */ als (aAdjustMillis && (MCUCR & ((_BV(SM1) | _BV(SM0)))) != 0) { millis_timer_millis += computeSleepMillis(aWatchdogPrescaler); } } /* * Deze interrupt haalt de cpu uit de slaap */ ISR(WDT_vect) {sNumberOfSleeps++;}

Stap 6: Wijzig de zekeringen

22 mA van de 27 mA worden afgenomen door de BOD (BrownOutDetection/undervoltage detection). De BOD kan alleen worden uitgeschakeld door de zekeringen opnieuw te programmeren, wat alleen kan worden gedaan met een ISP-programmeur. Met dit script kunt u de stroom verlagen tot 5,5 µA en ook de opstarttijd van de slaapstand tot 4 milliseconden verkorten.

5 van de resterende 5,5 µA worden getrokken door de actieve waakhondteller. Als u externe resets kunt gebruiken om wakker te worden, kan het stroomverbruik dalen tot 0,3 µA zoals vermeld in de datasheet.

Als u deze waarde niet kunt bereiken, kan de reden zijn dat de tegenstroom van de schottky-diode tussen VCC en de pullup te hoog is. Houd er rekening mee dat een weerstand van 12 MOhm ook 0,3 µA trekt bij 3,7 volt.

Dit resulteert in een gemiddeld stroomverbruik van 9 µA (2,5 jaar met een 200 mAh knoopcel 2032) als u b.v. verwerk gegevens elke 8 seconden gedurende 3 milliseconden zoals hier.

Stap 7: Verdere informatie

Huidige tekening van een Digispark-bord.

Projecteer met behulp van deze instructies.

Aanbevolen: