Internetowy nadzorca pieca centralnego ogrzewania

W tym artykule chciałbym przedstawić projekt który powstał jesienią ubiegłego roku. Celem było stworzenie urządzenia które będzie mierzyło temperatury wody oraz spalin w piecu węglowym, oraz wysyłało wyniki pomiarów przez protokół MQTT. Dodatkowym zadaniem jest także sterownie pompą centralnego ogrzewania.

Czujnik pomiaru temperatury spalin

Pierwszym zadaniem na etapie projektu był wybór czujnika i metody pomiaru temperatury spalin. Ponieważ nie chciałem w żaden sposób ingerować w konstrukcję pieca to zdecydowałem się na pośredni pomiar poprzez kontrolowanie temperatury stalowej rury odprowadzającej spaliny. Następnie musiałem ustalić jakich temperatur mogę się spodziewać. W tym celu wykorzystałem multimetr z termoparą i mierzyłem temperaturę rury na różnych etapach palenia. W efekcie tego doświadczenia ustaliłem, że temperatura podczas utrzymywania temperatury wody waha się od 50°C do 200°C, ale podczas zagrzewania wody rura osiąga nawet 450°C. Te wyniki zawęziły dosyć mocno wybór czujników. Rozważałem termoparę lub termistor PT1000. Ostatecznie decyzja padła na termoparę ze względu na łatwiejsze przetwarzanie napięcia niż rezystancji.

Termoparę przymocowałem do rury przy pomocy skręconego drutu, dzięki czemu jest odpowiednio dociśnięta. Docelowo ma tam być ładna opaska, ale jak wiadomo prowizorka przetrwa wszystko, tylko wygląda trochę gorzej.

Ponieważ termopara daje niskie napięcie to postanowiłem je wzmocnić prostym układem na wzmacniaczu operacyjnym pracującym w układzie z ujemnym sprzężeniem zwrotnym.

Takie rozwiązanie dało całkiem ładny efekt, jednak ze względu na duże wzmocnienie, kiepską klasę zastosowanych rezystorów oraz dużą wilgotność powierza w piwnicy układ zmieniał swoje parametry podczas pracy. Niezbyt mi się to spodobało, więc dałem szansę gotowemu rozwiązaniu na bazie układu MAX6675.

Zakupiłem więc gotowy moduł wraz z nową termoparą za trochę ponad 20zł, podłączyłem i od razu zaczęło działać tak jak powinno.

Kiedy już zebrałem pewną ilość prawidłowych danych to mogłem przejść do oceny, czy metoda pomiaru temperatury rury będzie dawała jakiekolwiek odwzorowanie tego jaka jest temperatura spalin i w jakim stopniu zachodzi spalanie opału. Początkowo obawiałem się dużej bezwładności termicznej ze względu na spore rozmiary a co z tym idzie masę rury, jednak moje obawy zniknęły kiedy zobaczyłem wykres temperatury w czasie.

Z wykresu bez problemu można odczytać kiedy wentylator zwiększa obroty, oraz kiedy zaczyna przygasać w piecu.

Dodatkowo zaznaczyłem kilka charakterystycznych faz:

  1. piec wygaszony
  2. rozpalanie
  3. maksymalny dopływ powietrza – automatyka pieca wyłączona
  4. załączenie automatyki i nadmuchu – stabilizacja temperatury w domu
  5. stabilna praca pieca – dogrzewanie
  6. wygaszanie
  7. charakterystyczny punkt po którym automatyka przestaje podtrzymywać palenie

Czujniki temperatury wody

Z pomiarem temperatury jest trochę łatwiej, zakres jej zmian jest zdecydowanie mniejszy, a dodatkowo znamy go (0-100°C). Ze względu na to, że chciałem zastosować czujnik zarówno dla wody wychodzącej, jak i wchodzącej do kotła, to dla oszczędności portów mikrokontrolera zdecydowałem się na popularny czujnik DS18B20.

Zawsze samemu dolutowywałem przewód i zakładałem koszulki termokurczliwe na czujnik dla zabezpieczenia, ale tym razem zakupiłem na próbę gotowce i nawet jestem zadowolony z ich jakości.

