Kurs Arduino #19: Oszczędzanie energii

Kurs Arduino #19: Oszczędzanie energii

2. Pobór prądu przez Arduino UNO oraz same ATMega328, przyczyny różnic

Poniżej przedstawiamy wyniki pomiarów prądu, w Arduino UNO oraz ATMega328. Pomiary na czerwono oznaczają uruchomione wszystkie peryferia przeznaczone dla danego trybu, a zielonym, pomiary, przy wyłączonych peryferiach:

 

Tryb Arduino UNO ATMega328
Idle 45 mA
56,4 mA
15,2 mA
17 mA
ADC Noise Reduction 47,2 mA
44,8 mA
5,8 mA
6 mA
Power-down 36,8 mA
37 mA
6,5 uA
144,5 uA
Power-save 36,8 mA
38 mA
6,5 uA
1,4 mA
Standby 37,2 mA
37,4 mA
514 uA
650 uA
Extended Standby 37,3 mA
38,1 mA
511 uA
1,4 mA

*1000 uA = 1 mA

Jak widać, rozbieżność, pomiędzy poborami prądu wynosi 30-35mA, a w skrajnych przypadkach ponad 40mA. Jeżeli projektujemy urządzenie, gdzie priorytetem jest oszczędzanie energii to nie możemy wykorzystać „surowego” Arduino, ponieważ pobiera ono stanowczo za dużo prądu, w porównaniu z samą ATMegą328. Lecz skąd się bierze taka rozbieżność w poborze energii ? Popatrzmy na obrazek poniżej:

pobor_pradu
Elementy zaznaczone na czerwono to stabilizatory napięcia (układy znajdujące się u dołu płytki) oraz programator, a zaraz po nich diody LED zaznaczone kolorem żółtym. O ile diody ciągle nie działają (z wyjątkiem tej sygnalizującej pracę układu), to układy pobierają cały czas prąd, ponieważ ciągle działają. W efekcie czego same peryferia płytki Arduino UNO (bez ATMegi328) pobierają 37,2 mA, co na zasilaniu bateryjnym jest dużym, nie potrzebnym obciążeniem. Dlatego, podczas projektowania urządzenia energooszczędnego, należałoby się wyzbyć, tych nie potrzebnych peryferiów (z wyjątkiem stabilizatora, jeżeli jest potrzebny), ponieważ bardzo mocno skracają działanie na baterii. Tutaj wykonamy mały eksperyment. Do Arduino UNO oraz do samej ATMegi328 wgramy podstawowy program ze środowiska Arduino jakim jest „Blink” i zmierzymy średni pobór prądu przez oba układy, a następnie obliczymy czas pracy na baterii 1500mAh dla każdego z osobna:

Arduino UNO ATMega328
Średnia wartość poboru prądu 53 mA 20,15 mA
Pojemność baterii 1500 mAh 1500 mAh
Czas pracy na baterii* 28,3 godziny 74,4 godziny (2,6 raza dłużej)
*Przedstawione wyniki są szacunkowe, w rzeczywistości mogą się nieznacznie różnić, w zależności od temperatury pracy oraz poziomu zużycia baterii itp.

resized

Jak widać po wynikach, zbędne peryferia mogą być bardzo obciążające dla naszego projektu, w związku z czym czas pracy na baterii może być skrócony ponad dwukrotnie. Jeżeli projektujemy urządzenie, które będzie „kompatybilne” z Arduino to nie musimy zawierać w nim programatora oraz zbędnych diod LED, wystarczy zawrzeć samą ATMegę, wgrać bootloader i zewnętrznym programatorem wgrywać programy. Mam nadzieję, że różnice w poborze prądu między Arduino UNO, a samą ATMegą zostały wyraźnie nakreślone. Jeśli tak, to możemy przejść do następnego punktu.

  • 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 :)