Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Termometr wraz z alarmem do CO

cugi253 03 Nov 2010 22:46 27543 36
Computer Controls
  • Termometr wraz z alarmem do CO


    Witam, termometrów na tym forum wiele, ale może komuś się przydać gotowy projekcik.

    Chciałem zaprezentować wam termometr z alarmem do centralnego ogrzewania. Układem steruje procesor ATMEGA8, a za pomiar temperatury odpowiedzialne są 3 cyfrowe czujniki DS18b20 w obudowie TO-92. Zakres temperatur mierzonych od -55°C do +125°C z dokładnością 0,5°C.Termometr posiada także funkcje termometru temperatury zewnętrznej i wewnętrznej.
    Termometr pomaga mi nie zagotować glikolu w instalacji CO z kotłem na paliwa stałe. Zagotowanie wody było by dość niepożądane gdyż instalacja( doprowadzenia od rozdzielacza do grzejników) wykonałem z rury PP STABI.
    Pomiar temperatur przedstawiany jest na wyświetlaczu LCD 2*16 ze sterownikiem HD44780. Termometr po przekroczeniu temperatury 65 °C włącza alarm, następny po przekroczeniu 75 °C, 82 °C oraz ostatni alarm przy temperaturze 88 °C. Alarmy są sygnalizowane poprzez miganie diody o mocy świetlnej 2000mcd( w czasie sygnalizacji wieczorom ściana na która pada światło jest cala czerwona wiec nie da się nie zauważyć:)) oraz poprzez dźwięk o zmiennym natężeniu generowany przez dwa buzzery. Wraz z temperaturą alarmową dźwięk jest głośniejszy i mniej przyjazny dla ucha. W programie jest ustawiona histereza rzędu 2-3 °C aby w czasie wahania temperatury alarm nie włączał się bezpodstawnie. Wyjątkiem jest pierwszy alarm gdzie różnica wynosi 15 oC.
    Wyłączyć alarm można na dwa sposoby. Pierwszym jest przytrzymanie przycisku chwilowego na 50ms i wtedy dany alarm włączy się dopiero po obniżeniu temperatury o wartość histerezy. Następną opcja wyłączenia alarmu jest samoczynne wyłączenie gdy temperatura spadnie poniżej progu alarmowego. Wtedy wartości histerezy nie działają i buzzer włącza się po każdorazowym przekroczeniu temperatury.

    Termometrem steruje dość drogi jak na jego możliwości procesor ATMEGA8, a kod programu został napisany w Bascom-AVR. Kod jest chyba strasznie nieprofesjonalnie napisany bo zajął mi aż 44% pamięci procesora. W C na pewno ten program by zmieścił sie w 20 linijkach ale niestety nie zdążyłem się go naumieć. W Bascomie tez jestem na początku ale już trochę czaje:P Program został napisany na podstawie pomocy kolegów z forum, a sam odczyt temperatury na podstawie informacji od kolegi pod nickiem Duch.

    Termometr wraz z alarmem do CO Termometr wraz z alarmem do CO
    Termometr wraz z alarmem do CO
    Tutaj filmik działania najcichszego alarmu( zmiana temp. alarmowej do 27°C)




    Tutaj filmik przedstawiający działanie całego programu oraz płytkę testowa i programator.




    Niestety poprzez pomyłkowe odwrotne podłączenie VSS i VDD do wyświetlacza uległ przegrzaniu jego sterownik. W wyniku wyświetlacz wyświetla tylko na połowie ekranu. Ale już w drodze jest nowy:) Jak założę obudowę, nowy LCD to zrobię nowe foty już na ścianie:)

    Udostępniam kod źródłowy( komentarze mogą być trochę poprzesuwane gdyż jak dopisywałem coś komentarz zostawał w linijce a komenda przeskakiwała niżej;/)
    Jak by ktoś był zainteresowany projektem płytki w eaglu to mogę przesłać. Trzeba ją jeszcze sprawdzić bo ją w trakcie składania troszkę modyfikowałem( nie jestem pewny czy wszystkie poprawki naniosłem)



    Schemat:
    Termometr wraz z alarmem do CO


    Płytka( tak jak pisałem nanosiłem w czasie tworzenia jeszcze poprawki, mam nadzieje ze o żadnej nie zapomniałem. Ale schemat jest tak prosty wiec myśle ze każdy dla pewności może sobie taka zrobić wg schematu).

    A tutaj panel przedni i reszta:

    Cool? Ranking DIY
    About Author
    cugi253
    Level 16  
    Offline 
    cugi253 wrote 334 posts with rating 264, helped 1 times. Been with us since 2008 year.
  • Computer Controls
  • #2
    saly
    Level 32  
    Wspominasz że w CO masz glikol, jakie są tego plusy, poza niższą temperaturą zamarzania.
    Sam alarm to fajana sprawa sam muszę się w niego wyposażyć bo kilka razy w miesiącu gotuje wode na piecu.
    Przydała by sie jeszcze obudowa.
  • Computer Controls
  • #3
    Fazi87
    Level 24  
    @saly plusem glikolu jest np wyższa od wody temperatura wrzenia, w układach cwu z wykorzystaniem ogrzewaczy solarnych wykorzystuje sie glikol z właśnie tego powodu.
  • #4
    januszc
    Level 15  
    Quote:

    Lcd " PIEC " ; Ss ; Chr(0)




    If I3 >= 650 Then ' jezeli temp i3> 600 to...
    If Flaga2 = 0 Then

    Lowerline

    Lcd " !!PIEC!!" ; Ss ; Chr(0)


    Kocioł - nie Piec
  • #5
    djkomprez
    Level 21  
    Ja bym to zrobił ciut inaczej :) Dałbym wyświetlacz ledowy
    (bardziej widoczny z daleka i w nocy) i dodatkowo
    zrobił jakieś zabezpieczenie przez zawieszeniem proca
    (watchdog) inaczej nie ufałbym do końca takiemu układowi ;)

    Kod widzę że zaczerpnięty od kolegi Duch :P wiem bo sam z niego
    korzystałem nie raz :)

    Ogólnie pomysł dobry ale pasowało by jednak dorobić jakieś zabezpieczenie
    przed przegrzaniem pieca (w stylu domykacza wlotu powietrza)
  • #6
    tmf
    Moderator of Microcontroller designs
    Fazi87 wrote:
    @saly plusem glikolu jest np wyższa od wody temperatura wrzenia, w układach cwu z wykorzystaniem ogrzewaczy solarnych wykorzystuje sie glikol z właśnie tego powodu.


    Bajki. W instalacji solarnej stosuje się glikol ponieważ zimą jest ona narażona na zamarzanie. Wyższą temp. wrzenia załatwia ciśnienie. Już dla 2ATM woda ma temp. wrzenia ok. 120 stopni. Podczas, gdy 60% glikol pod ciśnieniem 1ATM ma zaledwie 106 stopni. Nawet 100 stopni jest wystarczające w przypadku instalacji wykonanej w plastiku. 120 stopni nie da się praktycznie osiągnąć nawet w instalacji solarnej - dla takiej temp. absorbera ilość wypromieniowanej energii staje się równa zaabsorbowanej. Trzebaby stosować specjalne powłoki. Co nie ma sensu, bo sprawność takiej instalacji jest najwyższa dla niskich temperatur absorbera.

    Co do układu - gratuluje udanego układu. To zawsze cieszy. Ale na twoim miejscu przemyślałbym to zabezpieczenie. Zabezpieczenie musi być niezawodne, czyli max. proste. To co zrobiłeś można zrobić na zwykłym komparatorze - taki układ będzie zdecydowanie bardziej niezawodny niż układ na mikrokontrolerze. Oczywiście nie będzie tak atrakcyjny, ale przecież nie o to chodzi :) Ew. dla bezpieczeństwa do twojego układu dodałbym niezależną gałąź analogową z dodatkowym czujnikiem, nastawioną na najwyższą dopuszczalną temperaturę. Taka redundancja dramatycznie zwiększyłaby bezpieczeństwo, bez istotnej komplikacji układu.
  • #7
    Karol966
    Level 31  
    Quote:
    W C na pewno ten program by zmieścił sie w 20 linijkach


    Bez przesady. W 20 linijkach możesz dołączyć nagłówki, ustawić wejścia/wyjścia, zainicjalizować LCD i zrobić szkielet maina co najwyżej z while(1) :P
    Procesory jak podrożały tak nie zamierzają potanieć :( Można ew kupić wersję SMD za 5zł taniej niż DIP. Kiedyś DIP nie przekraczał 5zł. Piękne czasy to były.... :(
  • #8
    SylwekK
    Level 32  
    cugi253 wrote:
    Kod jest chyba strasznie nieprofesjonalnie napisany bo zajął mi aż 44% pamięci procesora.

    Tak to już jest na początku :D Zaczniesz myśleć o optymalizzcji jak Ci będzie pamięci brakować.
    Kiedyś na studiach mieliśmy napisać program do obsługi klawiatury matrycowej w asemblerze dla 8051. Nie wiem dlaczego ale każdy robił to w teoretycznie najprostszy sposób (warunki, skoki) co przeciętnie zajmowało około 100 -150 lini kodu. U mnie ten kod zajmował coś około... 20-25 lini i można było jeszcze dowolnie przemapowywać klawiaturę - trzeba było zobaczyć minę wykładowcy :D - piszę o tym bo czasem trzeba pójść zupełnie inną drogą niż tą, którą obierają wszyscy.

    Porada tak na szybko - zwróć uwagę, że masz tam powtarzające się prawie identyczne fragmenty kodu. Jak chcesz go zoptymalizować to umieść powtarzający się fragment jako podprogram i podmieniaj tylko liczby za pomocą zmiennych. Myślę, że ten programik spokojnie by się zmieścił chociażby w Attiny 2313, czy Attiny 24, które to posiadają 2kB pamięci i są dużo tańsze niż atmega8. Wyprowadzeń też powinno wystarczyć.
  • #9
    Anonymous
    Anonymous  
  • #10
    Fazi87
    Level 24  
    tmf wrote:
    120 stopni nie da się praktycznie osiągnąć nawet w instalacji solarnej


    A tutaj ja się nie zgodzę, kolektory próżniowe dość znanej firmy w niektórych sytuacjach mogą osiągnąć więcej... Ale masz rację, chodziło mi o zakres temperatur a nie wspomniałem o temp. zamarzania.

    A wracając do tematu, gdzie zostały umieszczona czujniki?
  • #11
    lionel
    Level 11  
    Niezłe jeżeli chodzi o cel. Szybka informacja o stanach temeperatur w systemie CO oraz sygnalizacja stanów alarmowych.
    Ps: Należy jednak dopracować tą pajęczyne bo to jest model projektu i nie wygląda to narazie ciekawie. Myśle ze kolega dopieści to wszystko i zrobi wrzutę całości.
  • #12
    drucik57
    Level 12  
    Czy szanowny Pan mógłby udostępnić schemat bo nie mogę go wydedukować z programu.
    Z góry dziękuję i życzę wielu sukcesów w konstrukcjach.
  • #13
    cugi253
    Level 16  
    W instalacji jest glikol, stosuje go głównie z powodu możliwości zamarznięcia instalacji. Nie jest to czysty glikol a mieszanina: glikol (-37 oC)60% oraz resztę 40% wody. Co do bezpieczeństwa tego układu to traktuje go raczej jako informacje o stanie kotła gdyż nie chce mi się nieraz schodzić do piwnicy. Kocioł jest dodatkowo zabezpieczony miarkownikiem ciągu. Schemat już wrzucony

    Kolego lionel a ta plątanina kabli to tylko płytka testowa na której układ tworzyłem. Na pierwszym zdjęciu jest gotowa płytka z minimum kabli( czyli zasilanie oraz wyprowadzenia na czujniki)
  • #14
    trance123
    Level 21  
    Mam pytanie czy zagotowanie glikolu bądź wody to nie jest po prostu strata energii ?.Masz alarm twojego projektu i nic do niego nie mam.Lecz nie lepiej skupić się na tym aby ta woda sie nie zagotowała ?.Słyszałem, że jeśli często gotujesz wodę to masz po prostu źle dobrany kocioł. Gdybym u siebie w domku jednorodzinnym zagotował wodę to pewnie było by po 30 stopni celcjusza... Lepiej zapobiegać niż leczyć czyż nie ? ;].Ile masz stopni w pokojach przy zagotowaniu się glikolu ?
  • #15
    cugi253
    Level 16  
    Nie mam pojęcia ile mam przy zagotowaniu glikolu bo po prostu nigdy nie zagotowałem jeszcze ani wody(gdyż tez ja miałem w instalacji początkowo) ani glikolu. Piec jest dobrze dobrany do powierzchni ogrzewanej. Dobrze dobrany piec wcale nie eliminuje możliwości zagotowania czynnika.
  • #16
    leon1313
    Level 14  
    Pomysł fajny, gorzej z oprogramowaniem. Poczytaj o funkcjach i procedurach, unikaj ( czytaj: wywal wszystkie) instrukcji WAITMS. Przy rozruchu ok, ale potem już "be". Inna sprawa: Źle przeprowadzasz detekcję Id DS-ów.
  • #17
    Duch__
    Level 31  
    leon1313 wrote:
    Poczytaj o funkcjach i procedurach, unikaj ( czytaj: wywal wszystkie) instrukcji WAITMS. Przy rozruchu ok, ale potem już "be". Inna sprawa: Źle przeprowadzasz detekcję Id DS-ów.


    To prawda. Teraz tak patrzę na ten kod i nie mogę uwierzyć że takie głupoty pisałem kiedyś :D, ale widać są osoby które korzystają jeszcze z mojego kodu.
    Program ten ma wadę że czujniki dobiera sobie losowo (czyli piec nie zawsze będzie piecem).

    Teraz to takie rzeczy robię z wykorzystaniem eeproma i zapisem do niego numeru ID każdego czujnika. Sama procedura odczytu dla nie ważne jakiej ilości czujników to 10 linijek kodu.

    Do autora.
    Mogłeś poczekać na nowy wyświetlacz a nie wrzucać byle co... :|
    Popraw pierwszy post, bo nie działa pierwszy filmik.
  • #18
    Anonymous
    Level 1  
  • #19
    pogi13
    Level 14  
    czy jeśli chce zrobić z tego termometr domowy to wystarczy że usunę ten fragment programu ?

    If I3 >= 650 Then ' jezeli temp i3> 600 to...
    If Flaga2 = 0 Then

    Lowerline

    Lcd " !!PIEC!!" ; Ss ; Chr(0)
    Sound Speaker , 329 , 63 ' nuta dzwiekowa
    Sound Speaker , 369 , 99 ' nuta dziwekowa
    Portb.2 = 1 'zapalamy diode
    If Pinb.1 = 0 Then Set Flaga2 'pod pinem b1 jest przycisk switch
    Waitms 250
    Toggle Portb.2

    Waitms 50 'kasujemy alarm przytrzymujac go na minimum 50 ms
    End If
    End If
    If I3 < 500 Then Reset Flaga2






    If I3 >= 750 Then ' jezeli temp i3> 750 to...
    If Flaga1 = 0 Then
    Lowerline

    Lcd " !!PIEC!!" ; Ss ; Chr(0)
    Sound Speaker , 1975 , 50 ' nuta dzwiekowa
    Sound Speaker , 261 , 63 ' nuta dziwekowa
    Portb.2 = 1
    If Pinb.1 = 0 Then Set Flaga1 'pod pinem b1 jest przycisk switch
    Waitms 250
    Toggle Portb.2
    Waitms 50 ' kasujemy alarm przytrzymujac go na minimum 50 ms
    End If
    End If
    If I3 < 710 Then Reset Flaga1




    If I3 >= 820 Then ' jezeli temp i3> 820 to...
    If Flaga = 0 Then
    Lowerline

    Lcd " !!PIEC!!" ; Ss ; Chr(0)
    Sound Speaker , 587 , 32 ' nuta dzwiekowa
    Sound Speaker , 659 , 26 ' nuta dziwekowa
    Portb.2 = 1
    If Pinb.1 = 0 Then Set Flaga 'pod pinem b1 jest przycisk switch
    Waitms 250
    Toggle Portb.2
    Waitms 50 ' kasujemy alarm przytrzymujac go na minimum 50 ms
    End If
    End If
    If I3 < 800 Then Reset Flaga




    If I3 >= 880 Then ' jezeli temp i3> 880 to...
    If Flaga3 = 0 Then
    Lowerline

    Lcd " !!PIEC!!" ; Ss ; Chr(0)
    Sound Speaker , 587 , 32 ' nuta dzwiekowa
    Sound Speaker , 587 , 30 ' nuta dziwekowa
    Portb.2 = 1
    If Pinb.1 = 0 Then Set Flaga3 'pod pinem b1 jest przycisk switch
    Waitms 250
    Toggle Portb.2
    Waitms 50 ' kasujemy alarm przytrzymujac go na minimum 50 ms
    End If
    End If
    If I3 < 870 Then Reset Flaga3 'Zmieniamy znacznik jeśli temp spadnie ponizej 87st.C
  • #20
    tmf
    Moderator of Microcontroller designs
    101pawel wrote:
    cugi253 wrote:
    Piec jest dobrze dobrany do powierzchni ogrzewanej. Dobrze dobrany piec wcale nie eliminuje możliwości zagotowania czynnika.


    Dobór kotła CO, nazywany tutaj absolutnie nieprofesjonalnie piecem, absolutnie eliminuje możliwość zagotowania czynnika grzewczego. Wyjątkiem mogą być stany awaryjne instalacji sieciowej.
    Ten termometr NIC nie daje, bo ten glikol zacznie Ci się gotować podczas nieobecności domowników. Od dobrych 20 lat kociołkami CO steruje się poprzez elementarne układy regulacji odpowiadające na zmiany temperatury wielkością dostarczanego do paleniska powietrza i ewentualnie zmianami prędkości obiegu wody w instalacji. Napisałem wody, bo właśnie woda jest jedynym optymalnym czynnikiem grzewczym w instalacji bezsieciowej - takiej w której nie następuje jego ubytek. Woda w niej praktycznie nie paruje, nie stwarza zagrożenia pożarowego i co ważniejsze - nie truje.


    Generalnie masz rację, ale nie zgodzę się, że dobrze dobrany kocioł eliminuje ryzyko zagotowania wody. Kocioł zawsze ma nadmiar mocy w stosunku do grzejników, chociażby dlatego, żeby szybko przygotować CWU. Kotłem o mocy 2-5kW ciepłą wodę miałbyś następnego dnia :) A więc zawsze istnieje możliwość zagotowania czynnika - poniekąd dlatego przepisy nakładają obowiązek specyficznego projektowania instalacji z kotłami na paliwo stałe - m.in. stosowanie zaworów bezpieczeństwa, lub instalacji otwartej.
    Nie zgodzę się też, że woda jest optymalnym czynnikiem - w przypadku wyjazdu domowników i awarii kotła dodatek glikolu zabezpiecza przed zamarznięciem i rozsadzeniem instalacji. Glikol propylenowy stosowany w instalacjach jest też zdecydowanie mniej toksyczny niż etylenowy, stosowany w samochodach, więc argument z truciznami też jest lekko chybiony.
  • #21
    Dj_Pele
    Level 16  
    No widzę ze kolega otrzymał już nowy wyświetlacz moim zdaniem lepszy od poprzedniego pod względem czytelności, no to teraz jeszcze jakaś obudowa i montaż w miejscu przeznaczenia.
  • #22
    cugi253
    Level 16  
    Tez tak myślę ze wyświetlacz ten jest dużo czytelniejszy, chyba dlatego że niebieskie diody lepiej świeca.

    A co do opisu to racje macie ze to kocioł a nie piec:) Ale już poprawione.

    Do kolegi pogi13
    Wystarczy usunąć kod alarmu, dokładnie to co zaznaczyłeś.

    Do kolegi 101Pawel

    Może i czysty glikol jest trujący, łatwopalny, ma wady jak wszystko. Ja mam wlany akurat płyn GLIKOSPEC który jest rozcieńczony wiec nie ma się co bać o zapłon, po drugie płyn też ma zalety nie zamarza i dodatkowo ma dodatki przeciwkorozyjne. A współczynniki przewodzenia ciepła będą bardzo zbliżone, wiec myślę ze warto zainwestować w glikol.
    Co do tego ze "termometr nic nie daje" to może i nie daje w sensie ze zabezpiecza. Ale mi to nie jest potrzebne bo tak jak pisałem wcześniej zamontowałem w piecu miarkownik powietrza. Termometr spełnia tu funkcje informacyjną po to żeby nie musiał iść do piwnicy sprawdzić jaka jest temperatura, kiedy przymknąc komin, drzwi wlotowe powietrza( bo wiadomo do rozpalania trzeba je otworzyć bo miarkownik nie otworzy tak szeroko wlotu). A funkcja alarmu też jest jakimś tam dodatkowym zabezpieczeniem "w razie czego"
  • #23
    gts1991
    User under supervision
    Zamiast dawać opornik 10k do podciągnięcia przycisku do Vcc zastosuj będzie taniej :) :
     
    $regfile = "m8def.dat"
    Config Pinb.0 = Input 
    
    S1 Alias Pinb.0 
    
    Set Portb.0    <--sprzętowe podciągniecie nóżki do Vcc  
    Do
    .....
    Loop
    end 
    
  • #24
    Anonymous
    Level 1  
  • #26
    cugi253
    Level 16  
    Ja mam na odcinku 5 metrów przewodu i jest dobrze, nie wiem jak dalej, kabel 2*0,5mm2, ale widziałem że ludzie z tego forum wykonywali czujniki na 20 metrowym przewodzie. Podobno lepiej jak przewód jest nie ekranowany.
  • #27
    tmf
    Moderator of Microcontroller designs
    101pawel wrote:
    tmf wrote:

    Nie zgodzę się też, że woda jest optymalnym czynnikiem - w przypadku wyjazdu domowników i awarii kotła dodatek glikolu zabezpiecza przed zamarznięciem i rozsadzeniem instalacji.


    O ile rozpatrujemy stany graniczące z abstrakcją. By temperatura spadła do zera -- w normalnym domu - spełniającym dolne granice norm termoizolacji, potrzeba przy braku ogrzewania i temp. zewnętrznej w granicach minus kilkunastu stopni, nie godziny i nie doby. Potrzeba od kilku do kilkunastu dni. Może też się zdarzyć, że temperatura zamarzania wody nie zostanie osiągnięta nigdy - taka sytuacja występuje w każdym domu podpiwniczonym.
    Z mojej strony kończę temat glikol vs woda.


    Przecież nie mówiłem o wyjściu do pracy tylko wyjeździe. Wyobraź sobie, że zimą jedziesz na 2 tyg. na narty, po powrocie masz sajgon. Nie zgodzę się też z tym, że w przypadku domu podpiwniczonego woda nigdy nie zamarznie - kiedyś rozsadziło mi licznik w piwnicy bo zamarzł - był pod schodami przy ścianie. Szczęście, że nie miałem wtedy wody w podłogówce. Samo zamarznięcie instalacji osobiście nie przerabiałem, ale znam osobiście 2 osoby, które miały taki problem. Jedna z kotłem gazowym, który się wyłączył po detekcji zbyt niskiego ciśnienia gazu - jak zapewne wiesz odblokowanie kotła w takiej sytuacji wymaga interwencji człowieka. Kolega był wtedy na nartach, 2 tyg. zima była taka sobie, ale regularnie było po -10.

    Co do długości przewodu na 1-wire - limitem jest pojemność, nie pamiętam już dokładnie jak dallas w nocie pisał, ale to było coś koło 1-4nF. Sam testowałem na skrętce UTP5e na 150m i działało bez problemów - sterował tym jeszcze poczciwy AT90S2313 :) Jechałem przez 2 tyg. na około z odczytami i testowaniem CRC - w sumie miałem może 1 błąd CRC. Przy czym na prawdziwym układzie, a nie testowym raczej nie odważyłbym się podłączyć bezpośrednio pin IO procesora do przewodu o takiej długości - większa burza i bach...
  • #28
    cugi253
    Level 16  
    Ale magistrale można zabezpieczyć dwoma diodami Zenera, o ile pamiętam na stronie dallas'a jest nawet schemat jak podłączyć diody. Tylko tak myśle czy trzeba zabezpieczac przy długości 5 metrów?
  • #30
    Railox
    Level 11  
    Mniemam, że diody Zenera byłyby po to, by zbyt wysokie napięcie nie uszkodziło urządzenia. Ale wątpię, żeby podczas burzy taka zenerka coś dała. Poza tym przy 5m kablu? W takiej sytuacji nie ma to raczej sensu...