W celu zamocowania czujników na rurach z wodą postanowiłem wykorzystać trytki. Początkowo obawiałem się o wpływ długiego oddziaływania temperatury poprzez rozciąganie, ale po paru miesiącach nic takiego nie zaobserwowałem, więc rozwiązanie zostaje na stałe.

Problemem okazało się coś innego. Po podłączeniu czujników i porównaniu wyników pomiarów z wskazaniami termometru wbudowanego w piec, okazało się, że mój czujnik zaniża o około 10°C. Rozważałem dwie możliwości. Jedną z nich był słaby kontakt czujnika z rurą, a drugą ochładzanie czujnika przez otoczenie. Po dodatkowym oczyszczeniu powierzchni rury i ponownym montażu czujnika nie zaobserwowałem żadnej poprawy, więc przyczyną problemu był wpływ chłodniejszego piwnicznego otoczenia. Postanowiłem osłonić czujnik i część rury przy pomocy foli aluminiowej i poprawa była od razu. Co prawda wskazania nadal nie są takie same, ale rozjazd nie przekracza już 5°C. Na pewno pomogła by jeszcze lepsza izolacja, ale nie będę konkurował z czujnikiem zamontowanym wewnątrz kotła.

Jako, że już i tak musiałem uruchomić mechanizm obsługi wielu czujników na magistrali 1-wire, to dołączyłem jeszcze jeden czujnik do pomiaru temperatury powierza w kotłowni.

Sterowanie pompą obiegu wody

Ponieważ mój stary sterownik pompy zaczyna nawalać to postanowiłem dodać tą funkcjonalność do mojego nowego urządzenia. Do wyboru miałem dwa rozwiązania, sterowanie przekaźnikiem, lub płynna regulacja na triaku. Jednak zdecydowałem się na proste sterowanie typu załącz/wyłącz z udziałem przekaźnika.

Z racji trwającego okresu grzewczego pompa nie została jeszcze podpięta, w myśl zasady, że jak coś działa to nie ruszać, ale na wiosnę na pewno się tym zajmę.

Zasilanie

Ze względu na to, że urządzenie ma sterować pompą to musiałem do niego doprowadzić napięcie sieciowe 230V, a dopiero w środku umieścić zasilacz 12V. W tym celu wykorzystałem zwykły zasilacz wtyczkowy, który został pozbawiony obudowy.

Elektronika

Jako obudowę całego urządzenia postanowiłem wykorzystać starą puszkę elektryczną, która walała się po piwnicy. Ze względu na to, że do upchnięcia sporo, a miejsca mało to zdecydowałem się elektronikę rozdzielić na dwie płytki PCB. Jedna zawiera wspominany wcześniej zasilacz oraz przekaźnik, a druga całe sterowanie.

Część zasilacza to w zasadzie głównie złącza rozdysponowujące poszczególne napięcia, oraz przekaźnik wraz z tranzystorem oraz diodą zabezpieczającą.

Znacznie ciekawszy jest schemat części sterującej.

Na schemacie pozaznaczałem poszczególne bloki funkcyjne:

  1. Układ stabilizujący napięcie dla mikrokontrolera i i towarzyszących mu bloków. Jako stabilizator wykorzystałem LF33.
  2. Moduł ESP12, który zawiera mikrokontroler ESP8266 oraz układy pamięci.
  3. Rezystory podciągające zapewniające pracę mikrokontrolera w odpowiednich trybach.
  4. Jest to część odpowiedzialna za sterowanie pompą. Sterowanie może się odbywać poprzez dwa sygnały, stan pinu GPIO12 lub zwarcie ręcznego Przełącznika podłączonego do złącza MANUAL. Diody D2 i D3 zabezpieczają układ przed wystąpieniem zwarcia.
  5. Ta część to wyjście magistrali 1-wire, wraz z odpowiednim rezystorem podciągającym
  6. Ta sekcja steruje pracą buzera, tranzystor odciąża pin mikrokontrolera, a złącze zworki umożliwia wybór napięcia zasilania dla buzera, dzięki czemu możemy go fizycznie ściszyć lub podgłośnić.
  7. Są to wyjścia sygnałów dla diod LED znajdujących się na przednim panelu.
  8. Wyjścia sygnałów dla układu MAX6675.
  9. Złącza zasilające dla czujników.
  10. wejście analogowe do przyszłego wykorzystania.

