- Tehnike varčevanja z energijo za mikrokrmilnike
- 1. Načini spanja
- 2. Dinamična sprememba frekvence procesorja
- 3. Struktura vdelane programske opreme upravljalnika prekinitev
- 4. Power Optimized Firmware
- Zaključek
Tako kot je plin (bencin / dizelsko gorivo) pomemben za premikanje koles, tovornjakov in avtomobilov (ja, razen Teslas!), Velja tudi električna energija za večino elektronskih aplikacij in še več, za vgrajene sistemske aplikacije, ki so običajno baterije (omejena energija), od običajnih mobilnih telefonov do pametnih domačih naprav.
Omejena narava napajanja baterij pomeni, da mora biti stopnja porabe energije teh naprav razumna, da spodbuja njihovo uporabo in uporabo. Še posebej pri napravah, ki temeljijo na IoT, kjer lahko pričakujemo, da bo naprava trajala 8–10 let z enim polnjenjem brez zamenjave baterije.
Zaradi teh trendov je pri načrtovanju vgrajenih sistemov prišlo do upoštevanja nizke porabe energije, zato so oblikovalci, inženirji in proizvajalci v preteklih letih razvili več inteligentnih načinov za učinkovito upravljanje porabljene energije izdelkov, da bi zagotovili, da zdržijo dlje časa. eno polnjenje. Veliko teh tehnik se osredotoča na mikrokrmilnik, ki je srce večine naprav. V današnjem članku bomo raziskovali nekatere od teh tehnik in kako jih lahko uporabimo za zmanjšanje porabe energije v mikrokrmilnikih. Čeprav mikroprocesor porabi manj energije, vendar ga je mogoče uporabiti na mikrokrmilniku povsod, sledite povezavi, če želite izvedeti, kako se mikroprocesor razlikuje od mikrokrmilnika.
Tehnike varčevanja z energijo za mikrokrmilnike
1. Načini spanja
Načini mirovanja (na splošno imenovani načini z nizko porabo energije) so verjetno najbolj priljubljena tehnika za zmanjšanje porabe energije v mikrokrmilnikih. Običajno vključujejo onemogočanje določenih vezij ali ur, ki poganjajo določene zunanje naprave mikrokrmilnikov.
Glede na arhitekturo in proizvajalca imajo mikrokrmilniki običajno različne načine spanja, pri čemer ima vsak način možnost, da onemogoči več notranjega ali perifernega vezja v primerjavi z drugim. Načini spanja se običajno gibljejo od globokega spanja ali izklopa do načinov mirovanja in dremeža.
Nekateri razpoložljivi načini so pojasnjeni spodaj. Upoštevati je treba, da se lastnosti in ime teh načinov lahko razlikujejo od proizvajalca do proizvajalca.
jaz. Način mirovanja / spanja
To je običajno najpreprostejši način za nizko porabo, ki ga lahko oblikujejo oblikovalci. Ta način omogoča, da se mikrokrmilnik zelo hitro vrne v polno delovanje. Zato ni najboljši način, če cikel napajanja naprave zahteva, da zelo pogosto zapusti način mirovanja, saj se porabi velika količina energije, ko mikrokrmilnik zapusti način mirovanja. Vrnitev v aktivni način iz stanja pripravljenosti običajno temelji na prekinitvah. Ta način se izvaja na mikrokrmilniku tako, da izklopi drevo ure, ki poganja vezje CPU, medtem ko primarna visokofrekvenčna ura MCU še naprej deluje. S tem lahko CPU nadaljuje z operacijo takoj, ko se sproži sprožilec prebujanja. Ure za ure je bilo v veliki meri uporabljeno za prekinitev signalov v načinih nizke porabe energije za mikrokrmilnike in ta način učinkovito prenaša signale ure skozi CPU.
ii. Stanje pripravljenosti
Način pripravljenosti je še en način z nizko porabo energije, ki ga oblikovalci enostavno uvedejo. Zelo je podoben načinu mirovanja / spanja, saj vključuje tudi uporabo ure skozi CPU, vendar je ena glavnih razlik ta, da omogoča spreminjanje vsebine RAM-a, kar običajno ni v načinu mirovanja / spanja. V stanju pripravljenosti periferne naprave visoke hitrosti, kot so DMA (neposreden dostop do pomnilnika), serijska vrata, ADC in AES periferne enote, delujejo tako, da so na voljo takoj, ko je CPU buden. Za nekatere MCU-je tudi RAM ostane aktiven in do njega lahko dostopa DMA, ki omogoča shranjevanje in sprejemanje podatkov brez posredovanja CPU-ja. Porabljena moč v tem načinu je pri mikrokrmilnikih z majhno močjo lahko le 50uA / MHZ.
iii. Način globokega spanja
Način globokega spanja na splošno vključuje onemogočanje visokofrekvenčnih ur in drugih vezij znotraj mikrokrmilnika, pri čemer ostane le vezje ure, ki se uporablja za pogon kritičnih elementov, kot so časovni pas, zaznavanje rjavega izklopa in vezje za vklop. Drugi MCU-ji lahko dodajo druge elemente, da izboljšajo splošno učinkovitost. Poraba energije v tem načinu je lahko le 1uA, odvisno od določenega MCU.
iv. Stop / OFF način
Nekateri mikrokrmilniki imajo različne različice tega dodatnega načina. V tem načinu so običajno onemogočeni tako visoki kot nizki oscilatorji, pri čemer ostanejo vključeni le nekateri konfiguracijski registri in drugi kritični elementi.
Značilnosti vseh zgoraj omenjenih načinov spanja se razlikujejo od MCU do MCU, vendar je splošno pravilo; globlje kot je spanje, več je zunanjih naprav, onemogočenih med spanjem, in manjša količina porabljene energije, čeprav to običajno tudi pomeni; večja je količina energije, porabljene za obnovitev sistema. Tako mora oblikovalec upoštevati to različico in izbrati pravi MCU za nalogo, ne da bi pri tem naredil kompromise, ki vplivajo na specifikacijo sistema.
2. Dinamična sprememba frekvence procesorja
To je še ena zelo priljubljena tehnika za učinkovito zmanjšanje količine energije, ki jo porabi mikrokrmilnik. Je daleč najstarejša tehnika in nekoliko bolj zapletena od načinov spanja. Vključuje vdelano programsko opremo, ki dinamično poganja procesorsko uro, izmenično med visoko in nizko frekvenco, saj je razmerje med frekvenco procesorja in porabljeno močjo linearno (kot je prikazano spodaj).
Izvajanje te tehnike običajno sledi temu vzorcu; ko je sistem v stanju mirovanja, vdelana programska oprema nastavi frekvenco ure na nizko hitrost, kar napravi omogoča prihranek nekaj energije, in ko mora sistem opraviti težke izračune, se urna hitrost vrne nazaj.
Obstajajo kontraproduktivni scenariji spreminjanja frekvence procesorja, ki so običajno posledica slabo razvite vdelane programske opreme. Takšni scenariji se pojavijo, kadar je urna frekvenca nizka, medtem ko sistem izvaja težke izračune. Nizka frekvenca v tem scenariju pomeni, da bo sistem potreboval več časa, kot je potrebno za izvedbo zastavljene naloge, in bo tako kumulativno porabil enako količino energije, kot so jo skušali prihraniti oblikovalci. Tako je treba biti še posebej previden pri izvajanju te tehnike v časovno kritičnih aplikacijah.
3. Struktura vdelane programske opreme upravljalnika prekinitev
To je ena najbolj ekstremnih tehnik upravljanja moči v mikrokrmilnikih. Omogoča ga nekaj mikrokrmilnikov, kot so jedra ARM cortex-M, ki imajo v registru SCR bit za spanje ob izstopu. Ta bit omogoča mikrokrmilniku možnost spanja po izvajanju prekinitvene rutine. Čeprav je število aplikacij, ki bodo na ta način delovale nemoteno, omejeno, je to lahko zelo uporabna tehnika za senzorje polja in druge dolgoročne aplikacije, ki temeljijo na zbiranju podatkov.
Večina drugih tehnik je po mojem mnenju različica že omenjenih. Na primer, tehnika selektivne periferne taktike je v bistvu različica načinov mirovanja, pri katerih oblikovalec izbere zunanje naprave za vklop ali izklop. Ta tehnika zahteva poglobljeno znanje ciljnega mikrokrmilnika in morda ni zelo prijazna do začetnikov.
4. Power Optimized Firmware
Eden najboljših načinov za zmanjšanje porabe energije, ki jo porabi mikrokrmilnik, je pisanje učinkovite in dobro optimizirane programske opreme. To neposredno vpliva na količino dela, ki ga CPU opravi na čas, in to s podaljšanjem prispeva k količini energije, ki jo porabi mikrokrmilnik. Med pisanjem vdelane programske opreme si je treba prizadevati za zagotovitev zmanjšane velikosti in ciklov kode, saj je vsako nepotrebno navodilo del energije, shranjene v bateriji, ki se zapravlja. Spodaj je nekaj običajnih nasvetov na osnovi C za optimiziran razvoj vdelane programske opreme;
- Čim bolj uporabljajte razred "Static Const", da preprečite kopiranje nizov, struktur itd., Ki porablja energijo, med izvajanjem.
- Uporabite kazalce. Za začetnike so verjetno najtežji del jezika C, vendar so najboljši za učinkovit dostop do struktur in sindikatov.
- Izogibajte se Modulu!
- Lokalne spremenljivke nad globalnimi spremenljivkami, kjer je to mogoče. Lokalne spremenljivke so v CPU, medtem ko so globalne spremenljivke shranjene v RAM-u, CPU hitreje dostopa do lokalnih spremenljivk.
- Nepodpisane vrste podatkov so vaš najboljši prijatelj, kjer je to mogoče.
- Sprejemite "odštevanje" za zanke, kjer je to mogoče.
- Namesto bitnih polj za nepopisana cela števila uporabite bitne maske.
Pristopi za zmanjšanje količine energije, ki jo porabi mikrokrmilnik, niso omejeni na zgoraj omenjene pristope, ki temeljijo na programski opremi. Obstajajo pristopi, ki temeljijo na strojni opremi, kot je tehnika nadzora napetosti jedra, vendar bomo, če bomo ohranili dolžino te objave v razumnem obsegu, prihranili. jih še en dan.
Zaključek
Izvajanje izdelka z majhno porabo energije se začne pri izbiri mikrokrmilnika in je lahko precej zmedeno, ko poskušate preučiti različne možnosti, ki so na voljo na trgu. Med pregledovanjem lahko podatkovni list dobro deluje za doseganje splošne učinkovitosti MCU-jev, za aplikacije, ki so kritične za energijo, pa je lahko zelo drag pristop. Da bi razumeli resnične značilnosti moči mikrokrmilnika, morajo razvijalci upoštevati električne specifikacije in funkcije nizke porabe energije, ki so na voljo mikrokrmilniku. Oblikovalcev ne sme skrbeti le trenutna poraba v vsakem načinu napajanja, ki ga oglašuje podatkovni list MCU, temveč bi morali preučiti tudi čas bujenja, vire bujenja in zunanje naprave ki so na voljo za uporabo v načinu nizke porabe.
Pomembno je preveriti lastnosti mikrokrmilnika, ki ga nameravate uporabiti, da ugotovite možnosti, ki jih imate za izvedbo z nizko porabo energije. Mikrokrmilniki so bili eden največjih upravičencev do tehnološkega napredka, zdaj pa je na voljo več mikrokrmilnikov z ultra nizko porabo energije, ki zagotavljajo, da imate sredstva, s katerimi boste lahko ostali v okviru svojega proračuna. Številni ponujajo tudi več programskih orodij za analizo moči, ki jih lahko izkoristite za učinkovito oblikovanje. Osebno najljubša je linija mikrokrmilnikov MSP430 podjetja Texas Instrument.