Termometr z pamięcią wartości skrajnych

Termometr z pamięcią wartości skrajnych

Klasyczny termometr, nawet cyfrowy, pokazuje aktualną wartość temperatury nadzorowanego obiektu. Opóźnienie w wyświetlaniu wyniku pomiaru z reguły nie przekracza kilku sekund. Ale co zrobić w sytuacji, kiedy interesuje nas dalsza przeszłość, a dokładniej: uzyskana wartość minimalna oraz maksymalna? Wtedy można sięgnąć po układ opisany w tym artykule.

Podstawowe parametry:
  • pomiar temperatury w zakresie -55…+125°C z rozdzielczością 0,1°C,
  • trzy wyświetlacze wskazujące temperatury: aktualną, minimalną i maksymalną,
  • duże, czytelne wyświetlacze 7-segmentowe LED,
  • czujnik temperatury z wyjściem cyfrowym, niewymagający kalibracji,
  • wyniki przechowywane w nieulotnej pamięci EEPROM,
  • przycisk do zerowania zapamiętanych wskazań, również z zewnętrznym wejściem,
  • zasilanie napięciem stałym 8…35 V,
  • pobór prądu do 50 mA.

Do czego może się przydać taki układ? Chociażby do nadzoru węglowego pieca centralnego ogrzewania. Zapamiętana temperatura maksymalna wskaże użytkownikowi, czy woda w instalacji nie zbliża się do temperatury grożącej zagotowaniem - może czas palić nieco oszczędniej? Z kolei temperatura minimalna będzie dobrym sygnałem, czy spaliny przekraczają tak zwany punkt rosy, czyli temperatury, poniżej której woda ze spalin skrapla się wewnątrz komina, przyspieszając jego korozję. Zaś temperatura aktualna przyda się do śledzenia bieżącej sytuacji.

Nie tylko piece mogą być nadzorowane w taki sposób. Również temperatura w pomieszczeniach biurowych (czy nad ranem nie wychładzają się za bardzo?) lub w szklarniach z warzywami - możliwości jest całe mnóstwo! Układ został tak zaprojektowany, że jego obsługa sprowadza się do wciśnięcia zaledwie jednego przycisku. A nawet i to nie zawsze jest konieczne. Wystarczy prawidłowo podłączyć zasilanie, reszta wydarzy się automatycznie.

Budowa i działanie

Schemat ideowy omawianego układu znajduje się na rysunku 1. Najistotniejszym elementem jest układ ATmega8A-PU. Ten mikrokontroler można znaleźć w wielu projektach opublikowanych na łamach "Elektroniki Praktycznej", jego popularność nie słabnie mimo upływu lat. Liczba jego wyprowadzeń (możliwych do programowego skonfigurowania) oraz ilość pamięci są całkowicie wystarczające do realizacji tego zadania. Kondensatory C1…C3 filtrują napięcie zasilające mikrokontroler i zmniejszają tętnienia napięcia obsługującego go źródła zasilania. Nie zastosowano zewnętrznego rezonatora kwarcowego do stabilizacji częstotliwości sygnału zegarowego, gdyż układ niemal w ogóle nie realizuje zadań krytycznych czasowo - ponadto liczba wyprowadzeń okazałaby się zbyt mała. Wewnętrzny oscylator RC wytwarzający sygnał zegarowy o częstotliwości 8 MHz jest całkowicie wystarczający. Za pomocą złącza J1 można go zaprogramować w systemie, nie trzeba wyjmować tego układu z płytki drukowanej.

Rysunek 1. Schemat ideowy układu termometru

Aktualny wynik pomiaru jest pokazywany przy użyciu wyświetlacza LED2. Zapamiętaną wartość maksymalną można zobaczyć na LED1, natomiast minimalną na LED3. Każdy z tych wyświetlaczy ma po cztery cyfry, aby można było pokazywać na nich temperaturę z rozdzielczością 0,1°C i ewentualnym znakiem "-" dla temperatury niższej od 0°C. Wspólne anody każdej z cyfr (a jest ich dwanaście!) są załączane przez tranzystory bipolarne PNP, które pojedynczo wchodzą w stan nasycenia. Prąd segmentów cyfr oraz kropek ograniczają rezystory 330 Ω, przez co ich jasność jest dostatecznie wysoka, zaś pobór prądu na tyle niski, że można je zasilać wprost z wyjść mikrokontrolera.

