X

Termostat elektroniczny

adam cs 08 Dec 2012 20:51
  • Positive voted Helpful post? (+26)
    Termostat elektroniczny

    Witam.

    Przedstawiam układ wykonany niedawno. Elektroniczny termostat z możliwością modyfikowania: temperatury zadanej, histerezy i trybu pracy (np. grzanie-chłodzenie). Modyfikacja parametrów odbywa się za pomocą trzech przycisków.

    Termostat elektroniczny Termostat elektroniczny Termostat elektroniczny


    Budowa:
    Zasilanie z zakresu 9-15V DC podawane jest najpierw przez diodę zapobiegającą uszkodzeniu przy odwrotnej polaryzacji zasilania. Dalej klasyka, parę kondensatorów i 78l05.
    Jednostka główna to mikrokontroler PIC16F628A, którego cena/możliwości są na przyzwoitym poziomie. Sterowanie przekaźnikiem 12V za pośrednictwem tranzystora wraz z diodą rozładowczą.
    Na płytce są przyciski odpowiednio: z lewej: "-", "OK", "+" nieopisane, ale to zrobię:) Każdemu naciśnięciu towarzyszy "pik" (buzzer).
    Czujnik temperatury to DS18B20, jak na razie wlutowany, ale zamierzam tam wstawić złącze śrubowe, aby można było go umieścić z dala od układu.
    Wyświetlacz LCD 2x8 nie jest na stałe, lecz można go w razie potrzeby wyjąć.
    Jest możliwość regulacji kontrastu (niebieski potencjometr).
    Ten kabelek to doprowadzenie zasilania podświetlenia LCD (wiem, wiem za długi :) ).
    Układ przy załączonym przekaźniku i z podświetleniem pobiera ok. 60mA.
    Schematu nie przedstawiam, bo nigdy go nie było. A wzór ścieżek to robiłem ręcznie w Eagle, mając na uwadze, co z czym połączyć.


    Oprogramowanie:
    Przy załączeniu zasilania pojawia się napis "tryb" 0 lub 1.
    0 oznacza, że jeśli nastawioną temp. = 50°C, to po przekroczeniu tej wartości załącza się przekaźnik, a wyłącza się dopiero przy temp. 50°C - histereza.
    Tryb 1 oznacza to samo tylko odwrotnie, np. sterowanie grzałką.
    Oczywiście można się nie bawić w wybór trybów, jeśli jest przekaźnik z jednym stykiem więcej, ale żeby nie przekładać kabelków, można to zrobić programowo.
    Po zatwierdzeniu "(OK") wyświetlana jest aktualna temperatura. Wejście i wyjście z menu to naciskanie OK. Klawiszami + i - można zmieniać nastawy.
    Nastawy zapisywane są w EEPROM-ie automatycznie po wyjściu z menu.

    Cały program zarówno "main", jak i obsługa 1-wire i LCD pisałem od podstaw w Assemblerze. W czasie pracy czuwa licznik WDT (watchdog). Jakoś nie jest specjalnie potrzebny, ale jak jest, to nie zaszkodzi.
    Wsad zajmuje ok. 50% pamięci Flash, tzn. jakieś 1000 słów 14-bitowych, to w przeliczeniu daje jakieś 1,7kB. Gdybym zadbał o oszczędność pamięci, to spokojnie można by się zmieścić w 1,4kB.


    Na koniec filmik przedstawiający układ w praktyce:


    Link


    Tak na przyszłość używaj przycisku pisownia zanim wyślesz treść.
    [Popak]
  • #2 08 Dec 2012 23:29
    Karol966
    Level 30  
    Helpful post? (+1)
    adam cs wrote:
    wzór ścieżek to robiłem ręcznie w Eagle mając na uwadze co z czym połączyć

    Jeżeli masz na myśli projekt PCB bez wcześniejszego schematu to dobrze Ci radzę szybko się tego oducz bo nawet nie wiesz kiedy a zemści się to na Tobie ;)
    Nawet z pozoru banalne schematy warto wcześniej wykonać. Późniejsza analiza układów bez schematów z intuicyjnymi nazwami NET'ów byłaby koszmarem
    Co do projektu, hmm termostat jak termostat , chociaż na PIC a nie na avr :D Wykonanie na przyzwoitym poziomie.
    Potencjometr do regulacji kontrastu raczej nadmiarowy - wystarczy zwykły PR, to tylko kontrast.
  • #3 09 Dec 2012 00:44
    miszcz310
    Level 19  
    Helpful post? (-1)
    @up
    ale to chyba nie jest PID, tylko taki prosty termostat P...
    To jak szukałeś i nie znalazłeś to lepiej było sobie samemu zrobić?
  • #4 09 Dec 2012 01:05
    adam cs
    Level 14  
    Topic author Helpful post? (+1)
    Quote:
    Jaką to ma realną histerezę. Jaka max moc. I ile kosztowało.


    Realną histerezę? Histerezę ma taką jaką ustawimy. Chyba że chodzi Ci o utrzymywanie stałej odchyłki niezależnie od obiektu (jego transmitancji). No ale to nie PID :)

    Co do mocy to w zależności od przekaźnika. W tym układzie przekaźnik jest na 6A przy 230V AC co daje maksymalnie ok 1,3 kW (odbiornik-czysta rezystancja).
    Jeśli to za mało to zawsze można wysterować inny (mocniejszy) stycznik tym przekaźnikiem.

    Co do kosztów nie liczyłem dokładnie ale za części chyba nie więcej jak 40zł.
  • #5 09 Dec 2012 01:21
    biomedyczny
    Level 26  
    Helpful post? (0)
    Tak chodziło mi o odchyłkę. Bo trudno było mi coś takiego zrobić. Ale wydarłem wówczas bebechy z inkubatora dziecięcego. Odchyłka miała być max 0,7*C przy nagrzewaniu drutem oporowym bodajże do 45*

    I do dziś nie widziałem PID 12V spełniającego wymogi.

    No ale to tak trochę odszedłęm od tematu
  • #6 09 Dec 2012 15:48
    oksana
    Level 10  
    Helpful post? (0)
    Jeśli to możliwe poproszę o schemat i wsad do procka
  • #7 09 Dec 2012 19:33
    SylwekK
    Level 27  
    Helpful post? (0)
    Ogólnie nieźle. Już fakt, że napisałeś soft w asemblerze zasługuje na plus :) Przyczepił bym się jednak do paru szczegółów:
    - nieszczęsny kabelek, do wyświetlacza lepiej by wyglądał jako... goldpin;
    - myślę, że zamiast przekaźnika triak by się lepiej sprawdził w tego typu urządzeniach;
    - nie wiem dlaczego, ale np. w moich projektach sterowników pomiar temperatury i realizacja zadania działa w RT nawet gdy zmieniam coś w menu czyli to od razu ma to odzwierciedlenie np. na przekaźniku.
    - menu wypadało by też zabezpieczyć jakimś timerem aby sam np. po 5-u sekundach "nietykania" guzików z niego wyszedł.
  • #8 09 Dec 2012 22:11
    romulus73
    Level 15  
    Helpful post? (0)
    Jak jest zabezpieczony układ przed uszkodzeniem czujnika i sklejeniem styków przekaźnika? Miałem już przygody ze sterowaniem termy (po przegrzaniu pękła, nawet bimetal nie rozłączył grzania a powinien), w końcu kupiłem PID Enda 4420, tyrystor i przekaźnik i bez znaczenia co się stanie układ się nie przegrzeje. Pid w standardzie ma alarm przy uszkodzeniu termopary, załącza SSR a po przekroczeniu tem. wyjście alarmowe odcina zasilanie tyrystora przez przekaźnik. Drogo ale niezawodnie bo drożej jest wymieniać lub spawać termy. Ale PID stabilnie podnosi temperaturę ma zadane aby w 2h uzyskać tem, dzięki temu nie ma szybkiego wzrostu ciśnienia w zbiorniku więc ma mniejsze naprężenia.
  • #9 10 Dec 2012 01:39
    adam cs
    Level 14  
    Topic author Helpful post? (0)
    ZRK-120 wrote:


    Osobiście udało mi się napisać ten program, ale w innym środowisku, o wiele prostszym niż wiersz poleceń.
    O to przykład: (program napisany na uniwersalny sterownik z wyświetlaczem 2*16 znaków)
    Program zajął ok 7% flash-a

    Dobra jeśli już mamy porównywać to jedziemy:

    1. Hmm ATMega32 jeśli tego typu urządzenie ma zużywać tylko 7% Flasha procesora to znaczy że procek jest za duży (nie ekonomiczne), dobrym do porównania jest np ATtiny2313.
    2. 7% to jakieś 2,24kB to w porównaniu do 1,7kB daje 30% większy wsad.
    Jeśli miałbym w tym interes to zbliżył bym się do 1,2kB co w uwzględnieniu do ogromnego wyboru PIC-ów daje oszczędność.
    http://www.portalnaukowy.edu.pl/index.php?option=com_content&view=article&id=196:cyfrowy-termometr-jednopunktowy&catid=60:mikrokontrolery-jednoukadowe&Itemid=121 widać dobry masz kompilator bo tutaj jest przykład wykorzystania AVR-ra tylko do odczytu temperatury z ds-a i wyswietlenie na LCD. Jak widać 2kB to minimum żeby coś wogóle odczytać nie mówiąc o jakimś menu i algorytmach termostatu.
    3. Na LCD widać miganie ->zlikwidować :)
    4. Zależy jak kto woli ale rozdzielczość 0,1'C przy dokładności DS-a 0,5 moim zdaniem mija się z celem chyba że wykorzystujemy ten czujnik do regulatora ciągłego np PID. Ponadto dochodzi zaokrąglenie, bo DS nie daje wyników z krokiem 0.1 tylko 1/2^n.
    5. Tak poza tematem AVR jest bardziej przystosowany do języków wysokiego poziomu niż PIC16, normalny stos, instrukcje 16-bitowe, więcej rejestrów typu akumulator.

    Podsumowując nie jest to rasowy regulator tylko normalny termostat więc środowisko programistyczne zależy tylko od twórcy podobnego urządzenia, jeśli działa to po co zmieniać:)

    SylwekK wrote:

    - nieszczęsny kabelek, do wyświetlacza lepiej by wyglądał jako... goldpin;
    - myślę, że zamiast przekaźnika triak by się lepiej sprawdził w tego typu urządzeniach;
    - nie wiem dlaczego, ale np. w moich projektach sterowników pomiar temperatury i realizacja zadania działa w RT nawet gdy zmieniam coś w menu czyli to od razu ma to odzwierciedlenie np. na przekaźniku.
    - menu wypadało by też zabezpieczyć jakimś timerem aby sam np. po 5-u sekundach "nietykania" guzików z niego wyszedł.


    - Kabelek; myślałem czy by nie zrobić podświetlenia z PWM-a i to jeszcze regulowanego z menu ale stwierdziłem że to przerost formy nad treścią, a tak to zawsze mozna sobie podświetlenie odłączyć:) ale fakt kabelek mógłby mieć 2cm a nie 20:)
    - Triak; Zależy czym sterujemy, ale po pierwsze przekaźnik może załączać zarówno AC jak i DC(małe i duże napięcie) i to galwanicznie odseparowane, po drugie triak by się bardziej przydał jeśli byłby to regulator ciągły (sterowanie kątem załączenia), po trzecie po to jest histereza żeby przekaźnik nie rozleciał się po mieciącu:)
    - RT; Może i by było lepiej ale czas bawienia się nastawami w stosunku do czasu normalnej pracy termostatu jest bliski zeru
    - menu; masz rację muszę poprawić program bo przy przerwaniu napięcia zasilania układ czeka na wybór trybu.
  • #10 14 Dec 2012 01:31
    netotron
    Level 26  
    Helpful post? (0)
    adam cs wrote:
    ..... widać dobry masz kompilator bo tutaj jest przykład wykorzystania AVR-ra tylko do odczytu temperatury z ds-a i wyswietlenie na LCD. Jak widać 2kB to minimum żeby coś wogóle odczytać nie mówiąc o jakimś menu i algorytmach termostatu.

    Swego czasu na szybko, napisałem programik na ATtiny2313 w BASCOM'ie
    zmieścił się w 2kB i to z ustawieniami progów na dwa DS18B20 :) Nie trzeba mieć dobrego kompilatora.
    Termostat elektroniczny
    przepraszam za jakość fotki
  • #11 06 Mar 2013 14:53
    epiotr
    Level 2  
    Helpful post? (0)
    Witam.
    Do adam cs. Czy możesz podesłać mi na priv schemat i program (nie musi być źródło, chcę wykonać egzemplarz do sterowania grzejnikiem 450W w łazience)?
    Pozdrawiam
  • #12 04 Dec 2013 16:38
    ciacho132
    Level 8  
    Helpful post? (0)
    Witam.
    Czy mógłbym prosić o wstawienie, albo wysłanie na priv schematu, wzoru ścieżki i programu?
  Search 4 million + Products
Browse Products