- Energispartekniker för mikrokontroller
- 1. Vilolägen
- 2. Dynamisk modifiering av processorfrekvens
- 3. Avbryt Firmware-struktur för hanteraren
- 4. Kraftoptimerad fast programvara
- Slutsats
Precis som gas (bensin / diesel) är viktigt för cyklar, lastbilar och bilar (ja, exklusive Teslas!) Att röra sig, så är elektrisk kraft för de flesta elektronikapplikationer och mer för inbäddade systembaserade applikationer som vanligtvis är batteri (begränsad energi) drivs, från vanliga mobiltelefoner till bland annat smarta hem.
Batteriets begränsade karaktär innebär att det måste vara rimligt att säkerställa att energiförbrukningen för dessa enheter är rimlig för att uppmuntra till användning och användning. Speciellt med IoT-baserade enheter där en enhet kan förväntas hålla så länge som 8-10 år på en enda laddning utan batteribyte.
Dessa trender har gjort implementeringen av lågeffektiva överväganden i utformningen av inbäddade system och genom åren har konstruktörer, ingenjörer och tillverkare vid flera tillfällen utvecklat flera intelligenta sätt att effektivt hantera den kraft som konsumeras av produkter för att säkerställa att de håller längre på en enkel laddning. Många av dessa tekniker fokuserar på mikrokontrollern, som är hjärtat för de flesta enheterna. I dagens artikel kommer vi att utforska några av dessa tekniker och hur de kan användas för att minimera strömförbrukningen i mikrokontroller. Även om en mikroprocessor förbrukar mindre ström men den kan användas på Microcontroller överallt, följ länken för att lära dig hur Microprocessor skiljer sig från Microcontroller.
Energispartekniker för mikrokontroller
1. Vilolägen
Vilolägena (vanligtvis kallade lågeffektslägen) är utan tvekan den mest populära tekniken för att minska strömförbrukningen i mikrokontroller. De involverar i allmänhet inaktivering av vissa kretsar eller klockor som driver vissa kringutrustning för mikrokontroller.
Beroende på arkitektur och tillverkare har mikrokontroller vanligtvis olika typer av vilolägen, varvid varje läge har förmågan att inaktivera mer interna kretsar eller kringutrustning jämfört med den andra. Vilolägen varierar vanligtvis från djup sömn eller av, till viloläge.
Några av de tillgängliga lägena förklaras nedan. Det bör noteras att egenskaperna och namnet på dessa lägen kan variera från tillverkare till tillverkare.
i. Viloläge / viloläge
Detta är vanligtvis det enklaste av lågeffektlägen för designers att implementera. Detta läge gör att mikrokontrollern kan återgå till full drift med en mycket snabb takt. Det är därför inte det bästa läget, om enhetens effektcykel kräver att den lämnar viloläget mycket ofta, eftersom en stor mängd ström dras när mikrokontrollen lämnar viloläget. Återgå till aktivt läge från vänteläge är vanligtvis avbrottsbaserat. Detta läge implementeras på mikrokontrollern genom att stänga av klockträdet som driver CPU-kretsarna medan MCU: s primära högfrekventa klocka hålls igång. Med detta kan CPU återuppta operationer omedelbart väckningstriggern aktiveras. Klockgrindning har använts i stor utsträckning för att stänga av signaler i lägen för låg effekt för mikrokontroller och detta läge grindar effektivt klocksignaler över CPU: n.
ii. Standbyläge
Standby Mode är ett annat lågeffektläge, lätt för designers att implementera. Det liknar väldigt viloläge eftersom det också innebär användning av klockgrindning över processorn, men en stor skillnad är att det tillåter ändring av ramens innehåll, vilket vanligtvis inte är fallet med viloläge / viloläge. I vänteläge fortsätter höghastighetsutrustning som DMA (direktminnesåtkomst), seriella portar, ADC och AES-kringutrustning igång för att säkerställa att de är tillgängliga omedelbart efter att CPU är vaken. För vissa MCU: er hålls även RAM-minne aktivt och kan nås av DMA så att data kan lagras och tas emot utan CPU-ingripande. Effekt som dras i detta läge kan vara så lågt som 50uA / MHZ för mikrostyrenheter med låg effekt.
iii. Djupt viloläge
Djupt viloläge innebär vanligtvis att högfrekventa klockor och andra kretsar inaktiveras i mikrokontrollen, vilket endast lämnar klockkretsarna som används för att driva kritiska element som vakthundstimern, detektering av brunt och återställningskretsen. Andra MCU: er kan lägga till andra element för att förbättra den totala effektiviteten. Strömförbrukningen i det här läget kan vara så låg som 1uA beroende på den specifika MCU.
iv. Stopp / AV-läge
Vissa mikrokontroller har olika varianter av detta ytterligare läge. I det här läget är både höga och låga oscillatorer vanligtvis inaktiverade och lämnar bara vissa konfigurationsregister och andra kritiska element på.
Funktionerna i alla vilolägen som nämns ovan skiljer sig från MCU till MCU men den allmänna tumregeln är; ju djupare sömnen desto mer antal kringutrustning avaktiverade under sömnen, och desto lägre är energiförbrukningen, även om detta vanligtvis också betyder; ju högre mängd energi som förbrukas för att få systemet upp igen. Det är alltså upp till designern att överväga denna variant och välja rätt MCU för uppgiften utan att göra kompromisser som påverkar systemets specifikation.
2. Dynamisk modifiering av processorfrekvens
Detta är en annan mycket populär teknik för att effektivt minska mängden ström som förbrukas av en mikrokontroller. Det är överlägset den äldsta tekniken och lite mer komplicerad än sömnlägena. Det innebär att firmware dynamiskt driver processorklockan och växlar mellan hög och låg frekvens eftersom förhållandet mellan processorns frekvens och mängden förbrukad energi är linjär (som visas nedan).
Implementeringen av denna teknik följer vanligtvis detta mönster; när systemet är i viloläge, ställer in firmware klockfrekvensen till låg hastighet så att enheten kan spara lite ström och när systemet behöver göra tunga beräkningar tas klockhastigheten upp igen.
Det finns kontraproduktiva scenarier för att ändra processorfrekvensen, vilket vanligtvis är ett resultat av dåligt utvecklad firmware. Sådana scenarier uppstår när klockfrekvensen hålls låg medan systemet utför tunga beräkningar. En låg frekvens i det här scenariot innebär att systemet tar längre tid än nödvändigt för att utföra den inställda uppgiften och därmed ackumulerat förbrukar samma mängd ström som designers försökte spara. Således måste extra försiktighet tas vid implementering av denna teknik i tidskritiska applikationer.
3. Avbryt Firmware-struktur för hanteraren
Detta är en av de mest extrema teknikerna för energihantering i mikrokontroller. Det är möjligt av få mikrokontroller som ARM cortex-M-kärnor som har en sleep-on-exit-bit i SCR-registret. Denna bit ger mikrokontrollern möjlighet att sova efter att ha kört en avbrottsrutin. Även om det finns en gräns för antalet applikationer som kommer att fungera smidigt på detta sätt, kan detta vara en mycket användbar teknik för fältsensorer och andra, långvariga, datainsamlingsbaserade applikationer.
De flesta andra tekniker enligt min mening är variationer av de som redan nämnts ovan. Till exempel är den selektiva perifera klockningstekniken väsentligen en variation av vilolägena i vilka designern väljer kringutrustning för att slå på eller av. Denna teknik kräver en djup kunskap om målmikrokontrollern och kanske inte är mycket nybörjarvänlig.
4. Kraftoptimerad fast programvara
Ett av de bästa sätten att minska mängden energi som en mikrokontroller förbrukar är att skriva effektiv och väl optimerad firmware. Detta påverkar direkt mängden arbete som utförs av CPU per gång och detta bidrar i förlängningen till mängden ström som förbrukas av mikrokontrollern. Ansträngningar bör göras när du skriver firmware för att säkerställa minskad kodstorlek och cykler eftersom varje onödig instruktion som utförs är en del av den energi som lagras i batteriet som slösas bort. Nedan följer några vanliga C-baserade tips för optimerad firmwareutveckling;
- Använd "Static Const" -klassen så mycket som möjligt för att förhindra runtime-kopiering av matriser, strukturer etc. som förbrukar ström.
- Använd pekare. De är förmodligen den svåraste delen av C-språket att förstå för nybörjare men de är bäst för att få tillgång till strukturer och fackföreningar effektivt.
- Undvik Modulo!
- Lokala variabler över globala variabler där det är möjligt. Lokala variabler finns i CPUn medan globala variabler lagras i RAM-minnet, CPU kommer åt lokala variabler snabbare.
- Osignerade datatyper är din bästa vän där det är möjligt.
- Anta "nedräkning" för slingor där det är möjligt.
- Använd bitmasker istället för bitfält för osignerade heltal.
Metoder för att minska mängden ström som förbrukas av en mikrokontroller är inte begränsade till de programvarubaserade tillvägagångssätten som nämns ovan, hårdvarubaserade metoder som kärnspänningskontrolltekniken finns, men för att hålla längden på detta inlägg inom ett rimligt intervall kommer vi att spara dem för en annan dag.
Slutsats
Implementering av lågeffektprodukt börjar med valet av mikrokontroller och det kan vara ganska förvirrande när du försöker gå igenom de olika alternativen som finns på marknaden. Under genomsökning kan databladet fungera bra för att uppnå MCU: s allmänna prestanda, men för energikritiska applikationer kan det vara ett mycket kostsamt tillvägagångssätt. För att förstå de verkliga egenskaperna hos en mikrokontroller måste utvecklare ta hänsyn till de elektriska specifikationerna och de låga effektfunktionerna som är tillgängliga för mikrokontrollern. Designers bör inte bara vara oroliga över strömförbrukningen av var och en av de energilägen som annonseras av MCU: s datablad, de bör titta på väckningstid, väckningskällor och kringutrustning som är tillgängliga för användning under lågeffektlägen.
Det är viktigt att kontrollera funktionerna hos den mikrokontroller du planerar att använda för att fastställa vilka alternativ du har för lågeffektimplementering. Microcontrollers har varit en av de största förmånerna för teknikutveckling och det finns nu flera ultra-low-power microcontrollers som säkerställer att du har resurser som hjälper dig att hålla dig inom din energibudget. Ett antal av dem tillhandahåller också flera verktyg för kraftanalysprogramvara som du kan dra nytta av för effektiv design. En personlig favorit är MSP430-serien av mikrokontroller från Texas Instrument.