Obliczanie żywotności baterii w aplikacjach IoT
| TechnikaInternet całkowicie zmienił sposób projektowania urządzeń elektronicznych, od prostych gadżetów i zabawek, po skomplikowane systemy przemysłowe. Nietrudno zauważyć, że dla większości nowoczesnych rozwiązań wspólnym mianownikiem jest komunikacja bezprzewodowa, która stała się w ostatnich latach kluczową częścią ich funkcjonalności i sensem istnienia dla urządzeń IoT składających się z czujników przesyłających drogą radiową informacje do chmur obliczeniowych.
Znaczna część urządzeń komunikujących się bezprzewodowo zasilana jest z baterii, gdyż pracuje w miejscach, gdzie podłączenie zasilania z sieci jest nieopłacalne lub niemożliwe. Baterie lub akumulatory, wspomagane systemami zasilania energią wolnodostępną (energy harvesting), są dla nich jedynym źródłem energii i to o ograniczonych zasobach, a więc takie, którymi trzeba gospodarować oszczędnie. Przy starannym zaprojektowaniu systemu oraz wykorzystaniu w ramach dodatkowego zasilania paneli słonecznych lub energii mechanicznej możliwe jest uzyskanie systemu zdolnego do pracy non stop przez wiele lat bez konieczności serwisu.
Mimo że liczba aplikacji elektronicznych pobierających na tyle małą moc, że mogą one być zasilane wyłącznie energią wolnodostępną stale się zwiększa, nie oznacza to automatycznie, że z czasem wszystkie zyskają taką zdolność. Niestety w wielu przypadkach okazuje się, że złożoność obliczeniowa pełnionych funkcji jest duża albo komunikacja realizowana jest na dużym dystansie i wymaga szerokiego pasma transmisji, tak że generator słoneczny lub mechaniczny o ograniczonej i niewielkiej mocy nie nadaje się do zasilania. Wówczas akumulator buforowy staje się niezbędnym dodatkiem zapewniającym rezerwę mocy.
Skoro tylko czasem udaje się pozbyć baterii całkowicie, to precyzyjne oszacowanie czasu pracy i tym samym prognozowanie terminu wymiany ogniw staje się ważnym czynnikiem w pracy działu utrzymania ruchu. Jest to też kluczowy czynnik minimalizacji kosztów tej operacji, gdyż nierzadko okazuje się, że usługa wymiany jest droższa niż cały układ IoT. Takie mamy niestety czasy, że praca ludzka staje się kosztowna.
Czynniki wpływające na czas życia baterii w IoT
Czas eksploatacji baterii w aplikacjach IoT może być wyliczony za pomocą prostej formuły - pojemność baterii dzieli się przez średni współczynnik rozładowania. Oczywiście im wyższa pojemność i mniejszy średni pobór mocy, tym żywotność jest większa.
Nietrudno zauważyć, że baterie są gabarytowo największą częścią aplikacji tego typu a dodatkowo nie ma zbyt wielu możliwości wyboru spośród różnych typów. Inaczej jest z mikrokontrolerem, układem komunikacyjnym lub oprogramowaniem firmware - tu można wybierać i zmieniać do woli, natomiast baterie zwykle są typowe w standardowych rozmiarach i nierzadko projekt systemu bazuje na tym, że nigdy nie będą wymieniane i muszą starczyć na cały czas.
IoT Battery Life Calculator
W takiej rzeczywistości postanowiliśmy przygotować kalkulator wyliczający spodziewaną żywotność baterii w sposób szybki i łatwy. Pozwala on na wprowadzenie parametrów charakteryzujących mikroprocesor, układ komunikacyjny, czujniki i baterię. Następnie definiuje się sposób działania, a więc w jaki sposób oprogramowanie zarządza działaniem aplikacji. Na koniec można dokonać szacowania żywotności baterii.
Jest to wartościowe narzędzie przeznaczone dla projektanta, które pozwala na zorientowanie się, czy dany układ sprzętowy razem z baterią ma sens. Jego użycie pozwala też na obserwację, w jaki sposób zmiany w poszczególnych blokach sprzętowych oraz konstrukcja algorytmu wpłyną na szacowany czas życia. Narzędzie to pozwala także odrzucić nieakceptowane scenariusze, stąd zapewnia oszczędność czasu projektanta. Poniżej zostanie opisane, jak korzystać z tego narzędzia.
Tryby uśpienia w aplikacjach IoT
Mikroprocesory wykorzystywane w aplikacjach IoT zawsze oferują minimum kilka trybów oszczędnej pracy pod kątem energetycznym (głębokości uśpienia działania). Z punktu widzenia oszczędności energii chodzi o to, aby mikrokontroler jak najdłużej przebywał w stanach najsilniejszego uśpienia, a był wybudzany jedynie na krótki czas niezbędny do wykonania zadań związanych z akwizycją danych lub komunikacją.
Weźmy na przykład układ komunikacyjny CC2650MODA firmy Texas Instruments. Na rysunku 1 pokazano wartości prądu pobieranego przez niego w poszczególnych stanach.
Dopóki proces akwizycji danych nie zachodzi często, uśpienie głębokie procesora ma wiele zalet, bo pobór mocy bardzo się obniża. Nawet jeśli do wybudzania konieczne jest dodanie dodatkowych elementów, nadal korzyści przeważają w ogólnym bilansie energetycznym, bo pobór prądu w trybie standy spada poniżej 3 μA, a więc do poziomu na tyle małego, że rozładowanie baterii CR3032 zajmie 8 lat, a więc dłużej niż wynosi projektowany czas pracy wielu aplikacji IoT.
Jak widać, wybór właściwego trybu standby jest istotny. Najbardziej oszczędny tryb tego typu spośród dostępnych pozwala na ograniczenie zużycia energii o mniej więcej jedną trzecią, niemniej te daleko idące oszczędności wiążą się z wieloma ograniczeniami, bo część bloków wówczas nie działa. Co więcej, nie zawsze da się wykorzystać tryb Sleep najbardziej oszczędny, nie tylko z uwagi na to, że nie działają w nim jakieś bloki funkcjonalne, ale także dlatego, że proces wybudzania mikrokontrolera z trybu głębokiego uśpienia zajmuje sporo czasu i powoduje, że spodziewane korzyści wcale nie są takie duże.
Przetwarzanie danych w trybie aktywnym jest zawsze jakimś kompromisem. Zgodnie z danymi pokazanymi na rysunku 1 pobór mocy rośnie liniowo ze wzrostem częstotliwości taktowania, co jest konsekwencją wykorzystania procesu technologicznego CMOS. A więc im szybsze taktowanie, tym krótszy czas pracy na bateriach. Tyle mówi teoria, bo w praktyce trzeba jeszcze uwzględnić wpływ stałego prądu bazowego o wartości 1,45 mA - w efekcie niekoniecznie spowolnienie zegara i wydłużenie czasu pracy w stanie aktywnym prowadzi do oszczędności.
W szacunkach należy jeszcze uwzględnić to, że przełączanie się procesora między poszczególnymi trybami oszczędnościowymi zabiera dodatkowy czas i wpływa na finalne zużycie energii. Przełączenie z trybu standby do aktywnego CC2659MODA zabiera aż 151 μs. Przy taktowaniu z maksymalną szybkością 48 MHz w ten sposób aż 7000 cykli zegarowych zostaje zmarnowane, więc w praktyce wygląda to tak, jakby realizacja kodu wydłużała się o tę wartość.
Czyli minimalizując liczbę wybudzeń w jednostce czasu, uzyskujemy poprawę efektywności energetycznej. Oznacza to, że w czasie gdy procesor jest w stanie aktywnym (wybudzony), należy wykonać maksymalnie dużo operacji przed ponownym uśpieniem działania.
Konkretne uwarunkowania zależą od wartości prądów pobieranych przez układ w poszczególnych stanach, od tego, ile trwa proces wybudzania i jakie bloki są niedostępne w stanie Sleep, dlatego wykorzystanie kalkulatora wydaje się efektywnym narzędziem do prowadzenia szybkich symulacji.
Szacowanie poboru prądu przez układy peryferyjne aplikacji IoT
Nowoczesne aplikacje z obszaru IoT integrują w ramach jednego układu SoC wiele obwodów peryferyjnych po to, aby rozwiązanie sprzętowe było maksymalnie uniwersalne i dało się użyć w różnych projektach. Niemniej oznacza to również że praktycznie zawsze część bloków wchodzących w skład systemu SoC jest niepotrzebna i nie jest używana (rys. 2).
Na rysunku 3 pokazano pobór prądu przez poszczególne układy peryferyjne wchodzące w skład chipu CC2650MODA. Mimo że pobór prądu wynosi z reguły kilkadziesiąt mikroamperów, zablokowanie nieużywanych obwodów ma zauważalny wpływ na bilans energetyczny. Jeśli nie jest potrzebna komunikacja szeregowa, można oszczędzić nawet 318 μA. Niby jest to niewiele, ale w perspektywie wielu lat pracy przy zasilaniu z baterii ma to spory wpływ na żywotność. Oszczędzając energię w tym miejscu, można np. podnieść taktowanie o 10 MHz i skrócić czas przebywania mikroprocesora w stanie aktywnym.
Komunikacja
Wybór właściwej technologii komunikacji bezprzewodowej często wynika z wymagań systemowych. Im większa szybkość komunikacji, tym zwykle większy jest pobór prądu i krótsza żywotność baterii. Należy zatem wybrać technologię najbardziej efektywną energetycznie dla danej aplikacji, biorąc pod uwagę, że zasilanie z baterii niesie ze sobą wiele ograniczeń.
Modem 3G do sieci komórkowej nie może być zasilony z ogniwa CR3032, bo ogniwo to nie ma wystarczającej wydajności prądowej, nie mówiąc już o niewielkiej pojemności całkowitej sięgającej ok. 220 mA. Popularne technologie wykorzystywane w IoT to LoRa w komunikacji na dużą odległość oraz Bluetooth Low Energy (BLE) na niewielką. Obie zapewniają niski pobór prądu i nadają się do takich aplikacji.
Kolejny problem wymagający podjęcia decyzji to to, czy będziemy korzystać z rozwiązania zintegrowanego w ramach SoC, czy też wykorzystamy osobny moduł lub chip komunikacyjny. Okazuje się, że dostępne na rynku rozwiązania różnią się sporo od strony energetycznej. CC2650MODA pobiera podczas nadawania 9,4 mA i obsługuje popularne standardy o niskim poborze mocy jak BLE oraz IEEE 802.15.4. Prąd ten jest trzykrotnie większy w porównaniu do tego, co pobiera procesor pracujący z najszybszym taktowaniem.
Poza doborem efektywnego układu komunikacyjnego warto zwrócić uwagę na właściwe przygotowanie danych do transmisji. Przygotowanie zwartej i niewielkiej paczki danych zawsze będzie korzystne, bo jej czas przesyłania będzie najkrótszy.
Wybór sensora z punktu widzenia efektywności energetycznej
Wiele aplikacji IoT przeznaczone jest do zbierania informacji środowiskowych i działania w sieciach rozproszonych. Wynika z tego, że sensory takich czynników środowiskowych mają wpływ ma bilans energetyczny całości, bo muszą być zasilane i obsługiwane przez mikrokontroler. Weźmy na przykład pod uwagę czujnik temperatury typu RTD (rezystancyjny), jak Honeywell HEL-777 lub termistor 135-104LAF-J01. Element taki w układzie pełni funkcję dzielnika napięciowego, a więc musi przez niego popłynąć jakiś prąd.
Gdy wymagana jest duża dokładność, zasilanie musi być zrealizowane za pomocą źródła prądowego, co jest z punktu widzenia sprawności energetycznej rozwiązaniem gorszym. Zintegrowane czujniki temperatury takie jak LM35 wydają się lepszym rozwiązaniem, bo mają dobrą dokładność rzędu ¼ stopnia i pobierają jedynie 60 μA ze źródła zasilania.
Ale bez względu na to, jaki czujnik zostanie wykorzystany, powinien być zasilany jedynie wtedy, gdy temperatura jest mierzona, bo inaczej jest to niepotrzebna strata energii. Warto zauważyć, że nawet niskomocowy czujnik LM36DZ pobiera więcej mocy niż procesor CC2650MODA w stanie standby.
Wybór odpowiedniej baterii/akumulatora
W przypadku aplikacji IoT wykorzystywane są zwykle popularne typy baterii guzikowych takie jak CR3032, gdyż są tanie i mają relatywnie dobre parametry. Pierwsza charakterystyczna rzecz związana z bateriami jest taka, że są one opisywane przez niewiele parametrów. Producenci podają ich wymiary, napięcie i pojemność, co wydaje się absolutnym minimum, niemniej nie pozwala wnioskować o jakości ogniw. Poza tym popularne typy są wytwarzane przez wiele firm i ich własności sporo się potrafią różnić. To samo dotyczy chemii ogniw.
Kalkulator pozwala wybierać spośród wielu popularnych typów ogniw, w tym również tych mniej popularnych jak litowo-manganowe. Przejęto założenie, że pojemność ogniw jest stała, co oczywiście nie do końca jest prawdą - wystarczy zerknąć na dane ogniwa CR3032 firmy Multicomp, gdzie zilustrowano zmiany pojemności w zależności od obciążenia i temperatury (rys. 4).
Pierwsza rzecz to taka, że deklarowana pojemność 210 mAh jest osiągalna jedynie w warunkach optymalnych. Przy silniejszym obciążeniu lub niższej temperaturze pojemność zauważalnie spada. Biorąc pod uwagę, że aplikacje IoT pobierają prąd impulsowo, a więc przez moment wartość jest duża.
Powoduje to powstawania chwilowych spadków napięcia, które mogą być groźne dla działania, np. wywoływać aktywację układu Brownout detektor. Na rysunku 5 pokazano, jak zmienia się napięcie na zaciskach baterii przy impulsowym poborze prądu o wartości 2 mA. Jak widać, napięcie z 3 V spada do 2,2 V, co już jest groźne z punktu widzenia stabilności działania.
Długie przechowywanie baterii
Zanim bateria trafi do zacisków urządzenia, przez pewien czas z pewnością leżała nieużywana na półce. I nie wiadomo w praktyce, jak długo była magazynowania. Skoro projektowana aplikacja ma działać przez wiele lat, to czynnikiem kluczowym jest to, aby ogniwo zasilające było świeże i nie magazynowano go długo. Inaczej procesy samowyładowania, a więc 1-2% utraty pojemności na rok, dla ogniw litowo-jonowych potrafi ą ograniczyć dostępną pojemność. Do tego samowyładowanie jest procesem nieliniowym i trudnym do dokładnego prognozowania, przez co należy unikać kupowania baterii z niesprawdzonych źródeł, takich gdzie nie wiadomo, jaka była data ich produkcji.
W przypadku opisywanego kalkulatora przyjęto założenie, że proces samorozładowania ogniw jest procesem ciągłym w zadanym okresie magazynowania. Jest to pewne uproszczenie, ale wyniki takiego szacowania i tak są bardziej dokładne od sytuacji, w której kupione zostanie ogniwo od przypadkowego dostawcy, bez informacji na temat daty produkcji. Bo wówczas całe szacunki są jedynie przybliżeniem.
Maksymalizacja czasu życia baterii w IoT
Projektowanie aplikacji IoT wymaga od inżyniera wiele uwagi po stronie wyboru właściwych komponentów i platformy sprzętowej jak też źródła zasilania. Niestety pomyłki i nietrafione decyzje prowadzą do znacznego skrócenia czasu pracy na bateriach. Warto zatem wykorzystywać wszystkie dostępne narzędzia i dane techniczne, takie jak na przykład omawiany kalkulator, aby ograniczać ryzyko projektowe w takim zakresie i tworzyć lepsze projekty.
Farnell element14
te-farnell.com