Lekce 27 - Adruino a napájení z baterie aneb jak uspat Arduino
23.02.2014 15:48Translate to English
Po několika dotazech ohledně napájení Arduina z baterie, kde se stále řeší její životnost, jsem se rozhodl uveřejnit tento návod jak se postarat, aby napájení z přenosných zdrojů vydrželo co nejdéle.
Jak si sami můžete ověřit, samotné Arduino UNO má po zapnutí odběr ze zdroje asi 20mA (bude se lišit podle typu a kvalitě použití součástek). Při použití napájení z 9V baterie, která má kapacitu cca 500 až 600 mAh se dostaneme k času do jejího vybití okolo 30 hodin a to počítám ideální stav, kdy k Arduino nejsou připojeny další součástky, čidla, displeje apod. Musíme také počítat s tím, že stabilizátor na základové desce, aby snížil napětí na 5V toto přemění na tepelnou energii a to při napájení z baterie není ideální stav. Další možností jsou tzv. "step-down conventory", kde jejich účinnost je okolo 80%, ale touto cestou se dnes ubírat nebudeme.
Řešením pro nás bude Arduino uspat. Podobně jako u stolního počítače to bude obdobné, kdy se uloží do režimu spánku, tak my uspíme mikroprocesor. Tato funkce se samozřejmě nehodí na vše co budeme tvořit, ale je ideální volbou pro zařízení, které bude v nějakém intervalu získávat data z nějakého čidla a ty poté buď někam odesílat, indikovat nebo ukládat.
Pro uspání Arduina zavoláme funkci sleep_mode();, která je obsažena v knihovně avr/sleep.h. Tuto nemusíte odněkud stahovat je součástí Arduino IDE. Protože režimů, ve kterých Arduino může spát je několik, nastavíme si zvolený režim voláním uspání pomocí funkce:
set_sleep_mode(mode);
Já přikládám tabulku všech dostupných módů:
mode | |
SLEEP_MODE_IDLE | nejméne úsporný |
SLEEP_MODE_ADC | |
SLEEP_MODE_PWR_SAVE | |
SLEEP_MODE_STANBY | |
SLEEP_MODE_PWR_DOWN | nejúspornější |
Další potřebný příkaz je sleep_enable();, který zajistí, že přechod do režimu spánku bude dostupný. No tak Arduino už umíme uspat, ale jak ho probudit. Na výběr máme několik možností.
- Pomocí externího přerušení. Vysvětlovali jsme si v lekci 21. Arduino se probudí a bude pokračovat v činnosti při nastaveném přerušení pomocí příkazu attachInterrupt(přerušení, funkce, mód); Vhodné to bude například kdy uživatel stiskne nějaké tlačítko apod.
- Pomocí příchozí komunikace na sériovém portu. Serial UART
- Pomocí vnitřního časovače. INTERNAL TIMER
- Pomocí WATCHDOG TIMER
———
ZpětDiskusní téma: Lekce 27 - Adruino a napájení z baterie aneb jak uspat Arduino
Datum | 10.08.2014 |
---|---|
Vložil | BorgMcz |
Titulek | asi mala chybicka |
našel jsem v kódu malinkou chybičku, která ale za bežné situace nemá vliv na ěh programu, ale přeci jen:
86. citac_impulsu = 0;// vynuluj čítač
87. impuls_z_wdt = 0; // vynuluj impuls
88. enterSleep();// znovu do spánku
89. }
90. else
91. {
92. enterSleep();//znovu do spánku
93. }
myslím si , že mezi řádky 91 a 92 by mělo byt opět toto nulování:
impuls_z_wdt = 0; // vynuluj impuls
———
Datum | 08.05.2014 |
---|---|
Vložil | Štěpán |
Titulek | Napájení |
Dobrý den,
proč nelze arduino napájet jak pomocí USB a adaptéru na nabiječce? Viz zde: https://tronixino.wordpress.com/2012/02/04/use-samsung-galaxy-nexus-power-adapter-as-power-source-for-arduino/
Děkuji
———
Datum | 19.05.2014 |
---|---|
Vložil | iwojima1 |
Titulek | Re: Napájení |
ide to ale nierkedy chces byt mobilny tak musis pouzit baterie
———
Datum | 20.05.2014 |
---|---|
Vložil | Štěpán |
Titulek | Re: Re: Napájení |
Děkuju za odpověď. Chtěl bych to použít jako měření teploty v treráriu, tak se mi spíše hodí adaptér.
———
Datum | 12.06.2015 |
---|---|
Vložil | LuBoss |
Titulek | Re: Re: Re: Napájení |
Uspání procesoru je primárně určeno pro úsporu energie a to je důležité u zařízení napájených z baterií. Pokud máš zařízení, které je někde doma napevno, tak je napájení adaptérkem jasná volba. Hodí se třeba stará nabíječka na mobil, které má výstupní napětí 5V. Pokud máš usměrněné trafíčko s vyšším napětím, tak použij na arduinu pin VIN pro plus a GND pro zem. Arduino deska má vlastní stabilizátor a sníží si napětí na potřebných 5V.