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.

Dwukanałowy cyfrowy regulator temperatury

KRZYSIEK_P_K 06 Cze 2010 15:38 14093 19
  • Dwukanałowy cyfrowy regulator temperatury
    Witam, chciałbym zaprezentować konstrukcję termostatu którą wykonałem na zaliczenie przedmiotu na studiach.

    Do budowy termostatu wykorzystałem: atmega8, cyfrowe czujniki temperatury DS18B20 oraz wyświetlacz 2x16 znaków.

    Program:
    Program do atmegi napisany jest w asemblerze. W programie zaimplementowana jest obsługa magistrali 1wire do obsługi czujników. Urządzenie nie wyszukuje ani nie rozpoznaje numerów identyfikacyjnych czujników, każdy czujnik podłączony jest do innego pinu mikro kontrolera. Można w ten sposób podłączyć tylko dwa czujniki do regulatora ale to w tym projekcie w zupełności wystarcza. Dodatkowo takie rozwiązanie znacznie uprościło program.
    Okazało się, że implementacja magistrali 1wire oraz obsługa DS18B20 nie jest aż tak skomplikowana jak by się wydawało. Większe problemy miałem z obsługą w asemblerze standardowego wyświetlacza LCD 2x16.
    Pamięć atmegi zajęta w 100% i wszystko w asm :)

    Funkcje:
    W termostacie można zaprogramować 8 parametrów pracy:
    - tryb pracy, dostępne jest 5 trybów
    ----tryb 1 - dwa niezależne kanały chłodzące
    ----tryb 2 - dwa niezależne kanały jeden chłodzący jeden grzejący
    ----tryb 3 - dwa niezależne kanały grzejące
    ----tryb 4 - jeden kanał różnicowy chłodzący
    ----tryb 5 - jeden kanał różnicowy grzejący
    - T1 do T4 progi temperatur załączania lub wyłączania wyjść, w zależności od trybu pracy
    - Usterka I1, Usterka I2, programowanie akcji wyjścia po odłączeniu lub awarii czujnika
    - Podświetlanie wyświetlacza,
    ----włączenie podświetlania
    ----wyłączenie podświetlania
    ----włączenie podświetlania na 30s po naciśnięciu klawisza
    Parametry ustawia się w menu które dostępne jest po dłuższym przytrzymaniu klawisz enter. Podczas normalnej pracy na wyświetlaczu LCD wyświetlana jest aktualna temperatura i stan wyjść, w trybie 4 i 5 także różnica temperatur.
    Wszystkie parametry zapisywane są w pamięci EEPROM dzięki temu nie giną po zaniku zasilania.

    Budowa:
    Regulator zbudowany jest na płytce jednostronnej o wym 63x97mm, zaprojektowanej w EAGLE, wykonanej na zamówienie w profesjonalnej firmie.
    kilka elementów np uP znajduje się pod wyświetlaczem.
    Wyjścia termostatu to dwa przekaźniki 250V 16A, więc można pod nie spokojnie podłączyć nieco większe odbiorniki np. wentylator.
    Całość zasilana jest z 12V DC.

    Po wielu próbach i poprawkach programu regulator działa bez zarzutu. Całość budowałem ok 3 miesiące. Koszt to ok 60zł całość.

    Kilka zdjęć:
    Dwukanałowy cyfrowy regulator temperatury Dwukanałowy cyfrowy regulator temperatury Dwukanałowy cyfrowy regulator temperaturyDwukanałowy cyfrowy regulator temperatury
    W załączniku schemat (eagle 5.7), oraz widok płytki (pdf)
    Kodu całego programu nie opublikuję.


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • Relpol
  • #2 06 Cze 2010 16:28
    tragi
    Poziom 22  

    Bardzo ciekawy projekt, bardzo ładnie wykonany. Zwłaszcza płytka-widać że to profesjonalna robota a nie domowe warunki.

    Jeśli chodzi o programowanie wyświetlacza 2x16 w assemblerze, to bardzo fajnie i prosto opisane jest to w książce do kursu DSM-51, którą napisali Paweł i Piotr Gałka: "Podstawy programowania mikrokontrolera 80C51"

    Wprawdzie jest to książka przeznaczona do pomocy w programowaniu 80C51, ale samo programowanie w assemblerze sterownika wyświetlacza jest niezmienne.

  • Relpol
  • #3 06 Cze 2010 18:17
    Karol966
    Poziom 30  

    Witam. Jeżeli wyszło Ci 60zł razem z kosztem płytki to musiałeś za nią mało zapłacić. Możesz o tym napisać? Gdzie i za ile ?:)

    PS. Mi Politechnika Poznańska zwracała koszty za budowę projektu przejściowego i to nawet 2 razy tyle, ile Tobie wyszło ale płytkę musiałem wykonać w warunkach domowych (11x16 cm dwustronna).
    Co do rozmiaru kodu - 8kB na obsługę LCD + 1W + reszta to na prawdę dużo :)

  • #4 06 Cze 2010 19:22
    mrowaa
    Poziom 15  

    tragi napisał:


    Jeśli chodzi o programowanie wyświetlacza 2x16 w assemblerze, to bardzo fajnie i prosto opisane jest to w książce do kursu DSM-51, którą napisali Paweł i Piotr Gałka: "Podstawy programowania mikrokontrolera 80C51"

    Wprawdzie jest to książka przeznaczona do pomocy w programowaniu 80C51, ale samo programowanie w assemblerze sterownika wyświetlacza jest niezmienne.


    jak dla mnie to ta książka to dno. dużo lepsze opisy mozna znaleźć w Internecie. Co z tego że nauczy mnie obsługi wyświetlacza jeśli musze korzystać z gotowych podprogramow itp:)

    Projekt fajny i estetycznie wykonany. Tylko zastanawia mnie czemu tyle tej pamięci poszlo.

  • #5 06 Cze 2010 19:27
    krzysztofh
    Poziom 29  

    Sama płytka istotnie ładnie wykonana, ale lutowanie ...
    Mógłbyś oczyścić z płytkę z tych rozbryzgów cyny po lutowaniu. Dlaczego w ogóle one powstały?
    Niektóre pady są małe i po wierceniu niewiele zostaje na lutowanie. Miejsca jest dużo, więc lepiej by było je powiększyć.

  • #6 07 Cze 2010 13:04
    tmf
    Moderator Mikrokontrolery Projektowanie

    Ze strony elektronicznej i wykonania projekt naprawdę ładny. Mam pytanie o zaimplementowane mechanizmy regulacji. Jak wygląda algorytm? Zwykłe porównanie + histereza, czy coś bardziej wyrafinowanego, w stylu PID, czy adaptacyjny PID?

  • #7 07 Cze 2010 16:01
    biglolo94
    Poziom 16  

    Ładny projekcik :D
    Dobre wykonanie i co najważniejsze pomysł, ale mam dwa pytanka do autora:
    1. W jakiej firmie zamowies plytke i ile dałes???
    2. Jakiej wartości zastosowałeś rezystor przed tranzystorami ??

  • #8 07 Cze 2010 16:04
    Popak
    Moderator na urlopie...

    Witam
    Projekt ładny i widać staranność. Ale zauważyłem dwa niedociągnięcia :)
    Mianowicie brak diody zabezpieczającej tranzystory sterujące przekaźnikami i dlaczego dawałeś rezystory podciągające pod przyciski, jak można to zrobić programowo :)

    Pozdrawiam

  • #9 07 Cze 2010 17:40
    KRZYSIEK_P_K
    Poziom 10  

    Cytat:
    Witam. Jeżeli wyszło Ci 60zł razem z kosztem płytki to musiałeś za nią mało zapłacić. Możesz o tym napisać? Gdzie i za ile ?

    płytkę wykonałem w satland prototype, zamawiałem 3 szt zapłaciłem ok 22zł za sztukę, jes to najdroższa część urządzenia.
    pozostałe elementy to:
    wyswietlacz 13
    przekaźniki 4zł/szt.
    atmega8 5zł.
    czujnik 4zł/szt.
    reszta elementów max 10 zł większość z nich miałem w domu.
    Cytat:
    Co do rozmiaru kodu - 8kB na obsługę LCD + 1W + reszta to na prawdę dużo

    Cytat:
    Jak wygląda algorytm? Zwykłe porównanie + histereza, czy coś bardziej wyrafinowanego, w stylu PID, czy adaptacyjny PID?

    Algorytm to zwykłe porównywanie temperatury aktualnej z progami ustawionymi przez użytkownika. W czasie ustawiania progów temperatur program pilnuje aby:
    -nie przekroczyć zakresu czujników
    -temp załączania była wyższa niż temp wyłączania(tryb chłodzący) minimum o 0,5°C.
    Całe menu (8 parametrów i opcja wyjścia z trybu prog) wraz ze sprawdzaniem wprowadzonych parametrów uwzględniając tryb pracy zajęło więcej miejsca w pamięci niż program główny.
    Program główny to obsługa czujników- odczyt temperatury konwersja danych,
    wyświetlanie danych na wyświetlaczu. Oraz odpowiednie sterowanie wyjściami uwzględniając: odczytaną temp, tryb pracy i progi zaprogramowane przez użytkownika. Całość zajęła mi 8kB pamięci.
    Cytat:
    2. Jakiej wartości zastosowałeś rezystor przed tranzystorami ??

    2,2kΩ takie akurat miałem po sprawdzeniu okazało się że są odpowiednie.
    Cytat:
    Mianowicie brak diody zabezpieczającej tranzystory sterujące przekaźnikami i dlaczego dawałeś rezystory podciągające pod przyciski, jak można to zrobić programowo

    Diody nie dodałem ponieważ przekaźniki są zasilane z 12V a cała reszta jest po stabilizatorze na 5V, stwierdziłem że stabilizator nie przepuści żadnych śmieci ;)
    co do rezystorów podciągających przy przyciskach to po prostu nie wiedziałem że można zrobić inaczej.

  • #10 07 Cze 2010 18:06
    Popak
    Moderator na urlopie...

    KRZYSIEK_P_K napisał:
    Diody nie dodałem ponieważ przekaźniki są zasilane z 12V a cała reszta jest po stabilizatorze na 5V, stwierdziłem że stabilizator nie przepuści żadnych śmieci ;)


    Diody daje się po to aby zabezpieczyły tranzystory przed uszkodzeniem, a dokładnie: Dioda zwrotna (zabezpiecza tranzystor przed ujemną polaryzacją oraz uniemożliwia przepływ prądu w kierunku przeciwnym niż przewodzi tranzystor)

  • #11 07 Cze 2010 22:04
    TReneR666
    Poziom 12  

    Obsluga wyswietlacza to jakies 2-3 strony kodu... no chyba, ze zaimplementujemy scrolowanie lewa, prawa i gora dol... chociaz tym i tak ciezko bylo by przekroczyc 2k.

  • #12 08 Cze 2010 17:14
    wijo
    Poziom 13  

    Na zaliczenie przedmiotu OK.
    Jeśli chcesz to zastosować do sterowania czymkolwiek to z głębi serca Ci to odradzam, najesz się tylko wstydu. Brak jakichkolwiek zabezpieczeń przed zakłóceniami, spowoduje zawieszanie się wyświetlacza bądź procesora kilka razy na godzinę.
    To jest obraz polskiej edukacji : 10 x teoria + 0 praktyki.

  • #13 08 Cze 2010 17:22
    Popak
    Moderator na urlopie...

    wijo napisał:
    Jeśli chcesz to zastosować do sterowania czymkolwiek to z głębi serca Ci to odradzam, najesz się tylko wstydu. Brak jakichkolwiek zabezpieczeń przed zakłóceniami, spowoduje zawieszanie się wyświetlacza bądź procesora kilka razy na godzinę.

    Niby dlaczego ma się zawieszać?

  • #14 08 Cze 2010 20:21
    TReneR666
    Poziom 12  

    Przepiecia z cewek przekaznikow...

  • #15 09 Cze 2010 06:56
    PIEKNY1234
    Poziom 14  

    Będzie się wieszac nie tylko z powodu szpilek z przekaźników ale też z zakłóceń z sieci jak ustawiłeś fusy? chodzi o kwarc czyli czas startu rodzaj oscylatora jest tu ważny ja stosuje generatory kwarcowe 5V jeśli atmega ma pracowac podłączona do sieci to zmniejsza ryzyko zawieszeń.

  • #16 09 Cze 2010 10:53
    KRZYSIEK_P_K
    Poziom 10  

    Termostat pracuje kilka dni z wentylatorem z komputera i żarówką (grzałka), do tej pory nie było żadnych problemów - ani razu się nie zawiesił. Procek działa z wewnętrznym oscylatorem 1MHz.

  • #17 11 Cze 2010 22:06
    gts1991
    Użytkownik obserwowany

    Jeszcze układ watchdog można aktywować jak się zawiesi to się zresetuję , czyta parametry z eepormu i tragedii nie będzie ;)

  • #18 14 Cze 2010 16:04
    clipie
    Poziom 16  

    Bardzo mnie ciekawi kod 1 wire pod asmeblera - mialem z tym problemy i dalem spokoj.
    Gdybyś mógł sie nim pochwalić.. ;)

  • #19 24 Cze 2010 23:18
    kubiaczek1982
    Poziom 11  

    KRZYSIEK_P_K czy mógłbyś zamieścić koda do tego termostatu?

  • #20 09 Lip 2010 11:08
    januszc
    Poziom 15  

    Dioda jest konieczna. Ale skoro nie chcesz to są przekaźniki z diodami w środku.

  Szukaj w 5mln produktów