- pomiar temperatury w zakresie –55…+125°C,
- dwie wartości temperatur (z zakresu 0...99°C) określające reakcje układu,
- cyfrowy, niewymagający kalibracji czujnik temperatury,
- wejścia na wyłączniki krańcowe silnika elektrozaworu,
- możliwość ustawienia maksymalnego czasu działania silnika,
- dwa tryby działania: grzanie lub chłodzenie,
- dwa wyjścia o obciążalności do 4 A,
- zasilanie napięciem stałym 12 V (lub 24 V po modyfikacji).
Rolą termostatu jest utrzymanie temperatury danego obiektu w zadanych granicach. Metody są różne: elektryczne grzałki, dmuchawy chłodzące, ogniwa Peltiera lub pompy ciepła. Najistotniejsze jest to, że wyjście termostatu jest dwustanowe – sterowany obwód może być załączony lub wyłączony, bez stanów pośrednich. Zaprezentowany układ, w odróżnieniu od znanych na rynku rozwiązań, jest przystosowany do sterowania przepływem cieczy, która ochładza lub ogrzewa kontrolowany obiekt. Może sterować elektrozaworem, w którym znajduje się elektryczny silnik prądu stałego, umożliwiając lub blokując przepływ czynnika. Odpowiednie zarządzanie pracą takiego silnika pozwoli na jego bezawaryjną pracę przez długie lata. Co równie ważne, zadawanie odpowiednich nastaw jest banalnie proste, zatem nie trzeba być mistrzem elektroniki, aby opisanego termostatu z powodzeniem używać.
Budowa i działanie
Schemat ideowy omawianego układu znajduje się na rysunku 1. Najistotniejszym elementem jest mikrokontroler, popularny układ ATmega8A-PU z leciwej, lecz nadal popularnej i niezawodnej rodziny AVR. Jego liczba wyprowadzeń oraz ilość pamięci są całkowicie wystarczające do realizacji tego zadania. Aby komunikacja z cyfrowym czujnikiem temperatury oraz inne zadania wymagające odmierzania czasu przebiegały prawidłowo, częstotliwość jego sygnału zegarowego jest stabilizowana niedrogim rezonatorem kwarcowym. Kondensatory C4 i C5 ułatwiają wzbudzenie oscylacji i stabilizują pracę oscylatora.
Kondensatory C1…C3 filtrują napięcie zasilające mikrokontroler i zmniejszają impedancję źródła zasilania.
Do obsługi urządzenia służy sześć przycisków monostabilnych S1…S6. Drabinka rezystorowa RN1 uzupełnia rezystory podciągające wbudowane w mikrokontroler, których wartości mogą mieć znaczny rozrzut. Poprawia to stabilność pracy całego układu w silnie zakłóconym środowisku i nie dopuszcza do przypadkowych zdarzeń symulujących zadziałanie przycisków pod wpływem zakłóceń elektromagnetycznych. Dodatkowo, dwa wejścia mikrokontrolera, również podciągane przez rezystory z tej drabinki, są przeznaczone do wyłączników krańcowych silnika elektrozaworu.
Programowanie mikrokontrolera może odbywać się zarówno po włożeniu układu programowalnego w podstawkę programatora, jak i za pośrednictwem złącza J1. Są do niego doprowadzone linie sygnałowe interfejsu programowania ISP. Rezystory zawarte w drabince RN2 podciągają te wyprowadzenia do dodatniego potencjału zasilania, aby nie gromadziły się na nich ładunki elektrostatyczne.
Cyfrowy czujnik temperatury typu DS18B20 należy podłączyć do zacisków złącza J2. Napięcie zasilające ten czujnik jest filtrowane przez dolnoprzepustowy filtr RC. Obwód ten składa się z rezystora R2 oraz kondensatorów C6 i C7. Dla ochrony wejścia mikrokontrolera przed uszkodzeniem spowodowanym przepięciami na linii sygnałowej, zostały dodane diody ograniczające napięcie do zakresu –0,7…+5,7 V. Rezystor R1 ogranicza prąd tych diod. Z kolei rezystor R3 ogranicza prąd diod zabezpieczających wbudowanych w mikrokontroler, gdyż ich napięcie przewodzenia jest nieco niższe niż zastosowanych 1N4148. Rezystor R3 jest wymagany do prawidłowego działania magistrali komunikującej się z czujnikiem: umożliwia pojawienie się na niej wysokiego stanu logicznego.
Wyłączniki krańcowe o stykach typu NO można podłączyć do zacisków złącza J3. Zwarcie z masą będzie informowało układ o dotarciu głowicy zaworu w skrajną pozycję. Rezystory podciągające zawarte w drabince RN1 w zupełności wystarczają do utrzymania wysokiego stanu logicznego na tych zaciskach. Dla ochrony układu przed zakłóceniami elektromagnetycznymi oraz iskrzeniem styków zostały dodane dolnoprzepustowe układy filtrujące RC. Zwiększają one czas narastania i opadania napięcia na wejściu mikrokontrolera, przez co chronią wbudowane w mikrokontroler diody zabezpieczające. Z kolei rezystory R5 i R6 ograniczają prąd tych diod. Takie rozwiązanie stanowi również całkiem dobrą ochronę przed wyładowaniami elektrostatycznymi w sytuacjach, w których czas reakcji danego wejścia nie jest szalenie istotny.
Napięcie zasilające układ podłącza się do zacisków złącza J4. Dioda D1 odcina zasilanie w przypadku niewłaściwej polaryzacji napięcia. Stabilizator liniowy typu 7805 dostarcza napięcia 5 V dla układów cyfrowych. Moc strat na nim jest na tyle niska, że nie ma potrzeby stosowania przetwornicy impulsowej. Na silnik trafia napięcie zasilające układ, toteż trzeba je dostosować do wymagań silnika. Po wymianie przekaźników na inne modele, układ oraz współpracujący z nim silnik mogą być zasilane napięciem 24 V.
Komunikaty i informacje podawane przez układ są wyświetlane na wyświetlaczu LCD1, który zawiera sterownik typu HD44780 lub z nim zgodny. 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 silnika elektrozaworu jest załączane przez przekaźniki PK1 i PK2. Załączenie jednego z nich wymusza jeden kierunek obrotów, a drugi – drugiego, stąd nie mogą być załączone jednocześnie. Podłączenie ich wyprowadzeń NC do masy sprawia, że po wyłączeniu danego przekaźnika silnik natychmiast jest hamowany – powstaje zwarcie na jego zaciskach. Dwójniki RC w postaci połączonych szeregowo: rezystora 33 Ω i kondensatora 100 nF, zmniejszają iskrzenie styków podczas przełączania, przez co zmniejszają ryzyko niewłaściwego działania lub zablokowania się układu.
Same styki również zużywają się przez to wolniej.
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 nie uginała się podczas naciskania przycisków, w pobliżu środka płytki dodano otwór. Rysunek 3 pokazuje jego lokalizację 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 lub pozostawić w pionie, aby wygodniej móc przykręcić do niego niewielki radiator. Ten etap montażu można zobaczyć na fotografii 1.
Na drugiej stronie płytki jest miejsce dla wyświetlacza LCD1 oraz sześciu przycisków S1…S6. Ich lokalizację po przylutowaniu pokazuje fotografia tytułowa. Na samym końcu, po wlutowaniu wszystkich przycisków, należy przykręcić wyświetlacz LCD za pomocą czterech tulei dystansowych oraz przylutować jego złącza. Warto lutowanie zostawić na sam koniec, po przykręceniu, aby ewentualny naddatek wysokości tulei mógł być skompensowany przez lekkie wystawanie złączy z powierzchni płytki – by część męska i żeńska wchodziły w siebie całkowicie. Rozmieszczenie przycisków i wyświetlacza na powierzchni płytki zostało pokazane na rysunku 4, dzięki niemu można łatwiej wykonać obudowę dla tego urządzenia.
Na etapie uruchamiania konieczne jest zaprogramowanie pamięci Flash mikrokontrolera dostarczonym wsadem oraz zmiana jego bitów zabezpieczających. Oto ich nowe wartości:
Low Fuse = 0×3D
High Fuse = 0xD9
Szczegóły są widoczne na rysunku 5, który zawiera widok okna konfiguracji tych bitów z programu BitBurner. W ten sposób zostanie uruchomiony generator dla rezonatora kwarcowego (o częstotliwości z przedziału 3...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 anomalii podczas uruchamiania.
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źników (z uwzględnieniem spadku napięcia na diodzie D3 i tranzystorach T1 oraz T2) 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łączonych przekaźnikach oraz około 30 mA, kiedy cewka jednego z nich zostanie załączona. Do tego należy dodać pobór prądu przez sam silnik, który nie powinien przekraczać 4 A z uwagi na wytrzymałość ścieżek. Typowe elektrozawory dostępne na rynku pobierają prąd o natężeniu około 1 A, więc taki zapas jest całkowicie wystarczający.
Jeżeli zastosowany elektrozawór ma silnik przystosowany do napięcia 24 V, wówczas w układzie wystarczy dokonać kilku niewielkich modyfikacji. Po pierwsze, przekaźniki PK1 i PK2 powinny mieć cewki przystosowane do napięcia 24 V. Najlepiej pasujące podzespoły mają oznaczenie JQC3FF/241ZS. Po drugie, rezystor R7, który ogranicza prąd pobierany przez diody LED wyświetlacza LCD, powinien mieć rezystancję 2,7 kΩ, aby zachować podobną jasność podświetlenia. Po trzecie, jeżeli obudowa urządzenia miałaby słabą wentylację, polecam do stabilizatora US2 przykręcić radiator, który rozproszy wydzielane w nim ciepło. Wystarczy niewielki radiator przeznaczony do chłodzenia elementów w obudowach typu TO220.
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 dołączonymi przewodami, w którym czujnik został hermetycznie zaciśnięty w metalowej rurce.
Eksploatacja
Widok ekranu działającego urządzenia jest widoczny na fotografii 2. Aktualna temperatura (górny wiersz) jest wskazywana z rozdzielczością 0,1°C w zakresie –9,9…+99,9°C i z rozdzielczością 1°C poza tym przedziałem. Błąd komunikacji z czujnikiem jest wskazywany napisem ERR! w tym miejscu, przy okazji zatrzymuje on układ i sprowadza zawór do pozycji zamkniętej. Po prawej stronie górnego wiersza jest stan zaworu: OPEN (otwarty) lub CLOSE (zamknięty); jeżeli stan ulega zmianie, wówczas ten tekst miga.
Dolny wiersz to informacja o trybie pracy (HEAT – grzanie, COOL – chłodzenie), zadanych temperaturach (dolna/górna) zadziałania zaworu w pełnych stopniach Celsjusza oraz maksymalnym czasie działania silnika elektrozaworu. Podczas pracy silnika wartość ta ulega dekrementacji. Jeżeli dojdzie do zera, silnik wyłącza się. Możliwe jest wcześniejsze przerwanie tego ruchu przez sygnał z wyłącznika krańcowego.
Przed rozpoczęciem właściwej pracy należy zadbać o ustawienie prawidłowych wartości. Służą do tego przyciski S1 (zwiększający wartość) i S2 (zmniejszający wartość). To, który parametr ma być aktualnie modyfikowany, wybiera się poprzez trwałe trzymanie jednego z przycisków S3…S6. Ich szczegółowe działanie zostało zestawione w tabeli 1. W ten sposób utrudniona jest przypadkowa modyfikacja którejś wielkości – jednocześnie muszą być wciśnięte dwa przyciski. Po upływie około 10 s od ostatniej modyfikacji, układ zapisuje nastawy w nieulotnej pamięci EEPROM. Będą one z niej pobrane po ponownym włączeniu zasilania. Gdyby któraś z komórek pamięci została uszkodzona bądź mikrokontroler byłby świeżo zaprogramowany, układ stosuje wartość domyślną (wypisane w tabeli 1).
Po załączeniu zasilania układ zawsze zamyka zawór – dąży do pozycji CLOSE. W ten sposób ma pewność, z jakiej pozycji zaworu zaczyna sterowanie. W trybie grzania: jeżeli temperatura aktualna przekracza górną bądź jest jej równa, zawór ulega całkowitemu zamknięciu. Po ochłodzeniu do temperatury dolnej zawór otwiera się w 100%. W trybie chłodzenia role te są odwrócone: nagrzanie powyżej górnego progu otwiera zawór, zaś ochłodzenie poniżej dolnego zamyka go.
Ruch silnika elektrozaworu ustaje po odliczeniu przez układ zadanego czasu. Można w ten sposób sterować urządzeniami, które mają wbudowane wyłączniki krańcowe odcinające zasilanie lub sprzęgło zapobiegające zablokowaniu osi silnika prądu stałego po uzyskaniu przez zawór skrajnej pozycji. Ale można również wykorzystać do tego dwa wyłączniki krańcowe ze stykami NO, które nie są połączone elektrycznie z silnikiem. Ich podłączenie do układu według rysunku 6 pozwala na wcześniejsze zakończenie cyklu otwierania i zamykania. Wystarczy, że jeden z nich zostanie zwarty w trakcie ruchu elektrozaworu.
Aby jednak nie doszło do wyłączenia silnika, zanim ten na dobre nie ruszy, przez 10% czasu ustawionego czasu maksymalnego układ ignoruje sygnały podawane przez wyłączniki krańcowe. W tym czasie oś zaworu powinna opuścić skrajne położenie, w którym się znajdowała.
W złączu J3, między GND a STOP OPEN, powinien być włączony ten wyłącznik krańcowy, który ulegnie zwarciu po całkowitym otwarciu zaworu. Z kolei między GND i STOP CLOSE należy włączyć ten, który wykryje całkowite zamknięcie zaworu. Silnik, podłączony do zacisków złącza J5, powinien mieć trzy wyprowadzenia: jeden wspólny zacisk masy i dwa zaciski dodatnie, służące ruchowi w kierunku otwarcia (OPEN) i zamknięcia (CLOSE) zaworu.
W czasie ruchu silnika elektrozaworu układ nie wykonuje regulacji. To oznacza, że porównanie aktualnej wartości temperatury z zadanymi progami zostanie wykonane po tym, jak zawór skończy się otwierać lub zamykać. Przez cały ten czas jest dostępny podgląd aktualnej wartości temperatury na wyświetlaczu. Dlatego sterowany obiekt musi cechować się dostatecznie wysoką inercją w porównaniu do czasu ruchu zaworu, aby w czasie jego ruchu temperatura nie uległa zbyt gwałtownej zmianie.
Układ potrafi wykryć dwa rodzaje błędów i zareagować na nie. Pierwszym jest wcześniej wspomniany błąd czujnika temperatury – jeżeli dojdzie do niego, układ zamyka całkowicie zawór i czeka na przywrócenie prawidłowych wskazań. Drugim przypadkiem sytuacji awaryjnej jest wykrycie zwarcia dwóch wyłączników krańcowych jednocześnie, co w typowej sytuacji nie powinno mieć miejsca. Wtedy też zawór ulega zamknięciu, co trwa tyle, ile ustalony czas maksymalny.
Układ może działać bez podłączonych zewnętrznych wyłączników krańcowych. Wtedy zaciski złącza J3 należy zostawić niepodłączone do niczego. Cykl zamykania i otwierania zaworu będzie się odbywał za każdym razem z maksymalnym, zadanym wcześniej czasem działania.
Michał Kurzela, EP
- R1, R2, R4: 100 Ω
- R3, R10, R11: 3,3 kΩ
- R5, R6: 1 kΩ
- R7: 1 kΩ (opis w tekście)
- R8, R9: 33 Ω 2 W
- RN1: 8 × 10 kΩ SIL9
- RN2: 4 × 10 kΩ SIL5
- P1: 10 kΩ montażowy leżący jednoobrotowy
- C1, C6: 220 μF 25 V raster 2,5 mm
- C2, C3, C7…C9, C11…C15: 100 nF raster 5 mm MKT
- C4, C5: 15 pF raster 5 mm monolityczne
- C10: 220 μF 35 V raster 3,5 mm
- D1, D2, D4, D5: 1N4148
- D3: 1N5819
- T1, T2: BC546
- LCD1: 2×16, zgodny z HD44780 np. LCD2×16 15
- US1: ATmega8A-PU (DIP28)
- US2: 7805 (TO220)
- Czujnik temperatury DS18B20
- J1: goldpin 5 pin męski 2,54 mm THT
- J2, J3, J5: ARK3/500
- J4: ARK2/500
- PK1, PK2: JQC3FF/121ZS (opis w tekście)
- Q1: 4 MHz niski
- S1…S6: 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