Powstała też mała część dodatkowa dla panelu informującego o pracy układu, który zawiera diody LED, buzer, oraz przełącznik umożliwiający ręczne załączenie pompy.

Obwody drukowane

W obudowie po puszcze elektrycznej obwody drukowane umieściłem jedna nad drugą, w formie kanapki.

Na podstawie wcześniej zaprezentowanych schematów stworzyłem trzy płytki drukowane.

Kształt płytek podyktowała przestrzeń wewnątrz puszki. Obwód drukowany pod zasilaczem ma dodatkowo otwory w celu wentylacji, a owalny otwór w płytce sterującej to przelot kablowy.

Poniżej zdjęcia jak to wyszło w rzeczywistości.

 

Program

Oprogramowanie powstało w środowisku PlatformIO przy użyciu biblioteki Arduino. Jego zadania to:

  • komunikacja z wykorzystanie protokołu MQTT
  • wykonywanie pomiarów temperatury
  • załączanie oraz wyłączanie pompy zależnie od wartości temperatur
  • alarmowanie buzerem sytuacji alarmowych takich jak przekroczenie bezpiecznych wartości temperatury
  • obsługa programowania OTA (over-the-air update)

Prezentowanie danych

Wizualną prezentację zebranych danych mogę oglądać w dodatkowej karcie mojego panelu wykonanego w środowisku NODE-RED z użyciem wtyczki dashboard.

Możemy zobaczyć chwilowe wartości temperatur, oraz jak zmieniały się one w przeciągu ostatnich 6 godzin. Dane są pobierane z bazy MYSQL, gdzie zapisuje je osobny moduł też w środowisku NODE-RED. Aby nie nagromadzać dużych ilości danych zapisywane są tylko wyniki przychodzące co 10 minut. Dopiero po przekroczeniu 25°C zapisywany jest każdy wynik pomiaru przychodzący protokołem MQTT, czyli co 1 minutę.

Dodatkowo można załączyć pompę, oraz włączyć lub wyłączyć tryb automatyczny. Dla bezpieczeństwa urządzenie posiada instrukcje w programie, która załącza pompę niezależnie od ustawień zawsze kiedy temperatura wody przekroczy 80°C.

Panel wymaga jeszcze małego rozwoju, na przykład o możliwość zmiany wyświetlanego przedziału czasu, aby można było zobaczyć dane historyczne.

Wnioski i plany na przyszłość

W chwili pisania artykułu jestem bardzo zadowolony z pracy urządzenia. Dzięki niemu ograniczyłem bardzo mocno ilość wizyt w piwnicy, oraz lepiej zrozumiałem niektóre zachowania, co pozwala na ogrzewanie domu przy mniejszym wysiłku.

Podczas użytkowania brakuje mi tylko jakiegoś dodatkowego guzika, którym mógłbym resetować alarm, aby nie wył cały czas po przekroczeniu dopuszczalnej temperatury, tylko abym mógł go wyłączyć gdy zejdę do piwnicy.

Do poprawy na pewno jest nadruk z opisami na panelu przednim. Drukowany był na bardzo kiepskiej drukarce, stąd kiepski wygląd. Dodatkowo fajnie jak by był za laminowany. Małe poprawki przydały by się w kodzie programu, na przykład zabezpieczenie na wypadek awarii czujników.

W planach mam jeszcze dodanie modułu mierzącego prędkość obrotową wentylatora w tym celu zostawiłem wolne wyprowadzenie wejścia przetwornika analogowo-cyfrowego.

Cała dokumentacja do projektu znajduje się pod adresem: https://github.com/PawelJanik/WiFi-Controller-central-heating

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.