Cyfrowy czujnik temperatury typu DS18B20 należy podłączyć do zacisków złącza J3. Napięcie zasilające ten czujnik jest filtrowane przez prosty filtr RC składający się z rezystora R24 i kondensatorów C4 oraz C5, co poprawia stabilność działania tego czujnika. Dla ochrony wejścia mikrokontrolera przez zniszczeniem, do którego mogłyby doprowadzić indukujące się w przewodzie zakłócenia oraz wyładowania elektrostatyczne, zostały dodane diody ograniczające napięcie do zakresu -0,7…+5,7 V. Rezystor R25 ogranicza prąd tych diod. Z kolei rezystor R27 ogranicza prąd diod zabezpieczających wbudowanych w mikrokontroler, gdyż ich napięcie przewodzenia może okazać się nieco niższe. Rezystor R26 jest wymagany do prawidłowego działania magistrali komunikującej się z czujnikiem, ponieważ podciąga ją do potencjału +5 V. Jednocześnie wartości R25 i R27 zostały tak dobrane, że wprowadzane przez nie spadki napięcia i wydłużenie czasu trwania zbocza opadającego nie mają wpływu na działanie magistrali.

Wyczyszczenie zapamiętanych wartości jest możliwe po skasowaniu zawartości pamięci EEPROM mikrokontrolera lub - zdecydowanie prościej - po wciśnięciu przycisku S1. Gdyby ktoś chciał podłączyć inny przycisk zwierny, może to bez obaw zrobić, używając do tego zacisków złącza J2. Rezystor R22 wymusza wysoki stan logiczny na wejściu mikrokontrolera, zaś R23 ogranicza prąd diod zabezpieczających wbudowanych w US1, gdyby w przewodach połączeniowych pojawiło się napięcie wyższe od zasilającego ten układ. Warto zauważyć, że ta bardzo prosta sztuczka nie mogła zostać użyta do zabezpieczenia magistrali 1-Wire, ponieważ w niej niski stan logiczny na linii wymusza zarówno czujnik, jak i mikrokontroler. Użycie rezystora o tak znacznej wartości spowodowałoby, że logiczne "0" wymuszane przez mikrokontroler na wejściu czujnika temperatury byłoby przez niego interpretowane nieprawidłowo - byłoby to około 50% napięcia zasilającego.

Napięcie zasilające układ podłącza się do zacisków złącza J4. Dioda D3 odcina zasilanie w przypadku pomylenia polaryzacji przy podłączaniu owego napięcia. Stabilizator liniowy typu 7805 dostarcza napięcia 5 V dla układów cyfrowych: mikrokontrolera i czujnika temperatury.

Montaż i uruchomienie

Układ został zmontowany na dwustronnej płytce drukowanej o wymiarach 140×60 mm. Jej schemat został pokazany na rysunku 2.

Rysunek 2. Schemat montażowy i wzór ścieżek płytki

W odległości 3 mm od krawędzi płytki znalazły się cztery otwory montażowe, każdy o średnicy 3,2 mm. Aby wykonanie obudowy było łatwiejsze, rysunek 3 prezentuje położenie przycisku zerującego oraz trzech wyświetlaczy na powierzchni laminatu.

Rysunek 3. Rozmieszczenie wyświetlaczy i przycisku na powierzchni płytki

Montaż proponuję rozpocząć od elementów o najmniejszej wysokości obudowy, czyli rezystorów i diod na wierzchniej stronie płytki. Potem można wlutować podstawkę pod mikrokontroler US1, której zastosowanie szczerze polecam z uwagi na łatwość wymiany mikrokontrolera w razie jego uszkodzenia.

Potem można wlutować wyświetlacze LED i tranzystory, na końcu zaś przycisk S1. Na tym etapie montażu płytka będzie wyglądała podobnie, jak na fotografii tytułowej. Na drugiej (spodniej) stronie płytki jest miejsce dla elementów o wyższych obudowach: kondensatorów MKT, kondensatorów elektrolitycznych, złączy J1…J4 i stabilizatora US2. Te podzespoły, osadzone w odpowiednich miejscach, pokazuje fotografia 1.

