Obliczanie czasu pracy na baterii w aplikacjach IoT

Internet całkowicie zmienił sposób, w jaki projektujemy większość urządzeń elektronicznych. Począwszy od prostych systemów prezentacji reklam na przystankach autobusowych, a kończąc na złożonych aplikacjach przemysłowych, dla wszystkich z nich łączność jest obecnie kluczową funkcją. Tymczasem najprawdopodobniej największą rewolucję stanowi pojawienie się urządzeń z sensorami, które zbierają dane i przekazują informacje do chmury.

Te małe „rzeczy” często nie mają dostępu do zasilania sieciowego. Oznacza to, że muszą zdobywać energię w inny sposób – albo z otoczenia za pomocą technik energy harvestingu, albo korzystając z baterii lub akumulatora.

W niektórych przypadkach, energy harvesting wydaje się najbardziej obiecującym rozwiązaniem, gdyż może pozwolić na nieskończenie długą pracę urządzenia, o ile tylko da się je tak zaprojektować, by zużywało mniej mocy niż jest w stanie zdobywać z otoczenia.

Jednakże bardzo często tego podejścia nie da się zastosować, gdyż energia dostępna w otoczeniu jest zbyt ograniczona, albo samo urządzenie pobiera za dużo mocy. W takich przypadkach koniecznym staje się użycie baterii lub akumulatora. Niestety, baterie trzeba co jakiś czas zmieniać. Koszt tej operacji bywa większy niż wyprodukowania samego urządzenia IoT, w związku z czym poprawne oszacowanie czasu pracy na baterii jest krytycznie ważne.

Czynniki wpływające na długość pracy na baterii

Czas pracy urządzenia IoT na baterii jest określony za pomocą prostego równania: wystarczy podzielić pojemność baterii przez średni prąd z niej pobierany. Minimalizując energię pobieraną przez urządzenie, lub zwiększając pojemność zainstalowanej baterii, zwiększy się czas pracy urządzenia zasilanego w ten sposób i zmniejszy całkowity koszt posiadania (TCO – Total Cost of Ownership) produktu.

Jako że baterie stanowią często fizycznie największą część systemów czujnikowych IoT, inżynierowie mają ograniczone pole manewru podczas ich wyboru. Jednakże duży wybór procesorów, interfejsów komunikacyjnych i algorytmów programowych sprawia, że nierzadko da się zaprojektować urządzenie w taki sposób, by osiągnąć założony czas pracy na baterii.

Tryby uśpienia w procesorach dla IoT

Procesory zaprojektowane pod kątem aplikacji Internetu Rzeczy często obsługują wiele trybów uśpienia o ultra-niskim poborze mocy.

Weźmy pod uwagę układ taki jak TI CC2650MODA – tzw. mikrokontroler bezprzewodowy. W tabeli 1 pokazano pobór prądu w zależności od trybu pracy podzespołu. Pobierana moc różni się o sześć rzędów wielkości pomiędzy trybem wyłączenia a aktywnej pracy.

Tabela 1.

Jeśli próbkowanie danych jest względnie częste, wyłączanie procesora nie daje zbyt wielu korzyści. Do jego ponownego uruchomienia potrzebne będą dodatkowe obwody i podzespoły oraz kod programu, co zwiększa koszt i złożoność całego projektu. Co więcej, już sam tryb uśpienia pozwala ograniczyć pobór prądu do mniej niż 3 µA, a więc do poziomu, gdy rozładowanie typowej baterii CR2032 potrwa przynajmniej osiem lat. Jest to dłuższy czas niż przewidywany czas użytkowania wielu urządzeń IoT, a zarazem zbliżony do samego czasu przez który bateria tego typu zachowuje sprawność. W związku z tym całkowite wyłączanie procesora rzadko kiedy jest faktycznie opłacalne.

Wybór odpowiedniego trybu pracy w spoczynku może być ważny. W omawianym układzie najniższy z trybów spoczynku pobiera około jednej trzeciej prądu w porównaniu do opcji najbardziej energochłonnej, ale bardzo mała część informacji o stanie poszczególnych podukładów procesora jest zachowywana. O ile w niektórych aplikacjach IoT wybór trybów najgłębszego uśpienia będzie konieczny, w wielu innych bardziej korzystne okaże się podtrzymanie zawartości pamięci cache, by zminimalizować liczbę cykli potrzebnych do wykonywania operacji w trybie aktywnej pracy.

