(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:
|
|||||||||||||||||||||||||||||||
A wydrukowałeś bez
A wydrukowałeś bez skalowania?
Fotografia, Linux, programowanie, python.. czyli strona domowa || Galeria fotografii http://galeria.firlej.org
plytka
Tzn. wziąłem otworzyłem plik płytka.pdf i wydrukowałem nic nie zmieniając.
elektron1988
I 3cm odcinek ma rzeczywiście
I 3cm odcinek ma rzeczywiście 3cm?
"nic nie zmieniając" - to akurat bład bo adobe ma OIDP standardowo skalowanie załączone.
Fotografia, Linux, programowanie, python.. czyli strona domowa || Galeria fotografii http://galeria.firlej.org
Aha. Dziękuję za informację,
Aha. Dziękuję za informację, na przyszłość będę o tym pamiętał.
elektron1988
timer sekundowy
Witam,
Zrobilem sterownik. Dziala jak należy. Ale potrzebuje wykorzystać jeden timer sterownika do uruchamiania kroplownika na ok 5-30 sek. Co należy dopisać w kodzie żeby mozna było ustawić godzinę wył/wł jednego timera z uwzględnieniem sekund? To dla mnie wazna sprawa, wiec bardzo proszę o pomoc kogoś biegłego w temacie.
kroplownik
witam co to takiego ?? ten kroplownik
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
re:timer sekundowy
przyrząd do precyzyjnego dozowania cieczy (kroplami).
oj te kropelki
chcesz w kodzie dodatkowy timerwł/wył tylko o określonejgodzinie czyjak ?
ma się wł o godz 19,37,20 sekund a wył 19,37,40 sekund czy jak ?
chcesz zastosować do tego dodatkowy triak/przekaźnik poza tymi trzema triakami i dodatkowe menu
Jaki zastosowaleś procek M16 czy 32
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
re :timer minutowy
Nie dodatkowy, ale jeden z dwóch timerów, które sa juz w układzie. Drugi może chodzić minutowo , tak jak dotąd. Chodzi dokładnie o to co napisales, czyli możliwość ustawienia timera na kilka sekund np. 08:30,40 sek do 08:30,48 sek. Kroplownik ma podac kilka ml cieczy, a taką ilość podaje w kilka sekund. Obecnie timer można ustawić minimum na minutę, a to już jest za dużo zdecydowanie. Myslalem zeby w tym samym menu dodac możliwość ustawienia godziny wl/wyl jednego z istniejacych kanalow z uwzględnieniem sekund. Procesor mam Atmega16.
timer sekundowy
napisz do mnie na gg
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
re:timer sekundowy
Gdyby ktoś wiedział jak zmodyfikować program sterownika na sekundowe odliczanie i miał ochotę pomóc to prośba zostaje aktualna.
Re: Sterownik domowy
Trzeba zamienić czas z reprezentacji minutowej na sekundową w procedurze sterowanie (fragment podobny do tego niżej)
Trzeba dac godziny *3600 + minuty *60 + sekundy zarówno dla czasu aktualnego jak i dla obu czasów ustawianych
W procedurze przycisków trzeba dopisać dodatkowe case do poz_ust i przy poz_wysw = 2 czyli dla ustawień czasów odpowiedzialne za ustawienia sekund dla wszystkich 4 czasów. Oczywiście trzeba zrobić tablicę S(4) na początku programu analogiczną do minut i godzin
Na końcu w procedurze Wysw_lcd w case = 2 trzeba dopisac wyświetlanie tych sekund. Nie wiem jak to zmieścisz na LCD. Trzeba będzie chyba dwukropki pominąć i zrobic napis w stylu: 123456-123554
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.
re:timer sekundowy
Wielkie dzieki za zainteresowanie. Niestety ponieważ jestem zielony w programowaniu to niewiele z tego zrozumiałem. Ale może ktoś znajdzie czas i wklei jak powinny wyglądac poszczególne fragmenty kodu. Ważne, że da się to zrobić, bo jedyna rada jaką dotąd dostałem, to że się nie da i trzeba od nowa wszystko pisać, co zniechęciło mnie do zmian i zamierzałem zrobić elektroniczny opóźniacz startu wywoływany impulsem z timera, ale to droga na około. Oczywiscie dwukropki nie są niezbędne. Dzięki raz jeszcze.
thermostats from histereza
Or I could be made that bi had up two thermostats from histereza instead of timer
Re: Termostats
Two termostats are possible to implement in this project, but program must be completly different. I'm afraid I don't have time to do this in this moment
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.
because doesn't in a hurry
because doesn't in a hurry like this samo comes on that to make so you please that you make me this when you will have time
kilka pytań
Witam! Chcę zbudować ten układ i mam kilka pytań. Jakich układów alarmowych można tutaj użyć? Proszę o jakieś przykłady. Chciał bym mieć czujnik alarmujący o otwarciu drzwi. Kolejnym pytaniem jest to, czy triaki powinny mieć radiatory? Jeżeli tak to czy przy jednym wspólnym muszą być odizolowane np. podkładką mikową?
Re: Triaki
Triaki raczej nie potrzebują radiatorów. Musiałbyś podłączyć dużą moc do obciążenia rzędu 500W żeby się nagrzewały. To czy możesz je zewrzec czy nie zależy od triaka. niektóre maja na blaszce anodę a niektóre są izolowane. Zawsze należy sprawdzić w PDF'ie
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.
mirley or you will consider
mirley or you will consider little time my request thermostats from histereza instead of timer
Re: Sterownik
Sorry but I don't have time in this month.... many thinks to do and not too much time to do this
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.
Ok only that you didn't
Ok only that you didn't forget
Ilość DS-ów
Od dłuższego czasu przeglądam tą stronę i w końcu zdecydowałem się wykorzystać pomysł Sterownika. Zakupiłem już wszystkie elementy. Ale ... jest on prawie w 100% zgodny z moimi potrzebami:
- chciałbym zastosować 6 czujników pomiaru temp. (jest o tym mowa ale nie znalazłem jaki dopisać kod i jak je później wczytać korzystając z kombinacji klawiszy?)
Może mała pomoc lub wyjaśnienie nie zajmie zbyt dużo czasu!!
Krzysiek
Re: Ds
Żeby wstawić więcej dsów trzeba się trochę natrudzić. Modyfikacji trzeba dokonać w całym programie:
i
potem w procedurze odczytu temperatury, w wyświetlaniu i w obsłudze klawiszy jeśli chcesz aby temperatury wyświetlały się jako ekran 4.
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.
Ilość DS-ów
Tak wiem, "bez pracy nie ma kołaczy". Masz w sobie coś z nauczyciela.
Nie programowałem nigdy w BASCOM-ie i stąd kłopoty. Czytam właśnie sobie o tym i owym na Twojej stronie i nie bardzo wiem czy kolejne DS mogą być 60+N, 70+N, 80+N (już są 30+N, 40+N, 50+N), pętlę rozumiem, odczyt przycisków z kodu binarnego już też.
Nie mógłbyś zamieścić fragmentów kodu ze zmianami dla 1 (jednego!) następnego DS-a - sądzę, że byłoby to pomocne nie tylko mnie.
Co do wyświetlania, kupiłem wyświetlacz 20x4 więc i tak będę musiał ten fragment przerabiać - o tym później.
Krzysiek
Re: DS
Adresy dsów mogą być zapisywane na kolejnych miejscach 60+N, 70+n itd. Jak już zmienisz, dopiszesz procedury rejestracyjne, na samym początku. Dodasz linijkę z odczytem numeru z eeproma (to z 60+N itd) to trzeba zmienić procedurę odczytu temperatury. Jest ogólnie napisana więc nie powinno być problemu, dodajesz kolejnego case'a:
i jeszcze zakres licznika
Trzeba jeszcze dodać zmienną tablicową Ds4 i zwiększyć ilość komórek tablicy T. Po tych zabiegach powinno już czytać temperaturę. Możesz sobie ją wyświetlić np zamiast T1 podmieniając zmienną w procedurze wyświetlania.
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.
Ilość DS-ów
Dzięki za podpowiedź, tymczasem znalazłem na Twojej stronie w kodach źródłowych artykuł o DS18x20 i już wiele rozumiem.
Spróbuję uruchomić układ zwiększając ilość czujników ale z wyświetlaczem 16x2 podmieniając tak jak sugerujesz tylko zmienne. Jak zadziała zabiorę się za zmianę wyświetlacza bo jeszcze nie wiem jak obsługiwane są te 4 linie. Wtedy, jeżeli pozwolisz, znowu będę miał jakieś pytania. Na razie zabieram się do przeróbki płytki bo układy wykonawcze chcę dać w innym budynku (odległość między budynkami ok. 6m) a dołożyć gniazda i wtyczki.
Krzysiek
sterownik domowy
WITAM NAPRAWDĘ NIE SAM-OWITE PROJEKTY WSZYSTKO JAK NA TALERZU PODANE
STEROWNIK ZŁOŻONY WSZYSTKO ŁADNIE ŚMIGA TERAZ TYLKO KWESTIA SYRENY I JAKIEJŚ LAMPY LED KOGUCIK POD BUZER PRZEKAŹNIK I BĘDZIE GRAŁO WSZYSTKO
WIELKI SZACUNEK DLA MIRKA
sowa
Sterowanie
Układ sterownika jest doskonały-mam świetną zabawę dzięki Tobie Mirku. Minęło trochę czasu ale wszystko jest na dobrej drodze. Udało mi się dopasować sterownik do własnych potrzeb:
- 7 termometrów,
- wyświetlacz 4x20,
- 5 triaków(dodatkowe C3 i C4) ale... to za mało na moje zapędy do sterowania.
Czy istnieje sposób aby rozszerzyć ilość wyjść jeszcze tak o 3-4 triaki. Może po RS-ie ... a może jest to gdzieś na Twojej stronie tylko ja tego nie widzę.
Krzysiek
Dodatkowe piny
Właśnie z tego powodu, braku pinów i pamięci w M32 przesiadłem się na Atmegę 128 - Obecnie po rocznej pracy nad domowym sterownikiem i dopracowaniem programu (60% pamieci) i tak ma jeszcze delikatne niedociągnięcia (tak dla odpicowania) myślę nad Atmegą 256 która ma kilka pinów więcej. No i zasadnicza sprawa duuuuuża ilość wątków. Obecnie moja atmega 128 wykonuje przy jednym przejściu około 100 - więc pracuje na 80% swojej mocy :)
Jeżeli wystarcza tobie pamięci w M32 domniemam to zwiększenie ilości triaków to nie problem - zrób to na podstawie Kodu BCD - zastosuj do tego Atnity lub atmegę 8 - Za pomocą 4 pinów M32 możesz sterować 15 triakami.
Pozdrawiam
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Dodatkowe piny
Dzień dobry IMEX2, Twój wpływ na moje prace jest również niebagatelny(pomysł na sterowanie C3,C4, czuwanie nad wejściami, - bez urazy Mirku!). Mam jeszcze trochę miejsca w M32(nie napisałem wcześniej, że zmieniłem M16/M32) i jak sądzę na razie wystarczy jeszcze na te dodatkowe triaki. Ale jak widać wcześniej moja zabawa zaczęła się z Bascom-em we wrześniu i wiedza przybywa na zasadzie porównań innych projektów i pomysłów. Zupełnie zadowala mnie pomysł z kodem BCD i Attiny2313. Jedyny problem to jakiś przykład schematu i oprogramowania. Szukałem również na elektrodzie ale nie potrafię znaleźć konkretnego przykładu w Bascom-ie.
Dzięki za podjęcie tematu.
Krzysiek
Re: Triaki
Jak zostanie zastosowany dekoder BCD to automatycznie będzie mógł działać tylko jeden triak. Nie da się włączyć np 3 i 5 jednocześnie. Polecam raczej expender na i2c PCF8574A lub podobne
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
Dzień dobry Mirku!
Odpowiedź jest konkretna i wyklucza zastosowanie. Co do i2c poczytałem trochę na elektrodzie i jest to "trochę" zbyt skomplikowane jak dla mnie. Może zmiana na M128 była by sensowniejsza ale robota od nowa. Mam pytanie wynikające z braku wiedzy o AVR- porty A,B,C,D w karcie katalogowej opisane są tak samo jako DRIVERS/BUFFERS czy mogę zatem zrezygnować np. z portu B.3 jako wejścia a zrobić z niego wyjście na triaka???
Jeżeli nie, to czy mógłbyś wskazać jakiś przykład z wykorzystaniem i2c?
Jeżeli chodzi o Twój sterownik to działa on bez zarzutu i steruje pracą kilku urządzeń w domku. Super zabawa!
Krzysiek
Re: Sterownik
Dowolny pin mikrokontrolera możesz użyć w dowolny sposób, jeśli chodzi o klasyczne zastosowania jako wejście lub wyjście. Wiadomo że są piny o dodatkowych specjalnych funkcjach takie jak przerwania zewnętrzne, wejście countera itp, ale do triaka nadaje się każdy pin. Wystarczy go skonfigurować jako wyjście na początku w programie. Przykład I2c jest np tutaj a także w projekcie zegara nixie no i przede wszystkim w projekcie który zrobiłeś. Wystarczyło by podłaczyć expender równolegle z zegarem do pb1 i pb0
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.
I2c
To rzeczowa odpowiedź. Oczywiście zegar działa w oparciu o I2c ale jeszcze nie bardzo wiem na jakiej zasadzie działa tu ekspander(nazwa kojarzy mi się raczej z ekspanderami do alarmu Satela). Będę musiał poczytać o tym, a doraźnie zmienię porty B z czuwania na sterowanie triakami.
Pomysł z sufitem też jest OK.
Krzysiek
Re: Expender
Mozna to nazwać "rozszerzaczem" portu. Proste działanie. Masz układ którego sterujesz przez I2C. a uzyskujesz 8 pinów wyjściowych. Wysyłasz np liczbę 255 po I2c to wszystkie wyjścia expendera ustawiają się w stan wysoki. Wysyłasz 1 to tylko pierwszy bit ustawia się w stan wysoki a reszta jest w niskim.
Wadą jest to że expender PCF8574A nie ma wyjść w standardzie takim jak AVR. Do masy jest silne zwarcie ale jak jest stan wysoki to podciągany jest stan źródłem prądowym 100uA. Jak zastosujesz sterowanie poprzez zwieranie do masy np optotriaka to nie musisz się tym przejmować.
Duża zaletą jest to że nawet jak procesor się zawiesi i zresetuje to expender trzyma stan wyjść jakie miał przed resetem. Można z niego odczytać ten stan i na nowo zainicjalizowac zmienne w programie. Przydaje się to w wypadkach kiedy choćby nie wiem co się działo z prockiem odbiornik ma działać w stanie jaki ustawiłeś
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.
I2c-Rolety
Dzisiaj dwie sprawy:
1. Przeglądałem te Twoje strony i I2c owszem jest wykorzystywany ale nie w połączeniu z PCF8574A. Znalazłem w necie schemat z dwoma PCF-ami i rozszerzeniem do 16 wyjść - ale bez oprogramowania, czyli nie bardzo wiem jeszcze jak tym sterować.
2. Wyjścia mają sterować podnoszeniem i opuszczaniem rolet - czyli dwa triaki na roletę. Napisałem w programie, że F1 opuszcza roletę a F2 ją podnosi.
Przycisk "-" zatrzymuje opuszczanie przez zmianę z Tr5=0 na Tr5=1. Wszystko było OK do momentu wstawienia WAIT. Aby zjechała do końca wstawiłem parametr "Wait" następnie zmianę wartości na 1. Niestety to nie działa - "-" nie wymusza stanu 1 w trakcie trwania cyklu.
Problem tkwi w tym, że chciałbym aby po F1 bez ingerencji opuściła się do końca lub po naciśnięciu "-" zatrzymała się w dowolnym miejscu.
Krzysiek
Re: Sterownik domowy
1: Chodzi o ogólną ideę nadawania do PCF'a zrób sobie prosty ukłąd tylko z procesorem i PCF, podłacz do pcf'a diody i popróbuj swoich sił w programowaniu. Spróbuj tego do wysyłania danych:
Odczyt będzie podobnie
2. Nie rozumiem tego, co dokładnie i gdzie wstawiłeś, polecenia wait nie wstawiaj bo się nie nadaje do poważnych zastosowań
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.
Przyciski
1. Spróbuję zrobić jak radzisz model i pobawię się( potrzebuję dokładnie 8 dodatkowych wyjść).
2. Chodzi tu tylko o przyciski wł/wył i stop.
Dopisałem
problem tylko jak zrobić aby triak był włączony przez 30 sekund(czas potrzebny na całkowite zamknięcie) i/lub aby można go było wyłączyć w dowolnym momencie
Krzysiek
Re: 30 s
W programie musisz dodać zmienną, która policzy ten czas. Co np. 1s sprawdzasz jaki jest stan na triaku i jeśli został uruchommiony to zwiększasz licznik. jeśli licznik dojdzie do 30s to wyłączasz triak i resetujesz wartośc tej zmiennej.
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.
Witam, właśnie dziś
Witam, właśnie dziś uruchomiłem ten sterownik i mam pytanie który fragment kodu trzeba by zmienić żeby zamiast funkcji termostatu było trzecie wyjście sterowane czasowo.
Re: Sterownik domowy
NIe jest to takie proste. Trzeba zrobić nowe zmienne G i M, zwiększyć rozmiar tablicy o 2. Zamiast menu termostatu wkleić menu odpowiedzialne za kolejny sterownik czasowy z czasami G(5) M(5) i G(6) M(6). W menu sterowania nalezy zmienić pętle for na od 1 do 5 i dopisać ifa dla N=5 żeby sie odpowiedni triak włączył. Jeszcze w obsłudze klawiatury trzeba napisać ustawianie tych G i M dodatkowych
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.
A mógłbyś mi pomóc w zmianie
A mógłbyś mi pomóc w zmianie tego kodu, nie mam doświadczenia w pisaniu programów a chciałbym w pełni wykorzystać możliwości sterownika
Re: Sterownik domowy
Raczej będzie ciężko z czasem ale mogę coś na sucho bez sprawdzania napisać.... po nowym roku
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.
W takim razie czekam z
W takim razie czekam z niecierpilością. pozdrawiam
problem z uruchomieniem sterownika
Witam,
mam problem z uruchomieniem owego prostego sterownika domowego wszystko zostało zmontowane zgodnie ze schematem program został wgrany do uP i po włączeniu zasilania po ok 3s włącza się wyświetlacz jego podświetlenie lecz nic na nim nie jest wyświetlane po kilku sekundach zapala się dioda przy trzecim triaku po jakimś czasie gaśnie wyświetlacz a dioda świeci w dalszym ciągu. Prosił bym o pomoc co z tym zrobić aby to zaczęło poprawnie funkcjonować.
Pozdrawiam andrzej19903
Re: Sterownik domowy
A kontrast LCD próbowałeś ustawić..... może dlatego masz wygaszony
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.
już działa wystarczyło
już działa wystarczyło ustawić kontrast.
Gdzie się ustawia te
Gdzie się ustawia te fusebity?
Re: Fusebity
A jakim programem programujesz?
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.
programy pisze i kompiluje w
programy pisze i kompiluje w bascom avr wersja 1.11.9.8 mam wersje demo, a plik hex do mikroprocesora przesyłam programem avrdude z nakładką graficzną avrdude-GUI