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 | 06.11.2019 |
---|---|
Vložil | Neooassip |
Titulek | Создаю копии сайтов от 500 рублей за лендинг |
Здесь вы можете заказать копию любого сайта под ключ, недорого и качественно, при этом не тратя свое время на различные программы и фриланс-сервисы.
Клонированию подлежат сайты как на конструкторах, так и на движках:
- Tilda (Тильда)
- Wix (Викс)
- Joomla (Джумла)
- Wordpress (Вордпресс)
- Bitrix (Битрикс)
и т.д.
телефон 8-996-725-20-75 звоните пишите viber watsapp
Копируются не только одностраничные сайты на подобии Landing Page, но и многостраничные. Создается полная копия сайта и настраиваются формы для отправки заявок и сообщений. Кроме того, подключается админка (админ панель), позволяющая редактировать код сайта, изменять текст, загружать изображения и документы.
Здесь вы получите весь комплекс услуг по копированию, разработке и продвижению сайта в Яндексе и Google.
Хотите узнать сколько стоит сделать копию сайта?
напишите нам
8-996-725-20-75 звоните пишите viber watsapp
———
Datum | 05.06.2017 |
---|---|
Vložil | dRy_92 |
Titulek | A zaroven |
Neni nahodou "a zaroven" &&?
———
Datum | 24.06.2015 |
---|---|
Vložil | Libor |
Titulek | nekdo z nas spatne pocita :o) |
jestli se nepletu, tak 0,38 mA (samotny mikroprocesor) je vice nez 0,20 mA (Arduino) , takze tam v tech cislech mate asi trochu neporadek. "Sami již při měření vidíte rozdíl. Arduino (tedy vlastně pouze mikroprocesor) odebírá v režimu spánku 0,38 mA"
Kazopadne super clanek za ktery dik.
———
Datum | 27.06.2015 |
---|---|
Vložil | Libor |
Titulek | Re: nekdo z nas spatne pocita :o) |
beru zpet. unikla mi desetinna carka
———
Datum | 30.09.2020 |
---|---|
Vložil | Pepa |
Titulek | Re: Re: nekdo z nas spatne pocita :o) |
Některé zdroje uvádějí, že procesor ATmega328 se dá uspat na úroveň odběru 0,15 µA, např.:
https://www.gammon.com.au/power
https://www.arduinohobby.euweb.cz/.
Nejedná se o chybu "čárky" ?, už to někdo vyzkoušel?
———
Datum | 16.01.2023 |
---|---|
Vložil | Jarda |
Titulek | Re: Re: Re: nekdo z nas spatne pocita :o) |
Pokud vynecháme krystal a tím snížíme frekvenci na 1 Mhz ušetříme spoustu energii i za běhu i při spánku.
———
Datum | 24.05.2015 |
---|---|
Vložil | Leszek |
Titulek | ujetý čas |
Zdravím,
nastavil jsem počet cyklů na 4500 což je deset hodin,takže by se měl co deset hodin spustit kód.Jenže čas byl ujetý o víc jak 30min na 10 a půl h.Zkoušel jsem i na kratší na půl hodině už o 3 min.Zkoušeno na Arduino Nano klon.VČEM JE PROBLÉM?
———
Datum | 13.06.2015 |
---|---|
Vložil | LuBoss |
Titulek | Re: ujetý čas |
Problém je v tom, že watchdog časovač prostě nemá takovou přesnost. Není to ostatně ani jeho úkol pracovat přesně. Také je otázka, jak máš napsaný kód, protože pokud tvůj kód bude trvat 100ms a pak až uspíš mikroprocesor, tak je to za deset hodin chyba už 45 minut. Pro práci s delším časem použij nějaký RTC (Real Time Clock) modul. Hodně se používá modul s obvodem DS1307, ale ten není moc přesný. V dnešní době je dobrá volba modul s obvodem DS3231, který je mnohem přesnější. Z něj udělané hodiny už se nechají i prakticky použít ;-)
———
Datum | 19.11.2015 |
---|---|
Vložil | Ivan |
Titulek | Re: Re: ujetý čas |
Tých 8 s je v skutočnosti 8192 ms ...
———
Datum | 27.04.2017 |
---|---|
Vložil | Marek |
Titulek | Re: Re: ujetý čas |
A jak by pak vypadal kod? Nejak jsem v tom zamotanej... poradite? Diky