Tym razem chciałbym przedstawić sterownik pieco CO, który wykonałem, żeby ułatwić sobie nieco życie. Sterownik ten posiada następujące funkcje:

- sterowanie wentylatorem nadmuchu pieca, co umożliwia utrzymanie stałej temperatury w piecu;

- sterowanie elektrozaworami z bojlera (zamknięcie zaworów, gdy temperatura bojlera jest niższa niż temperatura na piecu i ich otwarcie, gdy temperatura na piecu jest wyższa). Na początku, gdy nie miałem elektrozaworów musiałem ręcznie zamykać zawory, żeby bojler nie był wychłodzony przez wodę z centralnego ogrzewania;

- sterowanie pompką z podłogówki (w 2 pomieszczeniach w piwnicy mam zamontowane ogrzewanie podłogowe). Na początku pompkę miałem załączoną razem z pompką centralnego ogrzewania ale po jakimś czasie w piwnicy robiło się gorąco. Obecnie mam możliwość ustawienia czasu załączenia pompki w przedziale 1min - 59 min na godzinę, czyli co godzinę pompka jest załączana na ustawiony czas (w tej chwili wystarczającym czasem jest 5minut/godzinę);

- sterowanie pracą bojlera. Grzałka elektryczna załącza się tylko, gdy zawory są zamknięte i czas zawiera się w godzinach: 13-15 i 22-6, czyli w tańszej taryfie (mam licznik dwutaryfowy);

- wyświetlanie funkcji na lokalnym wyświetlaczu LCD 20x2 (2 linie po 20 znaków) oraz wysyłanie danych przez UART co umożliwia wyświetlanie danych na komputerze;

- wyświetlanie danych na telewizorze (podłączenie przez D-Sub)

Po kolei opiszę poszczególne funkcje:

1. Sterowanie nadmuchem pieca. W piecu mam zamontowany wentylator. Do sterownika podłączony jest on poprzez triak, który jest wysterowywany przez sprzętowy PWM w Atmedze. Jeśli temperatura na piecu jest mniejsza o 8 stopni od temperatury ustawionej to wentylator pracuje z pełną mocą. Jeśli różnica temperatur wynosi 2-4 stopni wentylator pracuje z połową mocy, jeśli róznica temperatur wynosi 2 lub 1 stopień wentylator pracuje z 25% mocy. W ten sposób temperatura jest w miarę dobrze utrzymywana (w ten sam sposób pracował oryginalny sterownik do tego pieca).

2. Sterowanie elektrozaworami. W celu zapobieżenia wychładzaniu bojlera przez krążącą wodę w układzie centralnego ogrzewania (gdy woda na bojlerze ma wyższą temperaturę niż woda krążąca w układzie) zabudowane na wejściu wężownicy w bojlerze elektrozawory 230V. Sterowanie nimi odbywa się poprzez przekaźnik, który jest przełączany na zamknięcie lub otwarcie w zależności od tego, czy temperatura bojlera jest większa czy mniejsza niż temperatura na piecu. Gdyby powyższych elektrozaworów nie było, możliwa byłaby sytuacja, że ogrzewanie domu byłoby brane z bojlera. Po prostu krążąca woda odbierałaby ciepło z bojlera.

3. Sterowanie pompą podłogówki. Do ogrzewania podłogowe zabudowana jest dodatkowa pompa, która wymusza cyrkulację wody w układzie podłogówki. Bez tej pompki pompa główna nie dawała rady wymusić przepływu przez 130 mb rury pex. Na początku, gdy nie miałem sterowania tej pompki, pracowała ona cały czas razem z pompą główną. Niestety powodowało to, że w pomieszczeniach z podłogówką po jakimś czasie robiło się bardzo ciepło. Ponieważ sterowanie z użyciem termostatów jest mało efektywne (duża bezwładność cieplna podłogi) użyłem możliwości uruchamiania pompy na zadany czas. Na początku ustawiłem czas i obserwowałem temperaturę. Po jakimś czasie mogłem ustawić ten czas na 5 minut / godzine, co oznacza uruchamianie pompy na 5 minut co każdą godzinę. Czas ten oczywiście można sobie w każdej chwili zmienić. Oprócz tego dodałem dodatkowy warunek, gdy temperatura w pomieszczeniu jest większa niż 22 stopnie, to pompa nie uruchomi się w ogóle (dzięki temu w cieplejsze dni nie trzeba zmieniać czasu włączenia pompy).

