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