Kurs Arduino #19: Oszczędzanie energii

Kurs Arduino #19: Oszczędzanie energii

 5. Przykładowy program #2: Usypianie/Budzenie po przez wbudowany Watchdog

Ten program z kolei będzie działać, na takiej zasadzie, że przez 7 sekund będzie się wykonywać program, a następnie będzie przechodzić na 40 sekund w stan uśpienia, skąd zostanie wybudzony i program się znowu powtórzy.

Schemat:

19.2

 

Program:

Tutaj zasada działania jest podobna jak w poprzednim przykładzie, lecz tutaj nie korzystamy z zewnętrznych przerwań, a z wbudowanego Watchdoga. Ten element mikrokontrolera pozwala na wyprowadzenie układu (zresetowanie) w momencie, gdy przez dłuższą chwilę będzie on zawieszony. W ATMega328/168 maksymalny czas „zawieszenia” wynosi 8 sekund po czym praca układu jest wznawiana.  W pętli głównej programu wykonujemy nasz główny program, w tym przypadku informacja na UART z 7 sekundowym opóźnieniem. Następnie program przechodzi do klasy uspij40s, w której to jest wykonywane uśpienie mikrokontrolera na czas 40 sekund. Aby tego dokonać to musimy ten program wykonać 5 razy co w efekcie da nam 40 sekund „snu” mikrokontrolera. Nie możemy wpisać bezpośrednio SLEEP_40S bo taka funkcja nam się po pierwsze nie skompiluje, a po drugie czas watchdoga to dokładnie 8 sekund. Dlatego więc musimy parokrotnie powtarzać program, aby uzyskać  potrzebny przez nas czas. Po wykonaniu 5-krotnie funkcji LowPower.powerDown(), program przechodzi do pętli głównej programu i tak w kółko (do momentu rozładowania baterii ;) ). Ważne aby przy korzystaniu z takiej metody usypiania mikrokontrolera, przeniesienie do klasy „usypiania” było na samym końcu wykonywanego programu.

Efekt pracy programu:

Podsumowanie

Dzisiejsza część kursu jest dosyć treściwa, a zarazem ciekawa. Mam nadzieję, że rozwialiśmy wszelkie problemy związane z oszczędzaniem energii przez Arduino. Zatem po tej części kursu powinieneś umieć:

  • Rozróżniać tryby zasilania dla mikrokontrolera ATMega328
  • Wykazać różnicę w poborze energii pomiędzy Arduino UNO i ATMega328
  • Zaimplementować oszczędzenie energii w trybie zewnętrznego przerwania
  • Zaimplementować oszczędzenie energii z wykorzystaniem Watchdoga

 

Materiały do tej części kursu:

Download-icon

 

 

 


Jeżeli chcesz być informowany na bieżąco o nowych częściach kursu to kliknij ?Lubię to!? bądź subskrybuj naszą stronę, aby otrzymywać na adres e-mail nowości ze strony. Jeżeli masz jakieś pytania to śmiało zadawaj je na forum ; )

  • Radosław Józef Ziomber

    Czasowe usypinie (zamiast delay()) mozna realizowac rowniez biblioteka Narcoleptic.h

    http://github.com/rcook/narcoleptic

    • Jest wiele bibliotek typu Low Power, ale w tym poradniku chcieliśmy przedstawić taki, która skupia jak najwięcej opcji oszczędzania energii :)