- pomiar temperatury w zakresie –55°C…+125°C,
- rozdzielczość pomiaru 0,1°C,
- możliwość kalibracji wskazań w zakresie –3,2°C… +3,2°C,
- wyświetlacz LCD 7-segmentowy,
- sygnalizacja błędu komunikacji z czujnikiem cyfrowym,
- napięcie zasilania 3 V (z baterii CR2032 lub złącza),
- średni pobór prądu 100 μA.
Elektroniczne przyrządy mierzące temperaturę są znane od dawna i mają różnorodne zastosowania. Znalazły swoje miejsce w przemyśle i laboratoriach, ale nie tylko, bowiem możemy je spotkać również w kuchni, domowych stacjach pogodowych oraz zabawkach. Wiele z nich została zaprojektowana z myślą o niskim poborze energii, aby dało się je zasilać z niewielkiej baterii.
Jednak bardzo często zdarzają się sytuacje, kiedy wskazania takiego termometru nie do końca odpowiadają rzeczywistości. Przyczyn może być wiele, a dwie najpowszechniejsze to błąd wprowadzany przez sam czujnik temperatury oraz jego niedoskonały kontakt z powierzchnią, której temperaturę ma mierzyć. Przeważnie nic nie możemy z tym zrobić, ponieważ w układzie nie przewidziano możliwości skorygowania wskazywanych wartości.
Zaprezentowany układ ma niespotykaną funkcję – pozwala dodać do wyniku poprawkę, zawierającą się w zakresie –3,2°C do +3,2°C. Tyle zazwyczaj wystarcza, aby skorygować wskazania przyrządu, które nieznacznie mijają się z rzeczywistością. Co ważne, wprowadzenie tej poprawki odbywa się w bardzo łatwy sposób – poprzez przekręcenie osi potencjometru montażowego. Nie ma tu żadnego rozbudowanego menu ani przycisków, wystarczy mały wkrętak i kilka chwil.
Budowa i działanie
Schemat ideowy energooszczędnego termometru został pokazany na rysunku 1. Jego pracą zarządza popularny mikrokontroler typu ATtiny44A, taktowany wewnętrznym sygnałem zegarowym o częstotliwości 8 MHz. Do jego zaprogramowania może służyć złącze J2, do którego zostały doprowadzone wszystkie linie służące realizacji programowania w systemie (In-System Programming). Ponieważ układ nie używa ich w czasie normalnej pracy, są podciągnięte do dodatniego bieguna zasilania przy użyciu zewnętrznych rezystorów.
Kalibracja wskazań odbywa się cyfrowo, poprzez dodanie odpowiedniej wartości do wyniku, lecz jej wartość jest odczytywana przez przetwornik analogowo-cyfrowy. Do ustalenia wartości służy potencjometr P1, który przez większość czasu pozostaje odłączony od zasilania, aby nie marnował energii elektrycznej. Przed rozpoczęciem pomiaru przez mikrokontroler, najpierw dołączane jest zasilanie do ścieżki oporowej potencjometru. Po ustaleniu się potencjałów mierzone jest napięcie wyznaczone położeniem ślizgacza potencjometru.
Czujnikiem temperatury w tym układzie jest dobrze znany układ DS18B20. Nie został ujęty wprost na schemacie, bowiem podłącza się go do zacisków złącza J3. Dioda D1 obcina amplitudę przepięć, które mogłyby się zaindukować w długich przewodach połączeniowych. Rezystor R6 ogranicza prąd płynący przez D1, zaś R7 dodatkowo zmniejsza prąd diod zabezpieczających wbudowanych w strukturę mikrokontrolera. Taka dwustopniowa ochrona daje wysoką skuteczność eliminacji zakłóceń. Rezystor R8 podciąga magistralę 1Wire do dodatniego potencjału, lecz i to można wyłączyć w przerwach pomiędzy pomiarami – wystarczy obniżyć jego napięcie zasilania do zera.
Zadaniem R5, C5 i C6 jest odsprzęganie zasilania dla czujnika, a ponadto R5 pełni rolę bezpiecznika. Przegrzeje się i spali po przypadkowym zwarciu między skrajnymi wyprowadzeniami złącza J3, co ochroni źródło zasilania (np. baterię) przed przegrzaniem i uszkodzeniem.
Wyświetlacz nie ma wbudowanego kontrolera, zatem każdym jego wyprowadzeniem trzeba sterować oddzielnie. Służą do tego cztery rejestry typu 74HC595 podłączone kaskadowo. Mikrokontroler przygotowuje 32-bitową sekwencję, która jest do nich wysyłana za każdym razem, kiedy zachodzi potrzeba aktualizacji zawartości wyświetlacza. Są zasilane przez cały czas, gdyż ich pobór prądu w stanie ustalonym jest znikomo mały, rzędu 1 μA lub mniej.
Źródłem zasilania dla tego układu może być bateria typu CR2032, której gniazdo znajduje się na tylnej stronie płytki, albo zewnętrzny zasilacz napięcia stałego o wartości 3 V, podłączany do zacisków złącza J1. Pobór prądu przez układ jest naprawdę niewielki, więc bez problemu da się go zasilić prądem pobranym z niemal dowolnego źródła. Co istotne, wartość tego napięcia nie powinna wyraźnie spadać poniżej tej wartości, ponieważ grozi to brakiem poprawnego działania czujnika temperatury. Producent (Maxim Integrated) deklaruje jego poprawną pracę od napięcia 3 V, co udowadnia rysunek 2.
Górna granica napięcia zasilania również wynosi około 3 V, gdyż tyle przewidział producent wyświetlacza LCD, który został użyty w tym projekcie, jako typową wartość. Dlatego znaczne zwiększenie napięcia zasilającego ten termometr również jest niewskazane, gdyż może wpłynąć negatywnie na trwałość tego istotnego elementu. Dlatego użycie świeżej baterii albo zasilacza o napięciu wyjściowym 3,3 V będzie dobrym rozwiązaniem.
Mikrokontroler przez większość czasu pozostaje w stanie uśpienia. Do działania wybudza go wbudowany układ Watchdog, który generuje przerwania co ok. 32 ms. Za każdym razem dochodzi do aktualizacji zawartości rejestrów, aby segmenty wyświetlacza nie uległy elektrolizie wskutek wystąpienia składowej stałej między nimi a elektrodą wspólną. Co określoną liczbę takich wybudzeń następuje pomiar i aktualizacja zawartości ekranu.
Montaż i uruchomienie
Układ został zmontowany na niewielkiej, dwustronnej płytce drukowanej o wymiarach 45×40 mm. Jej schemat wraz z rozmieszczeniem elementów został pokazany na rysunku 3. W odległości 3 mm od krawędzi płytki znalazły się otwory montażowe, każdy o średnicy 3,2 mm.
Montaż zalecam rozpocząć od elementów lutowanych powierzchniowo, które znajdują się tylko na wierzchniej stronie płytki. Po przylutowaniu wszystkich zalecam szczegółowo skontrolować wszystkie luty, ponieważ część z nich zostanie zakryta przez wyświetlacz, więc ich poprawienie będzie bardzo utrudnione, wręcz niemożliwe.
W drugim etapie montażu należy wlutować elementy lutowane w sposób przewlekany, które znajdują się na tylnej stronie płytki. Należą do nich:
- złącza J1, J2 i J3,
- gniazdo baterii B1,
- potencjometr P1.
Płytkę z tymi elementami można zobaczyć na fotografii 1. Wierzchnia strona płytki jest widoczna na fotografii tytułowej.
Jako ostatni należy wlutować wyświetlacz LCD1. Został wykonany z cienkiego szkła i nie posiada żadnej ramki ani obudowy – jest kruchy, a przez to podatny na uszkodzenia. Kierunek prawidłowego montażu wskazuje kropla szkła spajająca jego strukturę z boku oraz występ z lewej strony obrysu na płytce. Cienkie, blaszane wyprowadzenia należy delikatnie dogiąć palcami, o ile zachodzi taka konieczność, a potem włożyć w przeznaczone dla niego miejsce (nad układami US2…US5 i kondensatorem C3) i przylutować z drugiej strony. Znajdujące się pod nim układy scalone wydzielają znikome ilości ciepła, więc może się z nimi stykać – nie ma potrzeby zapewniania wentylacji.
Po zakończeniu montażu, należy ustawić konfigurację bitów zabezpieczających (fuse bits) mikrokontrolera ATtiny44A na następujące wartości:
- Low Fuse = 0xE2
- High Fuse = 0xDE
Spowoduje to wyłączenie preskalera sygnału zegarowego oraz ustawienie zabezpieczenia Brown-Out Detector na napięcie 1,8 V. Rdzeń układu będzie od tej chwili taktowany z częstotliwością 8 MHz, a uaktywnione zabezpieczenie zapobiegnie jego nieprawidłowemu działaniu w momencie włączania zasilania. Szczegóły tej konfiguracji zostały pokazane na rysunku 4, zawierającym zrzut okna programu BitBurner. Oprócz bitów zabezpieczających, również pamięć Flash musi zostać zaprogramowana. Można posłużyć się do tego celu gotowym plikiem źródłowym w formacie hex.
Jeżeli mikrokontroler przeszedł konfigurację bez problemów, trzeba podłączyć czujnik temperatury do zacisków złącza J3. Może to być układ fabrycznie zaprasowany w metalowej tulejce, razem ze szczelnie dołączonym przewodem. Do testów układu prototypowego został użyty DS18B20 MOD-1, który ma przewód o długości 1 m. Można posłużyć się również innymi, dłuższymi przewodami – istotne, aby zrealizowane w ten sposób połączenie spełniało standardy narzucane przez magistralę 1Wire. Jeszcze lepiej, aby długie połączenie było ekranowane, choć nie zawsze jest to możliwe do zrealizowania. Szczegóły podłączenia pokazuje fotografia 2.
Kolory przewodów mają następujące znaczenie:
- czerwony – zasilanie (VCC),
- żółty – linia danych 1Wire (DQ),
- czarny – masa (GND).
Eksploatacja
Prawidłowo zmontowany i zaprogramowany układ jest gotowy do działania. Po dołączeniu zasilania (o wartości 3 V) do zacisków złącza J1 lub włożeniu baterii CR2032 do koszyka, zaczyna pracę od wskazania „0.0”. Po niecałej sekundzie, zawartość wyświetlacza ulega aktualizacji. Widok ekranu w czasie prawidłowej pracy można wygląda jak na fotografii 3.
Temperatura jest wyświetlana w stopniach Celsjusza, z rozdzielczością jednej cyfry po przecinku. Zbędne zera (setek lub dziesiątek) są wygaszane. Temperaturę ujemną układ sygnalizuje poprzez wyświetlenie minusa. Pomiar temperatury następuje co około 3 s. Błąd komunikacji z czujnikiem (zwarcie linii sygnałowej do masy) można rozpoznać po wyświetleniu napisu „Err” (fotografia 4).
Ostatnim etapem jest skalibrowanie wskazań termometru. Służy do tego potencjometr P1. Ustala się nim wartość poprawki, dodawanej do każdego wyniku pomiaru. Przekręcenie jego ślizgacza w stronę MIN powoduje zaniżanie wskazania o maksymalnie 3,2°C. Przekręcenie w stronę MAX powoduje zwiększenie wskazania o maksymalnie 3,2°C. W położeniu środkowym, wskazanie nie jest zmieniane. Szczegóły zostały pokazane na rysunku 5. Rozdzielczość ustawiania poprawki wynosi 0,1°C i jest ona aktualizowana razem z odczytem temperatury z DS18B20 – czyli co około 3 s. Dlatego należy chwilę odczekać po przekręceniu ślizgacza potencjometru, aby wynik uległ aktualizacji.
Zakres mierzonych temperatur jest ograniczony przez użyty czujnik i wynosi od –55°C do +125°C. Z kolei temperatura pracy układu powinna znajdować się w węższym zakresie (–20°C… +70°C) i jest zdeterminowana przez wyświetlacz LCD1. Jeszcze bardziej restrykcyjnie należy podejść do zagadnienia, jeżeli w grę wchodzi zasilanie z baterii. Wiele ogniw dostępnych na rynku działa nieprawidłowo w temperaturze niższej od 0°C, więc warto zwrócić na to uwagę.
Średni pobór prądu przez układ to około 100 μA przy zasilaniu napięciem 3 V. Średni, bowiem nie jest on stały: w momencie trwania konwersji przez czujnik zapotrzebowanie na prąd jest większe. Kiedy układ jedynie obsługuje wyświetlacz, pobór prądu wynosi niecałe 40 μA. Przyjmując pojemność typowej baterii CR2032 na poziomie 200 mAh, powinna ona wystarczyć na prawie 3 miesiące pracy.
Michał Kurzela, EP
- R1…R4, R8: 3,3 kΩ SMD0805
- R5…R7: 47 Ω SMD0805
- P1: 100 kΩ montażowy leżący
- C1, C3, C5: 100 nF SMD0805
- C2, C6: 10 μF 16 V SMD0805
- D1: BAT54S (SOT23)
- US1: Attiny44A-SSU (SO14)
- US2…US5: 74HC595 (SO16)
- B1: gniazdo baterii CR2032 THT leżące
- J1: ARK2/500
- J2: goldpin 5 pinów, męski, 2,54 mm THT
- J3: ARK3/500
- LCD1: DE 117-RS-20/7,5/V
- Układ DS18B20