- Energiebesparende technieken voor microcontrollers
- 1. Slaapmodi
- 2. Dynamische aanpassing van de processorfrequentie
- 3. Onderbreek de Firmwarestructuur van de Handler
- 4. Stroomgeoptimaliseerde firmware
- Conclusie
Net zoals gas (benzine / diesel) belangrijk is voor het verplaatsen van fietsen, vrachtwagens en auto's (ja, exclusief Tesla's!), Zo is elektriciteit voor de meeste elektronische toepassingen en meer nog voor embedded systeemgebaseerde toepassingen die meestal op batterijen (beperkte energie) aangedreven, van onder andere de gewone mobiele telefoons tot slimme apparaten voor thuisgebruik.
De beperkte aard van batterijvermogen impliceert de noodzaak om ervoor te zorgen dat het stroomverbruik van deze apparaten redelijk moet zijn om de acceptatie en het gebruik ervan aan te moedigen. Vooral met op IoT gebaseerde apparaten waarvan kan worden verwacht dat een apparaat 8 - 10 jaar meegaat op een enkele lading zonder vervanging van de batterij.
Door deze trends zijn overwegingen met een laag vermogen bij het ontwerp van embedded systemen geïmplementeerd en in de loop der jaren hebben ontwerpers, ingenieurs en fabrikanten op verschillende punten verschillende intelligente manieren ontwikkeld om het stroomverbruik van producten effectief te beheren, om ervoor te zorgen dat ze langer meegaan op een enkele lading. Veel van deze technieken zijn gericht op de microcontroller, het hart van de meeste apparaten. In het artikel van vandaag zullen we enkele van deze technieken onderzoeken en hoe ze kunnen worden gebruikt om het stroomverbruik in microcontrollers te minimaliseren. Hoewel een microprocessor minder stroom verbruikt, maar deze overal op de microcontroller kan worden geplaatst, volgt u de link om te zien hoe microprocessor verschilt van microcontroller.
Energiebesparende technieken voor microcontrollers
1. Slaapmodi
De slaapmodi (meestal aangeduid als energiebesparende modi) zijn misschien wel de meest populaire techniek om het stroomverbruik in microcontrollers te verminderen. Ze omvatten meestal het uitschakelen van bepaalde circuits of klokken die bepaalde randapparatuur van de microcontrollers aansturen.
Afhankelijk van de architectuur en fabrikant hebben microcontrollers meestal verschillende soorten slaapmodi, waarbij elke modus de mogelijkheid heeft om meer interne schakelingen of randapparatuur uit te schakelen in vergelijking met de andere. Slaapmodi variëren meestal van diepe slaap of uitgeschakeld tot inactieve en sluimerstanden.
Enkele van de beschikbare modi worden hieronder uitgelegd. Opgemerkt moet worden dat zowel de kenmerken als de naam van deze modi van fabrikant tot fabrikant kunnen verschillen.
ik. Inactieve / slaapmodus
Dit is meestal de eenvoudigste van de energiebesparende modi die ontwerpers kunnen implementeren. In deze modus kan de microcontroller zeer snel weer volledig werken. Het is daarom niet de beste modus als de stroomcyclus van het apparaat vereist dat het de slaapmodus heel vaak verlaat, omdat er een grote hoeveelheid stroom wordt afgenomen wanneer de microcontroller de slaapmodus verlaat. Terugkeren naar de actieve modus vanuit de standby-modus is meestal gebaseerd op onderbrekingen. Deze modus wordt geïmplementeerd op de microcontroller door de klokboom uit te schakelen die het CPU-circuit aandrijft terwijl de primaire hoogfrequente klok van de MCU actief blijft. Hiermee kan de CPU de activiteiten hervatten zodra de wake-up trigger wordt geactiveerd. Clock gating is op grote schaal gebruikt om signalen in energiebesparende modi voor microcontrollers uit te schakelen en deze modus stuurt kloksignalen effectief over de CPU.
ii. Standby modus
De standby-modus is een andere energiebesparende modus, die ontwerpers gemakkelijk kunnen implementeren. Het lijkt erg op de inactieve / slaapmodus omdat het ook het gebruik van klokpoorten over de CPU inhoudt, maar een groot verschil is dat het de inhoud van de ram kan veranderen, wat meestal niet het geval is in de inactieve / slaapmodus. In de stand-bymodus blijven supersnelle randapparatuur zoals de DMA (directe geheugentoegang), seriële poorten, ADC- en AES-randapparatuur actief om ervoor te zorgen dat ze onmiddellijk beschikbaar zijn nadat de CPU wakker is. Voor bepaalde MCU's wordt het RAM ook actief gehouden en kan het worden benaderd door de DMA, waardoor gegevens kunnen worden opgeslagen en ontvangen zonder tussenkomst van de CPU. Het opgenomen vermogen in deze modus kan zo laag zijn als 50uA / MHZ voor microcontrollers met een laag vermogen.
iii. Diepe slaapstand
Diepe slaapmodus omvat doorgaans het uitschakelen van hoogfrequente klokken en andere circuits binnen de microcontroller, waardoor alleen het klokcircuit overblijft dat wordt gebruikt om kritische elementen aan te sturen, zoals de watchdog-timer, brown-out-detectie en het inschakelen van reset-circuits. Andere MCU's kunnen er andere elementen aan toevoegen om de algehele efficiëntie te verbeteren. Het stroomverbruik in deze modus kan zo laag zijn als 1uA, afhankelijk van de specifieke MCU.
iv. Stop / UIT-modus
Bepaalde microcontrollers hebben verschillende variaties op deze extra modus. In deze modus zijn zowel de hoge als de lage oscillatoren gewoonlijk uitgeschakeld, waardoor slechts enkele configuratieregisters en andere kritische elementen aan blijven.
De kenmerken van alle bovengenoemde slaapmodi verschillen van MCU tot MCU, maar de algemene vuistregel is; hoe dieper de slaap, hoe meer randapparatuur tijdens de slaap wordt uitgeschakeld en hoe lager de hoeveelheid stroom die wordt verbruikt, hoewel dit meestal ook betekent; hoe hoger de hoeveelheid energie die wordt verbruikt om het systeem weer op gang te krijgen. Het is dus aan de ontwerper om deze variatie in overweging te nemen en de juiste MCU voor de taak te kiezen zonder compromissen te sluiten die de specificatie van het systeem beïnvloeden.
2. Dynamische aanpassing van de processorfrequentie
Dit is een andere veelgebruikte techniek om het stroomverbruik van een microcontroller op efficiënte wijze te verminderen. Het is verreweg de oudste techniek en iets gecompliceerder dan de slaapmodi. Het betreft de firmware die de processorklok dynamisch aanstuurt, afwisselend tussen hoge en lage frequentie, aangezien de relatie tussen de frequentie van de processor en de hoeveelheid verbruikte stroom lineair is (zoals hieronder weergegeven).
De implementatie van deze techniek volgt meestal dit patroon; Als het systeem inactief is, stelt de firmware de klokfrequentie in op een lage snelheid, waardoor het apparaat wat stroom kan besparen en wanneer het systeem zware berekeningen moet uitvoeren, wordt de kloksnelheid weer verhoogd.
Er zijn contraproductieve scenario's voor het wijzigen van de processorfrequentie, wat meestal het gevolg is van slecht ontwikkelde firmware. Dergelijke scenario's doen zich voor wanneer de klokfrequentie laag wordt gehouden terwijl het systeem zware berekeningen uitvoert. Een lage frequentie in dit scenario betekent dat het systeem meer tijd nodig heeft dan nodig is om de ingestelde taak uit te voeren en dus in totaal dezelfde hoeveelheid stroom zal verbruiken als de ontwerpers probeerden te besparen. Er moet dus extra aandacht worden besteed aan het implementeren van deze techniek in tijdkritische toepassingen.
3. Onderbreek de Firmwarestructuur van de Handler
Dit is een van de meest extreme technieken voor energiebeheer in microcontrollers. Het wordt mogelijk gemaakt door enkele microcontrollers, zoals de ARM-cortex-M-kernen die een sleep-on-exit-bit in het SCR-register hebben. Dit bit geeft de microcontroller de mogelijkheid om te slapen na het uitvoeren van een interruptroutine. Hoewel er een limiet is aan het aantal applicaties dat op deze manier soepel zal werken, kan dit een zeer nuttige techniek zijn voor veldsensoren en andere, op lange termijn, op gegevensverzameling gebaseerde applicaties.
De meeste andere technieken zijn naar mijn mening variaties op degene die hierboven al zijn genoemd. De selectieve perifere kloktechniek is bijvoorbeeld in wezen een variatie op de slaapmodi waarin de ontwerper de randapparatuur selecteert om in of uit te schakelen. Deze techniek vereist een grondige kennis van de doelmicrocontroller en is misschien niet erg beginnersvriendelijk.
4. Stroomgeoptimaliseerde firmware
Een van de beste manieren om het stroomverbruik van een microcontroller te verminderen, is door efficiënte en goed geoptimaliseerde firmware te schrijven. Dit heeft direct invloed op de hoeveelheid werk die de CPU per keer doet en dit draagt bij uitbreiding bij aan de hoeveelheid stroom die door de microcontroller wordt verbruikt. Er moeten inspanningen worden geleverd tijdens het schrijven van de firmware om ervoor te zorgen dat de codegrootte en cycli worden verkleind, aangezien elke onnodige instructie die wordt uitgevoerd, een deel van de energie die is opgeslagen in de batterij wordt verspild. Hieronder vindt u enkele algemene C-gebaseerde tips voor geoptimaliseerde firmware-ontwikkeling;
- Gebruik zo veel mogelijk de klasse “Static Const” om het kopiëren van arrays, structuren enz. Dat tijdens de uitvoering stroom verbruikt, te voorkomen.
- Gebruik Pointers. Ze zijn waarschijnlijk het moeilijkste deel van de C-taal om te begrijpen voor beginners, maar ze zijn het beste om efficiënt toegang te krijgen tot structuren en vakbonden.
- Vermijd Modulo!
- Lokale variabelen boven globale variabelen waar mogelijk. Lokale variabelen zijn opgenomen in de CPU, terwijl globale variabelen worden opgeslagen in het RAM, de CPU heeft sneller toegang tot lokale variabelen.
- Niet-ondertekende gegevenstypen zijn waar mogelijk uw beste vriend.
- Gebruik waar mogelijk "aftellen" voor lussen.
- Gebruik bitmaskers in plaats van bitvelden voor niet-ondertekende gehele getallen.
Benaderingen voor het verminderen van de hoeveelheid stroom die door een microcontroller wordt verbruikt, zijn niet beperkt tot de hierboven genoemde op software gebaseerde benaderingen, er bestaan hardware-gebaseerde benaderingen zoals de kernspanningsregelingstechniek, maar om de lengte van deze post binnen een redelijk bereik te houden, zullen we besparen ze voor een andere dag.
Conclusie
Het implementeren van een energiezuinig product begint bij de keuze van de microcontroller en het kan behoorlijk verwarrend zijn als je de diverse opties die op de markt beschikbaar zijn, probeert te bekijken. Tijdens het scannen kan het gegevensblad goed werken voor het verkrijgen van de algemene prestaties van MCU's, maar voor stroomkritische toepassingen kan dit een zeer kostbare aanpak zijn. Om de werkelijke vermogenskenmerken van een microcontroller te begrijpen, moeten ontwikkelaars rekening houden met de elektrische specificaties en de functies voor laag vermogen die beschikbaar zijn voor de microcontroller. Ontwerpers moeten zich niet alleen zorgen maken over het stroomverbruik door elk van de energiemodi die worden geadverteerd in het gegevensblad van de MCU, ze moeten ook kijken naar de wektijd, wekbronnen en randapparatuur die beschikbaar zijn voor gebruik tijdens de spaarstanden.
Het is belangrijk om de functies van de microcontroller die u wilt gebruiken te controleren om na te gaan welke opties u hebt voor implementatie met laag stroomverbruik. Microcontrollers zijn een van de grootste begunstigden van technologische vooruitgang en er zijn nu verschillende microcontrollers met ultralaag vermogen die ervoor zorgen dat u over de middelen beschikt om u te helpen binnen uw stroombudget te blijven. Een aantal van hen biedt ook verschillende softwaretools voor energieanalyse waarvan u kunt profiteren voor een effectief ontwerp. Een persoonlijke favoriet is de MSP430-serie microcontrollers van Texas Instrument.