Innholdsfortegnelse:

Redusere batteristrømforbruket for Digispark ATtiny85: 7 trinn
Redusere batteristrømforbruket for Digispark ATtiny85: 7 trinn

Video: Redusere batteristrømforbruket for Digispark ATtiny85: 7 trinn

Video: Redusere batteristrømforbruket for Digispark ATtiny85: 7 trinn
Video: Использование плат Digispark Attiny85 Mini Arduino: Урок 108 2024, November
Anonim
Redusere batteristrømforbruket til Digispark ATtiny85
Redusere batteristrømforbruket til Digispark ATtiny85
Redusere batteristrømforbruket til Digispark ATtiny85
Redusere batteristrømforbruket til Digispark ATtiny85

eller: Å kjøre en Arduino med en myntcelle fra 2032 i 2 år.

Når du bruker Digispark Arduino Board ut av esken med et Arduino -program, trekker det 20 mA ved 5 volt.

Med en 5 volts powerbank på 2000 mAh vil den bare gå i 4 dager.

Trinn 1: Reduser forsyningsspenningen ved å bruke et LiPo -batteri

Redusere forsyningsspenningen ved å bruke et LiPo -batteri
Redusere forsyningsspenningen ved å bruke et LiPo -batteri

Hvis du bruker et LiPo -batteri med 3,7 volt som strømforsyning, bruker Digispark -kortet bare 13 mA.

Med et batteri på 2000 mAh vil det gå i 6 dager.

Trinn 2: Reduser CPU -klokken

Hvis du ikke bruker USB -tilkobling, tung matematikk eller rask polling i programmet, må du redusere klokkehastigheten. F.eks. det infrarøde mottakerbiblioteket for tunge polling kjører godt på 8 MHz.

Ved 1 MHz trekker Digispark 6 mA. Med et batteri på 2000 mAh vil det gå i 14 dager.

Trinn 3: Fjern den innebygde strømlampen og strømregulatoren

Deaktiver strøm -LED -en ved å bryte kobbertråden som kobler strøm -LED -en til dioden med en kniv eller fjerne / deaktivere 102 -motstanden.

Siden du bruker et LiPo -batteri nå, kan du også fjerne innebygd strømregulator IC. Løft først de ytre pinnene ved hjelp av et loddejern og en pinne. Deretter lodder du den store kontakten og fjerner regulatoren. For små regulatorer, bruk mye loddetinn og varm opp alle tre pinnene sammen, og fjern det deretter.

Ved 1 MHz og 3,8 volt trekker Digispark nå 4,3 mA. Med et batteri på 2000 mAh vil det gå i 19 dager.

Trinn 4: Koble fra USB D- Pullup-motstanden (merket 152) Fra 5 Volt (VCC) og koble den til USB V+

Koble fra USB D- Pullup-motstanden (merket 152) Fra 5 Volt (VCC) og koble den til USB V+
Koble fra USB D- Pullup-motstanden (merket 152) Fra 5 Volt (VCC) og koble den til USB V+

Denne endringen er kompatibel med all1.x -versjoner av mikronukleus bootloader. Hvis du allerede har en ny 2.x bootloader på brettet ditt, må du oppgradere til en av de 2.5 versjonene med "activePullup" i navnet. Den enkleste måten å gjøre dette på er å installere den nye digispark board -pakken og brenne bootloaderen med anbefalt (!!! ikke standard eller aggressiv !!!) versjon.

Bryt kobbertråden på siden av motstanden som peker mot ATtiny. Dette deaktiverer USB -grensesnittet og igjen muligheten til å programmere Digispark -kortet via USB. For å aktivere den igjen, men likevel spare strøm, kobler du motstanden (merket 152) direkte til USB V+ som er lett tilgjengelig på utsiden av den shottky -dioden. Dioden og dens riktige sider kan bli funnet ved å bruke en kontinuitetstester. Den ene siden av denne dioden er koblet til pinne 8 på ATtiny (VCC) og Digispark 5V. Den andre siden er koblet til USB V+. Nå er USB pullup -motstanden bare aktivert hvis Digispark -kortet er koblet til USB f.eks. under programmeringen.

De to siste trinnene er også dokumentert her.

Ved 1 MHz og 3,8 volt trekker Digispark nå 3 mA. Med et batteri på 2000 mAh vil det gå i 28 dager.