Przetwarzanie danych w trybie aktywnej pracy również związane jest z pewnym kompromisem. Z danych w tabeli 1 wynika, że pobór mocy rośnie liniowo z częstotliwością taktowania zegara, co wynika z zastosowania technologii CMOS w omawianym procesorze. W związku z powyższym może się wydawać, że szybsze taktowanie przyspieszy wyczerpywanie się baterii, ale warto zauważyć, że i tak układ pobiera pewną stałą ilość prądu – ok 1,45 mA. Dodatkowo szybsze taktowanie pozwala skrócić czas aktywnej pracy, potrzebnej do wykonania algorytmu. Oznacza to, że spowalnianie zegara układu może tak naprawdę błędnie wydawać się sposobem na zmniejszenie poboru mocy i w praktyce skraca „czas życia” urządzenia z baterią.

Pod uwagę należy wziąć także czas potrzebny na przełączenie mikrokontrolera pomiędzy trybami. Przykładowo, w przypadku układu CC2650MODA potrzeba 151 µs na przejście ze stanu spoczynku do aktywnego. Przy maksymalnej częstotliwości taktowania, równej 48 MHz oznacza to, że ponad 7000 cykli zegara jest poświęconych na wzbudzenie procesora. W efekcie, w przypadku aplikacji w których bardzo niewiele kodu jest potrzebnych do wykonania zadania po wzbudzeniu układu, spowolnienie taktowania i przez to zwiększenie czasu wykonywania kodu pozwoli zmniejszyć moc pobieraną podczas wzbudzania oraz w konsekwencji wydłuży czas pracy na baterii. Tak samo ważne będzie zmniejszenie liczby operacji wzbudzania i wykonywanie tak wielu zadań za jednym razem, jak to możliwe, zanim powróci się do stanu uśpienia. Zabieg ten również wydłuży czas pracy na baterii.

Nowoczesne podzespoły produkowane na potrzeby aplikacji Internetu Rzeczy to bardzo często niezwykle złożone konstrukcje, zawierające wiele obwodów peryferyjnych, by umożliwić tworzenie rozwiązań opartych o pojedynczy układ, spełniający potrzeby różnorodnych klientów. Nierzadko jednak gotowe produkty IoT, a szczególnie proste systemy czujnikowe, wcale nie potrzebują tak wielu funkcji.

Tabela 2.

W tabeli 2 pokazano pobór prądu obwodów peryferyjnych układów z rodziny TI CC2650MODA. Pomimo, że pobierany prąd jest bardzo mały – rzędu dziesiątek, lub maksymalnie nieco ponad 200 mikroamperów – wyłączenie poszczególnych peryferiów może mieć duży wpływ na łączny pobór mocy. Przykładowo, jeśli łączność poprzez interfejsy szeregowe nie jest potrzebna, można w ten sposób zaoszczędzić łącznie 314 µA. I nawet jeśli nie wydaje się to wiele, w przypadku urządzeń z zasilaniem bateryjnym, prąd ten będzie miał duży wpływ na „czas życia” produktu.

Technologie komunikacji używane w IoT

Wybór odpowiedniego sposobu komunikacji jest często określany poprzez wymagania systemowe. W przypadku urządzeń IoT zasilanych bateryjnie, niemal zawsze wykorzystywane są interfejsy radiowe.

W komunikacji bezprzewodowej, dłuższy zasięg transmisji lub większa przepustowość będą zazwyczaj wymagały większego zużycia mocy. W efekcie technologia transmisji, która wymaga najmniejszego poboru mocy często będzie oczywistym wyborem.

Dla systemów sensorowych IoT można rozważyć kilka popularnych technologii komunikacji radiowej. Przykładowo LoRa pozwala na tworzenie energooszczędnych, rozległych sieci WAN, rozciągających się na kilka kilometrów, podczas gdy Bluetooth Low Energy (BLE) pozwala na wymianę danych tylko na krótkich dystansach, ale zużywa znacznie mniej prądu. Dodatkową kwestią do rozważenia jest podjęcie decyzji, czy do komunikacji ma być wykorzystywany oddzielny układ elektroniczny, czy też obwody wbudowane w główny mikrokontroler.

Dobre zarządzanie użyciem interfejsu komunikacyjnego jest krytycznie ważne, gdyż nawet technologie o małym poborze mocy będą szybko wyczerpywały baterię. Żeby zoptymalizować wykorzystanie energii zgromadzonej w baterii, wiele systemów IoT będzie wzbudzało obwody komunikacyjne tylko wtedy, gdy uzbiera na tyle dużą ilość danych, by był sens je transmitować.

