Microcontrolerele de ultimă generație permit tehnici de proiectare mai bune și consum mai mic de energie

by donpedro

Mai mult cu mai puțină energie
În cazul în care nu ați observat, se pare că totul în jurul nostru devine mai inteligent și mai conectat de la un lucru la altul. Pantofii voștri au acum senzori ce vă pot spune cum să vă îmbunătățiți timpul de alergare prin afișarea pașilor pe telefonul inteligent. Cântarul vă poate salva automat greutatea în aplicația de monitorizare bazată în cloud și vă poate informa de ce ultima gogoașă pe care ați mâncat-o a fost o idee rea – printr-o alertă pe telefonul inteligent. Sistemul de securitate din casă vă poate informa despre o scurgere în garaj printr-un mesaj text, cu ajutorul unui mic senzor wireless plasat lângă încălzitorul de apă. Mulțumită avansului tehnologic de-a lungul timpului, popularitatea aplicațiilor portabile alimentate de la baterii a crescut exponențial. Inginerii au fost în mod constant împinși spre a crește funcționalitatea produselor, reducând în același timp dimensiunile pentru fiecare proiect succesiv. Aceste funcții adiționale solicită mai mult sursele de energie ale sistemelor.
Provocarea este modul de implementare a acestor noi funcții, dar și extinderea duratei de viață a bateriilor, totul într-o amprentă din ce în ce mai mică.

Abordarea convențională pentru un proiect de aplicație alimentată de la baterii este aceea de a păstra cât de multe module posibil într-o stare de joasă putere, pentru cât mai mult timp posibil, activându-le ocazional pentru a îndeplini sarcina dorită și apoi revenind la modul de adormire. Într-un proiect complex cu multiple MCU/MPU și componente, un microcontroler pe 8 biți cu număr mic de pini este adesea utilizat ca supervizor de sistem, pentru a îndeplini sarcini “casnice” precum pornirea și oprirea modulelor după necesitate, pentru a maximiza randamentul energetic. Cu toate acestea, pentru implementarea funcțiilor de sistem dorite, majoritatea proiectelor au doar un singur controler principal cu o serie de periferice integrate. De aceea, consumul energetic al acelui microcontroler devine un parametru critic. Totuși, nu toate microcontrolerele sunt făcute la fel atunci când vine vorba despre performanțele de joasă putere. Aici este locul în care un microcontroler pe 8 biți poate depăși în multe cazuri un microcontroler pe 32 de biți. Unele MCU pe 8 biți consumă până la 20nA în modul de funcționare de cea mai joasă putere, în vreme ce limita de jos a unui MCU pe 32 de biți se află în cel mai bun caz la de 10-20 de ori mai mult.
Există un număr de căi de a activa un microcontroler din modul de adormire. O practică uzuală este aceea a utilizării temporizatoarelor interne ale microcontrolerului pentru a activa periodic sistemul. Temporizatorul poate fi configurat pentru a declanșa o întrerupere după ce intră în depășire. Un temporizator pe 16 biți cu pre-scalare 1:8, operând cu oscilatorul intern de joasă putere de 31 kHz (sau cu un cristal intern), poate păstra dispozitivul în mod de adormire pentru aproximativ 17 secunde. O altă opțiune este aceea a utilizării temporizatorului de control al MCU (Watchdog Timer – WDT), ideal cu un timp maxim de așteptare de 256 de secunde, cu un curent de aproximativ 440 nA. (Încă odată, un MCU tipic pe 32 de biți cu WDT activat consumă de cel puțin 3 ori curentul unui MCU pe 8 biți.)
Să luăm de exemplu cazul unei aplicații ce nu necesită să se activeze frecvent, precum cazul unui sistem de monitorizare a mediului, care trebuie să se activeze la fiecare 4 ore pentru a citi un senzor de umiditate și apoi să revină în modul de adormire. Datorită limitărilor temporizatorului intern, înseamnă că frecvența de activare trebuie să fie mai mare? Nu neapărat! O opțiune este de a utiliza un ceas de timp real (RTC) și un cristal de cuarț ce poate oferi o temporizare de precizie în termeni de ore, zile, luni și chiar și ani, dacă este nevoie. De vreme ce nu toate microcontrolerele oferă integrat un RTC și un cristal de cuarț, trebuie luat în considerare un RTC independent.

