Fråga:
Vad är (eller hur använder jag) Arduinos energisparalternativ för att förlänga batteriets livslängd?
sachleen
2014-02-12 04:48:31 UTC
view on stackexchange narkive permalink

För &-batteridrivna projekt är det nödvändigt att minska strömförbrukningen.

Jag vet lite om att använda en timer och avbryta för att sätta mikrokontrollern i vila när den inte gör någonting. / p>

Jag har också läst att du kan inaktivera vissa kringutrustning för att ytterligare spara ström.

Här är en sida som förklarar dessa: Energispartekniker

Min fråga:

  • Vilka andra tekniker finns det för att spara ström?
  • Finns det några bibliotek som gör det lättare att använda dessa AVR-funktioner?
Fyra svar:
#1
+33
Ricardo
2014-02-12 07:53:50 UTC
view on stackexchange narkive permalink

Obs! Jag vill påpeka att även om mitt svar accepterades, bör läsaren (du) verkligen läsa Anindos svar först om du verkligen vill spara energi med något Arduino-kort. När du väl har tagit upp dessa objekt i din design bör du läsa mitt svar och oroa dig för hur du ställer in MCU i lågeffektläge.

Med detta sagt finns det flera tekniker för att göra en Arduino sparar ström. Jag listar några och pekar sedan på en sida som förklarar dem alla mer detaljerat.

  1. Medan styrenheten inte gör något viktigt (mellan en läsning av en sensor och nästa, till exempel) kan du placera styrenheten i ett av vilolägen nedan med kommandot set_sleep_mode (SLEEP_MODE_PWR_DOWN) . Bredvid varje läge finns den ungefärliga strömförbrukningen för varje läge.

    • SLEEP_MODE_IDLE: 15 mA
    • SLEEP_MODE_ADC: 6,5 mA
    • SLEEP_MODE_PWR_SAVE: 1,62 mA
    • SLEEP_MODE_EXT_STANDBY: 1,62 mA
    • SLEEP_MODE_STANDBY: 0,84 mA
    • SLEEP_MODE_PWR_DOWN: 0,36 mA
  2. Inaktivera detektering av mörkbrun ( kretsarna som stänger av styrenheten när låg spänning detekteras).

  3. Stäng av ADC (analog till digita-omvandling)

  4. Använd den interna klockan

Sedan, när du sätter kontrollen i vila, måste du använda en eller flera mekanismer nedan för att väcka kontrollen och göra något med den:

  • Vakna upp med en signal

  • Vakna upp med en timer

Detta är en sammanfattning som jag gjorde från -

Den artikeln gäller mestadels ATmega328P, men tekniken gäller även andra Arduino-kompatibla styrenheter. Som TheDoctor sa bra, måste du kontrollera datapaketet för att se till att din controller stöder någon av dessa tekniker och hur man gör det mer exakt.

Tack för att du hänvisade till min sida [www.gammon.com.au/power ](http://www.gammon.com.au/power). Att använda alla tekniker som nämns på den skulle göra det möjligt för dig att konsumera cirka 100 nA (0,1 µA). Andra tekniker som kan ha stor inverkan är att köra med en lägre frekvens och en lägre spänning. Plus vad Anindo Ghosh sa om att inte använda spänningsregulatorer. Jag skapade en [Temperatur- och luftfuktighetssensor - batteridriven] (http://www.gammon.com.au/forum/?id=12106) som använder många av dessa tekniker, som fortfarande går starkt, efter ett par år på batterier.
@NickGammon - För att vara rättvis, jag tycker att din utmärkta artikel förtjänade en bättre referens, så jag redigerade mitt svar i den utsträckningen. Tack för den fantastiska artikeln - väldigt tydlig och komplett! Och välkommen till Arduino.SE. Det är bra att ha dig här.
#2
+24
Anindo Ghosh
2014-02-12 14:21:43 UTC
view on stackexchange narkive permalink

Realistiskt sett är det största slöseriet på ett Arduino-kort linjär spänningsregulator på det.

  1. Så länge som mikrokontrollern på kortet, lysdioderna eller andra kringutrustningar drar ström, slösar den linjära regulatorn effekt lika med skillnaden mellan matning och kortspänning x aktuell ritad .

    Så en första fix skulle vara att koppla bort strömindikatorlampan på kortet och inte använda någon av de andra lysdioderna så långt som möjligt För det andra, förse kortet med en så låg spänning som möjligt som är tillräckligt för att driva den inbyggda regulatorn.

  2. På originalutförandena använder de spänningsregulatorer inte skryta med låg viloström. Det betyder att även om ingenting drar kraft inom styrelsen slösar regulatorn själv en hel del kraft hela tiden den är på.

    En enkel lösning är att byta ut den inbyggda regulatorn med en LDO (linjär regulator med lågt utfall) klassad för extremt låg viloström. Parametriska sökningar på olika leverantörssidor ger troliga ersättare.

  3. Även med ovanstående steg tillhandahåller Arduino-kortet inte en mekanism för att ställa in LDO i lågeffektläge, om den valda LDO stöder detta. Energisnåla konstruktioner använder vanligtvis en "viloläge" -stift på spänningsregulatorer för att spara en hel del energi - inte ett alternativ här.

Även med alla möjliga energisparlägen och trick som tillämpas på mikrokontroller nivå, Arduino är helt enkelt inte utformad för att vara en ultra-low-power enhet ur lådan. Efter att ha experimenterat med flera icke-triviala applikationer har jag funnit att det bästa som realistiskt kan uppnås är cirka 10% till 30% energibesparing beroende på applikation, eftersom spänningsregulatorn och lysdioderna kommer att förbruka resten ändå.

* förse kortet med så låg spänning som möjligt som är tillräckligt för att driva den inbyggda regulatorn * Eller förse 5V med en hackad USB-kabel.
#3
+13
TheDoctor
2014-02-12 05:00:14 UTC
view on stackexchange narkive permalink

Du kan läsa igenom databladet på 200 sidor och sedan röra med några förvirrande bitskift och register, men jag rekommenderar det här biblioteket: http://playground.arduino.cc/Code/Enerlib

Om du använder en Uno eller någon med ett USB-till-seriellt chip kan du också inaktivera det eller ta bort det.

Du * bör * läsa igenom databladet oavsett * vad * du gör.
#4
+9
maarten
2015-02-10 17:24:31 UTC
view on stackexchange narkive permalink

När ditt projekt fungerar och du måste distribuera till en "produktions" -miljö kan du välja att ersätta Arduino med en rak meta ATMega328 eller något av ATTiny-familjechipsen. Detta kommer att bli av med alla elätare på Arduino-kortet som du inte behöver. Jag hittade:

  • Arduino-kort med 9V-blockbatteri - 56 mA
  • ATTiny85 bar på 8 MHz utan vilolägen etc - 10 mA
  • ATTiny85 bar på 8 MHz i viloläge - 0,03 mA

Mer information

Programmera en ATtiny med Arduino

ATTiny-filer för Arduino IDE



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...