- Strømsparingsteknikker for mikrokontrollere
- 1. Hvilemodus
- 2. Dynamisk modifisering av prosessorfrekvens
- 3. Avbryt fastvarestrukturen til håndtereren
- 4. Strømoptimalisert fastvare
- Konklusjon
Akkurat som gass (bensin / diesel) er viktig for sykler, lastebiler og biler (ja, unntatt Teslas!) Å bevege seg, er også elektrisk kraft for de fleste elektronikkapplikasjoner og mer for innebygde systembaserte applikasjoner som vanligvis er batteri (begrenset energi) drevet, fra vanlige mobiltelefoner til blant annet smart hjemmeenheter.
Batteriets begrensede karakter innebærer behovet for å sikre at strømforbruket til disse enhetene bør være rimelig for å oppmuntre til bruk og bruk. Spesielt med IoT-baserte enheter der en enhet kan forventes å vare så lenge som 8-10 år på en enkelt lading uten batteribytte.
Disse trendene har gjort implementeringen av laveffekthensyn i utformingen av innebygde systemer, og gjennom årene har designere, ingeniører og produsenter på flere punkt utviklet flere intelligente måter å effektivt administrere kraften som forbrukes av produkter, for å sikre at de varer lenger på en enkeltladning. Mange av disse teknikkene fokuserer på mikrokontrolleren, som er hjertet til de fleste enhetene. I dagens artikkel vil vi utforske noen av disse teknikkene og hvordan de kan brukes til å minimere strømforbruket i mikrokontrollere. Selv om en mikroprosessor bruker mindre strøm, men den kan brukes i plassert på mikrokontroller overalt, følger du lenken for å lære hvordan mikroprosessor er forskjellig fra mikrokontroller.
Strømsparingsteknikker for mikrokontrollere
1. Hvilemodus
Hvilemodusene (vanligvis referert til som moduser med lav effekt) er uten tvil den mest populære teknikken for å redusere strømforbruket i mikrokontrollere. De involverer vanligvis deaktivering av visse kretsløp eller klokker som driver visse eksterne enheter til mikrokontrollerne.
Avhengig av arkitektur og produsent, har mikrokontrollere vanligvis forskjellige typer hvilemodus, med hver modus som har muligheten til å deaktivere mer interne kretser eller periferi sammenlignet med den andre. Hvilemodus varierer vanligvis fra dyp søvn eller av, til inaktiv og dvalemodus.
Noen av de tilgjengelige modusene er forklart nedenfor. Det skal bemerkes at egenskapene samt navnet på disse modusene kan variere fra produsent til produsent.
Jeg. Inaktiv / hvilemodus
Dette er vanligvis den enkleste modusen med lav effekt for designere å implementere. Denne modusen gjør at mikrokontrolleren kan gå tilbake til full drift med en veldig rask hastighet. Det er derfor ikke den beste modusen, hvis kraftsyklusen til enheten krever at den forlater hvilemodus veldig ofte, da en stor mengde strøm blir trukket når mikrokontrolleren går ut av hvilemodus. Gå tilbake til aktiv modus fra standby-modus er vanligvis avbruddsbasert. Denne modusen implementeres på mikrokontrolleren ved å slå av klokkentreet som driver CPU-kretsene mens MCU primære høyfrekvente klokke holdes i gang. Med dette er CPU i stand til å gjenoppta driften umiddelbart når vekkerutløseren aktiveres. Clock gating har blitt brukt i stor utstrekning for å kutte av signaler i laveffektsmodus for mikrokontrollere, og denne modusen porter effektivt kloksignaler over CPU.
ii. Standby-modus
Standby-modus er en annen laveffektsmodus, enkel for designere å implementere. Det ligner veldig på inaktiv / hvilemodus, da det også innebærer bruk av klokkering over prosessoren, men en stor forskjell er at det tillater endring i innholdet i rammen, som vanligvis ikke er tilfelle med inaktiv / hvilemodus. I standby-modus holdes høyhastighets eksterne enheter som DMA (direkte minnetilgang), serielle porter, ADC og AES periferiutstyr kjørende for å sikre at de er tilgjengelige umiddelbart etter at CPU er våken. For visse MCU-er holdes RAM-en også aktiv og kan nås av DMA slik at data kan lagres og mottas uten CPU-inngrep. Effekt som trekkes i denne modusen kan være så lavt som 50uA / MHZ for mikrostyrere med lav effekt.
iii. Dyp søvnmodus
Dyp søvnmodus innebærer vanligvis deaktivering av høyfrekvente klokker og andre kretser i mikrokontrolleren, og bare etterlater klokkekretsene som brukes til å kjøre kritiske elementer som vakthundtimeren, detektering av utbrudd og strømmen til tilbakestillingskretsene. Andre MCU-er kan legge til andre elementer for å forbedre den samlede effektiviteten. Strømforbruket i denne modusen kan være så lavt som 1uA, avhengig av MCU.
iv. Stopp / AV-modus
Enkelte mikrokontrollere har forskjellige varianter av denne tilleggsmodusen. I denne modusen er både høye og lave oscillatorer vanligvis deaktivert og lar bare noen konfigurasjonsregistre og andre kritiske elementer være på.
Funksjonene i alle hvilemodusene som er nevnt ovenfor, er forskjellige fra MCU til MCU, men den generelle tommelfingerregelen er; jo dypere søvn, jo mer antall periferiutstyr deaktivert under søvn, og jo lavere mengde strømforbruk, selv om dette vanligvis også betyr; jo høyere mengde energi som forbrukes for å få systemet opp igjen. Det er dermed opp til designeren å vurdere denne variasjonen og velge riktig MCU for oppgaven uten å inngå kompromisser som påvirker spesifikasjonen til systemet.
2. Dynamisk modifisering av prosessorfrekvens
Dette er en annen populær teknikk for effektivt å redusere strømforbruket av en mikrokontroller. Det er den klart eldste teknikken og litt mer komplisert enn hvilemodusene. Det innebærer at firmwaren dynamisk driver prosessorklokken, veksler mellom høy og lav frekvens ettersom forholdet mellom prosessorens frekvens og mengden strøm som forbrukes er lineær (som vist nedenfor).
Implementeringen av denne teknikken følger vanligvis dette mønsteret; når systemet er i inaktiv tilstand, stiller firmwaren klokkefrekvensen til lav hastighet, slik at enheten kan spare litt strøm, og når systemet trenger å gjøre tunge beregninger, blir klokkehastigheten tatt opp igjen.
Det er kontraproduktive scenarier for å endre prosessorfrekvensen, som vanligvis er et resultat av dårlig utviklet firmware. Slike scenarier oppstår når klokkefrekvensen holdes lav mens systemet utfører tunge beregninger. En lav frekvens i dette scenariet betyr at systemet vil ta mer tid enn nødvendig for å utføre den angitte oppgaven, og dermed akkumulert vil forbruke den samme mengden kraft som designerne prøvde å spare. Dermed må ekstra forsiktighet tas når du implementerer denne teknikken i tidskritiske applikasjoner.
3. Avbryt fastvarestrukturen til håndtereren
Dette er en av de mest ekstreme teknikkene for strømstyring i mikrokontrollere. Det er mulig av få mikrokontrollere som ARM cortex-M-kjerner som har en sleep-on-exit bit i SCR-registeret. Denne biten gir mikrokontrolleren muligheten til å sove etter å ha kjørt en avbruddsrutine. Selv om det er en grense for antall applikasjoner som vil kjøre problemfritt på denne måten, kan dette være en veldig nyttig teknikk for feltfølere og andre, langsiktige, datainnsamlingsbaserte applikasjoner.
De fleste andre teknikker etter min mening er varianter av de som allerede er nevnt ovenfor. For eksempel er den selektive perifere klokke-teknikken i hovedsak en variant av hvilemodusene der designeren velger periferiutstyr for å slå på eller av. Denne teknikken krever en dyp kunnskap om mikrokontrolleren og er kanskje ikke veldig nybegynnervennlig.
4. Strømoptimalisert fastvare
En av de beste måtene å redusere mengden strøm som brukes av en mikrokontroller, er å skrive effektiv og godt optimalisert firmware. Dette påvirker direkte arbeidsmengden av CPU per gang, og dette bidrar i tillegg til mengden strøm som mikrokontrolleren bruker. Det skal gjøres en innsats mens du skriver firmware for å sikre redusert kodestørrelse og sykluser, ettersom hver unødvendig instruksjon som utføres, er en del av energien som er lagret i batteriet og blir kastet bort. Nedenfor er noen vanlige C-baserte tips for optimalisert firmwareutvikling;
- Bruk "Static Const" -klassen så mye som mulig for å forhindre kjøretidskopiering av matriser, strukturer etc. som bruker strøm.
- Bruk pekere. De er sannsynligvis den vanskeligste delen av C-språket å forstå for nybegynnere, men de er de beste for å få tilgang til strukturer og fagforeninger effektivt.
- Unngå Modulo!
- Lokale variabler over globale variabler der det er mulig. Lokale variabler er inneholdt i CPU-en mens globale variabler er lagret i RAM-en, CPU får tilgang til lokale variabler raskere.
- Usignerte datatyper er din beste venn der det er mulig.
- Vedta "nedtelling" for løkker der det er mulig.
- Bruk bitmasker i stedet for bitfelt for usignerte heltall.
Tilnærminger for å redusere mengden strøm som forbrukes av en mikrokontroller er ikke begrenset til de programvarebaserte tilnærmingene som er nevnt ovenfor. Maskinvarebaserte tilnærminger som kjernespenningskontrollteknikken eksisterer, men for å holde lengden på dette innlegget innenfor et rimelig område, vil vi spare dem for en annen dag.
Konklusjon
Implementering av laveffektprodukt starter fra valget av mikrokontroller, og det kan være ganske forvirrende når du prøver å gå gjennom de forskjellige alternativene som er tilgjengelige i markedet. Mens du skanner igjennom, kan databladet fungere bra for å oppnå den generelle ytelsen til MCUer, men for strømkritiske applikasjoner kan det være en veldig kostbar tilnærming. For å forstå de virkelige egenskapene til en mikrokontroller, må utviklere ta hensyn til de elektriske spesifikasjonene og de lave funksjonalitetene som er tilgjengelige for mikrokontrolleren. Designere bør ikke bare være bekymret for strømforbruket av hver av strømmodusene som er annonsert av MCUs datablad, de bør se på vekketid, vekkingskilder og periferiutstyr som er tilgjengelige for bruk i lavt strømforbruk.
Det er viktig å sjekke funksjonene til mikrokontrolleren du planlegger å bruke for å finne ut alternativene du har for implementering av lite strøm. Microcontrollers har vært en av de største mottakerne av teknologiutvikling, og det er nå flere ultra-low-power microcontrollers som sikrer at du har ressurser til å hjelpe deg med å holde deg innenfor strømbudsjettet. En rekke av dem tilbyr også flere verktøy for kraftanalyseprogramvare som du kan dra nytte av, for effektiv design. En personlig favoritt er MSP430-serien med mikrokontrollere fra Texas Instrument.