Figura 1: Perifericele independente de nucleu ale unui microcontroler pe 8 biți sunt utilizate pentru a extinde perioada de așteptare la 205 zile, fără componente adiționale sau pierderi de putere.

Periferice independente de nucleu
O altă opțiune este aceea de a extinde perioada de așteptare fără componente externe sau pierderi de energie, prin utilizarea unor periferice unice, ce pot fi găsite în ultimele generații de microcontrolere pe 8 biți (precum MCU PIC® de la Microchip Technology). De exemplu, proiectanții pot conecta una dintre celulele logice configurabile ale MCU (CLC) și oscilatorul său controlat numeric (NCO) la temporizatorul pe 16 biți, pentru a extinde perioada de așteptare de la 17 secunde la 205 zile, înainte de declanșarea unei întreruperi pentru activarea MCU (vezi figura 1). Desigur, este rară situația ca o aplicație să rămână în așteptare pentru o perioadă așa de lungă de timp, dar capabilitatea este prezentă dacă este necesară.
Cea mai economică soluție poate fi atinsă prin utilizarea unui oscilator intern de joasă putere (31kHz) pentru a alimenta temporizatorul rezultant (de durată mai mare). Dar consumul energetic al acestei implementări poate fi redus și mai mult, cu până la 50%, până la aproximativ 2.3µA, prin utilizarea unui oscilator cu cuarț extern de 32kHz conectat la un oscilator secundar (SOSC) cu un cost puțin mai ridicat.
Sursele de întrerupere externe pot fi de asemenea utilizate pentru a activa microcontrolerul precum un comutator sau un senzor. Unele dintre cele mai mari MCU/MPU au multiple întreruperi cu nivele de prioritate, dar aceste caracteristici nu sunt adesea prezente în microcontrolerele cu număr redus de pini existente pe piață. Vă amintiți utilizarea modulului celulă logică configurabilă (CLC) pentru a extinde durata de timp din exemplul anterior? Nu numai că poate fi utilizat pentru a crea surse suplimentare de întrerupere când MCU are numai un sistem INT, CLC permite, de asemenea, proiectanților să adauge logică condițională sau secvențială în rutina de activare; îl face astfel mai inteligent fără un necesar de curent suplimentar. Dacă sistemul necesită un număr de semnale pentru a reprezenta o stare specifică, cu scopul de a activa CPU pentru a verifica o condiție, foarte adesea CPU se activează la schimbarea unui semnal, pentru a constata că celelalte semnale nu s-au schimbat. Acum este posibilă configurarea și combinarea funcțiilor logice disponibile și a stărilor în CLC, sau chiar module CLC multiple, pentru a crea o condiție de activare specifică ce evită declanșările false și pierderile de energie care nu sunt necesare.

Figura 2: O reprezentare grafică a consumului de curent al microcontrolerului în timp.

