- pomiar temperatury w zakresie -55…+125°C z rozdzielczością 0,1°C,
- dwie wartości temperatur granicznych, z zakresu -50...+120°C, ustawianych z rozdzielczością 0,1°C,
- czujnik temperatury z wyjściem cyfrowym, niewymagający kalibracji,
- nastawy przechowywane w nieulotnej pamięci EEPROM,
- dwa tryby działania: grzanie lub chłodzenie, przełączające się samoczynnie w zależności od nastaw,
- alfanumeryczny wyświetlacz LCD o organizacji 2×16 znaków,
- zasilanie napięciem stałym 12 V (lub 24 V po modyfikacji),
- pobór prądu: do 50 mA przy zasilaniu napięciem 12 V.
Nastawy przykładowego termostatu: temperatura średnia 45,5°C, histereza 3,4°C. Konia z rzędem temu, kto - nie będąc wtajemniczonym - bez trudu wskaże, przy jakiej temperaturze grzałka się wyłączy, a przy jakiej znowu załączy. Albo: jakie wartości zadać, jeżeli grzałka miałaby się wyłączać po osiągnięciu przez sterowany obiekt temperatury 49°C? Sprawa nieco pogmatwana, więc zrealizujmy to w łatwiejszy i bardziej intuicyjny sposób. W zaprezentowanym układzie zadajemy wprost, bez żadnych komplikacji, temperaturę załączenia przekaźnika oraz temperaturę jego wyłączenia. Ale to nie wszystko, bowiem na podstawie naszych nastaw układ sam rozszyfruje, czy będzie miał do czynienia z obiektem chłodzonym (czyli takim, którego temperatura będzie samoczynnie wzrastała) czy też z ogrzewanym, który ma naturalną tendencje do stygnięcia. Wszystko odbywa się w bardzo prosty sposób, przy użyciu czterech przycisków.
Budowa i działanie
Schemat ideowy omawianego układu znajduje się na rysunku 1.
Najistotniejszym elementem jest układ Atmega8A-PU. To mikrokontroler z nadal popularnej i niezawodnej rodziny AVR, mimo iż jest ona dostępna na rynku już od wielu lat. Liczba jego konfigurowalnych wyprowadzeń oraz ilość pamięci są całkowicie wystarczające do realizacji tego zadania. Kondensatory C1…C3 filtrują napięcie zasilające mikrokontroler i zmniejszają impedancję 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. Za jedyną taką czynność można uznać komunikację z cyfrowym czujnikiem temperatury, ponieważ magistrala 1-Wire prowadzi komunikację transmitując impulsy o zadanym czasie trwania, choć i tu są dopuszczalne pewne odchylenia.
Do obsługi urządzenia, a dokładniej zadawania nastaw, służą cztery przyciski monostabilne S1…S4. Dwa przyciski, S1 i S2, są podłączone do mikrokontrolera z użyciem zewnętrznych rezystorów podciągających, R1 i R2. Zmniejsza to wrażliwość układu za zakłócenia. Dwa pozostałe przyciski zostały podłączone do linii służących programowaniu ISP, które to linie są podciągnięte do potencjału +5 V za pośrednictwem rezystorów z drabinki rezystorowej RN1. Ich zadanie jest takie samo, jak rezystorów R1 i R2, ponadto odprowadzają ładunki elektrostatyczne z wyprowadzeń złącza J1. Programowanie mikrokontrolera może odbywać się zarówno po włożeniu układu programowalnego w podstawkę programatora, jak i za pośrednictwem wspomnianego złącza J1.
Cyfrowy czujnik temperatury typu DS18B20 należy podłączyć do zacisków złącza J2. Napięcie zasilające ten czujnik jest filtrowane przez prosty filtr RC składający się z rezystora R4 i kondensatorów C4 oraz C5, co poprawia stabilność działania tego czujnika. Dla ochrony wejścia mikrokontrolera przed zniszczeniem, do którego mogłyby doprowadzić indukujące się w przewodzie zakłócenia, zostały dodane diody ograniczające napięcie do zakresu -0,7…+5,7 V. Rezystor R3 ogranicza prąd tych diod. Z kolei rezystor R6 ogranicza prąd diod zabezpieczających wbudowanych w mikrokontroler, gdyż ich napięcie przewodzenia jest nieco niższe niż użytych 1N4148. Rezystor R5 jest wymagany do prawidłowego działania magistrali komunikującej się z czujnikiem. Jednocześnie, wartości R3 i R6 zostały tak dobrane, że wprowadzane przez nie spadki napięcia (i spowodowane tym przesunięcie się poziomu napięcia logicznej wartości „0”) nie mają negatywnego wpływu na działanie układu.
Napięcie zasilające układ podłącza się do zacisków złącza J3. Dioda D1 odcina zasilanie w przypadku pomylenia polaryzacji owego napięcia. Stabilizator liniowy typu 7805 dostarcza napięcia 5 V dla układów cyfrowych. Moc strat na nim, przy zasilaniu układu napięciem 12 V, jest na tyle niska, że nie ma potrzeby stosowania przetwornicy impulsowej - jego metalowa wkładka wystarcza do odprowadzania ciepła.
Użytkownik widzi informacje podawane przez układ na wyświetlaczu LCD1, który zawiera sterownik typu HD44780 lub zgodny z nim. Ma dwa wiersze po szesnaście znaków w każdym. Potencjometrem P1 ustawia się kontrast owego wyświetlacza. Rezystor R7 pozwala na zasilanie jego podświetlenia z niestabilizowanego napięcia wejściowego, nie obciążając tym samym stabilizatora US2.
Zasilanie dla sterowanego przez układ urządzenia (chłodziarki lub grzałki) powinno być poprowadzone przez złącze J4, do którego są doprowadzone wyprowadzenia styków normalnie otwartych (NO) przekaźnika PK1. Rezystor R8 i kondensator C10 tworzą prosty układ pochłaniający energię wydzielaną w momencie łączenia i rozłączania styków przekaźnika, kiedy dochodzi do ich iskrzenia. Zmniejsza to ryzyko wystąpienia błędu w funkcjonowaniu układu, ponieważ zmniejszeniu ulega emisja zakłóceń elektromagnetycznych. Dioda LED1 sygnalizuje załączenie cewki przekaźnika, rezystor R11 ogranicza jej prąd.
Montaż i uruchomienie
Układ został zmontowany na dwustronnej płytce drukowanej o wymiarach 120×90 mm. Jej schemat został pokazany na rysunku 2.
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. Dodatkowo, aby płytka mogła tkwić stabilnie w obudowie, w pobliżu diody LED1 dodano dodatkowe dwa otwory. Rysunek 3 pokazuje lokalizację dwóch dodatkowych otworów montażowych na płytce.
Montaż proponuję rozpocząć od elementów o najmniejszej wysokości obudowy, czyli rezystorów i diod. Pod mikrokontroler proponuję zastosować podstawkę. Stabilizator US1 można położyć na powierzchni laminatu. Ten etap montażu można zobaczyć na fotografii 1.
Na drugiej stronie płytki jest miejsce dla wyświetlacza LCD1, czterech przycisków S1…S4 i diody LED1. Ich lokalizację po przylutowaniu pokazuje fotografia tytułowa. Pod koniec montażu, po wlutowaniu diody LED1 i przycisków, należy przykręcić wyświetlacz LCD przy pomocy czterech tulei dystansowych oraz przylutować jego złącza. Warto lutowanie zostawić na sam koniec, po dokładnym przykręceniu, aby ewentualny naddatek wysokości tulei mógł być skompensowany przez lekkie wystawanie złącz z powierzchni płytki. W ten sposób część męska i żeńska wchodzą w siebie całkowicie, co zapewnia dobry kontakt elektryczny między nimi. Rozmieszczenie przycisków, diody LED i wyświetlacza na powierzchni płytki znajduje się na rysunku 4, dzięki niemu łatwiejsze będzie wykonanie obudowy dla tego urządzenia.
Na etapie uruchamiania jest konieczne zaprogramowanie pamięci Flash mikrokontrolera dostarczonym wsadem oraz zmiana jego bitów zabezpieczających. Oto ich nowe wartości:
Low Fuse = 0x24
High Fuse = 0xD9
Szczegóły są widoczne na rysunku 5, który zawiera okno konfiguracji bitów z programu 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 nieprawidłowego uruchomienia się mikrokontrolera.
Poprawnie zaprogramowany układ jest gotowy do działania po ustawieniu kontrastu wyświetlacza potencjometrem P1. Do zasilania powinno służyć napięcie stałe o wartości około 12 V, a dokładniej z przedziału 10…16 V. Takie granice uwzględniają zakres prawidłowej pracy przekaźnika (z uwzględnieniem spadku napięcia na diodzie D3 i tranzystorze T1) w temperaturze 20°C. Warto, aby owe napięcie było dobrze filtrowane, a najlepiej stabilizowane. Pobór prądu przy 12 V wynosi około 15 mA przy wyłączonym przekaźniku oraz około 50 mA, kiedy cewka zostanie załączona. Do zacisków złącza J2 należy podłączyć czujnik typu DS128B20, zgodnie z opisami na płytce. Może to być gotowy moduł: z podwójnie izolowanymi przewodami, z samym czujnikiem hermetycznie zaciśniętym w metalowej rurce.
Zaciski złącza J4 należy potraktować jak styki przełącznika mechanicznego, który odłącza zasilanie od sterowanego urządzenia grzewczego lub chłodniczego. Z uwagi na szerokość ścieżek na powierzchni laminatu, płynący przez nie prąd nie powinien przekraczać natężenia 6 A. Jeżeli w grę wchodziłoby przełączanie większych prądów, warto skorzystać z zewnętrznego stycznika, którego cewka będzie sterowana za pośrednictwem złącza J4.
Napięcie zasilające układ może zostać zwiększone do 24 V po trzech modyfikacjach na płytce: przekaźnik PK1 należy wymienić na egzemplarz z cewką przystosowaną do takiego napięcia (na przykład JQC3FF/241ZS), rezystor R7, ograniczający prąd diod podświetlających wyświetlacz LCD1, powinien zostać wymieniony na element o rezystancji 2,7 kΩ lub zbliżonej, do stabilizatora US2 należy przykręcić niewielki radiator, na przykład RAD FK231 SA220 L9.
Eksploatacja
Użytkownik jest zobligowany do ustawienia żądanych temperatur zadziałania przekaźnika - po włączeniu, z domyślnymi wartościami pobranymi z niezapisanej pamięci, obie temperatury będą wynosiły -0,1°C. Zmian temperatury dokonuje się wciskając (i trzymając wciśnięty) przycisk S3 (temperatura minimalna) lub S4 (temperatura maksymalna). Regulacja odbywa się z rozdzielczością 0,1°C w zakresie -50…+120°C. Trzymając przyciski S1 (zwiększanie) lub S2 (zmniejszanie) dłużej następuje samoczynne przewijanie danej temperatury, uprzednio wybranej poprzez trzymanie wciśniętego S3 lub S4. Tym szybsze jest to przewijanie im dłużej S1 lub S2 jest trzymany. Cały czas trzeba mieć wciśnięty S3 lub S4, bez tego układ nie reaguje na wciskanie S1 i S2. Nastawy są zapamiętywane w nieulotnej pamięci EEPROM po około 10 s od ostatniej zmiany.
Przykładowy widok ekranu pokazuje fotografia 2. W górnym wierszu można zobaczyć temperaturę aktualną z rozdzielczością 0,1°C, automatycznie dobrany tryb działania (tutaj H - od heating, czyli grzanie). Dolny wiersz zawiera dwie, ustawiane przez użytkownika, temperatury: minimalną (lewą, ustawianą przyciskiem S3) oraz maksymalną (prawą, ustawianą przyciskiem S4). Jeżeli maksymalna jest większa od minimalnej, to między nimi znajduje się znak większości, zaś termostat przełącza się w tryb grzania. Przekaźnik załączy się po osiągnięciu temperatury minimalnej lub spadku poniżej tej wartości. Z kolei jego wyłączenie odbędzie się po zrównaniu temperatury aktualnej z maksymalną, bądź jej przekroczeniu.
Gdyby jednak użytkownik ustawił temperaturę minimalną wyższą od maksymalnej (!), co jest możliwe, to układ dalej działa prawidłowo - tyle, że znajduje się w trybie chłodzenia. Sygnalizuje to litera C (od cooling, czyli chłodzenie) w górnym wierszu i znak mniejszości między ustawionymi temperaturami w wierszu dolnym. Można to zobaczyć na fotografii 3. Przekaźnik załącza się, kiedy temperatura aktualna zrówna się z minimalną lub ją przekroczy, zaś wyłącza kiedy spadnie do maksymalnej.
Nic nie stoi na przeszkodzie, by ustawić dwie temperatury (minimalną i maksymalną) o tych samych wartościach. Wtedy układ zaprzestaje sterowania: przekaźnik jest wyłączony, w górnym większy pojawia się litera X, zaś między zadanymi temperaturami widnieje znak równości. Brak jakiejkolwiek histerezy uniemożliwiałby pracę dwustanowego przekaźnika, więc układ wtedy blokuje się. Można ten tryb użyć do chwilowego zablokowania pracy, bez konieczności przerywania wewnętrznych połączeń, mając cały czas podgląd temperatury aktualnej.
Ostatnią sytuację wartą omówienia można zobaczyć na fotografii 4. Kiedy z czujnikiem temperatury odbyła się przynajmniej jedna poprawna transmisja (do tego momentu na wyświetlaczu są poziome kreski w miejscu temperatury aktualnej) i nastąpiło jego uszkodzenie, zamiast temperatury aktualnej pojawia się napis ERROR! Przekaźnik zostaje wyłączony, układ czeka na reakcję człowieka. Może tak się stać, na przykład, po odłączeniu linii DQ czujnika DS18B20 albo po jej zwarciu z masą.
Michał Kurzela, EP
- R1, R2, R5, R9…R11: 3,3 kΩ
- R3, R4, R6: 100 Ω
- R7: 1,5 kΩ
- R8: 33 Ω 3 W
- RN1: 4 × 10 kΩ SIL5
- P1: 10 kΩ montażowy leżący jednoobrotowy
- C1, C4: 220 μF 25 V raster 2,5 mm
- C2, C3, C5, C7…C9: 100 nF raster 5 mm MKT
- C6: 220 μF 35 V raster 3,5 mm
- C10: 100 nF MKP X2 305 V AC raster 15 mm
- D1, D2, D4: 1N4148
- D3: 1N5819
- LCD1: 2×16, zgodny z HD44780 np. LCD2×16 15
- T1: BC546
- US1: ATmega8A-PU (DIP28)
- US2: 7805 (TO220)
- Czujnik temperatury DS18B20
- J1: goldpin 5 pin męski 2,54 mm THT
- J2: ARK3/500
- J3: ARK2/500
- J4: ARK2/750
- PK1: JQC3FF/121ZS (opis w tekście)
- S1…S4: microswich 6×6 13,5 mm
- Jedna podstawka DIP28 wąska
- Złącze męskie i żeńskie goldpin 1×16 pin 2,54 mm
- Cztery tuleje dystansowe gwint wewnętrzny M3 12 mm poliamid
- Osiem śrub M3 6 mm