Trinn 5: Bruk søvn i stedet for forsinkelse ()

Bruk søvn i stedet for forsinkelse ()
Bruk søvn i stedet for forsinkelse ()

I stedet for lange forsinkelser kan du bruke strømsparende CPU -søvn. Soveperioder kan vare fra 15 millisekunder til 8 sekunder i trinn på 15, 30, 60, 120, 250, 500 millisekunder og 1, 2, 4, 8 sekunder.

Siden oppstartstid fra søvn er 65 millisekunder med fabrikkinnstillingene for digispark -sikring, kan bare forsinkelser større enn 80 ms erstattes med søvn.

Under søvn bruker Digispark 27 µA. Med en 200 mAh knappcelle 2032 vil den sove i 10 måneder.

For å være korrekt må Digispark minst våkne hvert 8. sekund, kjøre i minst 65 millisekunder og trekke rundt 2 mA strøm. Dette fører til en gjennomsnittlig strøm på 42 µA og 6 måneder. I dette scenariet spiller det nesten ingen rolle om programmet ditt kjører i 10 millisekunder (hvert 8. sekund).

Koden for bruk av søvn er:

#include #include flyktige uint16_t sNumberOfSleeps = 0; ekstern flyktig usignert lang millis_timer_millis; ugyldig oppsett () {sleep_enable (); set_sleep_mode (SLEEP_MODE_PWR_DOWN); // dypeste hvilemodus…} void loop () {… sleepWithWatchdog (WDTO_250MS, true); // sove i 250 ms … sleepWithWatchdog (WDTO_2S, true); // sove i 2 s…}/ * * aWatchdogPrescaler kan være 0 (15 ms) til 3 (120 ms), 4 (250 ms) opptil 9 (8000 ms) */ uint16_t computeSleepMillis (uint8_t aWatchdogPrescaler) {uint16_t tResultMillis = 8000; for (uint8_t i = 0; jeg sparer 200 uA // bruk wdt_enable () siden den håndterer at WDP3 -biten er i bit 5 i WDTCR -registret wdt_enable (aWatchdogPrescaler); WDTCR | = _BV (WDIE) | _BV (WDIF); // Watchdog interrupt enable + reset interrupt flagg -> trenger ISR (WDT_vect) sei (); // Aktiver avbryter sleep_cpu (); // Watchdog interrupt vil vekke oss fra søvn wdt_disable (); // Fordi neste avbrudd ellers vil føre til en tilbakestilling, siden wdt_enable () setter WDE / Watchdog System Reset Aktiver ADCSRA | = ADEN; / * * Siden tidtaker kan være deaktivert, kan du justere millis bare hvis den ikke sov i hvilemodus (SM2 … 0 bits er 000) * / hvis (aAdjustMillis && (MCUCR & ((_BV (SM1) | _BV (SM0))))! = 0) {millis_timer_millis += computeSleepMillis (aWatchdogPrescaler);}} / * * Dette avbruddet vekker cpu fra søvn * / ISR (WDT_vect) {sNumberOfSleeps ++;}

Trinn 6: Endre sikringene

22 mA av de 27 mA tegnes av BOD (BrownOutDetection/underspenning deteksjon). BOD kan bare deaktiveres ved å omprogrammere sikringene, noe som bare kan gjøres med en ISP -programmerer. Ved å bruke dette skriptet kan du redusere strømmen ned til 5,5 µA og også redusere oppstartstiden fra søvn til 4 millisekunder.

5 av de resterende 5,5 µA tegnes av den aktive vakthundertelleren. Hvis du kan bruke eksterne tilbakestillinger for vekking, kan strømforbruket gå ned til 0,3 µA som angitt i databladet.

Hvis du ikke klarer å nå denne verdien, kan årsaken være at motstrømmen til schottky -dioden mellom VCC og pullup er for høy. Husk at en 12 MOhm motstand også trekker 0,3 µA ved 3,7 volt.

Dette resulterer i et gjennomsnittlig strømforbruk på 9 µA (2,5 år med en 200 mAh knappcelle 2032) hvis du f.eks. behandle data hvert 8. sekund i 3 millisekunder som her.

Trinn 7: Ytterligere informasjon

Gjeldende tegning av et Digispark -brett.

Prosjekter ved hjelp av denne instruksjonen.

Anbefalt: