Maximální výkony, elektrické, akustické, optické nebo výpočetní tvoří ve srovnání s nehřejícími, nízkopříkonovými aplikacemi dva nesmiřitelné tábory, každý na jedné straně řeky elektrického proudu. Ikdyž je tento veletok bouřlivě modulován, dá se přes něj bezpečně dostat několika zpevněnými mosty v podobě rozumných kompromisů. Tento článek se pokusí vyjmenovat některé z nich. Přestože půjde v prvé řadě o maximální energetickou úsporu, je zván i laskavý pozorovatel na protějším supervýkonovém břehu. Přikládáme pouze malým varováním: Připravte se na větší zimu, u nás tolik netopíme!
Výkon je odjakživa v základním náhledu tvořen součinem napájecího napětí Vcc a protékajícího proudu Icc. S klesajícím napájecím napětím úměrně klesne i tekoucí proud a následně také celé výkonové zatížení. Názorně lze tuto situaci znázornit na běžných lineárních stabilizátorech, kde vstupní napájecí rozsah častokrát přesahuje několik desítek voltů. Vyrobit relativně stabilní výstup o velikosti např. 3,3 V není problém. V takové situaci však z hlediska výkonové ztráty nastává nejhorší možný případ, protože požadujeme maximálně velké vstupní napětí s minimálním napětím na výstupu, které bude v mnoha případech navíc zatížené maximálním proudovým odběrem. Není divu, že se obvod tak rád zahřívá, když dovolíme velké části vstupujícího proudu vytápět celé okolí. Aktivní tranzistory jednoduše musí na svých přechodech „zadržet“ rozdíl napěťových potenciálů mezi vstupem a výstupem.
Většina zařízení však není tvořena pouze napájecí částí. Postoupíme-li od stabilizátorů až k mikrokontrolérům, bude celá situace ještě o něco složitější. Protože s rostoucím hodinovým kmitočtem pochopitelně narůstá i proudová spotřeba celého zařízení, patří volba vhodného kompromisu mezi taktovací rychlostí a ještě udržitelnou výkonovou ztrátou k základní analýze celé situace. Hodinový kmitočet se odvíjí od celé řady faktorů, mezi něž patří
- nastavení periferií
- architektura použitého MCU
- instrukční sada
Právě způsobu provádění instrukcí by měla být s ohledem na nízkopříkonové aplikace věnována zvýšená pozornost. Zatímco typicky RISCové procesory je provedou v rámci jediného hodinového cyklu, jiné CISCové architektury s různou délkou instrukcí vyžadují dělení taktovacího kmitočtu, což nezřídka vede k nejasné interpretaci požadované hodinové frekvence. Celá řada datasheetů navíc samolibě vyčísluje výkonové poměry pro kontroléry, kterým byly před měřením odpojeny periferie. Právě tento proudový příspěvek však může tvořit významnou část celé spotřeby. Se samostatnou kapitolou nakonec vstupuje teplota. Čím vyšší bude, tím větší výkonové požadavky musíme předpokládat. Samozřejmě, pro nejhorší možný případ a ne pouhým uvažováním učebnicového modelu 25 °C.
V mnoha aplikacích procesor nepracuje kontinuálně a periferie tak mohou zůstat nečinné po většinu času. V takových případech, ale nejen v nich, můžeme celkovou výkonovou spotřebu ještě snížit využitím nejrůznějších „sleep“ módů, dostupných prakticky na všech procesorech. Mezi nejběžnější patří
- Power Down (PWD)
- Power Save (PS)
- Idle
V módu Power Down dochází k celkovému „uspání“ a to včetně zdroje hodinového signálu, který v případě módu Power Save poběží dále a nepřestane spotřebovávat elektrickou energii. Poslední zmíněný Idle mód už tvoří pouze „slabý odvar“, ve kterém dochází k vypnutí jen některých částí, zatímco všechny významné zůstanou nadále aktivní. Výhoda těchto režimů spočívá ve flexibilitě, se kterou můžeme odpojovat každý prvek, který v daném okamžiku nemusí zbytečně spotřebovávat drahou energii. Výkonová úspora tak bude záviset na dané konkrétní volbě, zohledňující veškerá pro a proti. Budeme-li například při pokojové teplotě 25 °C provozovat AVR Atmega165P s napájecím napětím 1,8 V na kmitočtu 1 MHz, spotřebuje nám
- 340 uA v aktivním módu
- 150 uA v Idle módu
- 0,65 uA v Power Save módu
- pouhých 0,1 uA, tj. 100 nA v Power Down módu
Poměr 340/0,1 v tomto modelovém příkladu bude znamenat nejméně 3400krát menší odběr a to již stojí za úvahu.
Takový rozdíl se ještě více zvýrazní v případech, kdy procesor tráví většinu svého času, někdy dokonce i života, v nečinnosti (např. zabezpečovací technika). Jednoduchou kalkulací tak můžeme určit průměrnou výkonovou spotřebu a následně s rozumnou rezervou navrhnout požadavky na napájecí články.
Přestože se největší pozornost logicky může upírat na proudovou spotřebu v aktivním režimu, ve skutečnosti bude výsledek ovlivněn zejména pracovním cyklem (Duty cycle), ve kterém se režim plné spotřeby střídá s některým z nízkopříkonových módů.
Moderní součástková základná vystavěná na technologii CMOS by teoreticky mohla spotřebovávat elektrickou energii pouze v případě změny logických úrovní (0 na 1 a obráceně) nebo hodinového signálu. Jak nás ale praxe nekompromisně naučila, klidový proud nikdy nule roven nebude, alespoň prozatím. A jak se zdá, Nobelovy ceny za fyziku budou muset ještě počkat. Může za to zejména unikající svodový proud (Leakage Current) spolu s aktivními periferiemi.
Svodový proud
Unikající svodový proud je z velké míry s nebývalým potěšením ovlivňován
- teplotou
- napájecím napětím
- použitou výrobní technologií
Výrobci mikrokontrolérů této fyzikální příčině věnují roky trvající výzkumy, aby pak na základě svých zkušeností mohli patentovat postupy vedoucí ke snižování proudové spotřeby. Takové obvody pak mohou bez problémů běžně dosahovat klidových proudů 100 nA i méně. Právě zmíněné výsledky zaručuje výkonová optimalizace a schopnost pracovat ze skutečného napětí 1.8 V (true 1.8 V operation). Některé MCU se sice mohou pyšnit nálepkou 1.8 V napájení, někdy i nižšího, nicméně pokud budou chtít spolupracovat s jinými analogovými moduly nebo pamětí (2.2 V), může být takové napětí příliš nízké. Atmel na tuto situaci již před léty zareagoval sjednocením napájecích požadavků do jediného napětí „true 1.8 V“ pro všechny nezbytné obvody.
Současný populární trend miniaturních a ještě nepatrnějších technologií sice umožnil výrazně rychlejší taktování, avšak problémů s unikajícím proudem se nezbavil, ba právě naopak. S klesajícími geometrickými rozměry samotného čipu klidové proudy výrazně narůstají. Technologické procesy se k tomu všemu navíc používají poněkud volnějším způsobem, dle aktuálních potřeb jednotlivých částí a obvodů, byť jsou nakonec zapouzdřeny v jediném 8 nebo 16bitovém mikrokontroléru. Typický minimální rozsah přitom může ležet v celém intervalu 0,50 až 0,15 mikronů.
Aktivní periferie
Největším přispěvatelem do celkové výkonové bilance v klidovém režimu se s převahou stávají aktivní periferie. Vnitřní analogové nebo digitální obvody tak mohou citelně navýšit konečnou spotřebu, přičemž určit tuto míru nepatří mezi nejjednodušší úkoly. Ani samotní výrobci polovodičů v této otázce nemají čisté svědomí.
Pravdu a nic víc než pravdu odrážející datasheet jasně uvede veškeré proudové přírůstky a nespokojí se s opovážlivým tvrzením, že budou jednoduše rovny nule.
Takové troufalé stanovisko se totiž málokdy blíží pravdě a pokud se již doopravdy přiblíží, bude se zejména v případě analogových obvodů s fantasticky nulovými, klidovými odběry pravděpodobně za tento stav draze platit pochybnými parametry celého zařízení. Zatímco výkonovou spotřebu logických obvodů ovlivní zejména
- taktovací kmitočet
- velikost kapacitní zátěže
- použité napájecí napětí
u analogových obvodů se naproti tomu pohybujeme ve statické rovině. Výsledek je tak často ne zrovna lehkým kompromisem mezi
- výkonovou spotřebou
- robustností
- přesností
- rychlostí
- dobou náběhu analogových modulů (start-up time)
Žel, požadavek na minimální proudový odběr často snižuje kvality samotného analogového obvodu.
Brown-out detector
Významným analogovým prvkem promlouvajícím do celkové proudové spotřeby ve sleep módu se stává brown-out detector (BOD), který chrání mikrokontrolér před poklesem napájecího napětí pod definovanou úroveň tím, že v havarijním případě aktivuje resetovací obvody. Tímto způsobem lze jednoduše zajistit, že se obvod bude vždy nacházet v definovaných stavech, program nebude bloudit a v registrech nebo paměťových modulech zůstane platná hodnota. Z popsaného principu tedy vyplývá, že zmíněná detekce nemusí být životně důležitá v klidovém sleep módu, ale právě v době, kdy se čip z tohoto stavu probouzí. Přesto jako pravidlem většina mikrokontrolérů udržuje v klidovém stavu brown-out detector aktivní, čímž zákonitě přispívá k vyšší proudové spotřebě sleep módu.
Na výběr tedy zůstávají dvě možnosti:
- vyrobit „bezpříkonový“ BOD
- detektor zcela vyřadit z činnosti
Protože v okamžiku probouzení nezbytně potřebujeme aktivně detekovat napájecí napětí, jeví se první možnost přijatelnějším způsobem. Omezování napájecího proudu analogových modulů však zákonitě povede k pomalejším reakcím a to zejména mimo sledovaný rozsah napájecího napětí. Protože však mikrokontrolér v klidovém stavu ve skutečnosti nepracuje, nedochází k žádnému zápisu či mazání Flash nebo EEPROM a BOD prakticky není nutný. Skutečný význam brown-out detektoru vyplouvá na povrch až s probouzením procesoru z klidového režimu. Nabízeným řešením tedy zůstává vyřazení BOD v okamžiku přechodu kontroléru do režimu snížené spotřeby a opětovná aktivace detektoru bezprostředně před probuzením čipu k aktivní činnosti. Výše zmíněný postup tak zajistí funkčnost BOD pouze v případech, kdy je skutečně potřebný a to bez zbytečného proudového odběru ve sleep módu.
Oscilátor
Doba strávená aktivním režimem je v mnoha případech zcela nevýznamná ve srovnání s časem tráveným v Power Save módu, ve kterém dochází k celkovému uspání s vyjímkou hodin reálného času a brown-out detektoru. Celkový proudový odběr takových aplikací pak bude výrazně ovlivňovat právě spotřeba Power Save módu, určená jako součet příkonu základního Power Down módu, navýšeného o spotřebu BOD detektoru a odběr 32 kHz oscilátoru. Pokusíme-li se z tohoto důvodu zmenšit odběr 32 kHz obvodu, dosáhneme výrazně nižší výkonové ztráty celého zařízení.
Obecně existují dva způsoby časovaného probouzení z hlubokého spánku:
- RTC
- Very Low Power oscilátor (VLO)
Zásadní rozdíl zde představuje přesnost. Zatímco RTC dovoluje náležité časování díky velmi přesnému 32,768 kHz oscilátoru, VLO obvykle bývá velmi nepřesný a tudíž nevhodný pro časově kritické funkce.
picoPowerTM technologie pro ultra low-power mikrokontroléry Atmel
Napájecí napětí 1,8 V pro všechny
Přestože procesy použité v AVR MCU podporují napájecí rozsah od 1.8 do 5.5 V, 1.8 V znamená skutečných 1.8 V, protože všechny analogové moduly, ADc, Flash, EEPROM a RAM opravdu korektně běží na 1.8 V (příp. 1.8 V +/- 10 %, tj. ještě na 1.62 V). Nízké napájení tedy nejen efektivně snižuje výkonovou spotřebu, tvořenou součinem napětí a proudu, ale také umožňuje napájecímu napětí baterie poklesnout až k této prahové hodnotě, čímž výrazně prodlužuje použitelnost napájecích článků a snižuje nároky na jejich velikost či kvalitu provedení.
Minimální svodový proud
Okolní teplota, napájecí napětí a použitá technologie výraznou měrou ovlivňují tuto nemilou veličinu. Zmíněný Leakage Current (nezaměňovat s „Currant“ - rybíz, hrozinka) se v případě picoPower AVR pohybuje pod hranicí 100 nA.
Sleeping BOD
Ačkoli brown-out detektory s nulovým příkonem (zero-power) použité např. v MSP430 (Texas Instruments) uspoří spoustu energie, mohou být velice pomalé a detekce podprahové úrovně napájení jim může trvat i 1 ms. Tato relativně dlouhá odezva již dokáže způsobit hazard v celém systému. AVR BOD od Atmelu zase detekuje podmínky brown-outu přibližně do 2 us, ale za cenu proudové spotřeby v jednotkách uA (až 20 uA), která ve srovnání s proudem módu Power Down 100 nA stále tvoří nejméně desetinásobné navýšení.
V rámci výsledné technologie picoPower Atmel zachoval vysokou výkonnost v podobě rychlé odezvy a kupodivu i poměrně vysoký proud samotného BOD, ale přesto ušetřil celkový příkon jednoduchým vyřazením detektoru z činnosti v době, kdy není jeho funkce nezbytná. Jestliže tedy ve stavu hlubokého spánku nemusíme sledovat napájecí napětí, může být picoPower BOD s výhodou deaktivován ve všech následujících režimech
- Extended Standby
- Standby
- Power Save
- Power Down
Celá zabezpečená operace probíhá automatickým způsobem ve dvou krocích: Po uspání procesoru je BOD zakázán poté co MCU vstoupil do sleep módu a povolen aby ověřil zda je napájecí napětí v dovoleném rozmezí těsně před tím, než je MCU dovoleno se probudit. Pokud napájení nevyhovuje, dochází před jakoukoli další činností, která by mohla provést nějaké instrukce, k resetu. Přesná detekce je tak možná pro celou řadu napětí, která mohou být díky minimálnímu napájecímu napětí skutečně nízká.
Kritickým místem přitom stále zůstává obsah RAM a registrů. Přestože bude spouštěcí úroveň brown-out detektoru nastavena s dostatečně velkou rezervou, může k poklesu nebo výpadku napájení dojít právě během sleep módu s deaktivovanou detekcí. Aby nedošlo k chybné interpretaci obsahu SRAM a registrů, následující POR (Power on Reset) opětovně povolí BOD detektor a nastaví příznak POR tak, aby mohl být korektně zpracován aplikačním firmwarem. Výše popsané rysy tedy s přehledem zajistí MCU v aktivním režimu plnou ochranu, přičemž navíc zamezí zbytečnému proudovému odběru detektoru během sleep módu.
Ultra Low Power krystalový oscilátor 32,768 kHz
Protože se doba strávená aktivním režimem stává v mnoha případech zcela nevýznamnou ve srovnání s časem tráveným v Power Save módu, může být energie spotřebovaná v tomto módu zásadním obrazem celé spotřeby. Nejnovější návrhy krystalových oscilátorů, využívané spolu s AVR MCU, snižují proudovou spotřebu Power Save módu (650 nA, wake up během šesti cyklů) na úroveň výrazně bližší nejúspornějšímu režimu Power Down.
Závěr:
Článek popisuje některé obecné způsoby, s nimiž lze dosáhnout nižšího proudového odběru elektronických zařízení. Celek je poté prakticky demonstrován na příkladu technologie picoPower, o kterou se výrazně opírá. Finální řešení však vždy zůstává výsledkem celé řady kompromisů, někdy menších, jindy takřka neřešitelných. Skutečně, věci nelze zcela jednoznačně vyhranit. Odměnou pečlivé analýzy však může být výrazně nižší příkon, který se hodí i v síťově napájených zařízeních. V případě těch bateriových zase můžeme kalkulovat s menším počtem levnějších a zejména méně rozměrných článků, které i tak nebudeme muset měnit pěkně dlouhou dobu, případně už nikdy.
V příštím pokračování se zaměříme na metody úspory energie v aktivním režimu.
Použitá literatura:
[1] http://www.atmel.com/dyn/resources/prod_documents/doc7903.pdf[2] http://www.atmel.com/
Download a odkazy:
- Technologie picoPower: http://www.atmel.com/ad/picopower/
- Domovská stránka Atmel: http://www.atmel.com/
- AVR XMEGA