Urządzenie to pierwotnie miało włączać żarówki w 6 pomieszczeniach. Obecnie sterownik zapewnia dodatkowo pomiar temperatury w każdym z pomieszczeń i wyświetlanie informacji na wyświetlaczu LCD. Układ działa w oparciu o mikrokontroler ATMEGA162 a w roli czujników temperatury pracują DS18B20. Urządzenie współpracuje z sześcioma Układami Wykonawczymi znajdującymi się w puszkach podtynkowych wyłączników sieciowych. Na płytce znajduje się miejsce na drugi mikrokontroler na którym można wykonać ściemniacz żarówek jednak ta wersja nie jest aktualnie oprogramowana.
Działanie:
Schemat ideowy sterownika przedstawia poniższy rysunek:

Sercem układu jest mikrokontroler U1 (ATMEGA162) wraz z elementami X1 (8MHz), C4 (22pF) i C5 (22pF). Drugi mikrokontroler U3 (ATTINY2313) współpracuje z rezonatorem kwarcowym X2 (16MHz) i kondensatorami C6 (22pF) i C7 (22pF). Na układzie U2 (7805) zbudowany jest zasilacz stabilizowany +5V. Kondensatory C1 (470uF), C2 (100uF) i C3 (100nF) a także mostek prostowniczy Br1 (1,5A) współpracują ze stabilizatorem U2. Potencjometr P1 (10k) służy do regulacji kontrastu wyświetlacza W1 (LCD 20x2) a rezystor R7 (22R) ogranicza prąd struktur led podświetlających wyświetlacz. Złącze prog wraz z rezystorami R13 - R16 (330R) umożliwia zaprogramowanie procesora U1. Przycisk S1 umożliwia wykonanie resetu mikrokontrolera w dowolnej chwili. Goldpin sw1 służy do podłączenia panelu sterującego złożonego z impulsatora i dwóch przycisków. Do Złącz wlamp1 (ARK3) i wlamp2 (ARK3) podłączamy przełączniki lamp w kolejnych pomieszczeniach. Zworką Ds_en (goldpin) można odłączyć magistralę 1-Wire od czujników umieszczonych w pokojach, co jest konieczne przy rejestracji nowego czujnika. Rezystory R1 - R6 (330R) ograniczają prąd optotriaków w układach wykonawczych podłączonych do złącz TR1 i TR2. Elementy R19 - R24 (330R) ograniczają prąd diod sygnalizacyjnych D1 - D6. Katodami diod sterują tranzystory T4 (BC547) i T5 (BC547). Prosty interfejs RS-232 zbudowany jest w oparciu o tranzystory T1 (BC558) i T2 (BC548) oraz rezystory R10 - R12 (10k)
Budowa:
Sterownik można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Płytka w odbiciu lustrzanym dostępna jest tutaj. Montaż należy rozpocząć od wlutowania zworek. W następnej kolejności od strony druku należy zamontować listwy goldpin sw1 i ds_en oraz złącze szufladkowe ds_reg. Złącze programujące można także zamontować od strony druku. Kolejność pozostałych elementów jest dowolna ale dobrze jest lutować elementy w kolejności od najmniejszych do największych. Pod mikrokontroler(y) należy zastosować podstawkę(i). Gdy sterownik ma pracować w wersji podstawowej to zamiast procesora U3 należy wykonać zworki kawałkami przewodów w podstawce tak aby kolejne wyprowadzenia procesora U1 od PC.0 do PC.5 były połączone z rezystorami R1-R6. Jeżeli mikrokontroler U3 będzie wykorzystany jako fazowy regulator mocy żarówek to konieczne będzie zastosowanie Układu Wykrywania Zera. Diody D1 - D6 należy przylutować na takiej wysokości aby wystawały troszeczkę ponad wyświetlacz LCD. Do złącza Zs doprowadzamy napięcie z transformatora o wartości ok 6-7V. Pomocą przy konstrukcji może okazać się schemat montażowy dostępny tutaj.
Wykaz Elementów:
5x Złącze ARK2
5x Złącze ZARK3
1x Listwa Gold Pin 1x6
1x Listwa Gold Pin 1x8
3x uSwitch
1x Impulsator
1x 22R
16x 330R
2x 1k
3x 10k
1x 10k Potencjometr Montażowy
4x 22pF
1x 100nF
1x 100uF Elektrolit
1x 470uF Elektrolit
1x Wyswietlacz LCD 20x2
1x Rezonator Kwarcowy 16MHz
1x 7805
1x ATMEGA162 + Podstawka
1x ATTINY2313 (nie konieczny w wersji podstawowej)
2x BC547B
1x BC548B
1x BC558B
6x Dioda LED 2 kolory
1x Mostek Prostowniczy 1,5A
Programowanie:
Fragmenty programu napisanego w języku BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/) przedstawione są poniżej:
Przerwanie Timera:
Prztimer0:
Timer0 = 130
Set Flaga_4ms
Incr Licznik_mig
If Licznik_mig = 100 Then
Licznik_mig = 0
Miganie = Not Miganie
End If
Incr Dzielnik
If Dzielnik = 400 Then
Dzielnik = 0
Disable Interrupts
1wreset
1wwrite &H55
Select Case Wyswietlany_pokoj
Case 1:
1wwrite Czujnik1(1) , 8
Case 2:
1wwrite Czujnik2(1) , 8
Case 3:
1wwrite Czujnik3(1) , 8
Case 4:
1wwrite Czujnik4(1) , 8
Case 5:
1wwrite Czujnik5(1) , 8
Case 6:
1wwrite Czujnik6(1) , 8
End Select
1wwrite &HBE
Lsb = 1wread()
Msb = 1wread()
1wreset
1wwrite &HCC
1wwrite &H44
Enable Interrupts
Temp_aktualna = Msb * 256
Temp_aktualna = Temp_aktualna + Lsb
Temp_aktualna = Temp_aktualna / 16
Temp_string(wyswietlany_pokoj) = Fusing(temp_aktualna , "#.##")
Set Flaga_wysw_temp
End If
Return
Obsługa Przycisków:
Przyciski:
If W1 <> Stan_w1 Then
Incr Licznik_w1
If Licznik_w1 = 25 Then Stan_w1 = W1
Else
Licznik_w1 = 0
End If
If W2 <> Stan_w2 Then
Incr Licznik_w2
If Licznik_w2 = 25 Then Stan_w2 = W2
Else
Licznik_w2 = 0
End If
If W3 <> Stan_w3 Then
Incr Licznik_w3
If Licznik_w3 = 25 Then Stan_w3 = W3
Else
Licznik_w3 = 0
End If
If W4 <> Stan_w4 Then
Incr Licznik_w4
If Licznik_w4 = 25 Then Stan_w4 = W4
Else
Licznik_w4 = 0
End If
If W5 <> Stan_w5 Then
Incr Licznik_w5
If Licznik_w5 = 25 Then Stan_w5 = W5
Else
Licznik_w5 = 0
End If
If W6 <> Stan_w6 Then
Incr Licznik_w6
If Licznik_w6 = 25 Then Stan_w6 = W6
Else
Licznik_w6 = 0
End If
If Sw1 = 0 And Sw2 = 1 Then
Incr Licznik_sw1
If Licznik_sw1 = 250 Then
Licznik_sw1 = 0
Select Case Wyswietlany_pokoj
Case 1:
Inwersja1 = Not Inwersja1
Case 2:
Inwersja2 = Not Inwersja2
Case 3:
Inwersja3 = Not Inwersja3
Case 4:
Inwersja4 = Not Inwersja4
Case 5:
Inwersja5 = Not Inwersja5
Case 6:
Inwersja6 = Not Inwersja6
End Select
End If
Else
Licznik_sw1 = 230
End If
If Sw2 = 0 And Sw1 = 1 Then
Incr Licznik_sw2
If Licznik_sw2 = 250 Then
Licznik_sw2 = 0
Poz_menu = 1
Cls
Set Flaga_wysw_menu
Ledg = 1
Ledr = 1
D1 = 0
D2 = 0
D3 = 0
D4 = 0
D5 = 0
D6 = 0
End If
Else
Licznik_sw2 = 230
End If
Return
Fragment procedury sterującej diodami led i triakami (dalsza część analogiczna):
Sterowanie:
Incr Multiplex_diody
If Multiplex_diody = 7 Then Multiplex_diody = 1
Ledg = 0
Ledr = 0
Select Case Multiplex_diody
Case 1:
D6 = 0
If Stan_w1 = 1 Then
If Inwersja1 = 0 Then
Tr1 = 1
Ledg = 1
Else
Tr1 = 0
Ledr = Miganie
End If
Else
If Inwersja1 = 0 Then
Tr1 = 0
Ledr = 1
Else
Tr1 = 1
Ledg = Miganie
End If
End If
D1 = 1
Case 2:
D1 = 0
If Stan_w2 = 1 Then
If Inwersja2 = 0 Then
Tr2 = 1
Ledg = 1
Else
Tr2 = 0
Ledr = Miganie
End If
Else
If Inwersja2 = 0 Then
Tr2 = 0
Ledr = 1
Else
Tr2 = 1
Ledg = Miganie
End If
End If
D2 = 1
Case 3:
D2 = 0
If Stan_w3 = 1 Then
If Inwersja3 = 0 Then
...
...
Pętla Główna:
Do
Gosub Impulsator
If Poz_menu = 0 Then
Wyswietlany_pokoj = Wyswietlany_pokoj + Rezultat
If Wyswietlany_pokoj = 0 Then Wyswietlany_pokoj = 6
If Wyswietlany_pokoj = 7 Then Wyswietlany_pokoj = 1
If Flaga_4ms = 1 Then
Flaga_4ms = 0
Gosub Sterowanie
Gosub Przyciski
End If
If Rezultat <> 0 Then
Rezultat = 0
Locate 1 , 1
Lcd Nazwa_pokoj(wyswietlany_pokoj)
End If
If Flaga_wysw_temp = 1 Then
Flaga_wysw_temp = 0
Locate 2 , 14
Lcd Temp_string(wyswietlany_pokoj) ; Chr(0) ; "C"
End If
Else
Poz_menu = Poz_menu + Rezultat
If Poz_menu = 0 Then Poz_menu = 2
If Poz_menu = 3 Then Poz_menu = 1
If Rezultat <> 0 Or Flaga_wysw_menu = 1 Then
Flaga_wysw_menu = 0
Rezultat = 0
Select Case Poz_menu
Case 1:
Locate 1 , 1
Lcd "Rejestracja DS18B20"
Locate 2 , 1
Lcd Nazwa_pokoj(wyswietlany_pokoj)
Case 2:
Locate 1 , 1
Lcd "Stan lamp po resecie"
Locate 2 , 1
Select Case Menu_stan_poczatkowy
Case 0:
Lcd "tak jak wylacznik "
Case 1:
Lcd "zawsze wlaczone "
Case 2:
Lcd "zawsze wylaczone "
End Select
End Select
End If
If Flaga_4ms = 1 Then
Flaga_4ms = 0
Gosub Przyciski2
End If
End If
Loop
End
Zdjęcia Projektu:


| Załącznik | Rozmiar |
|---|---|
| Schemat | 100.65 KB |
| Płytka | 29.97 KB |
| Płytka (odbicie lustrzane) | 30.33 KB |
| Płytka (2 na stronie) | 58.87 KB |
| Montowanie | 42.27 KB |
| Kod źródłowy | 15.99 KB |


termoregulator
Czy zbudowanie termoregulatora na atmega i z wyświetlaczem LCD jest bardzo skomplikowane i czy mógłbyś pomoc w budowie?
termoregulator
Ma to być układ termostatu pracujący włącz wyłącz, czy może bardziej złożony układ regulatora grupowego itp? Czym dokładnie ma sterować ten układ? Bez problemu pomogę w budowie o ile mi tylko czas pozwoli :)
Ps. O nowych pomysłach i urządzeniach prosze pisać używając formularza kontaktowego (Link kontakt na górze strony)
termoregulator
Ma on włączać grzałkę w akwarium. Obciążenie max to ok 100W. Powinien tez mieć możliwość ustawienia histerezy.
termoregulator
Czy w urządzeniu musi być LCD? Może być LED? Czy ma to znaczenie?. Zrobiło by się dwa projekty za jednym zamachem bo była już prośba o termometr z liczeniem średniej itp.
Pomoc w budowie sterownika
Witam.
Oglądam Twoją stronę od pewnego czasu. Spodobał mi się ten projekt. Chciałbym zbudowac podobny ale zupełnie nie znam się na programowaniu. Czy mógłbyś mi w tym pomóc? Zrobiłem cały schemat na którym widac jaki port procesora będzie obsługiwał dany element. Chciałbym aby procesor obsługiwał trzy optotriaki, jeden czujnik temperatury DS18B20, jeden przekaźnik i zmianę koloru diód RGB. Widziałem to wszystko w Twoich projektach i myślę że poradziłbyś sobie z tym wyzwaniem. Jeśli masz odrobinę chęci to proszę, napisz do mnie na gadu-gadu: 2712747. Pozdrawiam i z góry dziękuję.
Budowa sterownika
Chęci do robienia przerożnych projektow i urzadzeń zawsze mam ale akurat ostatnio mam strasznie mało czasu. Wiele osob prosi ostatnio o wszelkiego rodzaju sterowniki, ulepszenia programow itp. a czasami nawet nie dam rady odpisac na pytanie na stronie a co dopiero coś zaprojektować. Odkładam tą prośbę do kolejki razem z innymi i napewno się tym zajmę jednak nie mogę obiecać kiedy dokładnie. Proszę wysłać, korzystając z formularza kontaktowego (u gory strony) krotki opis urządzenia, do czego ma służyć i jak działać