4. Sterowanie pracą bojlera. Ponieważ mam licznik dwutaryfowy, konieczne jest załączanie bojlera tylko w określonych godzinach (13-15 oraz 22-6), gdy energia elektryczna jest tańsza. Oprócz tego oryginalny termostat na bojlerze umożliwiał ustawienie temperatury max. 50 stopni. Ponieważ bojler jest mały (100 litrów), temperatura 50 stopni była zbyt niska i wody nigdy nie starczało. Sterownik umożliwia więc załączanie bojlera w określonych godzinach (jest to ustawione na stałe, z możliwością zmiany tylko poprzez modyfikację programu) oraz podgrzewanie wody do 70 stopni (na razie także ustawione na stałe). Styk przekaźnika wykonawczego wpięty jest równolegle ze stykiem oryginalnego termostatu, dlatego oryginalny termostat może działać w razie awarii mojego sterownika a ponadto został w obwodzie oryginalny termik (zabezpieczenie przed przegrzaniem). Sam przekaźnik także zabezpieczyłem, wykorzystując bezpiecznik termiczny 80 stopni, który w razie wzrostu temperatury powyżej 80 stopni odetnie zasilanie do przekaźnika (przed sklejeniem styków zabezpiecza mnie oryginalny termik w obwodzie).

5. Na lokalnym wyświetlaczu LCD wyświetlane są podstawowe funkcje (4 temperatury, tryb pracy, godzinę, datę). Sterowanie funkcjami odbywa się poprzez impulsator obrotowy z przyciskiem.

6. Na telewizorze wyświetlane są wszystkie informacje odbierane przez UART (temperatury, tryb pracy, załączenie pompek, wentylatora, zaworów itp). Oprócz tego wyświetlane są również daty wywozu plastyków i śmieci wielkogabarytowych (w umowie mam wywożenie plastyków, szkła i papieru raz w miesiącu i 2 razy do roku śmieci wielkogabarytowych i żeby nie musieć używać kartki mam to wyświetlane na telewizorze). Daty wywozu zawarte są w sterowniku do karty tv więc nie są dostępne na komputerze.

7. Wszystkie dane przesyłane przez sterownik są również odbierane przez komputer (podłączone do komputera poprzez konwerter uart/rs232) i odczytywane w dowolnym terminalu (pod linuksem używam CuteCom).

8. Sterowanie pompą główną. Pompa główna załącza się po przekroczeniu 40 stopni i jest włączona cały czas, dopóki temperatura na piecu nie spadnie poniżej 38 stopni (histereza, żeby zapobiec włączaniu i wyłączaniu, gdy temperatura jest na granicy).

9. Sposób sterowania wentylatorem (tryb dzienny, nocny i dzień i noc). Chciałbym zaimplementować funkcję, która zabezpieczałaby piec przed wygaszeniem w nocy. Na razie myślę nad sposobem realizacji. Możnaby np. na noc obniżać temperaturę na piecu (np. zamiast 57 stopni utrzymywana byłaby temperatura 37 stopni) - jest to niezdrowe dla pieca i komina (podobno), inny sposób to uruchamianie wentylatora w nocy tylko co jakiś czas, żeby rozdmuchać jpalenisko (próbowałem, ale się nie sprawdziło). Na razie więc nie ma innych trybów, tylko zwykły tryb pracy.

10. Temperatura jest mierzona przy pomocy czujników 1wire typu DS18b20 podłączonych do jednego wejścia procesora. Opis tych czujników możecie znaleźć na stronie: http://www.1-wire.rms.biz.pl/ . Czujniki te mają możliwość pracy w trybie pasywnym (tylko 2 linie: danych i masa): w momencie, gdy nie są odczytywane żadne dane kondensator w czujniku jest ładowany z linii danych (panuje wtedy na niej napięcie dodatnie) a w momencie odczytu układ czerpie energię z tego kondensatora. W trybie aktywnym układ jest podłączany przez 3 przewody (zasilanie i linia danych). U mnie (ze względu na pewność działania) układy pracują w trybie aktywnym. Ponieważ każdy z czujników posiada swój unikalny numer identyfikacyjny mogą one pracować podłączone do jednego portu mikrokontrolera (tak jest to zrobione w tym sterowniku). Czujniki mam zabudowane w następujący sposób:

- 1 czujnik na piecu (mierzy temperaturę wody w obiegu centralnego ogrzewania),

- 2 czujniki na bojlerze (1 czujnik w połowie bojlera w miejscu, gdzie jest wężownica, do sterowania temperaturą bojlera oraz drugi czujnik na wylocie wody z bojlera, żeby wiedzieć, czy mam jeszcze ciepłą wodę do kąpania). Bywa, że różnica między tymi temperaturami wynosi nawet kilkanaście stopni,

- 1 czujnik w saloniku w piwnicy (tam jest założone ogrzewanie podłogowe, temperatura z tego czujnika informuje, czy można włączyć pompę z podłogówki)

- 1 czujnik w salonie u góry (główne pomieszczenie, cel pomiaru tylko informacyjny),

- 1 czujnik temperatury zewnętrznej (bez komentarza, na razie cel informacyjny)

Docelowo zamierzam zainstalować czujniki w każdym pomieszczeniu a na grzejnikach zamontować termostaty z siłownikami elektrycznymi i sterować temperaturą w każdym pomieszczeniu poprzez sterownik (w tej chwili mam zamontowane termostaty mechaniczne).

Sterownik został umieszczony w rozdzielnicy natynkowej (specjalnie do tego celu kupionej). Muszę jeszcze dorobić złącza na czujniki (te już mam zabudowane, są to zwykłe gniazda DB-9) oraz złącza do elektrozaworów. Pompki, bojler i wentylator będą podłączane poprzez zwykłe gniazdka.

