- Tehnici de economisire a energiei pentru microcontrolere
- 1. Moduri Sleep
- 2. Modificarea dinamică a frecvenței procesorului
- 3. Structura firmware-ului de manipulare a întreruperii
- 4. Firmware optimizat de alimentare
- Concluzie
Așa cum gazul (benzină / motorină) este important pentru mișcări pentru biciclete, camioane și mașini (da, cu excepția Teslas!), La fel este și puterea electrică pentru majoritatea aplicațiilor electronice și mai mult, pentru aplicațiile bazate pe sisteme încorporate care sunt de obicei baterii (energie limitată) alimentată, de la telefoanele mobile obișnuite la dispozitivele inteligente de acasă, printre altele.
Natura limitată a puterii bateriei implică necesitatea de a asigura rata consumului de energie a acestor dispozitive ar trebui să fie rezonabilă pentru a încuraja adoptarea și utilizarea acestora. Mai ales cu dispozitivele bazate pe IoT, unde se poate aștepta ca un dispozitiv să dureze până la 8 - 10 ani la o singură încărcare, fără înlocuirea bateriei.
Aceste tendințe au făcut implementarea unor considerente de consum redus în proiectarea sistemelor încorporate și de-a lungul anilor, proiectanții, inginerii și producătorii au dezvoltat mai multe moduri inteligente de gestionare eficientă a energiei consumate de produse, pentru a se asigura că acestea durează mai mult pe un o singură încărcare. Multe dintre aceste tehnici se concentrează asupra microcontrolerului, care este inima majorității dispozitivelor. În articolul de astăzi, vom explora unele dintre aceste tehnici și modul în care acestea pot fi utilizate pentru a minimiza consumul de energie în microcontrolere. Deși un microprocesor consumă mai puțină energie, dar poate fi utilizat în orice loc pe microcontroler, urmați linkul pentru a afla cum diferă microprocesorul de microcontroler.
Tehnici de economisire a energiei pentru microcontrolere
1. Moduri Sleep
Modurile de repaus (denumite în general moduri de putere redusă) sunt, fără îndoială, cea mai populară tehnică de reducere a consumului de energie în microcontrolere. În general, acestea implică dezactivarea anumitor circuite sau ceasuri care acționează anumite periferice ale microcontrolerelor.
În funcție de arhitectură și producător, microcontrolerele au de obicei diferite tipuri de moduri de repaus, fiecare mod având capacitatea de a dezactiva mai multe circuite interne sau periferice în comparație cu celălalt. Modurile de somn variază, de obicei, de la somn profund sau oprit, până la modurile de repaus și somn.
Unele dintre modurile disponibile sunt explicate mai jos. Trebuie remarcat faptul că caracteristicile, precum și denumirea acestor moduri pot varia de la producător la producător.
eu. Mod inactiv / Repaus
Acesta este de obicei cel mai simplu dintre modurile de consum redus de implementat de către proiectanți. Acest mod permite microcontrolerului să revină la funcționarea completă la un ritm foarte rapid. Prin urmare, nu este cel mai bun mod, în cazul în care ciclul de alimentare al dispozitivului, cere ca acesta să părăsească modul de repaus foarte des, întrucât se consumă o cantitate mare de energie, atunci când microcontrolerul iese din modul de repaus. Revenirea la modul activ din modul de așteptare se bazează de obicei pe întreruperi. Acest mod este implementat pe microcontroler prin oprirea arborelui ceasului care acționează circuitele procesorului în timp ce ceasul primar de înaltă frecvență MCU este funcționat. Cu aceasta, CPU-ul este capabil să reia operațiunile imediat ce declanșatorul de trezire este activat. Sistemul de ceas a fost utilizat pe scară largă pentru a întrerupe semnalele în moduri de consum redus pentru microcontrolere, iar acest mod pornește în mod eficient semnalele de ceas din CPU.
ii. Mod de asteptare
Modul de așteptare este un alt mod de consum redus, ușor de implementat de către proiectanți. Este foarte asemănător cu modul de repaus / repaus, deoarece implică, de asemenea, utilizarea unei porți de ceas pe CPU, dar o diferență majoră este că permite schimbarea conținutului ramului, ceea ce nu este de obicei cazul modului de repaus / repaus. În modul de așteptare, perifericele de mare viteză precum DMA (acces direct la memorie), porturile seriale, perifericele ADC și AES sunt menținute în funcțiune pentru a se asigura că sunt disponibile imediat după ce CPU este treaz. Pentru anumite MCU-uri, memoria RAM este de asemenea activă și poate fi accesată de DMA, permițând stocarea și primirea datelor fără intervenția CPU. Puterea consumată în acest mod poate fi de până la 50uA / MHZ pentru microcontrolerele de putere redusă.
iii. Mod Deep Sleep
Modul de adormire profundă implică, în general, dezactivarea ceasurilor de înaltă frecvență și a altor circuite din microcontroler, lăsând doar circuitele de ceas utilizate pentru a conduce elemente critice, cum ar fi cronometrul câinelui de supraveghere, detectarea brown out și circuitul de resetare a puterii. Alte MCU-uri pot adăuga alte elemente pentru a îmbunătăți eficiența generală. Consumul de energie în acest mod poate fi de până la 1uA, în funcție de MCU-ul special.
iv. Modul Stop / OFF
Anumite microcontrolere au variații diferite ale acestui mod suplimentar. În acest mod, atât oscilatoarele ridicate, cât și cele joase sunt de obicei dezactivate, lăsând doar unele registre de configurație și alte elemente critice activate.
Caracteristicile tuturor modurilor de somn menționate mai sus diferă de la MCU la MCU, dar regula generală este; cu cât somnul este mai adânc, cu atât este mai mare numărul de periferice cu handicap în timpul somnului și cu atât este mai mică cantitatea de energie consumată, deși acest lucru înseamnă, de obicei; cu atât este mai mare cantitatea de energie consumată pentru a recupera sistemul. Astfel, depinde de proiectant să ia în considerare această variantă și să aleagă MCU-ul potrivit pentru sarcină, fără a face compromisuri care afectează specificațiile sistemului.
2. Modificarea dinamică a frecvenței procesorului
Aceasta este o altă tehnică populară pentru reducerea eficientă a cantității de energie consumată de un microcontroler. Este de departe cea mai veche tehnică și puțin mai complicată decât modurile de somn. Acesta implică firmware-ul care conduce dinamic ceasul procesorului, alternând între frecvența înaltă și cea joasă, deoarece relația dintre frecvența procesorului și cantitatea de energie consumată este liniară (așa cum se arată mai jos).
Implementarea acestei tehnici urmează de obicei acest model; atunci când sistemul este în stare de repaus, firmware-ul setează frecvența ceasului la o viteză redusă permițând dispozitivului să economisească puțină energie și atunci când sistemul trebuie să facă calcule grele, viteza ceasului este readusă înapoi.
Există scenarii contraproductive pentru modificarea frecvenței procesorului, care este de obicei ca rezultat al firmware-ului prost dezvoltat. Astfel de scenarii apar atunci când frecvența ceasului este menținută la un nivel scăzut în timp ce sistemul efectuează calcule grele. O frecvență scăzută în acest scenariu înseamnă că sistemul va lua mai mult timp decât este necesar pentru a efectua sarcina stabilită și va consuma astfel în mod acumulativ aceeași cantitate de energie pe care designerii au încercat să o economisească. Astfel, trebuie acordată o atenție deosebită la implementarea acestei tehnici în aplicații critice în timp.
3. Structura firmware-ului de manipulare a întreruperii
Aceasta este una dintre cele mai extreme tehnici de gestionare a energiei în microcontrolere. Este posibil prin câteva microcontrolere, cum ar fi nucleele ARM cortex-M, care au un bit sleep-on-exit în registrul SCR. Acest bit oferă microcontrolerului posibilitatea de a dormi după rularea unei rutine de întrerupere. Deși există o limită a numărului de aplicații care vor rula fără probleme în acest mod, aceasta ar putea fi o tehnică foarte utilă pentru senzorii de câmp și alte aplicații pe termen lung, bazate pe colectarea de date.
Majoritatea celorlalte tehnici, după părerea mea, sunt variații ale celor deja menționate mai sus. De exemplu, tehnica de ceas periferic selectiv este în esență o variație a modurilor de repaus în care proiectantul selectează perifericele pentru a activa sau dezactiva. Această tehnică necesită o cunoaștere profundă a microcontrolerului țintă și poate să nu fie foarte prietenoasă pentru începători.
4. Firmware optimizat de alimentare
Una dintre cele mai bune modalități de a reduce cantitatea de energie consumată de un microcontroler este prin scrierea unui firmware eficient și bine optimizat. Acest lucru afectează în mod direct cantitatea de muncă efectuată de CPU pe timp și, prin extensie, contribuie la cantitatea de energie consumată de microcontroler. Trebuie depuse eforturi în timpul scrierii firmware-ului pentru a asigura o dimensiune și cicluri reduse ale codului, deoarece fiecare instrucțiune inutilă executată este o parte din energia stocată în baterie care este risipită. Mai jos sunt câteva sfaturi obișnuite bazate pe C pentru dezvoltarea optimizată a firmware-ului;
- Utilizați Clasa „Static Const” cât mai mult posibil pentru a preveni copierea în timp de execuție a matricelor, structurilor etc. care consumă energie.
- Folosiți indicii. Acestea sunt probabil cea mai dificilă parte a limbajului C de înțeles pentru începători, dar sunt cele mai bune pentru accesarea eficientă a structurilor și uniunilor.
- Evitați Modulo!
- Variabile locale peste variabile globale, acolo unde este posibil. Variabilele locale sunt conținute în CPU, în timp ce variabilele globale sunt stocate în RAM, CPU accesează variabilele locale mai repede.
- Tipurile de date nesemnate sunt cel mai bun prieten al tău acolo unde este posibil.
- Adoptați „numărătoarea inversă” pentru bucle, acolo unde este posibil.
- În loc de câmpuri de biți pentru numere întregi nesemnate, utilizați măști de biți.
Abordările pentru reducerea cantității de energie consumată de un microcontroler nu se limitează la abordările bazate pe software menționate mai sus, există abordări bazate pe hardware, cum ar fi tehnica de control a tensiunii de bază, dar pentru a menține lungimea acestui post într-un interval rezonabil, vom economisi ei pentru o altă zi.
Concluzie
Implementarea produsului cu consum redus de energie începe de la alegerea microcontrolerului și poate fi destul de confuză atunci când încercați să treceți peste diversele opțiuni disponibile pe piață. În timp ce scanați, foaia tehnică poate funcționa bine pentru obținerea performanței generale a MCU-urilor, dar pentru aplicațiile cu putere critică, poate fi o abordare foarte costisitoare. Pentru a înțelege adevăratele caracteristici de putere ale unui microcontroler, dezvoltatorii trebuie să ia în considerare specificațiile electrice și funcționalitățile de putere redusă disponibile microcontrolerului. Proiectanții nu ar trebui să fie preocupați doar de consumul curent al fiecăruia dintre modurile de alimentare promovate de fișa tehnică a MCU, ci ar trebui să analizeze timpul de trezire, sursele de trezire și perifericele care sunt disponibile pentru utilizare în timpul modurilor de consum redus.
Este important să verificați caracteristicile microcontrolerului pe care intenționați să îl utilizați pentru a stabili opțiunile pe care le aveți pentru implementarea unei puteri reduse. Microcontrolerele au fost unul dintre cei mai mari beneficiari ai avansării tehnologice și există acum mai multe microcontrolere cu putere foarte mică, care vă asigură că aveți resurse care vă vor ajuta să vă mențineți în limita bugetului de energie. Unele dintre ele oferă, de asemenea, mai multe instrumente software de analiză a puterii de care puteți profita, pentru un design eficient. Un favorit personal este linia de microcontrolere MSP430 de la Texas Instrument.