[022] Ile prądu potrzebuje Arduino?

[022] Ile prądu potrzebuje Arduino?

Arduino z założenia nie jest komputerkiem przeznaczonym do pracy bateryjnej. Czy aby na pewno? Niedawno opisywałem jak zbudować pilota i w zasadzie można by go używać pod jednym tylko warunkiem: musiałby być zasilany z zasilacza. Podłączenie go na stałe do baterii, jak się można domyślać, szybko zakończyłoby jej żywot. Można oczywiście zrobić sobie pilota z wyłącznikiem zasilania, ale byłoby to raczej bez sensu. Co prawda pilot zasilany sieciowo w konkretnych zastosowaniach jest uzasadniony, jako element sterujący automatyką na przykład. Tutaj jednak chciałbym pokazać jak zrobić pilota z prawdziwego zdarzenia. Nie będzie to zresztą opowieść tylko o pilotach, a raczej o ograniczaniu Arduino apetytu na prąd, co pozwoli z tego komputerka wykonać całe mnóstwo urządzeń zasilanych bateryjnie, które będą pracować ciągle.


Oczywiście budując takie urządzenia należy wziąć też pod uwagę zużycie energii przez peryferia, lecz w zasadzie wszystkie współczesne mają zaawansowane tryby usypiania, podczas których zachowują się jakby ich w ogóle nie było. Teraz jednak skupmy się na pilocie, gdzie peryferia można ograniczyć wyłącznie do diody nadawczej i klawiatury. A ściślej do jednego przycisku. By skupić się na istocie, czyli oszczędzaniu energii, zbuduję bardzo skromnego, jednoprzyciskowego pilota, który wbrew pozorom może być przydatny na przykład do prostego sterowania lampą. Wróćmy zatem do prezentowanego kiedyś projektu.

Na początek wykorzystam płytkę edukacyjną i jeden tylko przycisk, sterujący portem szóstym. Diodę nadawczą podczerwieni, przez rezystor podłączę na wyjście o adresie 3, bo tego wymaga biblioteka obsługi pilotów dla znajdującej się na płycie Arduino w wersji Uno.

#define SEND_PWM_BY_TIMER  // Definicja niezbędna dla Arduino Uno związana z obsługą nadajnika podczerwieni.
#include <IRremote.h>      // Biblioteka obsługi nadajnika podczerwieni.

const byte pstryczekWylacz = 6;    // Adres pstryczka wysyłającego komunikaty.
const unsigned int adres = 64482;  // Adres urządzenia, którym będziemy sterować.
const byte kodWylacz = 38;         // Kod wysyłany podczerwienią.

void setup() {
  IrSender.begin(DISABLE_LED_FEEDBACK);    // Inicjacja biblioteki nadajnika podczerwieni.
  pinMode(pstryczekWylacz, INPUT_PULLUP);  // Deklaruj port pstryczka jako wejście podciągnięte wewnętrznie do wysokiego stanu.
}

void loop() {
  if (digitalRead(pstryczekWylacz) == HIGH) {          // Jeśli pstryczekWylacz jest wciśnięty...
    IrSender.sendNEC(adres, kodWylacz, 0);             // Wyślij w standardzie NEC: adres, komendę i bit braku autorepetycji.
    delay(50);                                         // Zaczekaj 50 ms
    while ((digitalRead(pstryczekWylacz) == HIGH)) {}  // Czekaj dopóki przycisk zostanie zwolniony.
    delay(50);                                         // Zaczekaj 50 ms
  }
}

Rzućmy okiem na program, tylko dla przypomnienia. Po imporcie biblioteki IRremote, wraz z niezbędną deklaracją SEND_PWM_BY_TIMER, ustawiam adres portu (6) i kod wysyłany podczerwienią (38). Następnie inicjuję bibliotekę oraz port, do którego podłączony jest przycisk.

W głównej pętli czekam na wciśnięcie przycisku. Jeśli to nastąpi, wysyłam komunikat, czekam, aż przycisk zostanie puszczony i znowu czekam na jego wciśnięcie. Opóźnienia tutaj występujące zabezpieczają nas przed stanami nieustalonymi podczas wciskania i puszczania przycisku.

Program działa prawidłowo, zatem sprawdźmy ile to konsumuje energii. I tutaj dygresja: do pomiarów średniego zapotrzebowania na prąd najlepiej używać starych, klasycznych mierników analogowych. Wybitna dokładność nie jest tu potrzebna, raczej wiedza o przedziałach wielkości. Miernik taki ma istotną dla nas zaletę: jest odporny na krótkie wahania prądów, niejako całkując pomiar sprzętowo – bezwładnością wskazówki. Co nie znaczy, że cyfrowy miernik się nie nadaje, ale taki jest po prostu wygodniejszy.

Płytkę, której używam, można zasilać zarówno z USB jak i z napięcia zewnętrznego. Dotyczy to zresztą prawie każdego modelu Arduino. Zatem podłączymy teraz zasilacz, przez amperomierz.

Słówko o zasilaczu. Mam ich oczywiście wiele, ale do takich celów używam czegoś takiego. Jest to nieco przerobiona przeze mnie kostka zawierają układ LM317, zasilana z transformatora o w miarę bezpiecznej dla układów cyfrowych wydajności, znacznie mniejszej od katalogowego półtora ampera. Kostka ma przełącznik napięć: po wymianie rezystorów, z 4,5 wolta otrzymałem przydatne w świecie cyfrowym 5 woltów, a z trzech – 3,3 wolta. Znajduje się tam także przełącznik polaryzacji.

Ten byłby niebezpieczny, więc w okolicach wtyczki uniwersalnej zamontowałem świecącą diodę dwustronną. Gdy polaryzacja jest zgodna z oznaczeniem, świeci się na zielono. Odwrotna powoduje świecenie czerwonej struktury. Proste, pożyteczne i zabezpiecza nas przed skutkami roztargnienia. Ponieważ płyta edukacyjna korzysta ze stabilizatora znajdującego się na płytce Arduino, należy ustawić napięcie z zakresu 7-12 woltów. Wybrałem 9 woltów i… prąd konsumowany wynosi blisko 55 mA.

Zobaczmy ile prądu będzie potrzebować samo Arduino. Uno posiada wejście zasilające w typowej formie gniazdka zasilacza, ale można także skorzystać z wejścia w gnieździe krawędziowym. Trzeba tylko bardzo uważać, to jedyne wejście, na które można podać napięcie większe od 5 woltów.

Cóż rzec można: nie tego spodziewaliśmy się. Pobór prądu jest praktycznie taki sam. Zatem peryferia z płytki edukacyjnej, których jest tam niemało, konsumują bardzo niewiele energii. W każdym razie wyciągnięcie płytki Uno na nic się zdało. Oczywiście można by tę płytkę przerobić, by zredukować zapotrzebowanie na moc, ale nie tędy droga. Do tego celu powstały inne wersje Arduino.

Zacznijmy od wygodnego Nano. Jest ono w zasadzie funkcjonalnym odpowiednikiem Uno, tylko w małej obudowie. Jak się okazuje, nie tylko rozmiarem się różni. Układ jest bardziej oszczędny, ten sam program potrzebuje do pracy 22 mA, ponad dwa razy mniej.

Rzućmy okiem na tę płytkę. Widać od razu, że oprócz serca Arduino – mikrokontrolera Atmel 328P, znajduje się tu jeszcze konwerter USB – RS232, stabilizator i świecąca się cały czas dioda. Każde z tych urządzeń pobiera energetyczną daninę. Zastanówmy się, czy jest nam to potrzebne. Konwerter bierze udział wyłącznie podczas programowania. Potem leży odłogiem, chyba że wysyłamy coś z Arduino przez USB. Tutaj nic nie wysyłamy, zatem… może by go jakoś stąd wyrwać po zaprogramowaniu układu?

Nie trzeba. Powstały oczywiście płytki Arduino pozbawione tego układu, które zresztą bardzo lubię. Są jeszcze mniejsze, tańsze i nazywają się Mini Pro. Schemat jest śliczny: nic już tu prawie nie ma.

No dobrze, a jak zaprogramować takie Mini, skoro nie ma jak podłączyć kabla USB? Część programująca, która zniknęła, została przeniesiona na osobną płytkę. Oto typowy programator wersji Mini i podobnych.

Podłącza się go czterema przewodami na czas programowania, a potem odłącza. Oczywiście wystarczy mieć tylko jeden taki programator dla całej serii płytek. Mają one znormalizowane złącze na krótszej krawędzi. Jedyny mały problem polega na tym, że tuż przed wgraniem programu należy nacisnąć reset. Są także wersje z pięcioma przewodami, gdzie nie trzeba nic przyciskać.

Pozostał jednak stabilizator oraz dioda świecąca. Cóż, diodę po prostu trzeba wylutować albo rezystor, który ją zasila. Co do stabilizatora, teoretycznie można go zostawić. W tej serii – bo to nie jest oryginalne Arduino – stabilizatory te padały jak muchy i dla świętego spokoju usunąłem go także. Ale skoro nie ma stabilizatora, jak teraz zasilać układ? Już nie z 9 woltów, lecz z pięciu i trzeba absolutnie o tym pamiętać. Zmieniam zatem zakres napięć i proszę: 11 mA. Czyli znowu dwa razy mniej, a cztery razy wobec oryginalnego Uno.

Fajnie, że tak ładnie udało się zejść z prądem, szkoda jednak, że 11 mA to nadal dużo za dużo do ciągłego zasilania baterią. Czas użyć zupełnie innych środków, ale o tym napiszę w kolejnym artykule.

Powiązane tematy

Płytka edukacyjna TME-EDU-ARD-2Płytka edukacyjna TME-EDU-ARD-2Sprawdź tutaj

Przeczytaj również

Nasi partnerzy

TMETech Master EventTME EducationPoweredby
Copyright © 2024 arduino.pl