Croduino na baterije

Uvod

 
Cilj ovog tutorijala je predvidjeti i racionalizirati potrošnju Croduina. Specificirati ćemo potrošnju pojedinačnih komponenti i samog kontrolera, te na nekoliko primjera napraviti proračun potrošnje. Na kraju predstaviti ćemo i nekoliko library-a koji omogućuju stavljanje kontrolera u sleep mode te iz svega navedenog probati izvesti neke zaključke.

Croduino Basic

 
Potrošnju mikrokontrolera provjeravati ćemo u nekoliko primjera, te pomoću datasheeta predviđati potrošnju u određenim uvjetima. Za početak izmjerili smo potrošnju Croduino Basic i Croduino Damba pločice. Rezultati, pri 5V i sobnoj temperaturi, su sljedeći:

Croduino Basic 46.43 mA
Croduino Damba 2.61 mA

 
Krenimo s Basicom. Basic koristi Atmega328 koji radi na naponu 5V i eksternom oscilatoru od 16MHz-a. Preporuke proizvođača za low power consumption su podesiti interni oscilator na 1MHz i napon 1.8V na temperaturi 25C, što bi konačno davalo potrošnju 0.2mA pri aktivnom korištenju. Iz ovoga možemo zaključiti koji parameri utječu na potrošnju, pa promotrimo potrošnju u nekoliko kombinacija:
 

Pri odabiru frekvencije koju ćemo koristiti moramo imati na umu i napon. Upravo o njemu ovisi maksimalna frekvencija koju možemo koristiti, što pokazuje i sljedeći dijagram:
 

Nastavimo dalje i Atmegu328 nadogradimo s eksternim oscilatorom. Potrošnju možemo vidjeti u tablici ispod:
 

 
Što se tiče temperature razlike nisu toliko drastične, možemo samo napomenuti da niža temperatura znači niža potrošnja - do određene granice. Od ostalih komponenata čiju potrošnju je važno spomenuti svakako spadaju LED diode. 0805 Plava LED dioda troši 10mA, a ovisno o boji i vrsti diode potrošnja može višestruko porasti. Dakle, dobra ideja bi bila odlemiti LED diode ili ako pravite svoju Arduino pločicu pomoću Atmege i rezonatora ni ne spojiti ih.
 
Spajamo li na kontroler bateriju koja ima izlazni napon veći od 5.5V moramo ga povezati preko regulatora napona koji ima određenih gubitaka. Za to trebate koristiti pin VIN(Voltage Input) te gnd za negativni pol. Croduino Basic koristi STM-ove 78M05 regulatore napona, u datasheetu možete naći potrošnju i efikasnost regulatora s obzirom na napon i temperaturu.
 
Sam 78M05 regulator napona poznat je kao neefikasan regulator napona. Njegova efikasnost je od 60% do 90%, ovisno o naponu i struji koji su na njegovom ulazu. Primjetit ćete da što veći napon priključite na njegov ulaz te što trebate veću struju, on će se i više grijati. To znači da će se, recimo u primjeru efikasnost od 80%, 80% energije koja dolazi od ulaznog(većeg) napona pretvoriti u manji napon, dok će 20% otpasti na toplinu te će se regulator zagrijavati. Na način na koji je postavljen na Croduino Basicu(bez konkretnog heatsinka), nije preporučljivo vući maksimum onoga što on može dati. To je napravljeno namjerno iz više razloga.
Ako kojim slučajem trebate efikasniji regulator napona, preporučamo nešto kao LM317 ili LM2596 čija efikasnost može doseći i 95%.

Croduino Damba

 
Damba, tj. Attiny85, se pokreće s internim 8MHz oscilatorom i 3V naponom iz CR1220 baterije, izmjerena potrošnja pri navedenim uvjetima je: 2.61mA. Preporuke proizvođača za low power consumption su podesiti interni oscilator na 1MHz i napon 1.8V na temperaturi 25C, što bi konačno davalo potrošnju 300uA pri aktivnom korištenju, odnosno 0,1uA pri power down modu no o tome nešto kasnije. Proučimo neke karakteristike koje nam daje službeni datasheet:
 


Damba, osim Attiny85 mikrokontrolera, nema na sebi nikakve dodatne komponente. Ne dajte da vas buni LED dioda na pločici. Ona se nalazi na D0 pinu, stoga nije niti nužno aktivna.

Sleep mode

 
Preporuka proizvođača je staviti mikrokontroler u sleep mode kada god se ne koristi, što dovodi do velikih ušteda. Primjerice, želimo li čitati temperaturu pomoću DHT senzora svakih 10 sekundi staviti ćemo mikrokontroler u sleep mode i "probuditi" ga na 250ms koliko je potrebno DHT senzoru da registrira temperturu. Ovakva kontrola može dovesti do potrošnje od samo 100nA za Atmegu328, što je manje i od samopražnjenja večine baterija. U ovo se možemo uvjeriti iz datasheeta:
 

Postoji nekoliko library-a koji omogućavaju ovakav pristup kontroleru - svakako koristite library, delay() funkcija ne štedi struju! Neke od poznatijih su Sleep, JeeLib, Lightweight low power i Enerlib.

Zaključak

 
Podrazumijeva se da u svakoj primjeni/aplikaciji nećete biti u mogućnosti primjeniti neke od ovih optimizacija. Što više, to bolje! Jedna od najlakših i najuspješnijih optimizacija je vjerojatno koristiti neki od librarya za sleep.
 
Također, neke stvari nije moguće odraditi preko Arduina, nego je potrebno pogramirati u asembleru(recimo Atmel studio) koji omogućava pristup svim dijelovima mikrokontrolera pojedinačno, što je pak stavka za napredne programere i hardveraše.
 
Gore obrađene podatke prezentirati ćemo u kratkoj listi preporuka:
 

  • Spustiti frekvenciju mikrokontrolera
  • Spustiti ulazni napon mikrokontrolera
  • Isključiti interne module koje ne koristimo u softwareu (SPI, I2C, Serial, ADC, i sl.)
  • Ne koristiti LED diode
  • Ne koristiti regulatore napona
  • Koristiti library koji stavlja mikorkontroler u sleep stanje kada ga ne koristimo
  • Buditi mikrokontroler samo onda kada je potrebno
  • MOSFETOM onemogućiti vanjske uređaje (razne senzore i module, npr. senzor temp ili SD kartica) kada ih ne korstimo
Leave a Reply