Elektroda.pl
Elektroda.pl
X
Relpol
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Dwuczujnikowy regulator temperatury v2.0

piotrek700 08 Cze 2011 22:15 9214 5
  • Dwuczujnikowy regulator temperatury v2.0

    Witam.
    Dziś chciałbym zaprezentować moją nową konstrukcję: Dwuczujnikowy regulator temperatury v2.0. Układ powstał w celu zastąpienia starego regulatora zaprezentowanego przeze mnie w tym temacie: Link. Układ ma za zadanie sterować zewnętrznym urządzeniem prądu przemiennego na podstawie odczytów temperatur z dwóch zewnętrznych termometrów.

    Zasada działania jest prosta: uP czyta temperatury z termometrów i jeśli różnica przekroczy zadaną wartość, uruchamiane jest urządzenie zewnętrzne. Układ posiada wiele opcji ustawianych przy pomocy 4 przycisków sterujących znajdujących się tuż pod ekranem.

    Funkcje:

    -możliwość ustawiania różnicy temperatur,
    -możliwość ustawienia szerokości histerezy,
    -możliwość ustawienia czasu włączenia urządzenia,
    -możliwość ustawienia czasu wyłączenia urządzenia,
    -możliwość ustawienia temperatury minimalnej,
    -możliwość ustawienia zegara czasu rzeczywistego,
    -możliwość zapamiętywania maksymalnej temperatury z poszczególnych czujników,
    -watchdog,
    -RTC podtrzymywany baterią 3V,
    -zapamiętywanie ustawionych parametrów w nieulotnej pamięci EEPROM.


    Budowa:

    Urządzenia bazuje na procesorze z rodziny AVR Atmega168 taktowany wewnętrznym oscylatorem 1Mhz. Procesor współpracuje z wyświetlaczem LCD WC-1602A0 2x16 na sterowniku HD44780, a konkretnie na klonie tegoż sterownika KS0066U. Rolę termometrów podłączonych przy pomocy interfejsu 1-WIRE pełnią czujniki Dallas 18B20. Układ posiada również zegar czasu rzeczywistego DS1307 który komunikuje się przy pomocy interfejsu I2C. RTC taktowany jest z zewnętrznego kwarcu 32.768kHz oraz posiada baterię do podtrzymywania czasu przy wyłączonym zasilaniu. Rolę elementu sterującego zewnętrznym urządzeniem wysokiego napięcia spełnia TRIAK BT138 odizolowany optoizolatorem MOC3041. Dwie diody kontrolne - zielona informuje o podłączeniu do zasilania regulatora, natomiast dioda czerwona mówi nam o działaniu urządzenia zewnętrznego (w moim przypadku pompki). Układ zasilany jest przez zasilacz impulsowy (5V) będący w czasach swojej świetności ładowarką do telefonu.

    Oprogramowanie do AVR zostało napisane w języku C w programie AVR Studio 4. Układ posiada zaimplementowaną obsługę watchdog'a oraz zapis ustawianych parametrów do pamięci EEPROM.

    Poniżej prezentuje kilka zdjęć, płytki oraz schemat. W załączniku umieszczam maski potrzebne do wytrawienia płytek, schemat oraz kod źródłowy.





    PS. Zamieszczone zdjęcia i zrenderowana płytka różnią się drobnymi szczegółami. Wynika to z błędów powstałych głównie z niedopatrzeń. Publikowana wersja płytki oraz oprogramowania jest pozbawiona błędów wychwyconych podczas budowy i testów.

    Dwuczujnikowy regulator temperatury v2.0 Dwuczujnikowy regulator temperatury v2.0 Dwuczujnikowy regulator temperatury v2.0

    Dwuczujnikowy regulator temperatury v2.0 Dwuczujnikowy regulator temperatury v2.0 Dwuczujnikowy regulator temperatury v2.0

    Dwuczujnikowy regulator temperatury v2.0Dwuczujnikowy regulator temperatury v2.0 Dwuczujnikowy regulator temperatury v2.0


    Link


    UWAGA!!! W układzie występują napięcia niebezpieczne dla zdrowia lub życia!


    Fajne! Ranking DIY
  • Relpol
  • #2 09 Cze 2011 00:28
    klops_mops
    Poziom 17  

    1. Cóż za przetwornica tam siedzi?
    2. W jaki sposób włączasz/wyłączasz urządzenie (chodzi o algorytm) o zadanej godzinie? Ciekaw jestem czy Twój układ nie będzie miał problemów gdy ustawimy godzinę włączenia o 22.00 a wyłączenia o 1.00 w nocy, a w między czasie zabraknie prądu (np. od 22.30 do 2.00). Czy Twój układ o 2.00 będzie nadal pracował, czy jest na tyle przemyślany, że się wyłączy, pomimo tego, że nie miał zasilania nawet o 1.00?

  • Relpol
  • #3 09 Cze 2011 01:15
    piotrek700
    Poziom 13  

    1. Przetwornica to 220AC->5DC 450mA wyciągnięta z ładowarki od telefonu komórkowego
    2. Żeby układ poprawnie działał godzina włączenia musi być mniejsza od godziny wyłączenia, jeśli jest odwrotnie układ nie włączy się teoretycznie nigdy(w sumie dopisać ten warunek to żaden problem). Całe oprogramowanie nie jest aż tak "idioto odporne" ponieważ urządzenie zostało stworzone nie do celów komercyjnych. Co do wyłączenia prądu. Zanik napięcia nie powoduje utraty wprowadzonych danych. Dane są zapisywane zaraz po ich zmianie w pamięci EEPROM a ładowane są przy starcie urządzenia.

  • #4 12 Cze 2011 17:24
    Fajfer2
    Poziom 20  

    Fajnie było by dodać regulator PID - chociaż dla jednej wielkości regulowanej.

  • #5 24 Lut 2013 14:17
    nsvinc
    Poziom 35  

    klops_mops napisał:
    W jaki sposób włączasz/wyłączasz urządzenie (chodzi o algorytm) o zadanej godzinie? Ciekaw jestem czy Twój układ nie będzie miał problemów gdy ustawimy godzinę włączenia o 22.00 a wyłączenia o 1.00 w nocy, a w między czasie zabraknie prądu (np. od 22.30 do 2.00). Czy Twój układ o 2.00 będzie nadal pracował, czy jest na tyle przemyślany, że się wyłączy, pomimo tego, że nie miał zasilania nawet o 1.00?


    Trafne pytanie. Autor urządzenia chyba go nie zrozumiał. Przez błędne dzialanie podobnego sterownika mialem bardzo niemiłe doświadczenia.
    Stan wyjscia w zegarach programowalnych powinien być 'bieżący'. Nie jeden if który sprawdza czy godzina zmiany jest równa godzinie bieżącej.
    Padłem ofiarą dzialania kalekiego algorytmu, który miał tylko takiego ifa.

    O co chodzi? Jesli w terminarzu sa wpisy: 19:00[on], 21:00[off], sterownik będąc mając zasilanie o 19:00, odczyta wpis i włączy wyjście, a stan wyjścia zapisze do pamięci nieulotnej.
    Zakladamy, że od 20:00 do 21:10 nie ma prądu i sterownik nie jest zasilany. O 21:10 zasilanie wróciło, sterownik odczytał z pamięci stan wyjścia - włączone. Włącza wyjście, i nie wyłączy go przez całą dobę, bo w ciagu tej doby nigdy nie wykona sie wpis 21:00[off]; w ciągu tej doby czas bieżący nigdy nie będzie równy 21:00.

    Dokladnie to samo dotyczy sytuacji odwrotnej - sterownik miał włączyć o zadanej godzinie, ale nie włączył, bo akurat był chwilowy zanik zasilania. I tak przez 24h od tego momentu wyjscie sie nigdy nie włączy...

    Takie dzialanie zegarów potrafi mieć naprawde tragiczne następstwa. Algorytm interpretacji terminarza powinien być przemyślany.
    Musi istnieć funkcja, która przekopie wszystkie wpisy czasowe w poszukiwaniu czasu 'najwiekszego mniejszego niz bieżący' i 'najmniejszego wiekszego niż bieżący', a następnie stwierdzi, jaki stan ma miec wyjscie w tym odcinku czasu...

  • #6 24 Lut 2013 16:00
    piotrek700
    Poziom 13  

    Nsvinc, dziękuję za poruszenie tego problemu. W moim urządzeniu w EEPROM zapisywane są tylko nastawy wprowadzane przez użytkownika. Zanik zasilania a następnie jego powrót nie spowoduje sytuacji opisanej przez Ciebie ponieważ aktualny czas jest sprawdzany na bieżąco z czasem podawanym przez RTC. Jeśli tylko bateria z RTC nie padnie to takiego zagrożenia nie ma.