(20 głosujących) Opisywane urządzenie jest prostym sterownikiem domowym, urządzeniem pełniącym wiele pożytecznych funkcji, do których między innymi należą: dwupunktowy pomiar temperatury (w domu i na dworze) i zegar pracujący w trybie 24-godzinnym, wzbogacony o dwukanałowy sterownik czasowy. Dodatkowo w programie zaimplementowano prosty termostat z histerezą oraz prosty system alarmowy z dwoma obwodami ochronnymi. Funkcja cichego alarmu umożliwia podgląd o której godzinie obwód ochronny został naruszony, bez włączania syreny. Układ sterownika został zbudowany na mikrokontrolerze ATMEGA16 a wszystkie ustawienia dokunuje się poprzez bardzo prosty interfejs z wyświetlaczem LCD i 6-przyciskową klawiaturą. Do odmierzania czasu wykorzystano układ RTC przez co sterownik może długo chodzić podtrzymując czas na zasilaniu bateryjnym. Wyjścia układu zbudowane na triakach posiadają optoizolację od napięcia sieciowego.
Działanie:Schemat ideowy układu znajduje się na rysunku poniżej: Sercem układu jest mikrokontroler U1 (ATMega16) wraz z rezonatorem kwarcowym X1 (16MHz) i kondensatorami C1 (22pF) i C2 (22pF). Do odmierzania czasu wykorzystywany jest układ RTC U2 (PCF8583). Do jego poprawnej pracy wymagany jest rezonator kwarcowy (tak zwany zegarkowy) X2 (32,768kHz) oraz kondensator C5 (33pF). Kondensatory C6 (100nF) i C7 (47uF) filtrują napięcie zasilania samego układu RTC, które podawane jest poprzez prosty układ bezprzerwowego zasilania z diodami D1 (1N4148), D2 (1N4148) i baterią BAT1 (3V). Rezystory R15 (3,3k) i R16 (3,3k) podciągają linie magistrali I2C do plusa zasilania, umożliwiając jej poprawną pracę. Obwody zasilania całej płytki zbudowane są na stabilizatorze U5 (7805) i kondensatorach filtrujących C3 (220uF), C4 (47uF) i C8 (100nF). Potencjometr P1 (10k) umożliwia regulację kontrastu wyświetlacza W1 (LCD 16x2). Podświetlanie wyświetlacza uruchamiane jest z poziomu programu sterownika za pomocą tranzystora T1 (BC556) i rezystora R2 (3,3k). Prąd podświetlania wyświetlacza ograniczany jest przez rezystor R1 (47R). W roli sygnalizacji alarmu pracuje buzzer z generatorem BUZ1 (5V), włączany poprzez tranzystor T2 (BC556) i rezystory R3 (3,3k) i R4 (3,3k). Złącze Prog (goldpin) umożliwia programowanie mikrokontrolera U1 w układzie, do tego został tez wyprowadzony pin resetu Res. Złącze RS (goldpin) umożliwia podpięcie komunikacji Rs232 a właściwie odpowiedniego konwertera, w przypadku klasycznego Rs232 będzie to MAX232 a przypadku konwertera USB-RS232, odpowiednia przejściówka. Klawiaturę urządzenia stanowią przyciski S1-S6 (uSwitch). Złącze ALARM (ARK) stanowi wejścia czujników alarmowych, jedno wejście jest typu N.O. a drugie typu N.C. Rezystor R14 (4,7k) umożliwia poprawną pracę magistrali 1-Wire z czujnikami U3-U5 (DS18B20). Budowa:Układ z powodzeniem można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż płytki nie jest skomplikowany i wykonujemy go w sposób klasyczny. Rozpoczynamy od wlutowania dwóch zworek pod wyświetlaczem W1, następne w kolejności powinny być rezystory a potem kondensatory. Kolejność pozostałych elementów nie jest krytyczna. Pod mikrokontroler U1 i układ RTC U2 dobrze jest zastosować podstawki. Złacza na czujniki U3 i U4 są w takiej odległości że można wlutować w ich miejsce podstawkę DIL6, tak jak można to zobaczyć na zdjęciach. Złącza te przydadzą się w momencie rejestracji czujników DS18B20 i podczas testów całego systemu. Potem można wykorzystać złącze U5 do podłączenia wszystkich czujników temperatury równolegle. Zamiast BUZ1 można podłączyć układ sterujący większą syreną alarmową. Do zasilania całego układu najwygodniej jest użyć ładowarki od komórki (np. NOKIA 6610) gdyż daje ona przy takiej pracy napięcie ponad 5V. Szczególną ostrożność należy zachować przy podłączaniu odbiorników 230V gdyż triaki znajdują się na tej samej płytce co sterownik i istnieje ryzyko porażenia. Układ został zbudowany głównie do celów pokazowych (stąd układy wykonawcze na tej samej płytce) ale jest w pełni funkcjonalnym urządzeniem. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj. Podłączenie sterownika przedstawione jest na rysunku poniżej: Wykaz Elementów:5x Złącze Śrubowe ARK2(podwójne) 5x 3,3k 2x 22pF 1x Rezonator Kwarcowy 16MHz Programowanie:Kod Źródłowy do sterownika został napisany w BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej: '************* Konfiguracja uC ***************** '*********************************************** $regfile = "m16def.dat" $crystal = 16000000 Config Porta = &B11110011 : Porta = &B11111111 Config Portb = &B11111111 : Portb = &B11111111 Config Portc = &B11111111 : Portc = &B11111111 Config Portd = &B00000011 : Portd = &B11111111 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.1 , Rs = Porta.0 Config Lcd = 16 * 2 Cls Cursor Off Noblink Config 1wire = Pinc.7 Config Scl = Portb.0 Config Sda = Portb.1 I2cinit Lcd_light Alias Portc.6 Sw_port Alias Pind 'nazwa portu Tr1 Alias Portc.2 Tr2 Alias Portc.1 Tr_term Alias Portc.0 Buzz Alias Portc.5 Linia_no Alias Pina.2 Linia_nc Alias Pina.3 Config Timer0 = Timer , Prescale = 256 Enable Timer0 : On Timer0 Prztimer0 Enable Interrupts '********** Konfiguracja uC Koniec ************ '****************** Zmienne ******************* '*********************************************** Dim Stan_sw As Byte , Sw As Byte , Licznik_sw As Byte 'sw Dim Wyswietlanie As Byte , Poz_wysw As Byte , Wyswietlono As Bit 'Lcd Dim Mig As Bit , Poz_ust As Byte Dim Autosave As Byte , Autolight As Byte Dim Ds1(8) As Byte , Ds2(8) As Byte , Ds3(8) As Byte , Ds(8) As Byte , Ds_adr As Byte , Ds_ok As Bit 'DS18B20 Dim Ktory_ds As Byte , Lsb As Byte , Msb As Byte , Minusy As Byte Dim T(3) As Word Dim T_ust As Word , T_his As Byte , Term_ena As Bit 'termostat Dim Dzielnik(2) As Byte 'dzielniki timera Dim Flaga_4ms As Bit , Flaga_500ms As Bit , Flaga_1s As Bit 'flagi przerwa? Dim Hbyte(2) As Byte , Hword(3) As Word , N As Byte , Hbit As Bit Dim Godziny As Byte , Minuty As Byte , Sekundy As Byte Dim Godziny_bcd As Byte , Minuty_bcd As Byte , Sekundy_bcd As Byte Dim Zapisz_czas As Bit Dim G(4) As Byte , M(4) As Byte , Ar_tr1 As Bit , Ar_tr2 As Bit 'programtot czas Dim Alarm As Byte , Salarm As Byte , A_g As Byte , A_m As Byte 'alarmy 0-wyl, 1-czuwa, 2-czas wtargniecia Dim Alarm_licz As Byte '************* Zmienne Koniec **************** '************ Warunki Poczatkowe *************** '*********************************************** Lcd_light = 0 Autolight = 20 Lcd "Sterownik Domowy" Lowerline Lcd " Wersja 1.05" Wait 1 If Sw_port = &B01001111 Then Ds_adr = 30 Gosub Ds_reg Cls Lcd "Ds1" End If If Sw_port = &B01010111 Then Ds_adr = 40 Gosub Ds_reg Cls Lcd "Ds2" End If If Sw_port = &B01011011 Then Ds_adr = 50 Gosub Ds_reg Cls Lcd "Ds term" End If For N = 1 To 8 Hbyte(1) = 30 + N Readeeprom Ds1(n) , Hbyte(1) Hbyte(1) = 40 + N Readeeprom Ds2(n) , Hbyte(1) Hbyte(1) = 50 + N Readeeprom Ds3(n) , Hbyte(1) Next N For N = 10 To 13 Readeeprom G(n -9) , N If G(n -9) > 23 Then G(n -9) = 0 Next N For N = 14 To 17 Readeeprom M(n -13) , N If M(n -13) > 59 Then M(n -13) = 0 Next N Readeeprom Hbyte(1) , 18 Ar_tr1 = Hbyte(1).0 Ar_tr2 = Hbyte(1).1 Term_ena = Hbyte(1).2 Readeeprom T_ust , 19 Readeeprom T_his , 21 If T_ust > 1000 Or T_ust < 100 Then T_ust = 450 If T_his > 100 Or T_his < 5 Then T_his = 20 Readeeprom Alarm , 22 Readeeprom Salarm , 23 Readeeprom A_g , 24 Readeeprom A_m , 25 If Alarm > 2 Then Alarm = 0 If Salarm > 2 Then Salarm = 0 If A_g > 23 Then A_g = 0 If A_m > 59 Then A_m = 0 Wait 1 Wyswietlono = 1 Wyswietlanie = 1 Autosave = 5 '******* Warunki Poczatkowe Koniec *********** '************** Petla glowna ****************** '*********************************************** Do '*********************************************** co 4ms If Flaga_4ms = 1 Then Flaga_4ms = 0 If Alarm = 1 Then If Linia_no = 0 Or Linia_nc = 1 Then Alarm = 2 A_g = Godziny A_m = Minuty End If Else If Alarm = 2 Then Buzz = Mig Else Buzz = 1 End If End If If Salarm = 1 Then If Linia_no = 0 Or Linia_nc = 1 Then Salarm = 2 A_g = Godziny A_m = Minuty End If End If Gosub Przyciski If Wyswietlono = 1 Then Gosub Wysw_lcd End If '*********************************************** '*********************************************** co 500ms If Flaga_500ms = 1 Then Flaga_500ms = 0 If Autolight > 0 Then Decr Autolight Lcd_light = 0 Else Lcd_light = 1 End If Mig = Not Mig If Poz_wysw <> 1 Or Poz_ust = 0 Then If Zapisz_czas = 1 Then Gosub Zapis_rtc 'jednorazowo zapisuje po wyj?ciu z ustawie? Zapisz_czas = 0 Else Gosub Odczyt_rtc 'odczytuje czas End If Else Zapisz_czas = 1 End If If Poz_wysw = 1 Then Wyswietlanie = 1 'uaktualniaj czas je?li jest pokazywany na LCD If Poz_wysw = 2 Then Wyswietlanie = 2 If Poz_wysw = 4 Then Wyswietlanie = 4 'je?li wyswietlony termostat to uaktualnij. If Poz_wysw = 5 Then Wyswietlanie = 5 End If '*********************************************** '*********************************************** co 1s If Flaga_1s = 1 Then Flaga_1s = 0 If Autosave < 5 Then Incr Autosave If Autosave = 5 Then For N = 10 To 13 Writeeeprom G(n -9) , N Next N For N = 14 To 17 Writeeeprom M(n -13) , N Next N Hbyte(1) = 0 Hbyte(1).0 = Ar_tr1 Hbyte(1).1 = Ar_tr2 Hbyte(1).2 = Term_ena Writeeeprom Hbyte(1) , 18 Writeeeprom T_ust , 19 Writeeeprom T_his , 21 Writeeeprom Alarm , 22 Writeeeprom Salarm , 23 Writeeeprom A_g , 24 Writeeeprom A_m , 25 Poz_ust = 0 End If End If Gosub Temperatura If Poz_wysw = 3 Then Wyswietlanie = 3 'jesli wysw temperatura to uaktualnij Gosub Sterowanie End If '*********************************************** Loop End '************ Petla glowna Koniec ************** '************ Przerwanie timer 0 *************** '*********************************************** Prztimer0: Timer0 = 5 Set Flaga_4ms Incr Dzielnik(1) If Dzielnik(1) = 125 Then Dzielnik(1) = 0 Set Flaga_500ms Incr Dzielnik(2) If Dzielnik(2) = 2 Then Dzielnik(2) = 0 Set Flaga_1s End If End If Return '******** Przerwanie timer 0 Koniec ************ '*********************************************** '***************** Przyciski ************** Przyciski: Sw = Sw_port And &B11111100 'And &B00001111 'maska na piny nieu?ywane jako sw If Sw <> &B11111100 And Stan_sw = Sw Then Incr Licznik_sw If Licznik_sw = 68 Then Licznik_sw = 0 Autolight = 20 Select Case Stan_sw Case &B11101100: 'incr '*********************************************************** Select Case Poz_wysw Case 1: Select Case Poz_ust Case 0: 'podczas wyswietania czasu If Alarm = 2 Then Alarm = 0 'If Salarm = 2 Then Salarm = 0 Case 1: Incr Godziny If Godziny = 24 Then Godziny = 0 Case 2: Incr Minuty If Minuty = 60 Then Minuty = 0 Case 3: Incr Sekundy If Sekundy = 60 Then Sekundy = 0 End Select Case 2: Select Case Poz_ust Case 0: Ar_tr1 = Not Ar_tr1 Case 1: Incr G(1) If G(1) = 24 Then G(1) = 0 Case 2: Incr M(1) If M(1) = 60 Then M(1) = 0 Case 3: Incr G(2) If G(2) = 24 Then G(2) = 0 Case 4: Incr M(2) If M(2) = 60 Then M(2) = 0 Case 5: Incr G(3) If G(3) = 24 Then G(3) = 0 Case 6: Incr M(3) If M(3) = 60 Then M(3) = 0 Case 7: Incr G(4) If G(4) = 24 Then G(4) = 0 Case 8: Incr M(4) If M(4) = 60 Then M(4) = 0 End Select Autosave = 0 Case 4: Select Case Poz_ust Case 0: Term_ena = Not Term_ena If Term_ena = 0 Then Tr_term = 1 Case 1: If T_ust < 1000 Then T_ust = T_ust + 10 Case 2: If T_his < 100 Then Incr T_his End Select Autosave = 0 Case 5: Select Case Poz_ust Case 0: ' podczas wysw alarmow Case 1: If Alarm <> 0 Then Alarm = 0 Else Alarm = 1 Buzz = 1 Case 2: If Salarm <> 0 Then Salarm = 0 Else Salarm = 1 End Select Autosave = 0 End Select Case &B11111000: 'ustaw next '*********************************************************** Select Case Poz_wysw Case 1: Incr Poz_ust If Poz_ust = 4 Then Poz_ust = 0 Case 2: Incr Poz_ust If Poz_ust = 9 Then Poz_ust = 0 Case 4: Incr Poz_ust If Poz_ust = 3 Then Poz_ust = 0 Case 5: Incr Poz_ust If Poz_ust = 3 Then Poz_ust = 0 End Select Case &B11110100: 'decr '*********************************************************** Select Case Poz_wysw Case 1: Select Case Poz_ust Case 0: 'podczas wyswietania czasu If Alarm = 2 Then Alarm = 0 Case 1: Decr Godziny If Godziny = 255 Then Godziny = 23 Case 2: Decr Minuty If Minuty = 255 Then Minuty = 59 Case 3: Decr Sekundy If Sekundy = 255 Then Sekundy = 59 End Select Case 2: Select Case Poz_ust Case 0: Ar_tr2 = Not Ar_tr2 Case 1: Decr G(1) If G(1) = 255 Then G(1) = 23 Case 2: Decr M(1) If M(1) = 255 Then M(1) = 59 Case 3: Decr G(2) If G(2) = 255 Then G(2) = 23 Case 4: Decr M(2) If M(2) = 255 Then M(2) = 59 Case 5: Decr G(3) If G(3) = 255 Then G(3) = 23 Case 6: Decr M(3) If M(3) = 255 Then M(3) = 59 Case 7: Decr G(4) If G(4) = 255 Then G(4) = 23 Case 8: Decr M(4) If M(4) = 255 Then M(4) = 59 End Select Autosave = 0 Case 4: Select Case Poz_ust Case 0: Term_ena = Not Term_ena If Term_ena = 0 Then Tr_term = 1 Case 1: If T_ust > 100 Then T_ust = T_ust - 10 Case 2: If T_his > 5 Then Decr T_his End Select Autosave = 0 Case 5: Select Case Poz_ust Case 0: ' podczas wysw alarmow Case 1: If Alarm <> 0 Then Alarm = 0 Else Alarm = 1 Buzz = 1 Case 2: If Salarm <> 0 Then Salarm = 0 Else Salarm = 1 End Select Autosave = 0 End Select Case &B11011100: 'next menu '*********************************************************** Poz_ust = 0 Wyswietlanie = Poz_wysw + 1 If Wyswietlanie = 6 Then Wyswietlanie = 1 Case &B10111100: 'triak 1 '*********************************************************** Select Case Poz_wysw Case 2: Ar_tr1 = 0 Tr1 = Not Tr1 Case 4: Term_ena = 0 Tr_term = Not Tr_term Case 5: If Alarm = 2 Then Alarm = 0 'If Salarm = 2 Then Salarm = 0 End Select Autosave = 0 Case &B01111100: 'triak 2 '*********************************************************** Select Case Poz_wysw Case 2: Ar_tr2 = 0 Tr2 = Not Tr2 Autosave = 0 Case 4: Term_ena = 0 Tr_term = Not Tr_term Case 5: If Alarm = 2 Then Alarm = 0 If Salarm = 2 Then Salarm = 0 End Select Autosave = 0 End Select End If Else Stan_sw = Sw Licznik_sw = 60 End If Return '*********************************************** '*********************************************** '************** LCD *********** Wysw_lcd: If Wyswietlanie <> 0 Then Wyswietlono = 0 Select Case Wyswietlanie Case 1: 'aktualny czas '************************************************************** If Poz_wysw <> 1 Then Cls Lcd " Aktualny Czas " End If Locate 2 , 5 If Poz_ust = 1 And Mig = 1 Then Lcd " " Else If Godziny < 10 Then Lcd "0" Lcd Godziny End If If Poz_ust = 0 And Mig = 1 Then Lcd " " Else Lcd ":" If Poz_ust = 2 And Mig = 1 Then Lcd " " Else If Minuty < 10 Then Lcd "0" Lcd Minuty End If If Poz_ust = 0 And Mig = 1 Then Lcd " " Else Lcd ":" If Poz_ust = 3 And Mig = 1 Then Lcd " " Else If Sekundy < 10 Then Lcd "0" Lcd Sekundy End If Case 2: 'programator czasowy '************************************************************** If Poz_wysw <> 2 Then Cls End If Locate 1 , 1 If Poz_ust = 1 And Mig = 1 Then Lcd " " Else If G(1) < 10 Then Lcd "0" Lcd G(1) End If Lcd ":" If Poz_ust = 2 And Mig = 1 Then Lcd " " Else If M(1) < 10 Then Lcd "0" Lcd M(1) End If Lcd " - " If Poz_ust = 3 And Mig = 1 Then Lcd " " Else If G(2) < 10 Then Lcd "0" Lcd G(2) End If Lcd ":" If Poz_ust = 4 And Mig = 1 Then Lcd " " Else If M(2) < 10 Then Lcd "0" Lcd M(2) End If Lcd " " If Ar_tr1 = 1 Then Lcd "A" Else Lcd "R" Locate 2 , 1 If Poz_ust = 5 And Mig = 1 Then Lcd " " Else If G(3) < 10 Then Lcd "0" Lcd G(3) End If Lcd ":" If Poz_ust = 6 And Mig = 1 Then Lcd " " Else If M(3) < 10 Then Lcd "0" Lcd M(3) End If Lcd " - " If Poz_ust = 7 And Mig = 1 Then Lcd " " Else If G(4) < 10 Then Lcd "0" Lcd G(4) End If Lcd ":" If Poz_ust = 8 And Mig = 1 Then Lcd " " Else If M(4) < 10 Then Lcd "0" Lcd M(4) End If Lcd " " If Ar_tr2 = 1 Then Lcd "A" Else Lcd "R" Case 3: '************************************************************** If Poz_wysw <> 3 Then Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32 'stopien Deflcdchar 1 , 4 , 32 , 14 , 17 , 17 , 17 , 14 , 32 ' o kreskowane Cls Lcd "Dw" ; Chr(1) ; "r:" Lowerline Lcd "Dom:" End If For N = 1 To 2 Hword(1) = T(n) / 10 Hword(2) = 11 If Hword(1) >= 10 Then Decr Hword(2) If Hword(1) >= 100 Then Decr Hword(2) If Minusy.n = 1 Then Decr Hword(2) Locate N , Hword(2) Hword(2) = T(n) Mod 10 Lcd " " If Minusy.n = 1 Then Lcd "-" Lcd Hword(1) ; "." ; Hword(2) ; Chr(0) ; "C" Next N Case 4: '************************************************************** If Poz_wysw <> 4 Then Deflcdchar 2 , 4 , 4 , 31 , 4 , 4 , 32 , 31 , 32 '+- Cls Lcd "Term:" End If Hword(1) = T(3) / 10 Hword(2) = 8 If Hword(1) >= 10 Then Decr Hword(2) If Hword(1) >= 100 Then Decr Hword(2) If Minusy.3 = 1 Then Decr Hword(2) Locate 1 , Hword(2) Hword(2) = T(3) Mod 10 Lcd " " If Minusy.3 = 1 Then Lcd "-" Lcd Hword(1) ; "." ; Hword(2) ; Chr(0) ; "C " If Term_ena = 1 Then Lcd "A" Else Lcd "R" If Poz_ust = 1 And Mig = 1 Then Locate 2 , 1 Lcd " " Else 'tust Hword(1) = T_ust / 10 Hword(2) = 3 If Hword(1) >= 10 Then Decr Hword(2) If Hword(1) >= 100 Then Decr Hword(2) Locate 2 , Hword(2) Hword(2) = T_ust Mod 10 Lcd Hword(1) ; "." ; Hword(2) ; Chr(0) ; "C " ; Chr(2) End If If Poz_ust = 2 And Mig = 1 Then Locate 2 , 11 Lcd " " Else 'thist Hbyte(1) = T_his / 10 Hbyte(2) = 12 If Hbyte(1) >= 10 Then Decr Hbyte(2) If Hbyte(1) >= 100 Then Decr Hbyte(2) Locate 2 , Hbyte(2) Hbyte(2) = T_his Mod 10 Lcd Hbyte(1) ; "." ; Hbyte(2) ; Chr(0) ; "C" End If Case 5: '************************************************************** If Poz_wysw <> 5 Then Cls Lcd "Alarm: " Lowerline Lcd "C. Alarm: " End If Locate 1 , 8 If Poz_ust = 1 And Mig = 1 Then Lcd " " Else If Alarm = 0 Then Lcd "Wyl. " If Alarm = 1 Then Lcd "Czuwa" If Alarm = 2 Then If A_g < 10 Then Lcd "0" Lcd A_g ; ":" If A_m < 10 Then Lcd "0" Lcd A_m End If End If Locate 2 , 11 If Poz_ust = 2 And Mig = 1 Then Lcd " " Else If Salarm = 0 Then Lcd "Wyl. " If Salarm = 1 Then Lcd "Czuwa" If Salarm = 2 Then If A_g < 10 Then Lcd "0" Lcd A_g ; ":" If A_m < 10 Then Lcd "0" Lcd A_m End If End If End Select Poz_wysw = Wyswietlanie Wyswietlanie = 0 Wyswietlono = 1 End If Return '************** LCD Koniec *********** '********** rejestracja DS ********* Ds_reg: Disable Interrupts 1wreset 1wwrite &H33 Ds(1) = 1wread(8): Enable Interrupts If Ds(1) <> 255 Or Ds(2) <> 255 Or Ds(3) <> 255 Or Ds(4) <> 255 Or Ds(5) <> 255 Or Ds(6) <> 255 Or Ds(7) <> 255 Or Ds(8) <> 255 Then Ds_ok = 1 For N = 1 To 8 Hbyte(1) = Ds_adr + N Writeeeprom Ds(n) , Hbyte(1) Next N Else Ds_ok = 0 End If Return '****** rejestracja DS Koniec ****** '************* Temperatura *********** Temperatura: Disable Interrupts 1wreset Select Case Ktory_ds Case 0: 1wwrite &HCC 1wwrite &H44 Case 1: 1wwrite &H55 1wwrite Ds1(1) , 8 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): Case 2: 1wwrite &H55 1wwrite Ds2(1) , 8 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): Case 3: 1wwrite &H55 1wwrite Ds3(1) , 8 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): End Select Enable Interrupts If Ktory_ds > 0 Then T(ktory_ds) = Msb * 256 T(ktory_ds) = T(ktory_ds) + Lsb Minusy.ktory_ds = Msb.7 If Minusy.ktory_ds = 1 Then T(ktory_ds) = Not T(ktory_ds) T(ktory_ds) = T(ktory_ds) + 1 End If T(ktory_ds) = T(ktory_ds) * 10 T(ktory_ds) = T(ktory_ds) / 16 Else If Poz_wysw = 1 And Wyswietlono = 1 Then Wyswietlanie = 1 End If Incr Ktory_ds If Ktory_ds = 4 Then Ktory_ds = 0 Return '********** Temperatura Koniec ********* '****************** Zapis RTC ******************** Zapis_rtc: 'zapisuje czas g,m i s do uk?adu RTC Godziny_bcd = Makebcd(godziny) Minuty_bcd = Makebcd(minuty) Sekundy_bcd = Makebcd(sekundy) I2cstart I2cwbyte 162 I2cwbyte 0 'rejestr kontrolny I2cwbyte 8 'ustawienie rejestru zapisu daty I2cstop I2cstart I2cwbyte 162 I2cwbyte 2 I2cwbyte Sekundy_bcd I2cwbyte Minuty_bcd I2cwbyte Godziny_bcd I2cstop Return '************* Zapis RTC Koniec ***************** '****************** Odczyt RTC ******************** Odczyt_rtc: 'odczytuje czas z RTC do zmiennych I2cstart I2cwbyte 162 'adres zapisu I2cwbyte 2 'rejestr sekund I2cstart I2cwbyte 163 'adres odczytu I2crbyte Sekundy_bcd , Ack I2crbyte Minuty_bcd , Ack I2crbyte Godziny_bcd , Nack I2cstop Sekundy = Makedec(sekundy_bcd) Minuty = Makedec(minuty_bcd) Godziny = Makedec(godziny_bcd) Return '************** Odczyt RTC Koniec ***************** '************ Sterowanie *************** '*********************************************** Sterowanie: Hword(1) = Godziny * 60 Hword(1) = Hword(1) + Minuty 'czas w minutach 'prog czasowy For N = 1 To 3 Step 2 Hword(2) = G(n) * 60 Hword(2) = Hword(2) + M(n) 'czas w minutach Hword(3) = G(1 + N) * 60 Hword(3) = Hword(3) + M(1 + N) 'czas w minutach Hbit = 1 If Hword(3) >= Hword(2) Then If Hword(1) >= Hword(2) Then If Hword(1) < Hword(3) Then Hbit = 0 Else If Hword(1) >= Hword(2) Then Hbit = 0 If Hword(1) < Hword(3) Then Hbit = 0 End If If N = 1 Then If Ar_tr1 = 1 Then Tr1 = Hbit Else If Ar_tr2 = 1 Then Tr2 = Hbit End If Next N 'termostat If Term_ena = 1 Then Hword(1) = T_ust + T_his Hword(2) = T_ust - T_his If T(3) >= Hword(1) Then Tr_term = 1 If T(3) <= Hword(2) Then Tr_term = 0 End If Return '******** Sterowanie Koniec ************ Ustawienia fusebitów przedstawione są na rysunku poniżej: Zdjęcia Projektu:
|
|||||||||||||||||||||||||||||||
Ciekawe, lecz mało :)
Projekt ciekawy, lecz moim zdaniem za mało rozbudowany - choć może być to tylko moje odczucie :)
Sam zaprojektowałem sterownik którym steruję:
-zał/wył/jasność światła halogenów 230V
-zał/wył/jasność i kolor diod RGB podświetlających mój sufit
-odsłonięcie lub zasłonięcie okna (roleta) w zależności od poziomu światła na zewnątrz (fototranzystor) lub sterowanie manualne)
-grzejnik w zal. od temperatury lub sterowanie manualne
-zał. oświetlenia głównego pokoju (czujnik ruchu) + sterowanie manualne - wyłączanie odbywać się ma ręcznie.
-2 dodatkowe wyjścia logiczne (zał/wył)
Sterowanie manualne/programowanie pilotem na RC + dopinana klawiatura do sterownika.
Projekt co prawda jest na razie na kartkach, ale mam zamiar skończyć go do stycznia przyszłego roku - oczywiście po skończeniu zamieszczę coś niecoś na elektrodzie i tu.
Przy okazji, program będę pisał raczej w C, ponieważ zauważyłem, że jest on wydajnieszy (więcej "treści" można wrzucić w uC w przeciwieństwie do BASCOMA).
Pozdrawiam!
-Mamo, zrób mi kanapkę.
-Sam sobie zrób.
-SUDO Mamo, zrób mi kanapkę.
-OK.
a gdyby go lekko odchudzić ?
jako, że jestem jeszcze zielony w programowaniu chciałbym spytać o przerobienie tego programu (schemat mógłbym sam okroić :) oczywiście za pozwoleniem ).
Mianowicie chodzi mi o to aby pozostawić wyjścia takie jak sa czyli 3 z czego jeden steruje oczywiście temperatura a pozostałe dwa czasowo.Pozostawiamy tylko jeden DS18b20 i rezygnujemy z alarmu.Czy jest też możliwość aby taki program standardowo wyświetlał w górnej linijce aktualny czas a w dolnej aktualną temp.?
życzę miłego dnia i pozdrawiam
Piotrek
Re: Sterownik domowy
do Serv:
Ten sterownik domowy jest prostym urządzeniem i ty po prostu masz inne funkcje zaimplementowane, bo takie aktualnie potrzebujesz. co do C to zgodzę się ze jest wydajniejszy ale w bascomie nauczyłem się już pisać i teraz nie mogę się zmusić aby zająć się C.
do piotrek-zki:
Można przerobić program żeby działał jak chcesz ale to zajmuje dużo czasu a ja niestety aktualnie go nie posiadam. Ponadto nie pamiętam z tego programu prawie nic bo sterownik był zrobiony już dawno a nawet nie miałem kiedy go opisać na stronie.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
sterownik czasowy
super jest ok. mógłbyś wyjaśnić o co chodzi z tym dwukanałowym sterownikiem czasowym.
i jakich czujników można urzyć do alarmu?
Re: Sterownik
Możesz sobie ustawić czas włączenia i wyłaczenia dwóch odbiorników niezależnie, np dwóch żarówek. Jedna np. ma się włączyć o 12:15 a wyłaczyć o 15:49 a druga np swieci się tylko w nocy od 23 do 6 rano itp. Czujniki alarmu mogą być dowolne, sterownik sprawdza rozwarcie lub zwarcie linii do masy. Więc każdy czujnik mający wyjście przekaźnikowe będzie dobry. Może być zwykły przycisk
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
sterownik
to znaczy ,że ewentualnie można nawet zastosować sobie do budzika bo w programie zegarka chyba niema typowego budzika. Widzę, że od jutra znowu mam co robić.
jeszcze jedno pytanie jak drukować płytkę z pdf bo nie wychodzi mi ona w odpowiednim rozmiarze?
Re: Sterownik C.O
Tak można sobie ustawić jako budzik a nawet dwa kanały. Jeden do syreny a drugi do głośniejszej syreny:)
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
dopisanie kodu triak 3 i 4 na porty C3 i C4
Czy będzie problem z dopisaniem kodu dla portów C3 i C4 jako kolejne triaki - właśnie trawi się płytka - nie znam pełnego menu ale pewnie dojdzie jedna zakładka na kolejne 2 triaki 3 i 4
ta konstrukcja jest ciekawa i od razu poszła pod młotek :)
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Sterownik domowy
Nie napisałem tego po swoim kątem, tylko chciałem troszkę wyogólnić. Wiem, że tego typu funkcje są często używane i uważam, że warto by było coś takiego zaincludować do takiego przedsięwzięcia.
A więc zapytam: Sterownik był robiony pod temat własnego zastosowania czy funkcjonalność ogólna?
-Mamo, zrób mi kanapkę.
-Sam sobie zrób.
-SUDO Mamo, zrób mi kanapkę.
-OK.
sterownik
sory że piszę jeszcze raz czy ktoś mi powie jak drukować płytki z pdf bo mi zawsze wychodzą w nieodpowiennych rozmiarach te 3cm u mnie jest zawsze o ko 1mm mniej co na płytce robi sie wielkim problemem
druk pdf
w opcjach druku w acrobat jest ustawianie procentu do drukowania to wpisz 102-103% i bedzie malina - to wina drukarki albo sterowników
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Sterownik
Czy te kolejne triaki mają działać jako sterownik czasowy czy jakieś inne zastosowanie?
Sterownik był robiony dla znajomego, ale raczej była to funkcja pokazowa.
Co do wydruków to trzeba w acrobat ustawić "skalowanie strony=brak", pdf jest zrobiony w skali 100% bo sam z niego drukowałem
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
triaki
tak czasówka - i laminat nie wyszedł - zostało pełno kropeczek miedzi - moczyłem papier pierwszy raz w occie - odszedł rewelacyjnie - a te kropeczki to może kreda na miedzi ?? - dzis wytrawie drugą z tymi dodatkowymi triakami - firley czy podeslesz projekt jak masz w eagle na prv. :-) z góry dziękuję
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
sterownik domowy
Witam, posiadam sterownik pieca "CO" który ma dodatkowe wyjście na termostat pokojowy (obecnie jest zworka), czy pozbawiając jednego triaka zasilania sieciowego mogę ten sterownik (styk wolny NC bez napięcia) wykorzystać jako termostat pokojowy?
Re: Sterownik domowy
Wydaje mi się że tak będzie działało, prawdopodobnie chodzi Ci o piec olejowy a ten ma poprostu sterowanie za pomocą jakiegoś przekaźnika, może być triak. Zapoznaj się ze schematem pieca i użyj triaka do zwierania tej twojej "zworki". Oczywiście triak nie może być podłączony do sieci a zwierać tylko te dwa styki w piecu.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
sterownik domowy
to jest akurat piec węglowy, gdzie po osiągnięciu zadanej temperatury, sterownik wyłącza wentylator lub może to zrobić termostat pokojowy zamontowany w którymś z pomieszczeń (zworka). Czy z triaków zamontowanych na płytce jest jakiś "preferowany" do tego zadania?
Re: Sterownik
Oczywiście, przecież masz napisane ... dwa są do lamp a jeden do grzałki, zwiera się gdy temp < od ustawionej, oczywiście z histerezą
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
rezystory triak 2x180 ohm zamiast jednego 330ohm
Zrobiłem projekcik - czekam na procek
Może nie aż tak ale zaskoczyła mnie pewna opcja jaka zastosowałeś - 2x180 om rezystory dlaczego , jaki był powód
Na pewno nie PCB bo bez najmniejszego problemu można by zrobić na jednym rezystorze 330om jak inne twoje projekty
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Sterownik domowy
Dwa rezystory poprawiają odporność na przebicia i dla obwodów sieciowych powinno się je stosować. To że na innych projektach nie ma...poprosyu każdy ma prawo się uczyć :) W większości przypadków będzie działało z jednym rezystorem bo problem głównie dotyczy wersji SMD optotriaków
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Termostat
Witam projekt świetny bardzo mi się podoba...
Ale moje pytanie dotyczy samego termostatu? Czy da się tak zmniejszyć program żeby zmieścił się na Atmege8 i ograniczyć niektóre funkcje, mianowicie chodzi o usunięcie obsługi 3 triaków pozostawić tylko jeden do sterowania grzałką, usunąć obsługę alarmu oraz czasu jeśli było by to konieczne z powodu ograniczonego miejsca na procesorze. Chciał bym żeby na LCD była podana aktualna temperatura, zadana temperatura oraz histereza tak jak jest w możliwości Twojego projektu. Jeśli możesz zamieścić wersje tak okrojona był bym wdzięczny.
Pozdrawiam Jacxek
Re: Sterownik domowy
Urządzenie które chciałbyś uzyskać tym sposobem to w sumie całkowicie cos innego i mija się to z celem. Polegało by to na zrobieni wszystkiego od nowa a nie na modyfikowaniu starego. Funkcje które chcesz uzyskać wejdą w zakres pracy urządzenia "Termoregulator uniwersalny" ale z powodu braku czasu nie mam pojęcia kiedy się tym zajmę
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
dodatkowe wyjscie
Czesc Mirek a czy przewidziales moze wyjscie sterujace klimatyzacja jak temperatura w pokoju przekroczy zalozne 23°C, bybloby fajnie miec taki sterownik kompletny bo sterowalbym 2 swiatlami w pokoju ogrzewaniem i klimatyzacja z jednego urzadzenia.
Klimayzator sam zrobilem, tyle ze musze do niego podejsc by go wlaczyc i wylaczyc, a moglbym sobie sterowac wszytkim z jednego miejsca i miec odczyt temperatury na jednym wyswietlaczu.
Inna sprawa dobrze by bylo jakby wyswietlacz mial wygaszacz by w nocy nic nie swiecilo :) jesli sie nie nacisnie zadnego przycisku.
Bedzie trudno dorobic wyjscie sterujace klima?
MULTI
Re: Klimatyzacja
Jeśli temperatura ustawiana termostatu do grzania i chłodzenia będzie taka sama to można poprostu dać dodatkowe wyjście pracujące odwrotnie jak grzanie. Zakładam że w zimie nie trzeba używać klimatyzacji a w lecie grzejnika. W takim prostym przypadku w procedurze "Sterowanie" wystarczy:
Jeśli by miało to być razem włączone to wtedy trzeba dopisać dodatkowy drugi termostat z osobną histerezą bo na jednym to zawsze będzie grzało lub chłodziło a temperatura będzie ciągle oscylować
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Dokldnie tak jak piszesz
Dokldnie tak jak piszesz jedn temperatura termosttu np: 23C histereza +/- 2C wiec po przekroczeniu 24C wlacza klimtyzator i chlodzi do 22C jak osiaga 22C wylcza klimatyzator ale nie wlacza grzania. Analogicznie jak temperatura spada ponizej 22C to wlacza grzanie i grzeje do 24C po osiagnieciu 24C wylacza grzanie ale nie wlacza klimatyzatora. Mozna by podpiac sie pod PC3.
Obecny sterownik dziala tak ze klima wlacza sie po przekroczeniu temperatury max i chlodzi do min, ale jak osiagnie min wlacza grzanie :) i to mnie denerwuje. Poprostu uszkodzil sie DS1920 albo 1620 niepamietam samodzielny termostat programowalny majacy 3 wyjscia sterujace nie dziala wyjscie chlodzace tylko histereza i grzanie inaczej bylo by ok po osiagnieciu temp min grzenie by sie wylaczalo a chlodzenie wlaczalo by sie po przekroczeniu max. :)
MULTI
hex
witam - czy mozesz zamiescic HEX - bo bascom demo ma ograniczenia
a wgram hex-a ISP programmer
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Klimatyzacja
MULTIMEN:
Wystarczy dodać linijkę:
tylko pamietaj że w zimie musisz poprostu wyłączyć klimę a w lecie grzejnik
IMEX2:
Też nie mam aktualnie dostępu do pełnej wersji bascoma, za pomocą ISP Programmer powinno zadziałać bez problemu
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
fusy
:) OK wlasnie odpalilem - mam godzine 165-165-165
niemam zamontowanej bateri a okienko fuse jest u mnie inne w bascomie
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
OK odpalone
1 problem ktory napotkałem to podlaczenie lcd - ta przerwa w srodku mnie zwiodła - tam poprostu brakuje 2 niepodłaczonych pinów wiec całość sie przesówa w bok - poprawione działa
2 problem napotkany to wskazywanie godziny 165-165-165 , naprawiony - niewlutowałem diod na zasilaniu zegara
3 problem to brak wskazań temperatury -0.0oC - do rozwiazania
Wiec tu potrzebuje temperatury
A tak przy okazji to jak sie ustawia godziny w alarmie ??
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Sterownik
Najważniejsze jest ustawienie fusebitów. Niestety nie mam screena z bascoma ale należy przede wszystkim ustawić CKOPT = 0 i w linijce gdzie są źródła taktowania, ustawić "External Crystal Resonator 8MHz-" czy coś podobnego. Obok tej opcji są wartości CKSEL i SUT i powinny one być równe CKSEL=1111 i SUT=11
Co do czujników temperatury to przede wszsytkim bez dobrego ustawienia fusebitów raczej nie pójdą a ponadto trzeba przeprowadzić procedurę rejestracji czujników po pierwszym uruchomieniu układu. W tym celu na magistrali powinien być tylko jeden czujnik podłączony. Trzymając jednocześnie Menu, F2 i Up włączamy zasilanie. Przyciski trzymiemy aż nie pojawi sie jeden z napisów "Ds1", "Ds2" lub "DS term", Kombinacje dla dwóch pozostałych czujników to Menu, F2 i Down oraz Menu, F2 i Set. Za każdym razem na magistrali 1-wire może być tylko ten czujnik które chcemy zarejestrować.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
ustawienia menu
OK temp działa na 3 czujnikach
PS. jesli zamiast bateri wstawie AKU to jaki rezystor na diodę zastosować do ładowania
Ustawienia
chodzi o to menu - bo po przestawieniu z wył na xxx ustawia sie aktualna godzina
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Wsparcie na http://mirley.firlej.org
Wiec za drugi udany projekt wspieram stronę http://mirley.firlej.org
Wsperamy stronę Mirka bezinteresownie.
Konto w banku ING Bank Śląski i nr konta 11 1050 1445 1000 0023 1564 2823
kwota utajniona :)
Pozdrawiam serdecznie
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Sterownik
To bardzo dobrze że po włączeniu alarmu pojawia się od razu godzina. Znaczy to że alarm działa poprawnie. Wnioskuję że nie podłączyłeś nic do styków czujników alarmowych, a jeśli tak to alarm jest ciągle wywoływany. Są dwa rodzaje styków N.O. (Normall Open) podczas spoczynku musi być rozwarty a zwarcie wywoła alarm oraz styk N.C. (Normall Close) podczas spoczynku ma być zwarty a rozwarcie (odcięcie przewodu itp) włączy alarm. Poprostu gdy nic nie podłączysz do styków alarmowych to styk N.C zawsze wywoła alarm. Zewrzyj N.C. do masy a wszystko będzie ok
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Wiec tak panie Mirku -
Wiec tak panie Mirku - pytanko czy za opłata dopisze pan pewien kod do programu nie robił bym dodatkowego sterownika, chodzi mi o coś następijącego - wykorzystanie wolnych portów do sprawdzenia ich stanu - w moim przypadku chodzi coś na zasadzie działania alarmu w tym sterowniku pana - A w moim przypadku chcę kontrolować czy zostało pozostawione włączone światło lub pozamykane drzwi na kontaktronach - zasada zwierne do masy - wolne widzę sa porty B2, B3, B4 C3, C4, i dodatkowe menu - opcje wł/wył jak alarm w obecnym sterowniku bez godziny - ale ustawiam z poziomu menu lub programu że np po 5 czy20 minutach buzer da krótki sygnał który będzie sie powtarzał co 2 czy 5 min do ustalenia i tylko opis do tego (swiatło piwnica wł/wył) światło strych wł/wył - chodzi mi o taka informacje garaż drzwi otw/zamk ..... - wsparlem stronke niewielka kwota bo czyjaś praca jest zawsze coś warta - prosze o podanie kwoty dopisania tego menu (na prv)- może wykorzystanie jeszcze pinów od alarmu A2 i A3 bo alarm mam profesionalny wiec nie potrzebuje - ale niech to w menu zostanie - szkoda czasu a może się przyda - Sterowniczek teraz mi działa tylko jeszcze nie wiem jak działają te F1 i F2 - w różnych menu różnie działają
Oooooo inaczej może - zastosowanie dodatkowego procka tylko dla kodu BCD dla portu B2 B3 B4 - i już 8 wejść jest :) a ich sygnalizacja na ledach z dodatkowego procka - moge podłączyc atmege 8 bo mam ich pod dostatkiem - o dobry pomysł
Nie działa mi tr1 czyli ninia 1 - ani automatyczne ani ręczne - niepokazuje sie stan niski na C2 pin24 - C1 pin 23 dziala ręcznie F2 i automatycznie (mało tych funkcji do zaprogramowania) temp. działa poprawnie
Nie działa mi buz. pin C5 - po zał sie alarmu nie zmienia sie stan wyjścia - jest cały czas stan wysoki hmm - jakies pomysły - bo w menu alarm dziala poprawnie zwierny i rozwierny cichy i glośny wstawia godzine
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
naprawiłem Tr1 i Buz (syren)
Wystarczyło poczytać note katalogowa Atmega16 - oryginalnie w nowym procku piny C2 do C5 sa nieaktywne a działaja na JTAG - przełączyłem na we/wy i smiga
jeszcze sprawa buzera - musi mieć własny generator a nie z poziomu programu
To juz chyba sterownik rozpracowany
literki w menu "A" - to automatyczna praca a literka "R" to praca reczna (ustawiane F1 F2 Up Down - zależy od menu)
pozdrawiam
:)
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Sterownik Domowy
Zapomniałem o JTAG'u w zrzucie fusebitów mam wyłączony ale jak mówiliśmy o ustawieniach w bascomie to mi się zapomniało. Do wykorzystania są piny B2 do B7 (6 sztuk), najlepiej jako wejścia bo do 3 ostatnich podpinany jest jeszcze programator. Dodatkowo D0 i D1 oraz te co wspominałeś na porcie C. Co do tego prostego alarmu to czasem warto sobie podłączyć. Może się okazać że potencjalny złodziej znakomicie poradzi sobie z farycznym alarmem (bo już o tym czytał i to zna) a zwykły buzzer go załatwi bo nie będzie się tego spodziewał :)
Co do dodatkowych funkcji to chodzi o takie ostrzeżenia o nie zamknięciu drzwi i ewentualnie nie zgaszonym świetle? Czyli jeśli dobrze rozumiem to po prostu jeśli dane wejście jest włączone w menu i jest na nim masa to po określonym czasie ma się włączyć buzzer co 5 min.
Nie wiem jak będzie z miejscem w programie na napisy w stylu "strych", "garaż" itp. jak by to mogło być na jednym menu to może by się dało. Chodzi o coś takiego:
"IN1 1/0 O/Z IN2 1/0 O/Z "
"IN3 1/0 O/Z IN4 1/0 O/Z "
gdzie 1/0 oznacza włącz wyłącz powiadomienie a O/Z oznacza stan danego wejścia
Jeśli chodzi o coś innego to musisz jasno napisać z przykładami bo z domysłów nic nie wynika
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
sterownik domowy
Twoja propozycja jest czytelna dla nas wykonujących ale dla innych domowników raczej nie
jeśli nie starczy miejsca to zamiennik atmega 32 :) - te same wyprowadzenia 100% więcej miejsca
=====================================================
wiec nazwy zdecydowanie pełne lub częściowe w stylu jak ty masz
Strych > wył 10
Garaz > wł 8
Gar drz > zam 10
Piwnic > wył 16
cyfry na końcu to czas (minuty) po jakim będzie pierwszy sygnał przez biper (set -> up, down)
tylko że jeśli będzie np 6 takich kanałów to będzie 6 timerów odliczających czas - czy to nie problem
a jeśli problem z timerami to może prościej tylko mrugające podświetlanie wyświetlacza - przez cały czas jeśli jest tam wł światło (sygn zwarty do masy)
========================================================
i jeszcze jedna pozycja i dodatkowe menu
*** Szambo ***
##########.......
sterowanie akurat 16 polami i wykożystanie kodu BCD z czujnika w szambie (tu bedzie atmega który przeliczy kod 16/1 na kod BCD) (połączenie do masy to jedynki)
no i oczywiście sygnał dzwiękowy jeśli będzie np. na pozycji 14/16 bip (szybkie bip) raz na 24 godziny 15/16 to (szybkie bip bip ) raz na 12 godzin 16/16 (szybkie bip bip bip) co 2 godziny no a potem się wylewa na trawkę
========================================================
a może zastosować LCD 4x20 -
Może wykonam do tego programu sterownik w wersji v2 taki indywidualny dla mnie a ty tylko program dopiszesz - jeśli posiadasz GG to prosze o kontakt na prv email to dogadamy się wstepnie
pozdrawiam
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Sterownik Domowy
Twoje propozycje są całkowicie ok. Wolałbym żeby wszelkie ulepszenia pojawiły się na stronie i tu były opisywane. Mogą przydać się większej liczbie użytkowników. Jak będę miał trochę czasu to poprostu dopiszę dodatkowe funkcje i nie trzeba się ze mną do tego celu prywatnie umawiać. Narazie zajmijmy się pierwszą funkcja z ostrzeżeniami. Nie trzeba do tego timerów, w układzie i tak wykorzystuje tylko jeden timer. Wystarczą zmienne liczniki... Dla uproszczenia chciałbym to zrobic tak: jeśli ustawisz sobie np. strych, czas 10min to ostrzeżenie z brzęczyka będzie co 10min ze światło się świeci, jeżeli np garaż ustawiony jest na 4min to gdy są otwarte drzwi to co 4min będzie sygnał. Moje pytanie: Czy ma sens wogóle ustawiać różne czasy dla różnych świateł i drzwi? Można zrobić inny czas dla świateł i inny dla drzwi ale żeby np ustawiać inny czas ostrzeżenia dla drzwi w garażu a inny w piwnicy to nie wiem po co
Dodatkowo ważniejsza na wyświetlaczu była by dla mnie np informacja że światło jest włączone lub nie i czy kontrola tego światła jest włączona czy nie. Poza tym wszystkie te czujniki uważam że powinny uruchamiać jedną sekwencję ostrzeżeń a nie każdy alarmek innaczej pikający. Mam tu na mysli tak: jeśli drzwi otwarte dostatecznie długo to ustaw flagę żeby pokazało ostrzeżenie. tak samo z lampami i innymi drzwiami. Ostrzeżenie natomiast jest wspólne i pojawia się tylko wtedy kiedy którykolwiek z problemów został zauważony a znika kiedy nie ma żadnych problemów na wejściach które są aktywne:
na LCD dał bym to tak:
Strych Wł/Wył Wł/Wył
może być troszkę inaczej ale ogólnie pierwsze wł/wył jest odczytywane z czujnika a drugie to ustawienie czy ma to byc badane czy nie
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
podoba mi sie pomysł w czasami
Dla uproszczenia chciałbym to zrobic tak: jeśli ustawisz sobie np. strych, czas 10min to ostrzeżenie z brzęczyka będzie co 10min ze światło się świeci
pomysł Super - żeby utrzymać standard menu sterownika to pomysł z menu lcd oki
Strych wł 10 B
Piwnic wył off .
ilość znaków jest poprawna 16 ( wł/wył) 10 to czas (0=OFF beper) (Set - up/down)
OK powiecmy że sprawa rozwiązana - teraz jak z sygnałem i ilością rozwinięcia o te 2 menu kontrola i szambo - Czy dodatkowy procesor czy jakieś inne rozwiązanie elektroniczne
[img]http://obrazki.elektroda.net/80_1259674358.png]
taka propozycja
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Sterownik Domowy
Nie zrozumieliśmy się odnośnie tego ustawiania czasów, chodziło mi o to aby nie ustawiać niezależnie czasów zwłoki alarmu dla każdego z wyjść. Po co alarmować o niezgaszonym świetle na strychu po 10 min, a o świetle w piwnicy np po 20min. Sensowniej jest zrobić jeden ustawiany czas po którym alarmują się wszystkie wejścia, lub zrobić ustawiany czas T1 dla lamp i drugi T2 dla drzwi. Na LCD myślałem aby pokazywać najważniejsze czyli stan danej lampy i fakt czy sprawdzanie stanu jest włączone czy nie. Czas zwłoki będzie ustawiany w osobnym menu jako parametr.
Co do drugiej sprawy to komunikację z drugim procesorem najłatwiej jest zrobić za pomocą RS232 (2 przewody + masa) i można nadawać w dwie strony. Do zrobienia tylko odbioru potrzebny jest tylko pin pd.0
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
DS18B20
mam pytanko dlaczego DS18B20 są podłączone równolegle ??
Re: DS18b20
A dlaczego miało by być inaczej? Zawsze tak podłącza się wiele DS'ów
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
wsad
przesłał by mi pan mirley wsad do procka w HEX
LCD
Witam,
projekt i wykonanie jak zawsze świetne. Jedyne co bym zmienił to LCD na negative np:
http://www.allegro.pl/item839462521_art_nowe_lcd_2x16_w_kk_white_negative_blackline.html
(aby podświetlanie działało należy zamienić pin 15 z pinem 16 przy podłaczeniu LCD)
'Podstawowy' LCD wygląda trochę jak z kasy fiskalnej:-). A jeśli sterownik ma być w miejscu widocznym nie tylko dla mieszkańców to bardziej elegancko wygląda LCD negative (ale to tylko moja opinia).
Pozdrawiam,
drowning_man
HEX
Bardzo proszę
**** LINK ***
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Sterownik
LCD to kwestia gustu... negatyw jak najbardziej może być. Z wyprowadzeniami podświetlania trzeba uważać bo spotkałem już różne wersji z odwróconymi i nieodwróconymi pinami 15-16
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
kontrola światła
witam czy sa jakies postepy w menu
Strych Wł/Wył Aktywny (czuwa)
coś do testów
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Sterownik
Jeszcze nie napisałem nic... jestem trochę zajęty i nie obiecuje że coś w najbliższych dniach napiszę
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
kod
Mirku poprosze o dopisanie to już zamontuje ten sterownik i wesprę pana kolejną kwotą serwis http://mirley.firlej.org :-)
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Sterownik
Jak już powiedziałem spróbuje zrobić coś w najbliższym czasie ale nic nie obiecuje.
------------
Udało mi się dopisać dodatkowe funkcje z 6 wejściami ale nie do końca. W menu da się wszystko ustawić i narazie wyświetlany jest stan wejścia (0/1) oraz zal/wyl mówiące o tym czy wejście ma być sprawdzane. Ponadto da się ustawić czas czuwania wspólny dla wszystkich wejść. Teksty oczywiście można podmienić na inne moga mieć do 10 znaków. Co do stanu np lampy czy drzwi to w najbliższym czasie zrobię to tak że będzie wyświetlana ikonka drzwi jeśli są otwarte a ikonka żarówki jeśli jest włączona. Jako 6 wejśc oprogramowane są piny portu B od 2 do 7.
Program jest jeszcze niedokończony bo nie robi najważniejszego czyli nie wywołuje alarmu. Narazie kod możesz sobie sprawdzić, czy menu działa itp i czy po zwarciu odpowiednich pinów w porcie B do masy zmienia się wskazanie 0 na 1 i odwrotnie. Kod dostępny jest tutaj. Resztę dopiszę jak będę miał czas.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Program 1.03
W nowej wersji programu nie działa temperatura i sa pozmieniane przyciski
i jeszcze jak nie jest pin zwarty do masy to nie dziala beep (sygnał) - ok
pozmieniałem sobie opisy - znaki graficzne - teraz OK
testy podlaczenia do masy zakończone z sukcesem - i w koncu poraszka - nie odłączyłem złącza programowania i padł procesor atmega 16
zamowiłem 16 i 32 oraz lcd 4 x 20 BIG - białe napisy czarne tło - efektowne to jest
wiec prace zatrzymały się - teraz bedzie instalacja w ścianie i okablowanie - jako szyna informacji zdecydowałem sie na przekaźniki 5V mini - zasilanie 230v przez kondensator i rezystor
Program malinka :)
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS