Proste sposoby zmniejszania poboru prądu w układach skrajnie niskich mocy
| TechnikaProjektant-praktyk nieustannie się uczy i doskonali swoje rzemiosło, starając się sprostać zmieniającym się wymaganiom. Wraz z rosnącym zapotrzebowaniem na urządzenia bateryjne, także typu „energy harvesting”, rośnie nacisk na konstruowanie układów coraz bardziej energooszczędnych.
Obecnie uwaga projektantów skupia się już na prądach rzędu nanoamperów. Projektowanie urządzeń o ekstremalnie małym poborze mocy wymaga starannego wyboru podzespołów, odpowiedniego zaprojektowania układu i sprytnego wykorzystywania właściwości kontrolerów w zakresie skrajnie małych mocy.
Wybór podzespołów
Wybierając kondensator, warto przypomnieć sobie jego schemat zastępczy (rys. 1) i zastanowić się nad wszystkimi składowymi tego podzespołu. C to pojemność kondensatora, RZS oznacza jego zastępczą rezystancję szeregową, LZS zastępczą indukcyjność szeregową, RAD i CAD absorpcję dielektryczną, a RU rezystancję upływu. Wszystkie te wielkości różnią się w zależności od typu kondensatora (ceramicznego, elektrolitycznego, tantalowego czy poliestrowego) i jego pojemności.
Projektant musi zwracać uwagę na miejsce usytuowania kondensatora w układzie i zbadać sposoby zmniejszenia pobieranego przez niego prądu. Kondensatory mają zaskakująco duży wpływ na pobór prądu zwłaszcza w układach o bardzo małym poborze mocy. Jedną z ważniejszych czynności jest przegląd wszechobecnych kondensatorów odsprzęgających. W układach cyfrowych rozmieszcza się je na płytkach wszędzie i natychmiast o nich zapomina, podczas gdy każdy z nich pobiera kilka nanoamperów prądu, nawet w stanie spoczynku. Należy zredukować ich liczbę do niezbędnego minimum.
Projektowanie obwodów
Następnym krokiem jest właściwe zaprojektowanie poszczególnych obwodów. Na rysunku 2a pokazano powszechnie stosowany przyciskowy układ sterujący. Rezystor R1 (10...100kΩ) podciąga napięcie wyjściowe do +V. Kondensator C1 służy do filtracji i wygładzania efektów odbijania styków przycisku. W stanie spoczynkowym (przycisk rozwarty) rezystywna gałąź układu składa się z elementów R1, RU, RZS i LZS (rys. 2b). Przez tę gałąź płynie stały prąd upływu z +V.
W układzie skrajnie małej mocy upływ ten daje się wyeliminować poprzez rezygnację z kondensatora, a skutki zwiększonych skoków napięcia mogą zostać łatwo skompensowane programowo. Na rysunku 2c przedstawiono ścieżkę prądową układu w stanie aktywnym (przycisk wciśnięty). Zakładając +V=3,3V i R1=10kΩ, przez czas naciśnięcia przycisku układ obciąża zasilacz całkiem sporym prądem 330μA! Czas naciśnięcia jest nieokreślony; może trwać od ułamka sekundy do kilku sekund.
Co zrobić, aby zmniejszyć to obciążenie? Jednym z rozwiązań jest objęcie kontrolą źródła +V. Na rysunku 2d zostało ono zastąpione cyfrowym wyjściem mikrokontrolera, a rezystancję R1 zwiększono dziesięciokrotnie do 100kΩ. Natężenie prądu zostaje zatem obniżone do 33μA, a napięcia dostarcza cyfrowe wyjście mikrokontrolera. Napięcie to może zostać obniżone do zera natychmiast po wykryciu naciśnięcia przycisku, co uniemożliwia pobieranie prądu wskutek przedłużenia czy zwielokrotnienia naciśnięcia przycisku.
W wielu mikrokontrolerach stosuje się wewnętrzne podciąganie napięciowe wejść cyfrowych (można to sprawdzić w opisach technicznych). Na przykład w serii 16-bitowych mikrokontrolerów firmy Microchip PIC24F16KA każdy z podciągów CNx pobiera z zasilacza 3,3V zwykle 250μA prądu. Zatem do podciągania napięcia służy rezystor 15kΩ o wartości zbliżonej do rezystorów zewnętrznych. Wewnętrzne rezystory podciągające są konfigurowalne programowo i można do nich zastosować te same metody, co do zewnętrznych.
Opłaca się wtedy zrezygnować z R1, co obniża koszt. Innym przykładem użycia wyłącznika w obwodzie niskiej mocy może być układ o trzech kondensatorach, łączonych równolegle trzema łącznikami (rys. 3). Istnieje tu osiem możliwych kombinacji, każda o innej pojemności zastępczej. Pojemności kondensatorów C1, C2 i C3 muszą być wybrane starannie, tak aby różnice pozwalały na wyraźne rozróżnienie ich kombinacji. W układzie z rysunku 3 minimalna różnica pojemności wynosi 22pF.
Ustalenie pojemności łączy się tu ze znacznie mniejszym poborem prądu w porównaniu do konwencjonalnego układu z rezystorami podciągającymi. Kontrolowanie napięć obciążenia w celu minimalizacji poboru prądu może pójść o krok dalej i objąć także zewnętrzne układy peryferyjne i obciążenia. Na rysunku 4 pokazano analogowy czujnik temperatury zasilany z wyjścia cyfrowego mikrokontrolera zamiast ze źródła +V. Cyfrowe linie I/O mikrokontrolerów mogą zazwyczaj dostarczać lub pobierać od 20 do 25mA prądu.
Analogowy czujnik temperatury MCP- -9700 w czasie działania pobiera zwykle 6μA prądu. Przełączając jego wyjście cyfrowe do masy, wyłącza się czujnik, zaoszczędzając te 6μA. W danych technicznych należy sprawdzić, po jakim czasie od jego włączenia można dokonać odczytu. W przypadku MSP9700 czas ten wynosi 800μs. Zatem przy jednym odczycie temperatury układ będzie pobierał 6μA oraz prąd odczytu przetwornika A/C przez 800μs plus czas gromadzenia danych przez przetwornik.
Jeżeli natężenie prądu obciążenia jest większe od wydajności prądowej wyjścia mikrokontrolera, można użyć tranzystora FET w układzie wtórnika (rys. 5). Wymagana jest od niego bardzo mała rezystancja dren-źródło (RDS(on)). Trudność może jednak sprawić fakt, że do włączenia p-kanałowego tranzystora FET konieczne jest niskie napięcie bramki. Skokom napięcia w czasie włączania zasilania ma zapobiegać rezystor R1. Jego rezystancja równa 1MΩ ogranicza prąd pobierany w czasie, gdy wyjście cyfrowe znajduje się w stanie niskim (połączone z masą). Obciążenie jest włączane przez tranzystor na czas stosunkowo krótki w stosunku do czasu oczekiwania.
Mikrokontrolery w układach bardzo niskiej mocy
Kolejnym etapem projektowania układu bardzo małej mocy jest wybór mikrokontrolera. Producenci mikrokontrolerów często wbudowują w nie cały zestaw funkcji oszczędnościowych. Urządzenie należy zasilać możliwie najniższym napięciem, przekładającym się bezpośrednio na obniżenie poboru prądu mikrokontrolera. Podczas gdy nie tak dawno można było przyjąć tylko jedną częstotliwość taktowania mikrokontrolera, teraz może ona być zmieniana w trakcie pracy w stosunkowo szerokim zakresie, np. od 32 kHz do 32 MHz.
Cyfrowe układy CMOS pobierają mniejszy prąd wraz ze zmniejszaniem częstotliwości taktowania, warto zatem stosować ją możliwie najniższą. Obecnie system może pracować nawet 16 różnymi częstotliwościami taktowania, tak więc dla każdego podprogramu daje się dobrać częstotliwość optymalną. Współczesne mikrokontrolery dysponują dużym wyborem funkcji peryferyjnych, takich jak timery, asynchroniczne i synchroniczne systemy łączności (USART, SPI, I2C), komparatory, przetworniki A/ C i C/A, zegary czasu rzeczywistego itp.
Trzeba pamiętać, że każdy z nich zwiększa sumaryczny prąd pobierany przez mikrokontroler, ale każdy może być też wyłączony programowo. Nowoczesne mikrokontrolery dają wiele innych możliwości oszczędzania energii. Mogą pracować w trybie aktywnym (run) oraz kilku trybach oszczędnościowych (doze, idle, sleep, deep sleep) dających szerokie możliwości zarządzania poborem mocy. W trybie drzemki (doze) zostaje obniżona systemowa częstotliwość zegarowa CPU, tak więc pracuje on wolniej niż obwody peryferyjne. Tryb ten jest użyteczny zwłaszcza wtedy, gdy zapotrzebowanie na usługi CPU jest małe, ale peryferie muszą działać z pełną szybkością.
Jest on także potrzebny do podtrzymywania nieprzerwanej łączności synchronicznych aplikacji. W trybie przestoju (idle) zostaje wstrzymane wykonywanie instrukcji przez CPU, ale zegar podtrzymuje działanie modułów peryferyjnych. Każde uaktywnione przerwanie, wyzerowanie (reset) urządzenia czy upływ czasu alarmowego (watchdog timeout) powoduje wyjście z trybu przestoju i wznawia wykonywanie przez CPU instrukcji. W trybie uśpienia (sleep) zegar systemowy zostaje zatrzymany, wstrzymując taktowanie CPU i peryferii, ale podtrzymywana jest RAM. Działanie niektórych funkcji, np. zegara czasu rzeczywistego i czasomierzy alarmowych (watchdog), może być w tym trybie dozwolone.
W trybie uśpienia głębokiego (deep sleep) pobór energii jest najmniejszy, znaczne obszary mikrokontrolera przestają być zasilane, a prąd pobierany z zasilacza może zmniejszyć się do dziesiątków nanoamperów. W zależności od zespołu cech mikrokontrolera, w trybie uśpienia głębokiego niektóre peryferie mogą być czynne, na przykład czujnik napięcia zasilającego i czasomierz alarmowy. Wychodzenie z uśpienia głębokiego trwa dłużej niż wychodzenie z uśpienia zwykłego, ponieważ musi zostać przywrócone podtrzymywanie pamięci RAM.
Przed wprowadzaniem kontrolera w stan uśpienia trzeba przeanalizować stany linii I/O. Napięcia wejściowe mogą dryfować pomiędzy stanem 0 i 1, przyjmując wartości pośrednie, przy których wejściowy bufor cyfrowy wchodzi w obszar liniowy i powoduje spory pobór prądu. Najlepszym sposobem jest skonfigurowanie tych wyprowadzeń jako wejścia analogowe, ponieważ jako takie mają wysoką impedancję i pobierają bardzo mały prąd. Powinno to zostać dokonane przed wejściem w tryb uśpienia.
Wyjścia cyfrowe w zasadzie nie wymagają żadnej dodatkowej konfiguracji, niemniej jednak trzeba sprawdzić, skąd są zasilane. Ich odpowiedni stan powinien zostać określony przed wprowadzeniem układu w tryb uśpienia. Jeżeli zasilanie zewnętrznego układu jest włączane i wyłączane przez mikrokontroler, należy upewnić się, że układ nie pozostanie zasilony przez cyfrowe wyprowadzenia wyjściowe pozostające w stanie logicznej 1.
Wyjścia cyfrowe muszą zostać wprowadzone w stan 0 przed wyłączeniem zasilania. Przy włączaniu zasilania pojawia się krótki impuls prądu ożywiającego obwody. Jest on ograniczany przez kondensatory umieszczone przy wyłączniku. Rodzaj tych kondensatorów powinien być dobierany z uwagą. Kondensatory elektrolityczne mają, jak wiadomo, duży prąd upływu. Tantalowe również, choć nieco mniejszy. Dobry kompromis jakości z ceną zapewniają kondensatory ceramiczne, charakteryzujące się małą wartością RZS i małym prądem upływu. (KKP)