Dobór czujników pod kątem maksymalizacji czasu pracy na baterii

Na „czas życia” urządzenia IoT zasilanego z baterii, duży wpływ mogą mieć zastosowane czujniki. Przykładowo rezystancyjne czujniki temperatury i termistory zmieniają swój opór wraz z temperaturą. W prostej aplikacji, gdzie dokładność pomiaru nie ma wielkiego znaczenia, można zastosować dzielnik napięciowy, ale w przypadku precyzyjnych systemów potrzebne będzie odpowiednie źródło prądu, które będzie zużywać więcej mocy. W wielu aplikacjach sprawdzą się zintegrowane czujniki temperatury, takie jak TI LM35DZ. Ich dokładność wynosi 0,25 °C w temperaturze pokojowej i pobierają one jedynie 60 µA prądu. Jakikolwiek czujnik zostanie użyty, bardzo ważne jest, by pobierał on prąd tylko wtedy, gdy jest wykorzystywany.

Rodzaje baterii dla urządzeń IoT

Jednym z problemów, jaki pojawia się podczas wyboru baterii, jest ograniczona ilość informacji technicznych na temat wielu z nich. Poza wymiarami fizycznymi oraz napięciem wyjściowym, często jedynym podanym parametrem jest pojemność. Oczywiście jest to kluczowa cecha, która określa ile energii będzie dostępnej dla urządzenia IoT.

Ważna jest jednak jakość baterii, która znacząco wpływa na dostępną pojemność. Wystarczy sobie wyobrazić konsekwencje zakupu tańszego ogniwa o mniejszej pojemności, która spowoduje skrócenie „czasu życia” urządzenia i wymusi kosztowną wymianę źródła zasilania. Istotne jest też, że w ramach tego samego formatu i rozmiaru można znaleźć ogniwa zbudowane z różnych substancji, gdzie poszczególne technologie mogą mieć dramatyczny wpływ na żywotność takiej baterii.

Patrząc na to, jak bardzo uproszczona jest większość kart katalogowych baterii, kuszące staje się założenie, że są to bardzo proste podzespoły, a ich pojemność jest stała – taka jak zadeklarował producent. W praktyce jest to po prostu nieprawda. Przykładowo, jeśli obciążenie ogniwa jest duże, jego czas życia się znacznie skraca. Co ważniejsze w niektórych aplikacjach, pojemność baterii mocno maleje także wraz ze spadkiem temperatury.

Urządzenia IoT pobierają prąd najczęściej w postaci impulsów. Procesor i czujniki potrzebują np. kilkudziesięciu miliamperów przez krótki czas, po czym przechodzą w tryb obniżonego poboru mocy na dłuższy okres. Taki impulsowy pobór prądu powoduje spadek napięcia wyjściowego z baterii. Rysunek 3. pokazuje, że nawet 2-miliamperowy impuls z baterii CR2032 powoduje spadek napięcia wyjściowego 3 V do ok 2,2 V.

Rys. 3

Inżynierowie często ignorują też dopuszczalny czas przechowywania baterii, przyjmując że odnosi się on raczej do okresu trzymania jej na magazynie, niż używania w gotowej aplikacji. Jednakże urządzenia IoT często muszą pracować przez lata na jednej i tej samej baterii, przez co jej dopuszczalny czas przechowywania staje się bardzo ważnym parametrem. Większość popularnych baterii ma ograniczony ten czas do ok. siedmiu lub ośmiu lat.

Podsumowanie: maksymalizowanie czasu pracy na baterii

Opracowywanie urządzenia IoT zasilanego bateryjnie wymaga staranności. O ile wybór komponentów jest ważny, złe decyzje projektowe mogą zaprzepaścić korzyści płynące z zastosowania procesora o niskim poborze mocy. Kluczem do uzyskania długiego „czasu życia” urządzenia na baterii jest upewnienie się, że procesor znajduje się w trybie uśpienia tak długo, jak to możliwe oraz że wykorzystanie komunikacji radiowej zostało ograniczone do minimum.

By rozwiązać ten problem, Farnell element14 przygotował internetowy kalkulator, który pozwala użytkownikom na szybkie i łatwe oszacowanie czasu pracy systemu IoT, zasilanego z baterii (rysunek 4).

Rys. 4.

Wystarczy jedynie wprowadzić parametry procesora, interfejsu komunikacyjnego, sensorów i baterii oraz inne kluczowe detale dotyczące stworzonego oprogramowania, a kalkulator sam oszacuje „czas życia” projektu przy zasilaniu z baterii lub akumulatora.

O autorze