Zmniejszanie poboru mocy w układach pomiarowych z mikrokontrolerami

| Technika

Sprawność energetyczna jest bardzo ważnym parametrem urządzeń elektronicznych. Ograniczenie poboru mocy ma szczególne znaczenie zwłaszcza w przypadku urządzeń zasilanych bateryjnie. Przykładem są m.in. tablety, telefony komórkowe, aparaty cyfrowe oraz inne urządzenia elektroniki użytkowej, moduły pomiarowe monitorujące warunki środowiskowe, które są częścią systemów automatyki budynkowej, przenośne urządzenia medyczne rejestrujące parametry życiowe pacjentów, implanty medyczne oraz liczniki różnych mediów energetycznych, które przesyłają wyniki pomiarów bezprzewodowo.

Zmniejszanie poboru mocy w układach pomiarowych z mikrokontrolerami

Urządzenia te zwykle mają wiele różnych czujników. Przykładem są żyroskopy i akcelerometry w tabletach i czujniki rezystancyjne oraz pojemnościowe w ekranach dotykowych telefonów, tabletów oraz paneli operatorskich w maszynach przemysłowych. W tzw. inteligentnych budynkach powszechnie są z kolei instalowane sensory temperatury, wilgotności oraz ruchu.

Oprócz czujników niezbędnym komponentem układów pomiarowych są również kontrolery przetwarzające odczyty z sensorów. Celem konstruktorów powinno być zmniejszenie zużycia energii przez te ostatnie. W zakresie zwiększenia efektywności energetycznej układów pomiarowych z mikrokontrolerami mogą oni stosować różne metody.

Ogólnie można je podzielić na takie, które wykorzystują rozwiązania sprzętowe oraz techniki programowania pod kątem ograniczenia poboru mocy. Najlepsze efekty zwykle zapewnia połączenie obu tych sposobów, które powinny być dostosowane do wymagań danej aplikacji.

Wpływ częstotliwości pracy i napięcia zasilania

Rys. 1. Pobór mocy w układach cyfrowych zależy od częstotliwości pracy mikrokontrolera oraz napięcia zasilania

Układy cyfrowe zużywają energię zarówno w stanie spoczynku, jak i aktywności. W tym drugim wypadku pobór prądu zależy od częstotliwości pracy mikrokontrolera oraz napięcia zasilania (rys. 1). W większości przypadków w oszacowaniu poboru mocy w stanie aktywnym pomocna jest formuła: f·C·U², gdzie C to pojemność pasożytnicza układu, U - napięcie zasilania oraz f - częstotliwość pracy mikrokontrolera.

Modyfikacja tego wzoru może być wymagana w wypadku nieco bardziej skomplikowanych układów, w których stosowane jest tzw. bramkowanie zegara (clock gating). Technika ta polega na dynamicznej zmianie częstotliwości pracy poszczególnych jednostek logicznych układu.

Ogólnie jednak uzasadniony jest wniosek, że zmieniając częstotliwość sygnału zegarowego tak, aby miała ona możliwie najniższą wartość zapewniającą w danej chwili dostateczną wydajność przetwarzania, można uzyskać oszczędność energii. Podobnie jest w wypadku regulacji napięcia zasilania.

Tutaj wpływ jest nawet większy, w związku z tym że pobór mocy jest proporcjonalny do kwadratu napięcia. Niestety jednocześnie im mniejsze jest napięcie zasilania, tym mniejsza może być maksymalna częstotliwość pracy. W rezultacie spada wydajność przetwarzania takiego komponentu.

Prąd upływu

W analizie sprawności energetycznej mikrokontrolera uwzględnić należy również pobór prądu w stanie statycznym. Wraz z postępem w zakresie miniaturyzacji układów scalonych wartość natężenia prądu upływu jest bowiem na tyle duża, że straty mocy z tym związane mogą stanowić nawet 50% całkowitej mocy rozpraszanej w danym układzie.

Istotne jest również to, że jest to stały składnik bilansu energetycznego układów cyfrowych, którego wartość może dodatkowo wzrastać wraz ze wzrostem temperatury. Bezpośrednio na wartość natężenia prądu upływu konstruktor nie ma jednak wpływu. Można go ograniczyć wyłącznie na etapie produkcji układu cyfrowego.

Nie płynie on też oczywiście w wypadku odłączenia zasilania. Dlatego wybierając mikrokontroler, warto zdecydować się na taki model, w projekcie oraz produkcji którego zaimplementowano rozwiązania zmniejszające natężenie prądu upływu. W przypadku, gdy w danym komponencie wartość prądu spoczynkowego jest znacząca i nie ma możliwości jego zastąpienia mikrokontrolerem zoptymalizowanym pod tym względem, warto rozważyć inne rozwiązanie.

Ponieważ polega ono na zwiększeniu częstotliwości pracy kontrolera, pozornie może się wydawać niezgodne z przedstawioną wcześniej zależnością poboru mocy od tej wielkości. Zakładając jednak, że podwojenie częstotliwości zegara skróci czas przetwarzania o połowę, można przyjąć, że wzrost składowej dynamicznej pobieranej mocy będzie zrównoważony przez odpowiednio krótszy pobór mocy statycznej (rys. 2).

