Rolą takiego sterownika jest załączanie pompy wymuszającej obieg wody w kaloryferach przy zadanej temperaturze oraz wyłączenie pompy, gdy temperatura spadnie poniżej zadanej. Cały sterownik do pompy C.O. składa się z kilku części. Sercem sterownika jest mikrokontroler Atmega8. Do odczytu temperatury wykorzystałem popularny układ cyfrowego czujnika temperatury - DS18B20. Dane z czujnika trafiają do mikrokontrolera, a ten wyświetla dane na wyświetlaczu 2x16 opartym na popularnym sterowniku hd44780. Całość zasila transformator 2VA (12V, 166mA). Do załączania pompy służy przekaźnik. Całość udało mi się zmieścić w obudowie Z-52 (wys. 40,0 mm, szer. 74,5 mm, dł. 145,9 mm), do której stworzyłem również front panel z opisem przycisków oraz diod sygnalizacyjnych.
Płyta główna sterownika do pompy C.O. |
Płyta główna sterownika do pompy C.O. - tył |
Projekt płytki sterownik do pompy C.O. |
W lewym górnym rogu musiałem również troszkę zeszlifować płytkę ekraniku, ponieważ w tym miejscu jest śruba łącząca dwa elementy obudowy. Płytkę podzieliłem na dwie strefy. Cały prawy bok to 230V AC, natomiast lewa strona to logika i bezpieczne napięcie 12V. Na koniec płytka została zabezpieczona specjalnym preparatem, który chroni ją przed utlenianiem się oraz wilgocią.
Sterownik do pompy C.O. posiada jedną główną funkcję - temperatura aktualna, oraz cztery konfiguracyjne; temperatura załączenia pompy, nastawa histerezy, ustawienia Anty Stopu i kalibracja temperatury. Co prawda czujnik temperatury DS18B20 jest bardzo dokładany, ale odczytywana temperatura może się różnić w zależności od miejsca zamocowania czujnika. Do poruszania się po oknach konfiguracyjnych służy przycisk MENU. Natomiast przyciski dodawania i odejmowania służą do ustawiania wartości w funkcjach, po za funkcją główną, tutaj pełnią inne role. Przycisk dodawania służy do zmiany trybu automatycznego na ręczny i odwrotnie. W trybie automatycznym temperatura zbierana przez czujnik temperatury jest porównywana z parametrami nastawionymi. W trybie ręcznym przekaźnik działa niezależnie od ustawionej temperatury.
Poniżej fotka z głównymi funkcjami sterownika:
Podgląd na ekrany i funkcje sterownika |
Widok ładowania ustawień domyślnych |
W funkcji głównej oprócz wyświetlania się temperatury aktualnej oraz trybu mogą również wyświetlać się ostrzeżenia, błędy oraz informacje.
- Jeśli temperatura spadnie poniżej 5*C załączy się tryb rozmrażania, wówczas na ekraniku pojawi się napis "ostrzeżenie niska temp." oraz aktualna temperatura. W tym trybie przekaźnik zostaje załączony oraz włącza się alarm dźwiękowy.
- Jeśli temperatura będzie większa niż 90*C załączy się tryb alarmowy i na ekraniku pojawi się napis "ostrzeżenie wys. temp" oraz aktualna temperatura. W tym trybie również zostanie załączony alarm dźwiękowy.
- Kolejnym trybem jest błąd odczytu temperatury z czujnika DS18B20. Jeśli mikrokontroler nie wykryje czujnika temperatury to załączy przekaźnik oraz alarm dźwiękowy. Na ekraniku pojawi się napis "błąd czujnika temperatury". Jest to zabezpieczenie, które zadziała podczas uszkodzenia się przewodu lub samego czujnika temperatury.
- Ostatni tryb służy do wyświetlania informacji na temat anty stopu. W ten tryb układ przechodzi jeśli temperatura załączenia nie zostanie przekroczona przez ilość nastawionych dni anty stopu np. jeśli anty stop ustawimy na 7 dni, temperaturę nastawioną na 35*C. Jeśli przez 7 dni nie zostanie osiągnięta temperatura 35*C to załączy się ten tryb. Wyświetla się w nim ilość dni do ponownego załączenia przekaźnika. Oraz ilość minut do wyłączenia przekaźnika. Długość załączenia przekaźnika jest ustawiona na sztywno i wynosi 5 min.
Poniżej można zobaczyć jak wyglądają wszystkie informacje na wyświetlaczu. Wyświetlacz ma kolor niebieski ponieważ dla testów użyłem mojej płytki testowej z mikrokontrolerem Atmega8 oraz modułu z wyświetlaczami. Wartości niektórych paramentów został celowo obniżone, aby można było przetestować je w działaniu.
Dodatkowe informacje na wyświetlaczu |
Wcześniej wspominałem o alarmie dźwiękowym. Jeśli alarm się załączy naciśniecie na którykolwiek z trzech przycisków spowoduje wyłączenie się alarmu dźwiękowego. Do ostrzeżeń o wysokiej i niskiej temperaturze została dodana również histereza o temp. 2*C, ponieważ jeśli temperatura wahała się między 4.9*C a 5*C załączał się co chwilę alarm informujący o niskiej temperaturze. Kasowanie alarmu na przyciskach nic nie dawało, ponieważ po chwil temperatura wzrosła do 5*C, a po chwili znowu spadła do 4*9C, co powodowało ponowne uruchomienie się alarmu. Teraz alarm załącza się przy 5*C, a wyłącza automatycznie przy 7*C, chyba, że wcześniej skasujemy go za pomocą przycisku. Identycznie jest z ostrzeżeniem o wysokiej temperaturze.
Warto może jeszcze coś wspomnieć na temat samej histerezy. Jest to nic innego jak odjęcie histerezy (temperatury) od temperatury zadanej. Czyli jeśli temperatura zadana wynosi 35*C, a histereza 3*C to w wyniku odejmowania uzyskamy temperaturę wyłączenia przekaźnika równą 32*C. Inaczej mówiąc pompa załączy się przy temperaturze większej niż 35*C i wyłącz jeśli będzie niższa niż 32*C.
Front panel został zaprojektowany w programie do grafiki wektorowej - Inkscape. Nie miałem nigdy styczności z tym programem, ale okazało się, że jeśli ktoś używał kiedykolwiek painta to z tym programem nie będzie miał problemów. Program jest dużo bardziej zaawansowany niż paint, ale jego obsług jest bardzo prosta ;)
Projekt front panelu |
Front panel podzielony jest na różne warstwy. Pierwsze został wydrukowany jako pilot dla otworów ( np. otwory dla gniazda bezpiecznika radiowego i głównego załącznika ) środki oznaczyłem plusikiem, do tego miejsca przykładałem wiertła. Wersja do zalaminowania była pozbawiona tych punktów środkowych.
Front panel został wydrukowany na zwykłym papierze, który został zalaminowany. Przed laminowaniem zostało wycięte tylko miejsce na ekranik. A całość została wycięta za pomocą nożyka do tapet. Na początku miałem problem w jaki sposób zrobić przyciski, ale zdecydowałem się na eksperymentalne umieszczenie przycisków typu tackswitch pod zalaminowanym papierem. Okazało się, że działają one całkiem przyzwoicie, a sam sterownik prezentuje się całkiem nieźle.
Widok na ukończony sterownik do pompy C.O. |
// =========================================== STREFA KONFIGURACYJNA =================================================Dodatkowo uruchomiony jest WatchDog, w razie gdyby się z jakiś powodów zawiesił sterownik WD dokona jego restartu.
// ********** Ustawienia domyślne (fabryczne) - FLASH
#define NAST_TEMP 35 // Nastawa TEMPERATURY ZAŁĄCZENIA
#define NAST_HIST 3 // Nastawa HISTEREZY
#define NAST_AS 7 // Nastawa Anty STOPU
#define NAST_KALIB 0 // Nastawa kalibracji
// ********** Konfiguracja maksymalnych i minimalnych wartości
#define TEMP_MAX 80 // Maksymalna temperatura jaką można ustawić
#define TEMP_MIN 25 // Minimalna temperatura jaką można ustawić
#define HIST_MAX 10 // Maksymalna temperatura histerezy jaką można ustawić
#define HIST_MIN 1 // Minimalna temperatura histerezy jaką można ustawić
#define AS_MAX 21 // Maksymalna ilość dni jaką można ustawić w ANTY STOPIE
#define AS_MIN 2 // Minimalna ilość dni jaką można ustawić w ANTY STOPIE
#define KALI_MAX 15 // Maksymalna wartość kalibracji
#define KALI_MIN -15 // Minimalna wartość kalibracji
// ********** Konfiguracja trybów awaryjnych | *C
#define WYS_TEMP 90 // Ustawienie niebezpiecznie dużej temperatury
#define ZAM_TEMP 5 // Ustawienie zabezpieczenia przed zamarzaniem | ustaw cel na więcej w funkcje.c!
// ********** Konfiguracja czasów | sekundy
#define LCD_TIME 60 // czas w sekundach podświetlenia LCD
#define AUTO_BACK_TIME 10 // czas w sekundach automatycznego cofania na okno główne - temp. aktualna
#define KEY_TIME_LOAD_DEFAULTS 3 // czas w sekundach odliczania przytrzymanego przycisku ładowania ust. domyślnych
#define ANTY_STOP_ON 5 // czas w minutach załączenia ANTY STOPU - zał. pompy
// ********** Konfiguracja przycisków
#define KEY_PIN PINB // pin przycisków
#define KEY_PORTX PORTB // port przycisków
#define SET_KEY (1<
Wartości maksymalne i minimalne są ustawione w następujący sposób: temperaturę nastawioną można ustawić od 25*C do 80*C, histerezę od 1*C do 10*C, anty stop od 2 dni do 21 dni oraz kalibracje od +15*C do -15*C lub -7*C. Kalibracja posiada warunek LUB, ponieważ jeśli temperatura odczytywana z czujnika wynosi np. 18*C i jeśli ustawimy kalibrację na -15*C to po wyjściu z konfiguracji otrzymamy alarm o niskiej temperaturze, ponieważ zostanie przekroczona temperatura alarmu ( 5*C) i po kalibracji będzie wynosić 3*C. Dlatego w takich przypadkach kalibracja zostanie zablokowana na temperaturze odczytanej 7*C.
Informacje o wartościach maksymalnych |
Ponieważ wartości maksymalne są różne, postanowiłem dodać informację o nich na wyświetlaczu. Jeśli w danej funkcji wartość osiągnie maksymalną wartość wówczas na wyświetlaczu pojawi się napis "max!".
Całość jest zabezpieczona bezpiecznikiem topikowym - radiowy o wartości 0.5A. Dodałem również przycisk załączenia awaryjnego, który jest umieszczony na górze, po prawej stronie. Przycisk ten załącza bezpośrednio pompę. Całość wykończyłem dwoma czarnymi dławikami i odgiętką na przewód od czujnika temperatury. Przewód zasilający i łączący pompę mają ok. 1,5m, natomiast przewód łączący czujnik temperatury ze sterownikiem ma ok. 1m.
Całość pobiera maksymalnie 2W. Pracująca pompa - różnie, ale niektóre mają tylko dwa tryby np. 20W/40W. Czyli jeśli w piecu wygaśnie to niepotrzebnie będziemy marnować aż 20W. Mając taki sterownik po wygaszeniu pieca będziemy zużywać tylko ok. 1W (przekaźnik nie pracuje, dioda LED od pompy się nie pali, ekranik się nie świeci, a zatem jedynie dioda LED - zasilanie, mikrokontroler i sam czujnik DS18B20 będzie pobierał jakiś malutki prąd) .
Schemat:
Schemat sterownika pompy C.O. |
Wlaśnie poszukiwałem schematu/projektu sterownika pompy c.o. :) Dzieki wielkie, bardzo przydatny artykuł, dobrze, że strona jeszcze istnieje i niech tak będzie jak najdłuej, znalazłem tu kilka fajnych artykułów i projektów, które mnie zainteresowały, a i hobby autora ,otywuje do własnej pracy hobbystycznej jako mały elektornik, dzięki Autorze :)
OdpowiedzUsuń