Skriv ut

Den ökande popu­lariteten för bär­bara, batteridrivna tillämpningar leder till att det stoppas in allt fler funktioner i allt mindre formfaktorer. De nya funktionerna, främst trådlös kommunikation, ställer hög­re krav på strömförsörjningen. Utmaningen är att inte bara implementera funktionerna utan att också utöka batterilivslängden. Hjälp finns att få i nya integrerade funktioner och periferienheter. De ger en smartare energihantering och gör strömstyrning allt  lättare att implementera. Lösningarna  blir också  av högre kvalitet också ur ett rent konstruktionsperspektiv.

embex Ladda ner artikeln på 500 kbyte här (länk, pdf).
Fler tekniska rapporter finns på etn.se/expert

Prylarna runt oss blir bara smartare och ansluts idag till både det ena och det andra och det tredje. Till och med löparskor har numera sensorer som hjälper en att förbättra sin löptid genom att visa stegtempot i smarttelefonen. En badrumsvåg kan automatiskt logga din vikt i en molnbaserad app och den kan larma via mobilen att den där sista bullen, den var en dålig idé. Säkerhetssystem i våra hem informerar via sms att det är en läcka i garaget med hjälp av en liten trådlös givare vid värmeberedaren.
Tekniska framsteg HAR lett till att  batteridrivna tillämpningars popu­laritet ökat exponentiellt. Konstruktörerna tvingas ständigt att både öka funktionaliteten och minska storleken. De nya funktionerna ställer större krav på systemens strömförsörjning. Att implementera funktionerna och samtidigt förlänga batteriets livslängd, och på ett allt mindre kortutrymme, har blivit en stor konstruktörsutmaning.

Det traditionella sättet att konstruera batteridrivna tillämpningar är att hålla så många moduler som möjligt i lågenergiläge så länge som möjligt, och bara väcka dem ibland för att utföra de uppgifter som krävs, för att sedan snabbt återgå till sovläge. I komplicerade konstruktioner med många MCU:er, MPU:er och komponenter, används ofta en åttabitarsstyrkrets med ett fåtal ben, för systemövervakning, för allt från vardagssysslor som att sätta på och stänga av moduler när så behövs, till att optimera verkningsgrad.

De flesta konstruktioner använder typiskt en ensam huvudstyrkrets med integrerade periferigränssnitt för att implementera alla systemfunktioner. Därmed blir styrkretsens strömförbrukning en kritisk parameter. Alla styrkretsar är dock inte skapta lika när det gäller energisnålhet. En 8-bitarsstyrkrets kan därför ofta vara bättre än en 32-bitarskrets. Vissa 8-bitars-MCU:er drar så lite som 20 nA i sitt lägsta strömläge, medan en 32-bitarskrets i bästa fall drar minst cirka 10 till 20 gånger mer.

Styrkretsen kan väckas ur sitt viloläge på flera olika sätt. En vanlig metod är att utnyttja styrkretsens interna timer för att periodvis väcka systemet. Timern kan konfigureras att trigga ett avbrott. En 16-bitarstimer med utväxling 1:8 som drivs med en intern energisnål 31-kHz-oscillator (eller med en extern kristall) kan hålla enheten i viloläge i ungefär 17 sekunder.

Ett annat alternativ är att använda MCU:ns Watchdog-timer (WDT), som i bästa fall har en maximal vilotid på 256 sekunder vid en strömförbrukning på runt 440 nA. Som jämförelse drar en vanlig 32-bitars-MCU med aktiverad WDT åtminstone tre gånger så mycket ström som en 8-bitars-MCU.

Om vi tar som exempel en tillämpning som behöver väckas sällan, som en miljö­övervakare som vaknar var fjärde timme för att läsa av en fuktighetssensor och sedan återgå i vila. Innebär då den interna timerns begränsningar  att den måste väckas oftare? Inte nödvändigtvis. Ett alternativ är att använda realtidsklocka (RTC) och kristall för en exakt tidhållning som kan dra ut i timmar, dagar, månader och till och med år, om så behövs. Vad gäller styrkretsar som ofta av kostnadsskäl saknar integrerad RTC och kristall, kan man överväga att utnyttja en fristående RTC.

Ett annat sätt att förlänga ett viloläge som varken kräver extra komponenter eller höjer strömförbrukningen, är att utnyttja periferienheter som finns i en del av nästa generations åttabitarskretsar, bland annat i Microchips PIC-MCU:er.

Genom att ansluta en sådan MCU:s konfigurerbara logikceller (CLC:er) och numeriskt styrda oscillator (NCO) till en 16-bitarstimer kan viloperioden förlängas från 17 sekunder till 205 dagar (se figur 1). Det är visserligen ovanligt att en tillämpning behöver vila så länge, men möjligheten finns, om det skulle behövas.

Den allra billigaste lösningen är att mata timern från en intern energisnål (31 kHz) oscillator. Strömförbrukningen kan minskas med ytterligare 50 procent till runt 2,3 µA, om en extern 32-kHz-kristall ansluts till sekundäroscillatorn (SOSC), med viss kostnadsökning som följd.