Sercem sterownika jest Atmega 32, program został napisany w bascomie (nie jest jeszcze doskonały). Docelowo zamiast uarta mam zamiar zastosować rs485 i wykorzystać transmisję dwukierunkową (aby mieć możliwość sterowania nastawami nie tylko lokalnie, ale również zdalnie).

A teraz schemat (niestety w trakcie prób był przerabiany i na razie nie mam aktualnego):

Jak widać schemat jest mocno nieaktualny, brakuje przekaźnika załączającego bojler, kilku czujników temperatury (jak ktoś by chciał wykonać ten układ, musi się posiłkować listingiem umieszczonym w dalszej cześci).

 

Fotki urządzenia (z boku widać wtyczki DB-9, które będą wykorzystane do podłączenia czujników - teraz wszystkie przewody są wprowadzone bezpośrednio):

                    

Fotki bojlera z tyłu (widać elektrozawory - żółte i wprowadzone przewody z czujnikami):

 

Widok programu CuteCom (odczyt na komputerze):

Widok danych na telewizorze

Tp-temperatura pieca, Tb-temp. bojlera do sterowania, Tbg-temp. bojlera góra - informacja, Tz - temp. zewnętrzna, Ts-temp. salon góra, Tsd-temp. salon dół

W ramce podane co jest włączone (żółte kropki oznaczają załączone urządzenie)

Czas pracy bojlera: Jak długo bojler był włączony w dzień lub w nocy (przydatne, żeby stwierdzić, ile energii jest zużywane do podgrzania wody)

                                       

Listingi programu


 

Do wyświetlania obrazu na tv wykorzystuję kartę TeleVGA zakupioną tutaj: http://www.televox.pl/index.php/ELEKTRONIKA/TeleVGA/

Jest ona sterowana poprzez SPI. Do jej wysterowania wykorzystuję dodatkowy układ zbudowany na Atmedze 64 (ze względu na objętość programu).

Zamieszczam schemat układu sterującego kartą TeleVGA i wyświetlaczem ethernetowym (na razie nie montowałem układów max487-przyszłościowo będzie wykorzystywane):

Listing programu do sterowania kartą televga:

 


Część programu (niektóre procedury) do sterowania kartą televga pochodzi z wątku: http://www.elektroda.pl/rtvforum/viewtopic.php?t=1839236&highlight=&sid=  na elektroda.pl (fonty definiowiałem własnoręcznie).

I to na razie tyle. Sterownik pracuje od sezonu w roku 2011 i na razie nie ma z nim problemów.

 

02.2014

Dodano kolejne czujniki temperatury (min w kominie) i zmieniono sposób wyświetlania na telewizorze. Listingi uaktualnione.

Czujnik temperatury w kominie dodano w następujący sposób. Wywiercono otwór w kominie ok. 20 cm nad czopuchem, czujnik temperatury włożono do rurki miedzianej fi6 i na końcu zagnieciono. Czujnik ten dodano po to, żeby ograniczyć rozpalanie, jeśli za mocno rozpala się w piecu (powyżej 67 stopni wentylator jest wyłączany).

Zdjęcie telewizora

09.2014

Rozbudowałem sterownik o wyświetlanie temperatur  na stronie www (no i mam wyświetlanie temperatur na każdym urządzeniu wyposażonym w przeglądarkę www). Wykorzystałem do tego celu kit AVT5118: http://sklep.avt.pl/wyswietlacz-ethernetowy-zestaw-do-samodzielnego-montazu.html. Sama obsługa tego kitu jest banalnie prosta i dokładny opis znajdziemy w dokumentacji do w/w kitu. Można modyfikować wygląd strony, dane które mają być wyświetlone wysyłamy mu po rs232 (wykorzystałem do tego celu uart 2 ze sterownika TeleVGA i drugi kanał z max232).

Dodatkowo wgrałem bootloadera do atmegi644 ze sterownika TeleVGA, dzięki czemu mogę ją programować po rs232 (uart2). Wystarczy tylko odłączyć rs232 od sterownika ethernetowego i podłłączyć do komputera pod rs232 (wystarczy tylko zastosować przejściówkę krosującą linie txd i rxd).

Moja strona wygląda w tej chwili tak:

W tej chwili mogę już zmienić ramkę danych w sterowniku pieca, gdyż mogę zrezygnować z wyświetlania terminalowego. Jak znajdę znowu trochę czasu to zmodyfikuję tę ramkę i zastosuję crc ale to melodia przyszłości (brak czasu na te drobne modyfikacje). Dodatkowo zastanawiam się nad wykorzystaniem innego modułu wyświetlacza ethernetowego umożliwiającego transmisję dwukierunkową (testy przeprowadzałem, niestety ze względu na częste zawieszenia modułu na razie zrezygnowałem z tego). Tutaj możecie poczytać, co niektórym już udało się stworzyć: http://www.elektroda.pl/rtvforum/topic2826655.html.