A że lato było bardzo upalne, a kolektor skończyliśmy w wakacje zrobiłem na szybko prosty układ na wzmacniaczu operacyjnym LM358 i termistorze, który po prostu załączał pompę jeśli woda w kolektorze osiągnęła zadaną temperaturę (układ ten już jakiś czas temu opisywałem na blogu, można zobaczyć go TUTAJ). Ostateczny sterownik postanowiłem zrobić w zimę, tak aby wykorzystać udane lato i nie siedzieć w warsztacie ;)
W między czasie pojawiły się nowe pomysły m.in. dodanie drugiego czujnika temperatury, który mierzyłby również temperaturę wody w basenie, możliwość ustawienia maksymalnej temperatury wody w basenie oraz pomiar najwyższej i najniższej temperatury wody w basenie.
Płytka sterownika kolektora słonecznego do basenu |
Projekt płytki sterownika kolektora słonecznego |
Płytka ma wymiary ok. 10x9cm. W celu zaoszczędzenia miejsca niektóre rezystory i wszystkie tranzystory są w obudowach SMD. Rezystory mają obudowę 0603, a tranzystory SOT23. Na prawej stronie płytki znajduje się napięcie sieci tj. 230V AC, a na lewej stronie znajduje się bezpieczne napięcie, które jest odseparowane od sieci za pomocą transformatora 9V/2VA i zasila całą logikę.
Sterownik po załączeniu wyświetla temperaturę z dwóch cyfrowych czujników DS18B20 na dwóch wyświetlaczach. Na pierwszym jest wyświetlana temperatura z czujnika, który jest umieszczony w wodzie w basenie, a na drugim wyświetlana jest temperatura wody w kolektorze słonecznym. Na wyświetlaczach został umieszczony zielony filtr, który poprawia widoczność cyfr. Do poruszania się po funkcjach konfiguracyjnych służy przycisk "menu". Na pierwszym wyświetlaczu jest wyświetlana nazwa skrótowa funkcji (3 znaki), a na drugim wartości nastawione, maksymalne, minimalne itd.. Wartości zmienia się za pomocą dwóch pozostałych przycisków. Sterownik posiada następujące funkcje:
- Nastawa temperatury załączenia pompy (napis na wyświetlaczu: nAS) - jeśli temperatura wody w kolektorze słonecznym jest większą o zadaną wartość niż w basenie, to pompa zostaje załączona np. woda w basenie ma temperaturę 21*C, nastawiona wartość wynosi 6*C, więc jeśli woda wylatująca z kolektora będzie miała co najmniej temperaturę 27*C to pompa będzie pracować cały czas.
- Histereza (napis na wyświetlaczu: hIS) - można tutaj ustawić temperaturę wyłączenia pompy. Jeśli np. temperatura załączenia wynosi 25*C, a histereza 3*C, to pompa zostanie załączona przy temperaturze 25*C i wyłączona przy 22*C.
- Temperatura wody w basenie (napis na wyświetlaczu: tbS) - ustawia się tutaj maksymalną temperaturę wody w basenie np. jeśli jest ustawiona na 27*C, to kolektor słoneczny będzie grzał aż do uzyskania temperatury wody 27*C w basenie. Tutaj również programowo jest dodana histereza, która wynosi 0.5*C - woda w basenie się porusza i bez histerezy mógłby być efekt ciągłego załączania i wyłączania się pompy. Jeśli woda w basenie będzie miała zadaną temperaturę to sterownik przechodzi w tryb ochronny kolektora słonecznego. Jeśli w tym czasie temperatura wody w kolektorze wzroście do 50*C to pompa obiegowa wody zostanie załączona, tak aby kolektor słoneczny został schłodzony. Wyłączenie pompy wodnej w tym trybie nastąpi przy temp. 45*C (histereza 5*C).
- Ilość czujników na magistrali 1Wire (napis na wyświetlaczu: ILE) - wyświetla ilość widocznych cyfrowych czujników DS18B20.
- Najwyższa temperatura wody w kolektorze (napis na wyświetlaczu: tc-) - wyświetla najwyższą zanotowaną temperaturę wody w kolektorze.
- Najwyższa temperatura wody w basenie (napis na wyświetlaczu: tb-) - tak jak poprzednio, ale dla basenu.
- Najniższa temperatura wody w basenie (napis na wyświetlaczu: tb_) - wyświetla najniższą zanotowaną temperaturę wody w basenie.
Wszystkie powyższe wartości zapisywane są do pamięci EEPROM. Pomiar temperatur najwyższych i najniższych dokonywany jest z różnicą 0.1*C. Ta sama dokładność obowiązuje przy porównywaniu temp. z obu czujników. Jeśli będziemy w którejś z wyżej wymienionych funkcji i przez 10s nie zostanie wciśnięty żaden przycisk to automatycznie program powraca do funkcji głównej - wyświetlającej aktualną temperaturę wody z dwóch czujników DS18B20. Poniższa grafika pokazuje jak wyglądają komunikaty w rzeczywistości:
Wygląda komunikatów na wyświetlaczach |
Ponadto, jeśli jesteśmy w głównej funkcji - wyświetlającej aktualną temperaturę z dwóch czujników DS18B20 to mamy do dyspozycji dodatkowe funkcje przycisków dodaj i odejmij. Na przycisku odejmującym znajduje się też tryb ręczny. Po wciśnięciu przycisku na pierwszym wyświetlaczu wyświetla się napis "on", a na drugim odmierzany jest czas, który ustawiony jest na 2 min. Czas na wyświetlaczu wyświetla się w sekundach. Przez ten czas przekaźnik jest załączony. Po upływie tego czasu program przechodzi do funkcji głównej. Można też anulować tryb ręczny naciskając jeszcze raz na ten sam przycisk.
Natomiast dodatkową funkcją przycisku dodającego jest możliwość zresetowania wszystkich zapisanych parametrów w pamięci EPPROM i wgrania domyślnych wartości. Aby wgrać ustawienia domyślne należy przytrzymać przycisk przez 3 sekundy. W tym czasie na pierwszym wyświetlaczu wyświetlany jest napis "rSt", a na drugim wyświetlany jest odmierzany czas 3s - w dół. Jeśli przycisk przytrzymamy przez 3s - aż do odliczania czasu to na drugim wyświetlaczu pojawi się napis "ok", który na wyświetlaczu siedmiosegmentowym wygląda tak: "ol-". Jeśli nie przytrzymamy przycisku przez 3s, dane nie zostaną zresetowane. Domyślne parametry są następujące:
- nastawa temperatury załączenia pompy: 6*C
- histereza: 3*C
- temperatura wody w basenie: 27*C
- reszta parametrów tj. maksymalna temperatura wody w kolektorze, basenie i najmniejsza temperatura wody w basenie również są resetowane.
Dodałem również blokady maksymalnych i minimalnych wartości, jakie można ustawić za pomocą przycisków. Temperaturę załączenia pompy wodnej można ustawić od 0*C do 30*C, histerezę od 0*C do 15*C, maksymalną temp. wody w basenie od 15*C do 35*C. W sterowniku działa również watchdog, który w razie zawieszenia się sterownika zresetuje go. Cały program zajmuje trochę ponad 4kB pamięci flash.
Widok na płytkę sterownika w obudowie |
Czujniki temperatury DS18B20 kupiłem w obudowie wodoodpornej. Jeśli nastąpi uszkodzenie czujnika to na wyświetlaczu pojawi się napis "Err". Na początku do przypisywania czujników od basenu i kolektora słonecznego stworzyłem prosty algorytm, który w funkcji main sprawdzał po załączeniu sterownika do prądu, który czujnik ma większą temperaturę i na tej podstawie przypisywał odpowiedni czujnik DS18B20 do kolektora i basenu. Czujnik z większą temperaturą = czujnik z kolektora. Ostatecznie jednak zdecydowałem się na wpisanie do sterownika podczas programowania na sztywno numerów identyfikacyjnych czujników. Teraz na pewno nie zostaną zamienione względem siebie, ale w przypadku awarii jestem zmuszony do ponownego podłączenia całego sterownika do komputera i wpisania ręcznie nowego numeru identyfikacyjnego czujnika. W przyszłości planuję zautomatyzować cały proces - tak, by można było sobie poradzić bez komputera ;)
Sterownik został przykręcony na 4 śrubach m4 do obudowy plastikowej z przezroczystym przodem, dzięki czemu można odczytać temperatury. Obudowa posiada stopień ochrony IP65. Wszystkie przewody zostały zadławione dławicami kablowymi.
EDIT: Zostałem zmuszony do wymiany zielonych wyświetlaczy z filtrem na czerwone. Okazało się, że w słońcu nie było na nich nic widać. Natomiast na czerwonych z czerwonym filtrem widoczność w słońcu jest dobra - temperaturę widać z ponad 10m.
Schemat:
Schemat sterownika kolektora słonecznego do basenu |
mikrokontroler Atmega8 | stabilizator napięcia LM7805 | dwa wyświetlacze LED potrójne - multipleksowane 0.56" | tranzystory: BC848, 6x BC857 | rezystory: 10K, 4.7K, 7x 2.2K, 1K, 8x 150 ohm | kondensatory: 470uF, 100uF, 10uF, 3x 100nF | dioda prostownicza 1N4007 | dioda LED 5mm | mostek Graetza | transformator 9V/2VA | gn. bezpiecznikowe - radiowe 20mm | przekaźnik JZC-32F-012-HS | gn. ARK | gn. kanda 10pin - ISP | 3x tactswitch | dwa cyfrowe czujniki temperatury DS18B20.
Naprawdę bardzo fajnie napisano. Jestem pod wrażeniem.
OdpowiedzUsuń