Tryby oszczędzania energii

Rys. 2. Im większa częstotliwość zegara, tym krótszy czas przetwarzania. W efekcie wzrost składowej dynamicznej pobieranej mocy będzie zrównoważony przez odpowiednio krótszy czas poboru mocy statycznej

Innym sposobem na zmniejszenie poboru prądu jest wprowadzenie mikrokontrolera w tryb pracy o ograniczonym zużyciu energii. Zwykle można też wybrać jeden z kilku stanów pracy, w tym m.in. tryb sleep, deep sleep oraz standby, czyli prawie całkowite wyłączenie. Przełączanie między nimi polega na stopniowym wyłączaniu zasilania oraz zmianie częstotliwości taktowania poszczególnych bloków układu.

Jednocześnie ich stan jest zapisywany w pamięci nieulotnej lub przeznaczonych specjalnie do tego celu rejestrach o możliwie najmniejszym natężeniu prądu upływu. Funkcje oraz obwody dostępne oraz wyłączone w każdym z tych trybów, jak również ich nazwy, mogą się różnić w zależności od producenta oraz modelu.

Ogólnie jednak im głębsze jest przejście układu w stan uśpienia, tym mniejszy pobór mocy. W wypadku mikrokontrolerów obecnie dostępnych na rynku, wykorzystując taką opcję, można uzyskać znaczące oszczędności - nawet o wartości kilku rzędów wielkości. Przykładowo pobór mocy można zmniejszyć z kilku mW w stanie aktywnym do kilkudziesięciu nW w trybie oszczędzania energii.

Sleep

W trybie sleep podstawową metodą zmniejszenia strat mocy jest odcięcie sygnału zegarowego od wybranych bloków mikrokontrolera. Zwykle aktywny pozostaje zegar rdzenia, jak również obwód pętli fazowej. Ten drugi jest niezbędny do uzyskania sygnałów taktujących o różnych częstotliwościach wymaganych do realizacji zadań wykonywanych przez rdzeń procesora oraz układy peryferyjne.

Obwód PLL w stanie synchronizacji pobiera stały prąd, jednak od jego ponownego załączenia do momentu uzyskania stabilnych przebiegów może minąć sporo czasu. Dlatego, chociaż jego wyłączenie w wypadku, gdy bloki, które są za jego pośrednictwem, taktowane są nieaktywne, pozwala uzyskać znaczne oszczędności, w praktyce w trybie sleep często układ pętli fazowej działa.

W trybie tym aktywna jest też pamięć RAM, do której ma dostęp kontroler DMA. Pozwala to na zapis danych, na przykład zmierzonych przez czujniki lub inne układy peryferyjne bez interwencji rdzenia. W efekcie czas przejścia z trybu sleep do stanu aktywnego jest w porównaniu do pozostałych trybów oszczędności energii najkrótszy. Uzyskuje się to jednak kosztem większych strat mocy - pobór prądu w tym trybie jest rzędu nawet kilkuset μA.

Deep sleep, standby

Rys. 3. Czasu trwania przejścia mikrokontrolera ze stanu sleep do aktywnego nie można zlekceważyć. Im jest krótszy, tym mniej energii jest traconej, zanim układ zacznie realizować swoje zadania

Kolejnym stopniem uśpienia jest zwykle tryb deep sleep. W tym wypadku wyłączona zostaje większość bloków mikrokontrolera, w tym zegar rdzenia oraz obwód pętli fazowej. Działają wówczas zwykle tylko takie niezbędne obwody, jak układ zegara czasu rzeczywistego, timer watchdoga oraz detektor spadku napięcia zasilania (brown-out) oraz resetu po włączeniu zasilania (power on reset).

W tym trybie pobór prądu mieści się w przedziale od poniżej 1 μA do 50 μA, natomiast czas przełączenia w stan aktywny może się wahać od 5 μs do 8 μs. Największe oszczędności energii zapewnia tryb standby. W tym stanie wyłączone są zwykle wszystkie obwody mikrokontrolera, w tym rdzeń i zegar oprócz układu wybudzenia.

Przejście, z tego stanu do stanu aktywnego przebiega podobnie jak w wypadku resetu. W związku z tym, że wymagany jest odpowiednio długi czas na ustabilizowanie się sygnału zegara, a często także dodatkowo na synchronizację pętli fazowej, przełączenie to następuje wolno - może trwać nawet 200 μs. Zwykle jednak w tym trybie pobór prądu można ograniczyć do zaledwie kilkudziesięciu lub nawet kilkunastu nA.

Wybierając tryb, w jakim ma pracować mikrokontroler w stanie uśpienia, warto rozważyć, czy oszczędności uzyskane w danym stanie nie będą mniejsze niż straty wynikające z długiego czasu powrotu do stanu aktywnego. W czasie takiego przejścia bowiem pobór prądu może znacznie wzrosnąć, ale niestety jednocześnie mikrokontroler nie jest w stanie zrealizować żadnych użytecznych operacji do momentu ustabilizowania się wszystkich obwodów (rys. 3).

Wybór częstości przechodzenia w tryb sleep

Oprócz wyboru trybu uśpienia, w jaki mikrokontroler będzie wprowadzany, w czasie braku aktywności istotny jest też wybór tego, jak często oraz jak długo będzie on pracował w tym trybie. Zależy to od specyfiki urządzenia, którym dany kontroler będzie zarządzał.

Przykładem urządzeń pomiarowych, w których można uzyskać wysoką sprawność energetyczną dzięki temu, że mikrokontroler nawet przez 99% czasu pozostaje w stanie uśpienia, są tzw. inteligentne liczniki (smart meters). Umożliwiają one dwukierunkową komunikację między operatorem oraz odbiorcą energii w ramach tzw. inteligentnych sieci elektroenergetycznych (smart grid).

Mikrokontroler sterujący licznikiem przechodzi w tryb aktywności wyłącznie w celu odczytu danych z wejść czujników. Odczyt ten jest dokonywany okresowo lub w razie potrzeby po zgłoszeniu przerwania.

W przypadku urządzeń takich jak liczniki energii, które są zasilane bateryjnie i są instalowane u użytkowników z założeniem pracy bez konieczności wymiany baterii przez długie lata, pobór mocy ma kluczowe znaczenie. Im jest większy, tym krótszy jest czas działania licznika zgodnie z oczekiwaniami.

Czujniki pojemnościowe i indukcyjne

Rys. 4. W przypadku ekranów dotykowych niemożliwe jest dokładne określenie częstotliwości, z jaką należy odczytywać wartość zmierzoną przez czujnik pojemnościowy

Nie zawsze jednak możliwe jest dokładne określenie częstotliwości, z jaką należy odczytywać wartość zmierzoną przez czujnik. Przykładem takiej nieprzewidywalnej aplikacji są ekrany dotykowe. Urządzenia te umożliwiają intuicyjną interakcję z użytkownikiem, który dotykając pola na wyświetlaczu, dokonuje wyboru, na przykład uruchomia konkretną funkcję lub otwiera program.

Ekrany takie są coraz popularniejsze, zwłaszcza w elektronice użytkowej. Są też powszechnie instalowane w panelach operatorskich używanych w przemyśle do sterowania maszynami. Przetworzenie sygnałów z czujników pojemnościowych w wyświetlaczach tego typu wymaga dużej mocy obliczeniowej.

W związku z tym ograniczenie poboru mocy urządzeń z dotykowym interfejsem nie jest proste. Podobny problem dotyczy też sensorów indukcyjnych. Są one przykładowo używane w czujnikach zbliżeniowych, które wykrywają obecność przewodzących elementów. Są one wykorzystywane m.in. jako detektory metali, w myjniach samochodowych oraz w systemach automatyki przemysłowej.

Ograniczanie poboru mocy na przykładzie ekranów dotykowych

Zasada działania wyświetlaczy dotykowych z czujnikami pojemnościowymi jest następująca: powierzchnia ekranu stanowi jedną elektrodę, natomiast palec użytkownika lub rysik zbliżony do ekranu staje się drugą elektrodą. Razem tworzą one kondensator (rys. 4). Sterownik wyświetlacza monitoruje zmiany pojemności tego kondensatora.

Wadą tego rozwiązania jest to, że mikrokontroler cały czas pracuje w stanie aktywnym i dokonuje odczytu nawet wtedy, gdy nic się nie zmienia. Jeżeli jednocześnie nie ma innych zadań do wykonania, nie jest to optymalne rozwiązanie. Alternatywą jest okresowe "wybudzanie" mikrokontrolera w celu sprawdzenia stanu czujników ekranu dotykowego.

Niestety, w przypadku wyświetlaczy tego rodzaju nie można przewidzieć, kiedy może wystąpić interakcja z użytkownikiem. W rezultacie możliwa jest sytuacja, w której urządzenie nie reagowałoby na działania człowieka. W przypadku wyświetlaczy dotykowych jest to niedopuszczalne. Dlatego lepiej wykorzystać dodatkowy obwód, które będzie monitorował stan czujników, a w razie wykrycia dotknięcia powierzchni wyświetlacza wygeneruje sygnał przerwania.

Wówczas mikrokontroler przeprowadzi wszelkie obliczenia wymagane do określenia współrzędnych dotkniętego pola ekranu. Dzięki temu kontroler jest aktywny tylko wtedy, gdy rzeczywiście realizuje konkretne zadanie.

W takim wypadku pobór mocy zależy przede wszystkim od stopnia aktywności użytkowników korzystających z ekranu. Podobne rozwiązanie można też zastosować w przypadku aplikacji z czujnikami indukcyjnymi i innymi elementami wejściowymi, które są stale zasilane i dostarczają informacji w nieprzewidywalnym momencie.

Monika Jaworowska