Prosty Sterownik Domowy


9.2
Ocena: None Średnia: 9.2 (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)
1x Złącze Śrubowe ARK3(potrójne)
1x Złącze Śrubowe ARK3(potrójne)
1x Listwa Goldpin 1x3 (RS)
2x Listwa Goldpin 1x3 (DS18B20)
1x Listwa Goldpin 1x4 (Prog)
1x Bateria 3V(CR2032) + Podstawka
6x uSwitch
1x 2A Bezpiecznik

5x 3,3k
1x 4,7k
1x 47R
6x 180R
3x 330R
3x Warystor JVR-7N431
1x Potencjometr Montażowy 10k

2x 22pF
1x 33pF
2x 100nF
2x 47uF Elektrolit
1x 220uF Elektrolit

1x Rezonator Kwarcowy 16MHz
1x Rezonator Kwarcowy 32768Hz
2x 1N4148
3x Dioda LED
2x BC556
1x Stabilizator 7805
1x Mikrokontroler ATMEGA16 + Podstawka
1x Układ RTC PCF8583
3x BT138-600E
3x MOC3041
1x Buzzer z Generatorem 5V
1x LCD 16x2

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:

ZałącznikWielkość
Schemat64.7 KB
Płytka26.28 KB
Płytka (odbicie lustrzane)26.24 KB
Płytka (2 na stronie)49.87 KB
Montowanie38.47 KB
Opis14.54 KB
Opis (odbicie lustrzane)14.57 KB
Kod Źródłowy23.71 KB
Program po kompilacji (bin)10.85 KB
Program po kompilacji (hex)30.54 KB
Kod Źródłowy (2 termostaty)26.73 KB
Program po kompilacji (bin, 2 termostaty)12.4 KB
Program po kompilacji (hex, 2 termostaty)34.9 KB



Portret użytkownika serv_

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.

Portret użytkownika piotrek-zki

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

Portret użytkownika mirley

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.

Portret użytkownika alex

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?

Portret użytkownika mirley

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.

Portret użytkownika alex

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?

Portret użytkownika mirley

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.

Portret użytkownika IMEX2

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

Portret użytkownika serv_

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.

Portret użytkownika alex

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

Portret użytkownika IMEX2

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

Portret użytkownika mirley

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.

Portret użytkownika IMEX2

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

Portret użytkownika andrzej34

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?

Portret użytkownika mirley

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.

Portret użytkownika andrzej34

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?

Portret użytkownika mirley

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.

Portret użytkownika IMEX2

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

Portret użytkownika mirley

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.

Portret użytkownika jacxek

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

Portret użytkownika mirley

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.

Portret użytkownika MULTIMEN

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

Portret użytkownika mirley

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:

  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
 
     dodatkowy pin = not Tr_term           '<<<<<< tu trzeba dodać sterowanie dodatkowym pinem    
 
  End If

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.

Portret użytkownika MULTIMEN

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

Portret użytkownika IMEX2

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

Portret użytkownika mirley

Re: Klimatyzacja

MULTIMEN:
Wystarczy dodać linijkę:

PortC.3 = not Tr_term

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.

Portret użytkownika IMEX2

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

Portret użytkownika IMEX2

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

Portret użytkownika mirley

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.

Portret użytkownika IMEX2

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

Portret użytkownika IMEX2

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

Portret użytkownika mirley

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.

Portret użytkownika IMEX2

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

Portret użytkownika IMEX2

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

Portret użytkownika mirley

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.

Portret użytkownika IMEX2

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

Portret użytkownika mirley

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.

Portret użytkownika IMEX2

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

Portret użytkownika mirley

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.

Portret użytkownika michal3421

DS18B20

mam pytanko dlaczego DS18B20 są podłączone równolegle ??

Portret użytkownika mirley

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.

Portret użytkownika michal3421

wsad

przesłał by mi pan mirley wsad do procka w HEX

Portret użytkownika drowning_man

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

Portret użytkownika IMEX2

HEX

Bardzo proszę

**** LINK ***

-

Grzesiek - miasto Ostróda

GG 12372371 dom
tel 502812675 SMS

Portret użytkownika mirley

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.

Portret użytkownika IMEX2

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

Portret użytkownika mirley

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.

Portret użytkownika IMEX2

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

Portret użytkownika mirley

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.

Portret użytkownika IMEX2

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