Också externa interrupt kan utnyttjas för att väcka styrkretsen, från exempelvis en switch eller en sensor. Större MCU:er och MPU:er kan ha interrupt med olika prioriteter, men det hittar man sällan i små styrkretsar. Ta som exempel den CLC vi använde ovan för att förlänga timerperioden. Den kan inte bara bidra med extra interruptkällor när MCU:n själv bara har ett enda systeminterrupt, utan också använda sekventiell och villkorlig logik för uppvakningsrutinen, som därmed blir smartare, och detta utan ytterligare strömuttag.

System som kräver flera signaler för att representera tillstånd som innebär att CPU:n ska vakna och kolla läget, väcks ofta på grund av en enda signalförändring, bara för att därefter upptäcka att övriga signaler ännu inte uppträtt. I en CLC kan man konfigurera och kombinera logikfunktioner och tillståndsmaskiner, eller till och med flera CLC-moduler, och skapa specifika uppvakningsvillkor. Därmed undviks frekvent feltriggning och onödig strömförbrukning.

Kretsens uppvakningstid kan vara en stor del av körtiden i en tillämpnings periodiska profil. Medan den normalt är begränsad till en handfull klockcykler (3–5 cykler motsvarande 200 ns till 1 µs) för den interna oscillatorn hos en 8-bitars styrkrets, handlar det om tiotals mikrosekunder i en 32-bitars-arkitektur, som utnyttjar funktioner för djupsömn för att begränsa läckströmmen, vilket ofta motverkar vissa eller alla de fördelar som ges av den normalt snabbare exekveringstakten.

Medan vi egentligen skulle vilja göra allt i sovläge måste vissa uppgifter utföras i aktivt läge där MCU-kärnan förbrukar den största mängden energi jämfört med alla andra moduler. Det är nu det blir lite knepigt. Figur 2 ger en förenklad grafisk bild av systemets strömförbrukning över tiden. Området under strömförbrukningslinjen representerar den totala urladdningen över tiden, mätt i Coulomb. Om summan av alla områden under vilolägesperioden är mycket större än det aktiva läget, är viloströmmens värde viktigast eftersom den mesta energiförbrukningen sker i energisnålt läge. Om summan av området under perioden i aktivt läge är väsentligt mycket större blir tvärtom viloströmmens värde och den tid som spenderas i viloläge ointressant.

I tillämpningar med trådlös kommunikation, som exempelvis Wifi- eller Bluetooth LE-system, är det särskilt svårt att minska strömförbrukningen. Den som konstruerar sådana system måste ta hänsyn till hur mycket data som sänds eller tas emot, eftersom detta direkt kommer att påverka den totala strömförbrukningen.

Trådlösa moduler kan användas i ”Beacon”-läge, vilket innebär att de vaknar med jämna mellanrum och söker efter signaler; eller också kan de gå ned i standby-läge när de inte används.

I sådana trådlösa system är MCU-frekvensen faktiskt ointressant eftersom tillämpningen oftast är I/O-bunden. Men MCU:ns uppvakningstid påverkar tillämpningsprofilen kraftigt eftersom radiokretsarnas strömförbrukning (normalt 10–20 mA) utökas och till slut dominerar budgeten.

Analoga sensorer kräver att MCU:ns inbyggda ADC-modul används. Samplingen kräver normalt mycket längre tid än omvandlingstiden. Ju mer tid som spenderas i aktivt läge, desto mer ström förbrukas. Vissa MCU:er har dock ADC-moduler som möjliggör omvandling i viloläge.

En del MCU:er har flera olika strömsparlägen. Några av dem stänger av CPU:n eller minskar frekvensen, samtidigt som systemets klocka hålls igång för periferienheterna.

Ett vanligt argument är att ”ju högre prestanda CPU-kärnan har, desto snabbare kommer uppgifterna att utföras, och desto snabbare kan den återgå i viloläge”. Medan detta eventuellt kan vara sant i vissa fall, har logiken brister. Vi måste komma ihåg att CPU:n drar mer kraft än någon annan modul i MCU:n. Dessutom måste alla uppgifter som behöver tillgång till kärnan utföras sekventiellt (FIFO), oavsett klockfrekvens. Därmed kan inte kärnan stängas av innan den sista uppgiften är klar.

Om en styrkrets kan utföra vissa uppgifter parallellt med hjälp av oberoende periferienheter, blir CPU-frekvensen ointressant samtidigt som den sammanlagda energiförbrukningen minskar kraftigt. CPU-oberoende kringutrustning fungerar fullt utan även om CPU-kärnan befinner sig i viloläge.

Konstruktion av batteridrivna tillämpningar har blivit mer komplicerad på grund av den ökade funktionaliteten. För bästa möjliga batterianvändning och -verkningsgrad bör konstruktörer analysera och till fullo förstå strömförbrukningsprofilen för varje komponent i olika energi- och aktivitetslägen. Den kärnoberoende kringutrustning som finns i nästa generation 8-bitarsstyrkretsar möjliggör för konstruktörer att skapa kreativa konstruktioner utan att prestandan försämras.