Timpul de activare al dispozitivului poate fi o componentă mare a timpului de “rulare” în profilul de periodicitate al aplicației. În vreme ce pentru oscilatorul intern al unui microcontroler pe 8 biți acesta este limitat tipic la câteva cicluri de ceas (3-5 cicluri corespund de la 200ns la 1µs), într-o arhitectură pe 32 de biți, implicând tehnici de adormire adâncă (deep-sleep) pentru a limita pierderile de curent, el devine o chestiune de zeci de microsecunde, adesea anulând avantajele rezultate din viteza de execuție subsecventă tipic mai rapidă.
În vreme ce ne-am dori să se facă totul în modul de adormire, sunt sarcini ce trebuie făcute în mod activ, în care nucleul MCU consumă cea mai mare cantitate de energie prin comparație cu toate celelalte module. Aici este momentul în care lucrurile pot deveni puțin complicate. Figura 2 este o reprezentare grafică simplificată a consumului de curent al sistemului în timp. Aria de sub linia consumului de curent reprezintă descărcarea totală în timp, măsurată în Coulomb. Dacă suma tuturor acestor arii în perioada de mod de adormire este mult mai mare decât cea din modul activ, atunci valoarea curentului de mod de adormire este mai critică, deoarece majoritatea consumului energetic are loc în modul de joasă putere. La polul opus, dacă suma ariilor în perioada de mod activ este semnificativ mai mare, atunci valoarea curentului în mod de adormire și timpul petrecut în acest mod devin irelevante.
Aplicațiile cu comunicație wireless, precum Wi-Fi® sau Bluetooth® LE, sunt sisteme provocatoare în ceea ce privește reducerea consumului energetic. Proiectanții acestor sisteme trebuie să ia în considerare câte date trebuie transmise sau recepționate, deoarece acest lucru va avea impact direct asupra consumului general de curent. Modulele wireless pot fi utilizate în “modul baliză” pentru a se activa periodic și a căuta semnale; sau pot intra în mod de așteptare atunci când nu sunt utilizate.
În asemenea sisteme wireless, viteza de procesare a MCU este de fapt irelevantă, deoarece aplicația este mai degrabă o legătură de I/O, dar timpul de activare al MCU are un impact semnificativ asupra profilului aplicației, iar consumul energetic al circuitului radio (tipic 10-20mA) este extins și domină bugetul energetic al aplicației. Senzorii analogici necesită utilizarea modulului de conversie analog/digital al MCU. În mod uzual, timpul necesar eșantionării ADC este mult mai mare decât timpul de conversie. Cu cât durata de timp petrecută în mod activ este mai mare, cu atât mai mult curent este consumat. Totuși unele MCU au module ADC ce permit conversia în modul de adormire, ceea ce economisește energie prin minimizarea timpului petrecut în mod activ.
Unele microcontrolere integrează o largă varietate de moduri active de joasă putere. Aceste moduri oferă opțiunea de a opri sau de a reduce viteza de procesare a nucleului, păstrând însă selectiv activ ceasul sistemului pentru unele periferice de pe cip.
O lozincă des auzită spune: “cu cât mai mare este performanța nucleului, cu atât mai rapid se execută sarcinile, iar apoi cu atât mai curând MCU poate reveni în modul de adormire”. În vreme ce acest lucru poate fi adevărat în unele cazuri, există o fisură în acest raționament. Trebuie să ne amintim că nucleul consumă mai multă energie decât oricare alt modul al MCU. De asemenea, toate sarcinile care necesită nucleul trebuie executate secvențial (FIFO), indiferent de viteză. De aici rezultă că nucleul nu poate fi oprit până la finalizarea ultimei sarcini. Atunci când un microcontroler poate realiza unele sarcini în paralel, utilizând periferice integrate, ce pot opera independent de nucleu, viteza nucleului devine irelevantă, reducându-se semnificativ energia utilizată. Perifericele independente de nucleu sunt complet funcționale în vreme ce nucleul microcontrolerului se află în modul de adormire.
Proiectarea aplicațiilor alimentate de la baterii a devenit mult mai complexă datorită funcționalității lor crescute. Inginerii trebuie să analizeze și să înțeleagă complet profilul de consum de curent al fiecărei componente, în diferite moduri de activitate și energie, cu scopul de a obține o eficiență maximă în utilizarea bateriei. Setul de periferice independente de nucleu găsit în noile generații de MCU pe 8 biți permit inginerilor mai multă creativitate, fără a sacrifica performanțele.

Autor: Jin Xu, Asia Pacific Business Development Manager, MCU8 Division, Microchip Technology Inc.

 

Microchip Technology | www.microchip.com
Sigla-Microchip

S-ar putea să vă placă și