Fotografia 1. Wygląd zmontowanego układu od strony spodniej (Bottom)

Na etapie uruchamiania konieczne jest zaprogramowanie pamięci Flash mikrokontrolera dostarczonym wsadem oraz zmiana jego bitów zabezpieczających na takie wartości:

Low Fuse = 0x24
High Fuse = 0xD9

Szczegóły są widoczne na rysunku 4, który pokazuje okno konfiguracji tych bitów w programie BitBurner. W ten sposób zostanie uruchomiony wewnętrzny generator RC o częstotliwości oscylacji 8 MHz oraz Brown-Out Detector, który wprowadzi mikrokontroler w stan zerowania, jeżeli jego napięcie zasilające spadnie poniżej 4 V. To znacznie zmniejsza ryzyko zawieszenia się mikrokontrolera podczas uruchamiania.

Rysunek 4. Szczegóły ustawienia bitów zabezpieczających

Poprawnie zaprogramowany układ jest gotowy do działania po podłączeniu cyfrowego czujnika temperatury typu DS128B20, zgodnie z opisami na płytce, do zacisków złącza J3. Może to być gotowy moduł: z podwójnie izolowanymi przewodami, z samym czujnikiem hermetycznie zaciśniętym w metalowej rurce.

Napięcie zasilające układ może zawierać się w przedziale 8…35 V. Zarówno dolna, jak i górna granica tego przedziału wynikają z konieczności zapewnienia prawidłowych warunków pracy stabilizatora typu 7805. Pobór prądu przez układ może wynosić nie więcej niż 50 mA i jest zależna od treści przedstawianych na wyświetlaczach. Z tego względu nie jest konieczne stosowanie radiatora na stabilizator, o ile napięcie zasilania nie przekracza około 15 V - dla wyższej wartości proponuję przykręcić do stabilizatora niewielki element odprowadzający ciepło.

W układzie prototypowym zastosowano trzy wyświetlacze LED o różnych barwach świecenia: czerwony dla temperatury maksymalnej, niebieski dla minimalnej i zielony dla aktualnej. W czasie testów okazało się, że wyświetlacz z zielonymi diodami LED (o symbolu LED-AF5643FG) świeci zdecydowanie ciemniej od pozostałych dwóch, mimo że pochodzi od tego samego producenta i ma zapewniony taki sam prąd segmentów. Nic nie stoi na przeszkodzie, by bez jakichkolwiek modyfikacji w układzie zastosować inne kolory lub wręcz wlutować trzy identyczne wyświetlacze. W ofercie AVT można znaleźć jeszcze LED-AF5643FY - świecący na żółto.

Eksploatacja

Po włączeniu zasilania układ podejmuje dwukrotną próbę komunikacji z czujnikiem. W tym czasie wyświetlacze wyglądają jak na fotografii 2. Jeżeli wszystko działa prawidłowo, po około czterech sekundach termometr przechodzi do normalnej pracy. Jaki jest tego sens? Każdy odczyt temperatury musi być prawidłowy, ponieważ nawet pojedyncze sporadyczne błędy mogą zostać zarejestrowane i uwiecznione na wyświetlaczu MIN lub MAX. Niekiedy pierwszy odczyt temperatury z DS18B20 po włączeniu zasilania nie uaktualnia jego wewnętrznych rejestrów, pomimo wcześniejszego wymuszenia konwersji. W takiej sytuacji temperatura, którą pokazałby układ, wynosiłaby 85°C, bo taka jest domyślna zawartość rejestrów układu DS18B20. Bardzo prawdopodobne, że taka wartość wychodziłaby znacząco poza obsługiwany zakres, więc stanowiłaby niepotrzebne zaburzenie w wynikach dotychczasowych pomiarów. Te kreski będą pokazywane tak długo, aż nie nastąpią dwa poprawne odczyty temperatury.

Fotografia 2. Wygląd wyświetlacza po załączeniu zasilania

