Lidí, kteří by o nositelné elektronice [1] coby jedné z dalších oblastí s velkým potenciálem růstu, stále pochybovali, nebude mnoho. Podle některých odhadů přitom může trh s tímto druhem techniky do roku 2020 posílit až na deset miliard dolarů. Dosažení takového cíle bude každopádně záviset na zkušenostech uživatelů. Jednou z hlavních vlastností, na jejichž základě pak mohou přenosná zařízení hodnotit, se logicky stává výdrž baterie. Pro vývojáře nositelné elektroniky proto bude zcela zásadní umět z baterie „vyždímat“ naprosté maximum energie. Zákazník přece nebude chtít výdrž v hodinách, když to jde i v měsících.
Vyhovět těmto nesnadným úkolům znamená prozkoumat každou stránku svého návrhu – od doby potřebné k „rozběhnutí“ taktovacích signálů až po časování spínacích MOSFETů. V článku se na některé postupy, se kterými vývojáři dokáží ušetřit každý možný joule energie, podíváme blíže. Některá doporučení se projeví větší a jiná zase menší měrou, nicméně i ta všechna malá mohou již brzy ve výsledku znamenat jednu větší úsporu.
Spánkový mód bude pro všechny vývojáře hledající ve svém návrhu prostor k úsporám energie prvním přirozeným krokem. Důležité to bude především pro nositelnou elektroniku, protože ji obvykle nemůžeme zcela vypnout. Ve většině takových případů dochází k periodickému čtení výstupů senzorů, kdy data buď uložíme až do okamžiku jejich odeslání, nebo je budeme vysílat ihned. Mezi aktivními fázemi pak dává smysl uvést návrh do spánkového režimu.
Vytrhnout zařízení ze spánku může přerušení nebo fyzický vstup, např. stisk tlačítka. Jak často bude systém „vzhůru“, pak závisí na aplikaci. I v rámci jednoho návrhu se pak mohou doby spánku docela lišit. Např. u zařízení, která sama posoudí, jak často mají provádět měření, se často setkáváme s dynamickými intervaly spánku. V případě doplňků pro fitness může docházet k probouzení a kontrole pohybu. Došlo-li ke změně, systém chytře sníží dobu mezi měřeními. V opačném případě lze při nedostatku pohybu dobu do dalšího měření prodloužit a šetřit přitom baterii.
Do úspory energie mohou výraznou měrou promlouvat i komunikační protokoly mezi součástkami. Rozhraní I²C např. využívá pull-up rezistory, na nichž dochází ke ztrátám. V případě SPI takové rezistory nemáme, a proto může být i lepší volbou. Další způsob ztrát spojených s komunikací pak představuje kapacita vývodů. Abychom tento příspěvek minimalizovali, potřebujeme maximální možnou měrou omezit přenášená data.
Jaké množství energie můžeme ztratit, budeme-li uvažovat čtyři piny s kapacitou 5 pF v systému napájeném z 3,3 V a běžícím na 20 MHz, ukazuje odběr 660 μA způsobený pouze kapacitou vývodu. Vycházeli jsme přitom z rovnice I = 0,5 CUf. Zmíněný proud zde máme spojen se součtem obou dat, vyslaných a také přijatých. Může se tedy dále stupňovat. Díky čipům s vysokou mírou integrace naštěstí dokážeme výsledné číslo i snížit. Interní komunikace totiž nebude kapacitou vývodů zatížena, a proto se z hlediska spotřeby jeví jako lepší právě struktury s více integrovanými perifériemi. Bude to platit též o pamětech RAM a Flash přímo na čipu.
Výběr vhodného měniče do spínaného napájecího zdroje [2] bude hrát ve snaze o dosažení maximální účinnosti klíčovou roli. Zejména pak v případě synchronních regulátorů, s nimiž lze dosáhnout účinností větších než 95 %. Nesmíme se však omezit pouze na hlavní a zvýrazněnou účinnost ani tu spojovanou s režimem standby. Potřebujeme totiž zjistit odběry v různých režimech obvodu a stanovit příspěvek k celkové spotřebě v každém režimu, tzn. vzít v úvahu účinnost spínaného zdroje pro každou úroveň proudu. Na výběr dostáváme i některé zajímavé prvky, např. nové snižující měniče ADP5301 od Analog Devices [3].
Klidový odběr těchto součástek, nebudou- li spínat, činí pouhých 180 nA. Stále však mohou pracovat v hysterezním režimu. Při velmi malém zatížení budou krátce spínat a s přispěním indukčnosti dobíjet výstupní kondenzátor, pak se svým odběrem vrací opět ke klidovému stavu. V závislosti na vstupních a také výstupních napětích může nízká klidová spotřeba znamenat účinnost i 80 % (1 μA). V praxi však bude pravděpodobnější nižší hodnota, než je toto optimum, nicméně stále bychom se měli pohybovat nad 40 %. Součástky můžeme rovněž zatížit až 0,5 A a využívat stavitelného výstupu prostřednictvím pevného rezistoru na jediném pinu. Takové výsledky jsou ve srovnání se staršími obvody, které mohly bez zatížení odebírat i několik miliampér, rozhodně zajímavé.
Pokud se rozhodneme pro spínané zdroje s vnějšími MOSFETy [4], nesmíme zapomenout, že jejich nevhodným časováním dokážeme vytvořit obrovské ztráty. Nejvíce energie se přitom ztrácí během přechodu z nevodivého do sepnutého stavu. Jsou-li zcela sepnuty, jejich napěťový úbytek obvykle bývá velmi malý a nízká bude i výkonová ztráta. Jakmile však součástku sepneme pouze částečně, musíme na takovém MOSFETu počítat s výraznými úbytky napětí a stejně tak i proudy. Na základě toho potřebujeme minimalizovat dobu, kterou tranzistor v takovém stavu tráví, a to výběrem rychlých spínacích prvků spolu s nízkou kapacitou hradla. Nutností je též malý odpor v sepnutém stavu.
Budeme-li své zdroje napájení [5] v režimu spánku vypínat, můžou příslušné kondenzátory zůstat malé. Nabít je totiž znamená určitou zátěž, a pokud bude zdroj ve spánkovém módu odstaven, energii uloženou v kondenzátorech obvykle ztrácíme. Kondenzátor s kapacitou 1 μF pak např. v rámci napájení obvodu vypínaného 100krát za vteřinu odebírá při 3,3 V dle stejného výpočtu jako dříve 165 μA. Spousta integrovaných obvodů ale bude v režimu spánku nebo během „shutdownu“ vyžadovat méně, než činil tento výsledek, a proto je z úsporných důvodů mnohdy lepší ponechat obvody pod napájením a pouze je uspat spíše než spínat jejich napájení.
Výjimkou však mohou být součástky bez možnosti spánkového režimu nebo takové, které i v těchto případech stále vykáží vyšší proudové odběry. Můžeme- -li pak místo kapacity 1 μF zapojit kondenzátor o velikosti 100 nF, dokážeme ušetřit spoustu energie.
Součástky spotřebují při nižším napětí méně energie, a to i v případě, kdy jimi neprotéká méně proudu. Napájíme-li tedy mikrokontrolér z 1,8 V místo 3,3 V, máme pro stejné proudy spotřebu přibližně poloviční. Číslicové prvky ale zpravidla budou při nižších napětích odebírat také méně proudu, takže úspora dále pokračuje. Nesmíme však zapomínat na maximální rychlost hodinového signálu, která rovněž dozná omezení. Její snižování spolu s napětím totiž není ničím neobvyklým. Zatímco se tedy proudový odběr snížil, zabírá už mikrokontroléru vykonání kódu dvojnásobný čas.
Mikrokontrolér PIC24F16KA102 (nanoWatt XLP) [6] od Microchipu např. odebírá při 2 MHz a 3,3 V proud o velikosti 695 μA, ale na 1,8 V již bude vyžadovat pouze 363 μA, což představuje o 70 % méně ztrát – obrovská úspora. S využitím 3,3 V však MCU může běžet na maximu 32 MHz, zatímco pro 1,8 V to už bude nanejvýš 8 MHz.
Rychlost hodin vyberte tak, aby vyhovovala aplikaci, tzn. ne automaticky to nejrychlejší možné. Až do ukončení vývoje kódu to nejspíše vědět nebudeme, každopádně většina mikrokontrolérů bude mít nastavitelnou násobičku umožňující změnit rychlost softwarovou cestou. Jestliže pak bude kód mikrokontroléru limitujícím faktorem, pokud jde o jeho vykonávání a návrat zpět do režimu spánku, mohou být nejrychlejší procesory také těmi nejvíce efektivními. Můžeme však narazit ještě na něco dalšího, co nám bude zpomalovat chod a mikrokontrolér pak už jen „zabíjí čas“. V takovém případě jej budeme místo toho probouzet periodickým přerušením.
Další řešení může spočívat ve výrazném zpomalení jen „vyčkávajícího“ procesoru a následném zrychlení, když se má již něco vykonat. V ideálním případě místo toho dojde k uspání, každopádně doba potřebná pro rozběhnutí hodinového signálu spolu se ztrátami provázejícími časovou prodlevu před stabilizací taktu mohou režim spánku v některých případech stavět do horšího světla.
Zatímco čekáme na stabilizaci systémového taktu, spotřebováváme energii. V takovém případě nám může pomoci, jestliže kód smí běžet spolu s ještě neustáleným hodinovým signálem. Pokud zde ale máme jakoukoli další část obvodu závislou na stabilním a přesném taktu, procesor musí vyčkávat a odebírat proud. U některých výrobců mikrokontrolérů naštěstí hodiny nabíhají rychleji než jinde.
Potřebujeme skutečně do každého návrhu 32bitový procesor? Vypadá to, že je najdeme úplně všude, ale práce kterou s nimi vykonáme může být přesto zanedbatelná. V některých případech se proto jako účinnější řešení jeví 16- nebo 8bitové mikrokontroléry. Záleží ovšem na konkrétním kódu a také efektivitě kompilátoru.
Využíváme-li rozhraní Bluetooth nebo připojení k internetu, může být vyžadováno více paměti a bylo by dobré použít 16- nebo 32bitový procesor. 32bitové řešení si rovněž žádá TCP/IP stack spolu s web serverem. K minimalizaci nezbytných prostředků a s nimi i spojené výkonové ztráty zde může napomoci tvůrčí psaní programu.
S rostoucí šířkou dat procesory různými způsoby spotřebují též více energie. Přístup ke 32bitové paměti RAM a Flash bude výkonově náročnější než v případě varianty s 16 bity a větší šířka rovněž znamená větší prostor pro parazitní proudy. Pro vývojáře to pak znamená udržet s využitím efektivního zápisu a také struktury kódu velikost paměti na minimu a nevolit procesor s obrovským množstvím přebytečné paměti.
Pokud náš návrh pracuje s bezdrátovým vf rozhraním [7], např. Bluetooth Smart, vezměme v úvahu přenosovou vzdálenost. Energii zde nešetříme pouze na základě snížení výkonu vysílače. Přijímací strana může např. nabízet nastavení citlivosti, kdy menší citlivost znamená i nižší spotřebu.
Pro ilustraci, SoC nRF52832 od společnosti Nordic Semiconductor [8] odebírá v režimu přijímače s vysokou citlivostí 10,9 mA, přičemž s obvyklou citlivostí se dostáváme na 6,1 mA.
Zdaleka nejvyšších úspor energie lze ovšem dosáhnout s návrhem integrovaného obvodu přesně na míru konkrétnímu produktu, který bude obsahovat jen ty nezbytné struktury. Vše, co se zde odehrává přímo na čipu, znamená i výrazně nižší spotřebu. Bude se však jednat o nejpomalejší a také nejdražší způsob vývoje nového produktu. A je to nejspíše i příčina toho, proč baterie v chytrých hodinkách Frederique Constant vydrží dva až tři roky, zatímco u Fitbit Flex počítáme se třemi až pěti dny.
Při návrhu nízkopříkonového systému potřebujeme zvážit spoustu věcí. Nemusí být proto od věci vytvořit jednoduchou kalkulačku obsahující seznam veškerých součástek v systému s jejich proudovou spotřebou, požadovanými pracovními cykly, napětím a také celkovou spotřebou energie. Pro každý možný scénář pak stanovíme předpokládanou náročnost. Jediný způsob, jak ale doopravdy zjistit některé potřebné informace spočívá v postavení prototypu a jeho fyzickém otestování.
[1] http://mouser.com/wearables/
[2] http://www.mouser.co.uk/applications/power-management-technology/
[3] http://www.mouser.co.uk/new/Analog-Devices/adi-adp5301-regulator/
[4] http://www.mouser.co.uk/search/refine.aspx?Ntk=P_MarCom&Ntt=124993488
[5] http://www.mouser.co.uk/applications/power-supply-technology/
[6] http://www.mouser.co.uk/new/microchip/microchipxlp/
[7] http://www.mouser.co.uk/applications/rf-wireless-technology/
[8] http://www.mouser.co.uk/new/nordicsemiconductor/nrf52-series-soc/