Podobno najlepsze urządzenia to takie, które ułatwiają nam życie i rodzą się z potrzeby chwili. Mieszkam w bloku na samym początku węzła ciepłowniczego, praktycznie wymiennikownia jest pod samym blokiem tak więc zimą wystarczy tylko delikatnie otworzyć zawór kaloryfera by po godzinie temperatura w mieszkaniu przekroczyła 24 stopnie. Najgorzej jest, gdy otwarty zawór zostawię na noc, wtedy nad ranem mam już 30, a ja wręcz nienawidzę temperatur ponad 22 stopnie Celcjusza.
Oczywiście, ktoś może zapytać dlaczego nie zmienię zaworu na termostatyczny, który sam bez problemu będzie regulował temperaturę ? hm... pewnie było by to jakieś rozwiązanie, ale tak mi z tym schodziło przez wszystkie ciepłe dni, że w końcu włączyli ogrzewanie i w tej sytuacji majstrowanie przy instalacji wiązało by się ze sporymi kosztami. Ponad to, czy przy wymianie zaworu przez hydraulika można się czegoś nauczyć ? raczej nie.
Należało więc do istniejącego zaworu założyć jakiś napęd, który będzie w stanie nim poruszać. Gdyby to był zawór kulowy, założył bym serwomotor modelarski i problem udało by się w miarę prosto rozwiązać. Niestety mam zwykły kręcony zawór grzybkowy, wymagający co najmniej kilku obrotów by go w pełni otworzyć. Sprawa nie była już taka prosta, ale nikt nie mówił, że w życiu łatwo będzie.
Rys. 1 Silnik DC wraz z przekładnią planetarną.
W swoich zapasach wygrzebałem ciekawy silniczek prądu stałego zespolony z przekładnią planetarną kółkami zębatymi i paskiem zębatym. Uznałem, że coś takiego jak najbardziej się nada gdy przykręcę ten silniczek w okolicach zaworu i przekażę napęd tym paskiem, dodatkowo w układ montując wieloobrotowy potencjometr tak, by układ sterujący w każdej chwili wiedział w jakiej pozycji zawór się znajduje.
Rys. 2 Silnik DC wraz ze źródłem informacji zwrotnej o aktualnej pozycji.
Na razie jednak w szczegóły mechaniczne nie będę się zagłębiał, zacznę od części sterującej. Postanowiłem wykonać układ z mikrokontrolerem, który będzie realizował następujące funkcje:
¤ pomiar temperatury w 3 punktach;
¤ wyświetlanie parametrów na wyświetlaczu LCD;
¤ niezależny zegar czasu rzeczywistego z podtrzymaniem;
¤ możliwość modyfikacji z poziomu klawiatury menu;
¤ odczyt bieżącej pozycji serwomotoru;
¤ możliwość regulacji prędkości, kierunku i blokady serwomotoru.
By zrealizować te funkcje zbudowałem układ sterujący z mikrokontrolerem ATmega32, oczywiście wystarczył by ATmega16, ale taki akurat miałem pod ręką. Do bezpośredniego wysterowania silnika DC zastosowałem wcześniej skonstruowany w mojej pracowni moduł z układem LMD18200, opis tego projektu znajduje się pod tym linkiem.
Rys. 3 Schemat ideowy układu sterownika. (kliknij by powiększyć).
-- Pobierz plik dla programu EAGLE --
Dzięki zastosowaniu układu LMD18200 z poziomu mikrokontrolera w prosty sposób mogę w pełni kontrolować ruch silnika DC, wystarczy wystawiać odpowiednie stany na wyjściach. Jak widać na schemacie zastosowałem 3 transoptory bo układ z mikrokontrolerem operuje na napięciu 5V a część logiczna sterownika na napięciu 12V. Poprzez te 3 transoptory idą stany do określania kierunku obrotu i hamowania oraz PWM dla określania prędkości.
Rys. 4 Widok mozaiki płytki PCB (kliknij by powiększyć).
-- Pobierz plik dla programu EAGLE --
Na płytce umieściłem dodatkowo linijkę diodową, za pomocą której będę obrazował w jakiej pozycji jest zawór, znalazło się tam też złącze prowadzące do modułu napędu silnika, złącza dla czujników temperatury oraz złącze dla potencjometru sprzężenia zwrotnego pozycji. Widzimy też 5 przycisków menu, zegar RTC PCF8583 wraz z baterią podtrzymania, kwarcem i trymerem do regulacji. Jest też delikatna różnica pomiędzy schematem a PCB, niestety zapomniałem o dwóch kondensatorach i musiałem je dolutować po drugiej stronie. Na schemacie są one zaznaczone.
Rys. 5 Widok zmontowanej płytki sterownika.
Rys. 6 Widok zmontowanej płytki sterownika.
Płytka wyszła całkiem przyzwoicie, wykonałem ją w ten sposób bo to teoretycznie miał być tylko prototyp na szybko by sprawdzić czy uda się czymś takim sensownie sterować temperaturą. W codziennym zastosowaniu będzie to raczej mało praktyczne, zwłaszcza jeśli się ma małe dzieci w domu :). Docelowo całość umieszczę w obudowie a sterowanie i podgląd będzie odbywał się z poziomu jakiegoś zewnętrznego pilota. Oczywiście nie wiem czy to będzie akurat taki układ bo na wiosnę wymienię zawory na kulowe i zamontuję mocne serwa modelarskie. Wtedy będę sterował grzejnikami w dwóch pokojach a układ i tak będzie dużo mniej skomplikowany. Na tą zimę pozostanie ten układ i sterowanie jednym, największym w mieszkaniu grzejnikiem.
Rys. 7 Widok stanowiska testowego.
Rys. 8 Widok napędu z driverem jeszcze bez sprzężenia zwrotnego.
Na początku nie wspomniałem po co na pokładzie sterownika znalazł się zegar RTC. Otóż ze względów zdrowotnych :). W moim sterowniku zaimplementowałem możliwość programowania nie tylko ogólnej temperatury w pomieszczeniu ale także innej o określonych godzinach. W nocy można zdecydowanie obniżyć temperaturę mieszkania bo jest to podobno zdrowe dla organizmu a poza tym jeśli mamy liczniki ciepła możemy sporo zaoszczędzić. Dzięki zegarowi czasu rzeczywistego mikrokontroler nawet gdy zostanie wyłączony, zawiesi się itd. zawsze gdy wróci do pracy będzie wiedział która jest godzina i zgodnie z ustawieniami użytkownika będzie regulował temperaturę.