Kiedy ta sztuka już się uda, układ odczytuje wewnętrzną pamięć EEPROM i podejmuje decyzję: albo zapisane w niej wartości są sensowne (czyli mieszczące się w przedziale -55…+125°C), albo którakolwiek z nich nie ma racji bytu. W pierwszej sytuacji układ wyświetla na LED1 i LED3 to, co wcześniej zapisał, a w przeciwnej przyjmuje, że temperatura minimalna = temperatura maksymalna = temperatura aktualna. Dopiero od tych wartości "startowych" temperatura maksymalna będzie zwiększana, a minimalna zmniejszana. To dosyć logiczne działanie, w przeciwieństwie do ustawienia dwóch stałych wartości, na przykład 0,0°C. Przecież na piecu centralnego ogrzewania lub w pomieszczeniu mieszkalnym taka temperatura minimalna nigdy nie zostanie zarejestrowana, więc ta wartość nigdy się nie zaktualizuje, stałoby się to dopiero po zarejestrowaniu temperatury ujemnej. Widok wyświetlaczy pokazuje fotografia 3. Zapis do EEPROM następuje zaraz po każdej zmianie wyświetlanej temperatury maksymalnej bądź minimalnej.

Fotografia 3. Wygląd wyświetlacza podczas pracy

Jak wcześniej wspomniano, dane z czujnika DS18B20 traktowane są w tym układzie bardzo rygorystycznie. Z uwagi na cyklicznie występujące przerwania (z częstotliwością 1 kHz), których zadaniem jest odświeżanie zawartości wyświetlaczy, niekiedy w tę delikatną wymianę bitów wkradają się błędy. Został więc wdrożony mechanizm weryfikacji sumy kontrolnej (CRC), który odrzuca każdy wynik pomiaru, dla którego obliczona suma kontrolna jest niezgodna z odebraną. Pojedyncze błędy nie są raportowane - po prostu wynik pomiaru zostanie zaktualizowany sekundę lub dwie później. Gdyby jednak zdarzyły się przynajmniej cztery takie nieprawidłowości z rzędu, w miejscu temperatury aktualnej pojawi się informacja o błędzie - fotografia 4.

Fotografia 4. Wygląd wyświetlacza z komunikatem błędu czujnika

Przywrócenie poprawności działania czujnika temperatury automatycznie przywraca wskazania aktualnej temperatury.

Przycisk S1 służy do wyzerowania wskazań wyświetlaczy MIN i MAX, lecz nie jest to wyzerowanie w dosłownym rozumieniu tego zwrotu. Podobnie jak w przypadku niepoprawnego odczytu z EEPROM, temperatura maksymalna oraz minimalna zostaną zrównane z aktualną. Wymagana jest do tego prawidłowa praca czujnika, więc na środkowym wyświetlaczu nie może być napisu Err. Wystarczy krótkotrwałe zwarcie styków S1 lub zacisków złącza J2, by wyczyścić pamięć - również tę nieulotną.

Michał Kurzela, EP

Wykaz elementów:
Rezystory: (THT o mocy 0,25 W)
  • R1…R12, R21…R23, R26: 2,2 kΩ
  • R13…R20: 100 Ω
  • R24, R25, R27: 100 Ω
Kondensatory:
  • C1, C2, C4, C7, C8: 100 nF raster 5 mm MKT
  • C3, C5, C9: 100 μF 16 V raster 2,5 mm
  • C6: 22 μF 50 V raster 2,5 mm
Półprzewodniki:
  • D1, D2: 1N4148
  • D3: 1N5819
  • LED1: LED-AF5643FS
  • LED2: LED-AF5643FG
  • LED3: LED-AF5643FB
  • T1…T12: BC556
  • US1: ATmega8A-PU (DIP28)
  • US2: 7805 (TO220)
  • Czujnik temperatury DS18B20
Pozostałe:
  • J1: goldpin 5 pin męski 2,54 mm THT
  • J2, J4: ARK2/500
  • J3: ARK3/500
  • S1: microswitch 6×6 13,5 mm
  • Jedna podstawka DIP28 wąska
Artykuł ukazał się w
Elektronika Praktyczna
grudzień 2023
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik czerwiec 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje maj 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna czerwiec 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich czerwiec 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów