W tym odcinku przyjrzymy się układom zastępującym i uzupełniającym wbudowane peryferia mikrokontrolera. Są to na przykład układy watchdog, generatory kwarcowe czy zegary czasu rzeczywistego. Przyjrzymy się też układom POR/BOR, które dbają o to, by procesor pracował tylko przy właściwym napięciu zasilania. Warto spojrzeć również na – często występujące w mikrokontrolerach – wzmacniacze operacyjne i sprawdzić, czy zewnętrzne układy scalone (lub wręcz rozwiązania tranzystorowe) nie okażą się lepsze. To ostatnie pytanie jest szczególnie ciekawe, zwłaszcza biorąc pod uwagę, jak wielkie mamy bogactwo układów scalonych i jak rzadko obecnie trafia się w komercyjnych urządzeniach na tranzystory realizujące inne funkcje niż przełączanie.
Układy nadzorcze: POR, BOR i watchdog
W praktyce każdy mikrokontroler ma wbudowane obwody POR, BOR i watchdog. Układ POR utrzymuje procesor w stanie resetu, póki napięcie zasilania nie osiągnie stabilnej wartości minimalnej. W przeciwnym razie program może być wykonywany niepoprawnie. Zakończenie stanu POR powoduje też ustawienie wartości domyślnych we wszystkich rejestrach (chyba że nota katalogowa mikrokontrolera podaje inaczej) oraz wyzerowanie pamięci RAM. Z kolei układ BOR wstrzymuje pracę programu, gdy napięcie spadnie poniżej minimalnego progu. Reset spowodowany spadkiem napięcia zasilania jest zazwyczaj odnotowywany przez mikrokontroler za pomocą flagi w jednym z rejestrów, przy czym jej stan może zostać zachowany przez dłuższy czas po zaniku zasilania. Z praktycznego punktu widzenia funkcjonalność tę można zastosować do zmiany sposobu pracy układu przez szybkie jego wyłączanie i włączanie – tak działają latarki z wieloma trybami świecenia przełączanymi przyciskiem zasilania. Dlaczego zatem ktoś miałby decydować się na użycie zewnętrznego układu POR/BOR, skoro mikrokontroler już taki zawiera? To samo pytanie można zadać w odniesieniu do zewnętrznych układów watchdog, które – podobnie do wewnętrznego watchdoga procesora – mają za zadanie zresetować układ po upływie określonego czasu, jeśli program wcześniej nie da znaku życia watchdogowi. Moduł watchdog wewnątrz mikrokontrolera w wielu układach może wybudzić ten procesor ze stanu uśpienia, bez utraty kontekstu sprzed uśpienia – program kontynuuje pracę od miejsca, w którym uśpienie zostało zainicjalizowane. Zewnętrzny układ watchdog zresetuje mikrokontroler całkowicie, rozpoczynając egzekucję programu od początku. Czytelnik może zatem dojść do wniosku, że zewnętrzny watchdog jest mało użyteczny i niepotrzebnie podnosi koszty, podobnie zresztą jak układy POR/BOR.
Zewnętrzne układy POR/BOR i watchdog mają jednak kilka cech, które mogą być pożądane przez projektanta. Po pierwsze: zwykle są bardziej energooszczędne od modułów wbudowanych w mikrokontroler, szczególnie gdy rzeczony procesor jest starszej generacji. Po drugie układy POR/BOR mają szeroki wybór napięć granicznych, dzięki czemu można precyzyjniej dobrać punkt wyłączenia w układzie zasilanym bateryjnie. Inną zaletą zewnętrznego układu POR/BOR może być precyzyjnie określone opóźnienie między ustabilizowaniem się napięcia zasilania a startem procesora. Większość mikrokontrolerów ma specjalny timer opóźniający start po osiągnięciu stosownego napięcia na pinie RESET – pin ten zazwyczaj dołączony jest do obwodu RC składającego się z rezystora 10 kΩ i kondensatora 100 nF. Jak łatwo się domyślić, czas aktywacji tak wyposażonej linii RESET zależy zatem nie tylko od stałej czasowej tego obwodu, ale także od napięcia zasilania. Zewnętrzny układ POR/BOR zazwyczaj ma stałe opóźnienie, które może zostać dobrane zależnie od potrzeb. Im mniej pewne źródło zasilania, tym dłuższe powinno być opóźnienie między ustabilizowaniem się napięcia a startem układu. Dla przykładu układ TPS3808 firmy Texas Instruments pozwala uzyskać opóźnienie wynoszące nawet dziesięć sekund. Pobór prądu tego układu – ze względu na jego wiek – jest znaczny i sięga typowo 2,4 μA. Z drugiej strony – to wciąż mniej niż wynosi pobór prądu modułu BOR w starszym mikrokontrolerze, na przykład PIC18LF45K50, tam bowiem najniższa typowa wartość wynosi 3,4 μA, a najwyższa typowa – aż 8 μA. W przypadku zaprezentowanego w części drugiej mikrokontrolera PIC18F27Q10 natężenie prądu zasilania BOR wynosi aż 30 μA, z kolei moduł LPBOR typowo pobiera już zaledwie 0,9 μA.
Spójrzmy zatem na kilka układów POR/BOR dostępnych na rynku. Na pierwszy ogień niech pójdzie seria TLV803E/809E/810E. Pobierają one typowo 250 nA, maksymalnie 1 μA. Różnica między nimi tkwi w sposobie działania wyjścia RESET – jest to odpowiednio: open-drain (TLV803E), aktywny stan niski push-pull (TLV809E), aktywny stan wysoki push-pull (TLV810E). Do wyboru mamy szereg napięć progowych: 1,7 V, 1,8 V, 1,9 V, 2,25 V, 2,4 V, 2,64 V, 2,93 V, 3,08 V, 3,3 V, 4,2 V, 4,38 V, 4,55 V, 4,63 V; i opóźnień: 40 μs, 10 ms, 20 ms, 50 ms, 100 ms, 200 ms i 400 ms. Histereza wynosi 1,2% napięcia przełączania, a dokładność – typowo 0,5%. Zależnie od obudowy dostępny może być również pin do dołączenia zewnętrznego przycisku resetu. Układy Maxim MAX6326/-7/-8 oraz MAX6346/-7/-8 oferują mniej opcji, jeśli idzie o napięcia przełączania, gdyż są przeznaczone do systemów o napięciu pracy 2,5 V, 3 V, 3,3 V i 5 V. Do wyboru jest szereg konfiguracji wyjścia, a pobór prądu w systemie 3 V wynosi tylko 500 nA typowo oraz 1 μA maksymalnie. Firma Torex z kolei oferuje kilka różnych serii układów nadzorujących zasilanie. Układy serii XC6126 oferują dość niski pobór prądu, 0,7 μA przy 3 V.
Do wyboru są napięcia przełączania od 1,5 V do 5,5 V w krokach co 0,1 V. XC6129 oferuje podobne parametry, ale przy niższym poborze prądu, i dodaje możliwość wyboru opóźnienia resetu za pomocą zewnętrznego kondensatora (zwarcie tego kondensatora pozwala uzyskać ręczny reset).
Ciekawym wyborem jest też układ TLV840-Q1 firmy Texas Instruments, który oferuje wszystkie typowe możliwości układów POR/BOR, czyli wybór rodzaju wyjścia, wejście dla przycisku reset i szeroką gamę napięć progowych. Pobiera przy tym zaledwie 120 nA. Zewnętrzny kondensator pozwala wybrać opóźnienie, bez niego wynosi ono 40 μs, z kondensatorem 1 μF zaś 619 ms. Zakres napięć przełączania rozciąga się od 0,8 V do 5,4 V. Innymi układami o podobnym poborze prądu są te z rodziny MAX16056...MAX16059, które dodatkowo realizują funkcję watchdoga. W tym wypadku prąd zasilania wynosi 132 nA przy 3,3 V (typ.) – czyli o połowę mniej niż pobiera watchdog w układzie PIC18F27Q10. Wadą układu jest brak możliwości zmiany interwału watchdoga z poziomu oprogramowania, gdyż ta zależy od użytego kondensatora. Analog Devices w swojej ofercie ma dwa spokrewnione ze sobą układy: ADM696 i ADM697. Monitorują one napięcie zasilania, przełączają je z zewnętrznego źródła na zasilanie bateryjne i jednocześnie realizują funkcję watchdoga oraz POR/BOR. Przy zewnętrznym zasilaniu pobierają do 1 mA, ale z baterii już maksymalnie 1 μA. Do ich możliwych aplikacji należy bateryjne podtrzymywanie pamięci RAM w systemie mikroprocesorowym, gdy zaniknie zewnętrzne zasilanie. Po jego powrocie mikroprocesor jest restartowany, a jednocześnie zachowane zostają dane w pamięci RAM. Inny układ łączący w sobie funkcję monitora napięcia i watchdoga to TPS3813-Q1 od Texas Instruments. W jego przypadku pobór prądu wynosi typowo 9 μA, czyli dość sporo. W zamian za to sam watchdog jest typu okienkowego, tj. sygnał resetu musi pojawić się przed upływem maksymalnego czasu, ale po upływie czasu minimalnego – inaczej nastąpi reset. Rozwiązanie to przydaje się, gdy mikrokontroler znajdzie się przypadkiem w pętli, która nie robi nic poza resetowaniem watchdoga. TPS3430 tej samej firmy to programowalny watchdog okienkowy kontrolowany za pomocą trzech pinów ustalających interwał i szerokość okienka. Układ typowo pobiera 10 μA. Układy Maxim MAX6821...MAX6825 również łączą w sobie funkcję POR/BOR, Watchdog i ręcznego resetu. Interwał watchdoga wynosi 1,6 s, pobór prądu zaś typowo 7 μA przy 3,6 V. Różne modele łączą różne kombinacje wyjść i wejść, każdy zaś oferuje dziewięć różnych napięć przełączania do wyboru, od 1,58 V do 4,63 V.
Jak widać, wybór układów jest dość duży, ale nie każda z dostępnych opcji jest ekstremalnie energooszczędna. Timery watchdog wymagają bowiem oscylatorów, które znacząco podnoszą pobór prądu. Natomiast układy POR/BOR realizują opóźnienia za pomocą kondensatorów ładowanych źródłem napięcia odniesienia przez wewnętrzny rezystor, dzięki czemu stała czasowa obwodu jest stabilna i niezależna od napięcia zasilania. Czytelnik może też rozważyć budowę własnego układu POR/BOR opartego na tranzystorach. Jest to jak najbardziej akceptowalne rozwiązanie, pod warunkiem, że cały obwód zmieści się na płytce drukowanej, będzie odpowiednio energooszczędny i bezawaryjny, jednocześnie oferując niższy koszt niż użycie specjalnego układu scalonego. Zaprojektowanie takiego rozwiązania zostawiam jako wyzwanie dla zainteresowanych Czytelników.
Generatory kwarcowe i układy RTCC
Niemal każdy mikrokontroler może pracować z zewnętrznym zegarem, zazwyczaj pobierając przy tym mniej prądu niż przy użyciu nawet najbardziej oszczędnej opcji wbudowanej. Użycie zewnętrznego generatora może mieć zatem całkiem sporo sensu, zwłaszcza jeśli jest to generator programowalny.
Z reguły wewnętrzny oscylator mikrokontrolera ma tylko kilka do kilkunastu stałych częstotliwości, najczęściej każda jest 2 razy większa od poprzedniej. Jeśli zatem potrzebujemy częstotliwości niestandardowej, to jedyną opcją staje się zewnętrzny rezonator lub generator kwarcowy. Noty katalogowe nie podają zwykle dolnego limitu częstotliwości taktowania, więc w teorii układ może pracować z dowolnie niską częstotliwością, nawet rzędu pojedynczych herców, co ma też wpływ na pobór prądu. W celu miarodajnego porównania, w tabelach 1 i 2 zestawiono typowe pobory prądu dwóch mikrokontrolerów: PIC12LF1501 oraz PIC18LF45K50 przy różnych częstotliwościach i typach oscylatorów.
Jak łatwo zauważyć, pobór prądu przy zewnętrznym zegarze bywa znacząco niższy od prądu zasilania podczas pracy z użyciem wewnętrznego oscylatora. Zwraca też uwagę bogactwo opcji układu PIC18LF45K50 – ma on bowiem wbudowany moduł USB 2.0 wymagający zegara 48 MHz. Co ciekawe, pobór prądu wewnętrznych oscylatorów jest wciąż dość niski – znalezienie bardziej energooszczędnego generatora to pewne wyzwanie, zwłaszcza że do jego poboru prądu trzeba doliczyć też pobór prądu samego mikrokontrolera z zewnętrznym zegarem. W zestawieniu uwzględniono tylko kilka wybranych układów, jako że zdecydowana większość scalonych generatorów kwarcowych pobiera od kilku do kilkunastu miliamperów, daleko wykraczając poza możliwości samych mikrokontrolerów.
Najbardziej prądożerny układ to 5X1503 firmy Renesas. Oferuje on trzy niezależne wyjścia zegarowe, każde o częstotliwości od 1 MHz do aż 100 MHz – które mogą też dostarczać częstotliwość 32,768 kHz, co pozwala na współpracę z układami i modułami RTCC. Każde z wyjść ma wejście kontrolne, umożliwiające jego włączenie lub wyłączenie – da się zatem zaprogramować trzy wyjścia na różne częstotliwości, podłączyć do jednego wejścia zegarowego mikrokontrolera i używać wejść kontrolnych, by wybierać, która częstotliwość będzie używana. Układ 5X1503L pobiera przy tym 2 mA w czasie pracy i około 1 μA w trybie oszczędnym z wyłączonym interfejsem I²C. Jedną z ciekawych funkcji układu stanowi możliwość zapisania czterech konfiguracji dzielnika częstotliwości dla PLL w pamięci nieulotnej OTP – pozwala to na natychmiastowy start generatora, bez konieczności wstępnej konfiguracji.
Firma Maxim Integrated ma w ofercie szereg układów zegarowych. Jednym z nich jest DS1090, generator kwarcowy o częstotliwości wyjściowej programowanej pojedynczym rezystorem. Rezystor ten ustala częstotliwość oscylacji między 4 MHz a 8 MHz. Następnie ta częstotliwość jest dzielona przez 1, 2, 4, 8, 16 lub 32 – zależnie od wybranego układu – po czym do sygnału zegarowego dodawany jest dither o wybieranych przez użytkownika parametrach, dzięki czemu generowany zegar staje się celowo nieznacznie rozstrojony, co redukuje zakłócenia elektromagnetyczne emitowane przez urządzenie. Wadę układu stanowi wąski zakres napięć zasilania: 3...5,5 V. Przy napięciu 3,3 V układ pobiera typowo 1,4 mA. Ponieważ częstotliwość pracy ustalana jest rezystorem włączonym między wejście układu a masę, można rozważyć użycie większej liczby rezystorów. Dla przykładu: łącząc szeregowo rezystory 15 kΩ i 75 kΩ, a następnie bocznikując ten drugi rezystor tranzystorem, można przełączyć układ między skrajnymi częstotliwościami pracy. Ciekawsze rozwiązanie stanowi układ DS1099, który ma wewnętrzny oscylator 1,048 MHz i dwa niezależne dzielniki częstotliwości z wejściami sterującymi. Układ zasilany jest napięciem 2,7...5,5 V, pobierając w stanie spoczynku tylko 140 μA. Częstotliwość wyjściowa zależy od wartości dzielnika 2n, gdzie n ma wartość od 0 do 22. Wartości podziałów są programowane w fabryce i trzeba je określić przy składaniu zamówienia. Przy maksymalnej wybranej częstotliwości w stanie aktywnym układ pobiera 323 μA. Dodatkowo wydajność prądowa wyjść jest wystarczająca do bezpośredniego podłączenia diody LED – dlatego też minimalna dostępna częstotliwość wynosi ~0,25 Hz.
Czytelnik zapewne zorientował się już, że nawet najbardziej oszczędny układ nie jest aż tak oszczędny, jak wewnętrzny oscylator mikrokontrolera. Tylko układ firmy Renesas – w połączeniu z mikrokontrolerem PIC18LF45K50 – może zyskać kilkaset mikroamperów oszczędności dla częstotliwości od 20 MHz.
Z drugiej strony, z układem DS1099 można uzyskać częstotliwości zegarowe dużo niższe, niż pozwala na to sam mikrokontroler, co przy braku dolnego limitu zegara i zależności poboru prądu od częstotliwości taktowania może uczynić takie rozwiązanie bardziej energooszczędnym. W takich sytuacjach zarówno DS1099 firmy Maxim, jak i LTC6991 od Analog Devices mają więcej sensu. Ten drugi układ pozwala na generowanie sygnału prostokątnego o okresie od 1 ms do 9,5 godziny, więc może też pełnić funkcję watchdoga. Pobór prądu sięga od 55 do 80 μA – zależnie od wybranego okresu – ale napięcie zasilania to minimum 2,25 V. Czytelnikom, którzy mogą niechętnie patrzeć na częstotliwość taktowania do 1 kHz, pragnę przypomnieć, że wczesne komputery oraz wiele elektronicznych kalkulatorów miało podobne lub niższe częstotliwości pracy.
Jeśli tworzonym projektem jest układ realizujący funkcję zegarka (lub na potrzeby gromadzenia danych niezbędne są data i godzina), to potrzebny może okazać się układ RTCC, czyli zegar czasu rzeczywistego. Część mikrokontrolerów ma taki moduł już wbudowany, reszta wymaga zewnętrznego układu.
Rozwiązania te można podzielić na dwie kategorie: wyposażone we wbudowany oscylator – lub wymagające zewnętrznego rezonatora bądź generatora kwarcowego, zazwyczaj 32,768 kHz. Warto tu zaznaczyć, że większość rezonatorów zegarkowych jest zoptymalizowana do pracy w temperaturze zbliżonej do temperatury ludzkiego ciała, dlatego poniżej lub powyżej tej temperatury częstotliwość rezonansowa zaczyna spadać. Drugą powszechnie występującą funkcjonalnością układów zegara czasu rzeczywistego są przerwania/alarmy. Wzorcowym przedstawicielem układów RTCC jest MAX31331 firmy Analog Devices. Układ ten wymaga do pracy jedynie rezonatora kwarcowego oraz rezystorów podciągających, jako że wszystkie jego wyjścia są typu otwarty dren. Kontrolowany jest za pomocą interfejsu I²C oraz jednego dodatkowego pinu sterującego; ma też dwa wyjścia przerwań, przy czym jedno z nich może być skonfigurowane jako wyjście zegarowe. Układ pracuje z napięciem od 1,1 V do 5,5 V, ale po spadku napięcia zasilania poniżej ustawionego progu (1,55 V albo 2 V) przełącza się w tryb zasilania z baterii lub superkondensatora – w tym trybie interfejs komunikacyjny jest wyłączony, a układ pobiera typowo 65 nA przy 3 V na potrzeby podtrzymania funkcji zegara. Gdy zasilanie główne jest włączone, pobór rośnie ze względu na prąd upływu wejść i wyjść. Dodatkowo może też działać funkcja doładowania baterii niewielkim prądem przez jeden z trzech rezystorów wewnątrz układu: 3,3 kΩ, 6,4 kΩ i 11,3 kΩ. Poza standardowymi funkcjami zegara z alarmem układ ma też tryb timera z pauzą oraz możliwość zachowania dokładnej daty i godziny zdarzenia (wygenerowanego przez pin wejściowy – lub zaniku i powrotu głównego zasilania).
Jeszcze ciekawiej wygląda rodzina układów AM16x5 Artasie firmy Ambiq. Zliczają one czas od ułamków sekundy, mają też wewnętrzny oscylator RC oraz współpracują z zewnętrznym rezonatorem zegarkowym. Rozwiązanie to pozwala na automatyczną kalibrację oscylatora RC i użycie go celem zaoszczędzenia energii, podczas gdy obwód z rezonatorem kwarcowym jest używany sporadycznie (w momencie podjęcia takiej decyzji przez mikrokontroler). Napięcie zasilania mieści się w zakresie od 1,5 V do 3,6 V, pobór prądu zaś zależy od trybu pracy: z rezonatorem kwarcowym przy 3 V układ pobiera 55 nA, z oscylatorem RC – już tylko 14 nA. W trybie autokalibracji, co 512 sekund (oscylator kwarcowy jest włączany tylko na czas kalibracji) średni pobór prądu wynosi 22 nA. Przy zasilaniu z wejścia bateryjnego prądy te są o 1...2 nA wyższe. Układ wspiera też ładowanie baterii, używając wewnętrznych rezystorów o wartościach 3 kΩ, 6 kΩ i 11 kΩ. Seria AM16x5 oferuje dwa interfejsy do wyboru: I²C i SPI. W czasie przesyłania danych przez interfejs I²C układ pobiera typowo 10 μA, natomiast w przypadku interfejsu SPI jest to 8 μA przy zapisie do układu i 23 μA przy odczycie z układu. Jedną z potencjalnie przydatnych funkcji stanowi generator przebiegów prostokątnych, którego częstotliwość jest wybierana w zakresie od 32,768 kHz po nawet... jeden wiek. Oczywiście niektóre częstotliwości dostępne są tylko z aktywnym zewnętrznym rezonatorem, zaś te powiązane z rejestrami daty i godziny służą głównie do celów testowych. Niemniej jednak to wyjście może być źródłem zegara mikrokontrolera albo przerwania. Wbudowany watchdog ma 5-bitowy licznik, dekrementowany z częstotliwością ¼ Hz, 1 Hz, 4 Hz lub 16 Hz, dzięki czemu uzyskać można okres watchdoga od 62,5 ms do 128 s. Układ ma specjalne wejście resetu watchdoga, a także rozbudowany system alarmów (wliczając w to alarm dla wybranych dni tygodnia) oraz wbudowany timer. W przeciwieństwie do MAX31331 nie oferuje funkcji zachowywania daty zdarzenia – mikrokontroler musi odczytać bieżącą datę i godzinę samodzielnie oraz zapisać je do pamięci.
Trzecim, przykładowym zegarem czasu rzeczywistego jest układ PCF85263A firmy NXP Semiconductors. Pod wieloma względami podobny do AM18x5, oferuje funkcję zapamiętywania daty i godziny zdarzenia. W trakcie pracy pobiera nieco więcej prądu, bo aż 280 nA przy 3 V, ale w zamian zakres napięć zasilania sięga w jego przypadku od 0,9 V do 5,5 V. Układ może zainteresować hobbystów, gdyż oferuje łatwiejsze w użyciu obudowy SOIC i TSSOP – wcześniej wymienione układy występują w trudniejszych do lutowania obudowach QFN i WLP. W przeciwieństwie do powyżej wspomnianych układów, w tym zegarze nie ma funkcji timera – zastąpił ją stoper. Nie ma też wewnętrznego oscylatora RC ani układu doładowywania baterii. Funkcja watchdoga jest identyczna w działaniu z AM18x5. Wyjście zegarowe też występuje, ale ograniczone jest do 32,768 kHz, 16,384 kHz, 8,192 kHz, 4,096 kHz, 2,048 kHz, 1,024 kHz i 1 Hz.
Wymienione układy RTCC reprezentują jedynie niewielki wycinek bogactwa ofert różnych producentów. Nie tylko są bardzo energooszczędne, ale też oferują wiele różnorodnych, użytecznych funkcji. Osiągnięcie tak niskich poborów prądu, często sporo poniżej mikroampera, było możliwe dzięki zamierającemu już rynkowi zwykłych, elektronicznych zegarków naręcznych. Dążenie do osiągnięcia maksymalnej dokładności i minimalnego poboru prądu doprowadziło nie tylko do optymalizacji samych rezonatorów kwarcowych, ale też współpracujących z nimi dzielników i liczników. Pobór prądu przez te układy jest tak niski, że czas pracy układu RTCC ogranicza praktycznie tylko trwałość baterii i jej elektrolitu.
Wzmacniacze operacyjne kontra wzmacniacze tranzystorowe
Jeśli projektowany układ dokonuje pomiaru napięć za pomocą ADC, konieczne może okazać się wzmocnienie mierzonego sygnału, by korzystać w pełni z rozdzielczości przetwornika. Niektóre mikrokontrolery mają wbudowane wzmacniacze operacyjne, w innych przypadkach może istnieć zapotrzebowanie na zewnętrzny układ. Oba te rozwiązania generują jeden problem: zwiększony pobór prądu. Tanie, popularne wzmacniacze operacyjne pobierają wręcz miliampery, nawet w stanie spoczynku. Układy określane jako „Ultra-low power”, czyli bardzo małej mocy, rzadko potrzebują mniej niż kilkudziesięciu mikroamperów na wzmacniacz. Dodatkowo sporo układów wymaga napięcia ponad 2,5 V, podczas gdy sam mikrokontroler będzie pracować przy napięciu 1,8 V. Jeśli mamy miejsce, warto rozważyć zaprojektowanie własnego stopnia wzmacniającego, gdyż to rozwiązanie ma szansę okazać się zwyczajnie tańsze i bardziej energooszczędne.
Rozważmy więc hipotetyczną sytuację, gdy potrzebne jest wzmocnienie 10×, czyli 20 dB, pasmo przenoszenia do 20 kHz, jak najmniejszy pobór prądu oraz możliwość wyłączenia układu wzmacniacza, gdy mikrokontroler przechodzi w stan uśpienia. Wzmacniacz operacyjny powinien zatem mieć pasmo przenoszenia (GBW) powyżej 200 kHz [1] i być zoptymalizowany do zasilania pojedynczym napięciem od 1,8 V – takie cechy mają wzmacniacze rail-to-rail. Poza porównaniem kilku ofert gotowych układów sprawdzimy też rozwiązanie dyskretne w symulacji.
Na pierwszy ogień idzie oferta Microchipa i dwie rodziny układów: MCP6001/1R/1U/2/4 oraz MCP6231/1R/1U/2/4. Pierwsza rodzina oferuje pasmo przenoszenia 1 MHz, ale energooszczędność wypada dużo słabiej – układy pobierają 100 μA na każdy kanał. Rodzina MCP623x prezentuje się lepiej pod tym względem: tylko 20 μA na kanał z pasmem 300 kHz. Kolejna rodzina tego producenta, MCP6006/6R/6U/7/9, ma pasmo do 1 MHz, pobór prądu 70 μA typowo, ale szczególną cechą tych układów jest podwyższona odporność na zakłócenia elektromagnetyczne wysokiej częstotliwości. Firma STMicroelectronics oferuje szereg różnych wzmacniaczy operacyjnych, na przykład serię TS185x. Układy te oferują pasmo do 530 kHz, wysoką stabilność nawet przy dużych obciążeniach pojemnościowych, ale i spory pobór prądu – aż 120 μA. Za to układy z rodziny TSV619x mogą się poszczycić poborem bardzo niskim, ledwo 10 μA na kanał, mogą być zasilane napięciem 1,5 V, pasmo sięga 450 kHz, jednak układy nie są stabilne jako bufory. Szersze pasmo, bo do 2,4 MHz, oferuje model TSV639x – niestety pobór prądu rośnie do 60 μA, a ponadto wzmacniacz nie jest stabilny jako bufor lub układ o małym wzmocnieniu. Oferuje za to wejście wyłączające, które ogranicza pobór prądu do znakomitej wartości 5 nA. Z oferty Texas Instruments najbardziej warta uwagi jest rodzina OPAx333. Układy te to precyzyjne wzmacniacze operacyjne o bardzo niskim dryfcie, niskich wartościach napięcia niezrównoważenia, szumów własnych i poboru prądu (tylko 17 μA), ich pasmo zaś wynosi 350 kHz.
Rozwiązanie dyskretne konstrukcyjnie jest dość proste – składa się z pojedynczego tranzystora i garści innych komponentów. Proste układy tranzystorowe mają jednak dość poważną wadę: dużą zależność wzmocnienia od napięcia zasilania. Korekcja tego problemu wymaga rozbudowania układu do poziomu przypominającego schemat wewnętrzny wzmacniacza operacyjnego, co byłoby nielogiczne. Zatem – by rozwiązanie tranzystorowe miało sens – potrzebne jest stabilne źródło napięcia o możliwie niskim własnym poborze prądu. Takie warunki spełnia układ TPS7A02 firmy Texas Instruments. Pobiera on 25 nA w trakcie pracy, 3 nA, gdy układ jest wyłączony. Rysunek 1 pokazuje praktyczny schemat z układem TPS7A02175: stopień wzmacniający zasilany jest napięciem 1,75 V, wzmocnienie wynosi niemal 20 dB, a pasmo sięga do ok. 40 kHz, pobór prądu zaś wynosi 1,66 μA.
Czytelnik zauważy, że wartości rezystorów są znacznie wyższe niż zazwyczaj spotykane w takich układach. Właśnie dzięki temu ograniczono pobór prądu kosztem wyższej impedancji wyjściowej. By przy okazji poprawić impedancję wejściową, zastosowano bootstrap składający się z R3 i C2. Amplituda sygnału wejściowego jest ograniczona przez napięcie zasilania do około 80 mV p-p, na wyjściu wyniesie zatem 800 mV p-p. Przetworniki ADC mikrokontrolerów z reguły potrzebują źródła sygnału o impedancji do 10 kΩ, ale to prawda przy założeniu maksymalnej częstotliwości próbkowania – źródło musi mieć na tyle wysoką wydajność prądową, by zdążyć przeładować kondensator próbkujący o wartości kilku do kilkunastu pikofaradów. Rysunek 2 pokazuje zmodyfikowany wariant układu z dodatkowym tranzystorem. Pobór prądu rośnie do około 3,5 μA, ale amplituda sygnału wyjściowego może już osiągnąć wartość 1 Vp-p przy jednoczesnym obniżeniu impedancji wyjściowej. Pasmo przenoszenia sięga 30 kHz.
Zakończenie
Artykuł ten nie wyczerpuje listy alternatywnych układów peryferyjnych dla mikrokontrolerów, a w wymienionych kategoriach ogranicza się tylko do kilku przedstawicieli wybranych na podstawie ich parametrów. Najciekawiej wypadła kwestia wzmacniaczy operacyjnych, które pod względem poboru prądu przegrywają z prostymi układami tranzystorowymi, ale zyskują przewagę, gdy porównujemy inne parametry, takie jak pasmo przenoszenia czy niezależność wzmocnienia od napięcia pracy. W następnej części cyklu przyjrzymy się układom i modułom do komunikacji radiowej, a także zmierzymy się z problemem dużego poboru prądu w czasie nadawania/odbioru oraz poszukamy sposobu na oszczędzanie energii nawet w czasie nasłuchu.
Paweł Kowalczyk, EP
Przypisy:
[1] Popularna reguła inżynierska sugeruje obliczenie minimalnego GBW wzmacniacza operacyjnego jako iloczynu częstotliwości maksymalnej, wzmocnienia w zamkniętej pętli sprzężenia zwrotnego oraz arbitralnie przyjętego współczynnika bezpieczeństwa równego przynajmniej 50...100, w celu optymalizacji parametrów układu. W omawianym przypadku byłoby to 10...20 MHz – zastosowanie mniejszego zapasu wzmocnienia pozwala obniżyć koszty (a zwykle także pobór mocy), ale pogarsza inne parametry sygnałowe układu – przyp. red.