Sobni termostat sa AT89C2051

Projekti naših članova foruma koji su još uvijek u fazi izrade.

Moderators: pedja089, stojke369, [eDo], trax

User avatar
Kukinjos
Pravi forumaš
Pravi forumaš
Posts: 1724
Joined: 28-03-2012, 18:01
Location: Split

Re: Sobni termostat sa AT89C2051

Post by Kukinjos »

Prole... udavi svih zemalja ujedinite se!! :lol:

Code: Select all

'****************************
'Konfiguracija
'****************************
$crystal = 12000000                                           ' 12MHz
$regfile = "89C2051.DAT"                                      ' Kontroler

Config 1wire = P3.7                                           ' 1Wire port
'-------------------------------------------------------------------------------
'****************************
'Postavljanje interrupta
'****************************
Config Timer0 = Timer , Gate = Internal , Mode = 2            ' Konfiguracija timera
Load Timer0 , 250                                             ' Početna vrijednost timera
On Timer0 T0int                                               ' Skok na interrupt podprogram
Enable Timer0                                                 ' Dopusti interrupt timera
Start Timer0                                                  ' Pokreni timer
Enable Interrupts                                             ' Globalno dopusti interrupte
'-------------------------------------------------------------------------------
'****************************
'Varijable
'****************************
Dim Brojac_4ms As Byte , Brojac_100ms As Byte , Brojac_1s As Byte
Dim Vrijednost As Word , Jedinice As Byte , Desetice As Byte , Stotice As Byte
Dim Bd(9) As Byte
Dim T1 As Integer
Dim T2 As Integer
Dim Temp As Word
Dim Mux As Byte

Dim Nova_temperatura As Bit
Dim Procitaj_senzor As Bit
Dim Minus As Bit
Dim Senzor_procitan As Bit
'-------------------------------------------------------------------------------
'****************************
'Početne vrednosti
'****************************
Reset Procitaj_senzor
Reset Senzor_procitan
Jedinice = 191
Desetice = 191
Stotice = 191
'-------------------------------------------------------------------------------
'****************************
'Glavna petlja
'****************************
Do


If Nova_temperatura = 1 Then

   Reset Nova_temperatura
   Vrijednost = Temp

   If Senzor_procitan = 1 Then Gosub Pretvorba

   Gosub Prikaz

End If

Loop

End
'-------------------------------------------------------------------------------
'****************************
'TIMER0 INTERRUPT
'****************************
T0int:

 Incr Brojac_4ms

 If Brojac_4ms = 16 Then
    Brojac_4ms = 0
    Incr Brojac_100ms

    Set Nova_temperatura

    If Brojac_100ms = 25 Then
       Brojac_100ms = 0
       Incr Brojac_1s

       If Brojac_1s = 7 Then
          Brojac_1s = 0


          Disable Interrupts

          1wreset
          1wwrite &HCC
          1wwrite &H44

          If Err = 0 Then
             1wreset
             1wwrite &HCC
             1wwrite &HBE
             Bd(1) = 1wread(9)
             1wreset

             Bd(1) = Bd(1) And &HFE
             T1 = Makeint(bd(1) , Bd(2))
             T1 = T1 * 50
             T1 = T1 - 25
             T2 = Bd(8) - Bd(7)
             T2 = T2 * 100
             T2 = T2 / Bd(8)
             T1 = T1 + T2
             Temp = T1 / 10

          Else
             Temp = 10000                                     'Prikazuje se greška - Err
          End If

          Senzor_procitan = 1
          Enable Interrupts

       End If

    End If

 End If

Return
'-------------------------------------------------------------------------------
'****************************
'PODPROGRAMI
'****************************

Pretvorba:

 If Vrijednost < 1000 Then
    Jedinice = Vrijednost Mod 10
    Vrijednost = Vrijednost / 10
    Desetice = Vrijednost Mod 10
    Vrijednost = Vrijednost / 10
    Stotice = Vrijednost Mod 10

    If Stotice = 0 Then Stotice = 10                          'gašenje nule na stoticama

    Jedinice = Lookup(jedinice , Tabela)
    Desetice = Lookup(desetice , Tabela)
    Stotice = Lookup(stotice , Tabela)
 Else
    Stotice = 134                                             'E
    Desetice = 175                                            'r
    Jedinice = 175                                            'r
 End If

Return
'-------------------------------------------------------------------------------
Prikaz:
 Incr Mux
 If Mux = 3 Then Mux = 0

 Select Case Mux

 Case 0:
 Set P3.5                                                     ' Ugasi stotice
 P1 = Jedinice                                                ' Uzmi jedinice
 Reset P3.3                                                   ' Prikaži jedinice

 Case 1:
 Set P3.3                                                     ' Ugasi jedinice
 P1 = Desetice And &B01111111                                 ' Uzmi desetice i upali točkicu
 Reset P3.4                                                   ' Prikaži desetice

 Case 2:
 Set P3.4                                                     ' Ugasi desetice
 P1 = Stotice                                                 ' Uzmi stotice
 Reset P3.5                                                   ' Prikaži stotice

 End Select
Return
'-------------------------------------------------------------------------------
'****************************
'Tabela za prikaz brojeva
'****************************

Tabela:
 Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255
'BROJ: 0     1     2     3     4     5     6     7     8     9   PRAZNO
Napravio sam i ja testni sustav po tvom nacrtu "AT89C2051 termostatV.845287.sch" :) i probao sam, tako da je to samo tvoj grijeh ako ne radi :azdaja:
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
mojalovaa
Napredujem
Napredujem
Posts: 135
Joined: 29-03-2013, 19:28

Re: Sobni termostat sa AT89C2051

Post by mojalovaa »

Pa jel radi?
User avatar
Kukinjos
Pravi forumaš
Pravi forumaš
Posts: 1724
Joined: 28-03-2012, 18:01
Location: Split

Re: Sobni termostat sa AT89C2051

Post by Kukinjos »

Kukinjos wrote:..... i probao sam, .....
:lol:
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
User avatar
Kukinjos
Pravi forumaš
Pravi forumaš
Posts: 1724
Joined: 28-03-2012, 18:01
Location: Split

Re: Sobni termostat sa AT89C2051

Post by Kukinjos »

Evo koda i za termostat. Kad ga upališ ide u mjerenje i regulaciju temperature, relej se pali ako je stvarna temperatura niža od postavne, a gasi kad je dostigne. Za promjenu postavne temperature pritisneš obje tipke zajedno (plus i minus), tada se displej prebaci u mod namještanja i blinka. Vrijednost mijenjaš tipkama. Kad završiš, opet pritisneš obje tipke i displej prestane blinkat, što znači da je u modu mjerenja temperature i regulacije.

Code: Select all

'****************************
'Konfiguracija
'****************************
$crystal = 12000000                                         ' 12MHz
$regfile = "89C2051.DAT"                                    ' Kontroler

Config 1wire = P3.7                                         ' 1Wire port
'-------------------------------------------------------------------------------
'****************************
'Postavljanje interrupta
'****************************
Config Timer0 = Timer , Gate = Internal , Mode = 2          ' Konfiguracija timera
Load Timer0 , 250                                           ' Početna vrijednost timera
On Timer0 T0int                                             ' Skok na interrupt podprogram
Enable Timer0                                               ' Dopusti interrupt timera
Start Timer0                                                ' Pokreni timer
Enable Interrupts                                           ' Globalno dopusti interrupte
'-------------------------------------------------------------------------------
'****************************
'Varijable
'****************************
Dim Brojac_4ms As Byte , Brojac_100ms As Byte , Brojac_1s As Byte
Dim Vrijednost As Word , Jedinice As Byte , Desetice As Byte , Stotice As Byte
Dim Bd(9) As Byte
Dim T1 As Integer
Dim T2 As Integer
Dim Temperatura As Word
Dim Mux As Byte

Dim Nova_temperatura As Bit
Dim Procitaj_senzor As Bit
Dim Minus As Bit
Dim Senzor_procitan As Bit

Dim Blink As Byte
Dim Tpostavno As Word
Dim Tmax As Word
Dim Tmin As Word
Dim M As Bit
Reset M
Tpostavno = 300
Tmax = 999
Tmin = 0
Relej Alias P3.0
Tplus Alias P3.1
Tminus Alias P3.2
'-------------------------------------------------------------------------------
'****************************
'Početne vrednosti
'****************************
Reset Procitaj_senzor
Reset Senzor_procitan
Jedinice = 191
Desetice = 191
Stotice = 191
'-------------------------------------------------------------------------------
'****************************
'Glavna petlja
'****************************
Do

   If M = 1 Then
      Gosub Menu
   Else
      If Nova_temperatura = 1 Then

         Reset Nova_temperatura
         Vrijednost = Temperatura

         If Senzor_procitan = 1 Then Gosub Pretvorba

         Gosub Prikaz

      End If
   End If

Loop

End
'-------------------------------------------------------------------------------
'****************************
'TIMER0 INTERRUPT
'****************************
T0int:

   Incr Brojac_4ms

   If Brojac_4ms = 16 Then
      Brojac_4ms = 0
      Incr Brojac_100ms

      Set Nova_temperatura

      If Brojac_100ms = 25 Then
         Brojac_100ms = 0
         Incr Brojac_1s

         If Brojac_1s = 8 Then
            Brojac_1s = 0

            Disable Interrupts

            If Tplus = 0 And Tminus = 0 Then M = Not M
            If Temperatura > Tpostavno Then
               Reset Relej
            Else
               Set Relej
            End If

            1wreset
            1wwrite &HCC
            1wwrite &H44

            If Err = 0 Then
               1wreset
               1wwrite &HCC
               1wwrite &HBE
               Bd(1) = 1wread(9)

               Bd(1) = Bd(1) And &HFE
               T1 = Makeint(bd(1) , Bd(2))
               T1 = T1 * 50
               T1 = T1 - 25
               T2 = Bd(8) - Bd(7)
               T2 = T2 * 100
               T2 = T2 / Bd(8)
               T1 = T1 + T2
               Temperatura = T1 / 10

            Else
               Temperatura = 10000                            'Prikazuje se greška - Err
            End If

            Senzor_procitan = 1
            Enable Interrupts

         End If

      End If

   End If

Return
'-------------------------------------------------------------------------------
'****************************
'PODPROGRAMI
'****************************

Pretvorba:

   If Vrijednost < 1000 Then
      Jedinice = Vrijednost Mod 10
      Vrijednost = Vrijednost / 10
      Desetice = Vrijednost Mod 10
      Vrijednost = Vrijednost / 10
      Stotice = Vrijednost Mod 10

      If Stotice = 0 Then Stotice = 10                        'gašenje nule na stoticama

      Jedinice = Lookup(jedinice , Tabela)
      Desetice = Lookup(desetice , Tabela)
      Desetice = Desetice And &B01111111
      Stotice = Lookup(stotice , Tabela)
   Else
      Stotice = 134                                           'E
      Desetice = 175                                          'r
      Jedinice = 175                                          'r
   End If

Return
'-------------------------------------------------------------------------------
Prikaz:
   Incr Mux
   If Mux = 3 Then Mux = 0

   Select Case Mux

      Case 0:
         Set P3.5                                                   ' Ugasi stotice
         P1 = Jedinice                                              ' Uzmi jedinice
         Reset P3.3                                                 ' Prikaži jedinice

      Case 1:
         Set P3.3                                                   ' Ugasi jedinice
         P1 = Desetice                                              ' Uzmi desetice i upali točkicu
         Reset P3.4                                                 ' Prikaži desetice

      Case 2:
         Set P3.4                                                   ' Ugasi desetice
         P1 = Stotice                                               ' Uzmi stotice
         Reset P3.5                                                 ' Prikaži stotice

   End Select
Return
'-------------------------------------------------------------------------------
Menu:

   Debounce Tplus , 0 , Povecaj
   Debounce Tminus , 0 , Smanji
   Vrijednost = Tpostavno
   Gosub Pretvorba

   Blink = Brojac_1s And &H01
   If Blink = 1 Then
      Jedinice = 255
      Desetice = 255
      Stotice = 255
   End If

   Gosub Prikaz


Return

Povecaj:

   If Tpostavno < Tmax Then Tpostavno = Tpostavno + 1
Return

Smanji:

   If Tpostavno > Tmin Then Tpostavno = Tpostavno - 1
Return
'-------------------------------------------------------------------------------

'****************************
'Tabela za prikaz brojeva
'****************************

Tabela:
Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255
'BROJ: 0     1     2     3     4     5     6     7     8     9   PRAZNO
Komentare mi se nije dalo pisat, ajde ti to malo sam :) .
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
mojalovaa
Napredujem
Napredujem
Posts: 135
Joined: 29-03-2013, 19:28

Re: Sobni termostat sa AT89C2051

Post by mojalovaa »

O kuki , hvala , :ohno: nemogu da vjerujem da si tako brz.
Evo i ja nesto radio , napravio plocicu i ako me zeza razvijac.
Otkrio mi jedan profo sta me muci kod razvijanja foto postupkom , razvijac u granulama mora biti hermeticki zatvoren da ne moze da dodje zraka i vlage do njega , jer on inace povuce CO2 iz zraka i prestane da radi.
Attachments
slike plocice.rar
(147.98 KiB) Downloaded 392 times
User avatar
Kukinjos
Pravi forumaš
Pravi forumaš
Posts: 1724
Joined: 28-03-2012, 18:01
Location: Split

Re: Sobni termostat sa AT89C2051

Post by Kukinjos »

Oho i to dvostrana, svaka čast na trudu :D . Kad će realizacija?
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
mojalovaa
Napredujem
Napredujem
Posts: 135
Joined: 29-03-2013, 19:28

Re: Sobni termostat sa AT89C2051

Post by mojalovaa »

Cim prije , mislim da ce naj prije za vikend a naj kasnije za kraj vikenda
User avatar
Kukinjos
Pravi forumaš
Pravi forumaš
Posts: 1724
Joined: 28-03-2012, 18:01
Location: Split

Re: Sobni termostat sa AT89C2051

Post by Kukinjos »

Kod sam iskomentirao, pa ćeš se lakše snaći, inače je u pravilu isti, kao i prošli, možda neka mala kozmetika.

Code: Select all

'****************************
'Konfiguracija
'****************************
$crystal = 12000000                                           ' 12MHz
$regfile = "89C2051.DAT"                                      ' Kontroler

Config 1wire = P3.7                                           ' 1Wire port
'-------------------------------------------------------------------------------
'****************************
'Postavljanje interrupta
'****************************
Config Timer0 = Timer , Gate = Internal , Mode = 2            ' Konfiguracija timera 8 bita, interni clock 1MHz
Load Timer0 , 250                                             ' Početna PRIKAZ timera za 250 uS
On Timer0 T0int                                               ' Skok na interrupt podprogram
Enable Timer0                                                 ' Dopusti interrupt timera
Start Timer0                                                  ' Pokreni timer
Enable Interrupts                                             ' Globalno dopusti interrupte
'-------------------------------------------------------------------------------
'****************************
'Varijable
'****************************
Dim Brojac_4ms As Byte , Brojac_100ms As Byte , Brojac_1s As Byte
Dim Prikaz As Word , Desni As Byte , Srednji As Byte , Lijevi As Byte
Dim Bd(9) As Byte
Dim T1 As Integer
Dim T2 As Integer
Dim Temperatura As Word
Dim Mux As Byte

Dim Slijedeca_znamenka As Bit
Dim Procitaj_senzor As Bit
Dim Minus As Bit
Dim Senzor_procitan As Bit

Dim Blink As Byte
Dim Tpostavno As Word
Dim Tmax As Word
Dim Tmin As Word
Dim M As Bit

Relej Alias P3.0
Tplus Alias P3.1
Tminus Alias P3.2
'-------------------------------------------------------------------------------
'****************************
'Početne vrednosti
'****************************
Reset Procitaj_senzor
Reset Senzor_procitan
Desni = 191
Srednji = 191
Lijevi = 191

Reset M
Tpostavno = 300
Tmax = 999
Tmin = 0
'-------------------------------------------------------------------------------
'****************************
'Glavna petlja
'****************************
Do

   If M = 1 Then                                              ' Ako su pritisnute obje tipke
      Gosub Menu                                              ' idi na menu

   Else                                                       ' ako nisu nastavi s prikazom temperature
      If Slijedeca_znamenka = 1 Then                          ' ako je došlo vrijeme
                                                              ' za prikaz slijedeće znamenke
         Reset Slijedeca_znamenka                             ' restiraj zastavicu
         Prikaz = Temperatura                                 ' i prikaži temperaturu

         If Senzor_procitan = 1 Then Gosub Pretvorba          ' ako je završila akvizicija podataka sa senzora
                                                              ' pretvori podatak za prikaz
         Gosub Prikazi                                        ' i prikaži ga na displayu

      End If
   End If

Loop

End
'-------------------------------------------------------------------------------
'****************************
'TIMER0 INTERRUPT
'****************************
T0int:

 Incr Brojac_4ms

 If Brojac_4ms = 16 Then                                      ' Kad odbroji 4mS
    Brojac_4ms = 0                                            ' resetiraj ga
    Incr Brojac_100ms                                         ' i povećaj brojač od 100mS

    Set Slijedeca_znamenka                                    ' Prikaži slijedeću znamenku                                   '
' ------------------------------------------------------------------------------
    If Brojac_100ms = 25 Then                                 ' Kad odbroji 100mS
       Brojac_100ms = 0                                       ' resetiraj ga
       Incr Brojac_1s                                         ' i povećaj brojač sekundi
' ------------------------------------------------------------------------------

       If Brojac_1s = 10 Then                                 ' Kad odbroji 1 sekund
          Brojac_1s = 0                                       ' resetiraj brojač

          Disable Interrupts                                  ' Zabrani interrupte
' ------------------------------------------------------------------------------

          If Tplus = 0 And Tminus = 0 Then M = Not M          ' Ako su pritisnute obje tipke
                                                              ' uđi ili izađi iz podešavanja

          If Temperatura > Tpostavno Then                     ' Ako je temperatura veća od postavne
            Reset Relej                                       ' isključi relej

          Else                                                ' a ako je manja
            Set Relej                                         ' ukljući ga

          End If
' ------------------------------------------------------------------------------
' RUTINA ZA ČITANJE SENZORA I PRETVORBU TEMPERATURE
' ------------------------------------------------------------------------------
          1wreset                                             ' Inicijalizacija senzora
          1wwrite &HCC
          1wwrite &H44

          If Err = 0 Then                                     ' Ako se senzor javlja
             1wreset                                          ' pročitaj ga
             1wwrite &HCC
             1wwrite &HBE
             Bd(1) = 1wread(9)

             Bd(1) = Bd(1) And &HFE                           ' izračunaj temperaturu
             T1 = Makeint(bd(1) , Bd(2))
             T1 = T1 * 50
             T1 = T1 - 25
             T2 = Bd(8) - Bd(7)
             T2 = T2 * 100
             T2 = T2 / Bd(8)
             T1 = T1 + T2
             Temperatura = T1 / 10                            ' i spremi je u varijablu

          Else                                                ' a ako se senzor ne javlja
             Temperatura = 10000                              ' postavi najveću temperaturu
                                                              ' kako bi se isključio relej i
                                                              ' prikazala greška 'Err'
          End If
' ------------------------------------------------------------------------------
          Senzor_procitan = 1                                 ' Postavi zastavicu da je senzor pročitan
          Enable Interrupts                                   ' i dopusti interrupte

       End If

    End If

 End If

Return
'-------------------------------------------------------------------------------
'****************************
'PODPROGRAMI
'****************************

Pretvorba:

 If Prikaz < 1000 Then                                        ' Ako je temperatura u granicama
    Desni = Prikaz Mod 10                                     ' izračunaj broj za desnu znamenku
    Prikaz = Prikaz / 10                                      '
    Srednji = Prikaz Mod 10                                   ' izračunaj broj za srednju znamenku
    Prikaz = Prikaz / 10                                      '
    Lijevi = Prikaz Mod 10                                    ' izračunaj broj za lijevu znamenku

    If Lijevi = 0 Then Lijevi = 10                            ' gašenje nule na stoticama

    Desni = Lookup(desni , Tabela)                            ' uzmi izgled broja desne znamenke
    Srednji = Lookup(srednji , Tabela)                        ' uzmi izgled broja srednje znamenke
    Srednji = Srednji And &B01111111                          ' upali decimalnu točkicu na srednjoj znamenci
    Lijevi = Lookup(lijevi , Tabela)                          ' uzmi izgled broja lijeve znamenke
 Else
    Lijevi = 134                                              ' E
    Srednji = 175                                             ' r
    Desni = 175                                               ' r
 End If

Return
'-------------------------------------------------------------------------------

Prikazi:

 Incr Mux                                                     ' Povećaj varijablu za prikaz trenutne znamenke
 If Mux = 3 Then Mux = 0                                      ' ako je zadnja, vrati na početnu - desnu

 Select Case Mux

    Case 0:
        Set P3.5                                              ' ugasi lijevu znamenku
        P1 = Desni                                            ' uzmi desnu znamenku
        Reset P3.3                                            ' prikaži je

    Case 1:
        Set P3.3                                              ' ugasi desnu znamenku
        P1 = Srednji                                          ' uzmi srednju znamenku
        Reset P3.4                                            ' prikaži je

    Case 2:
        Set P3.4                                              ' ugasi srednju znamenku
        P1 = Lijevi                                           ' uzmi lijevu znamenku
        Reset P3.5                                            ' prikaži je

 End Select

Return
'-------------------------------------------------------------------------------

Menu:

   Debounce Tplus , 0 , Povecaj                               ' Idi na 'Povećaj' ako je pritisnuta tipka +
   Debounce Tminus , 0 , Smanji                               ' idi na 'Smanji' ako je pritisnuta tipka -
   Prikaz = Tpostavno                                         ' pošalji postavnu temperaturu u varijablu za prikaz
   Gosub Pretvorba                                            ' i prikaži je

   Blink = Brojac_1s And &H01                                 ' Na neparne brojeve (svakih 100mS)
   If Blink = 1 Then                                          ' ugasi display
      Desni = 255                                             ' svi segmenti na displayu su ugašeni
      Srednji = 255                                           '
      Lijevi = 255                                            '
   End If

   Gosub Prikazi                                              ' prikaži broj na displayu


Return
'-------------------------------------------------------------------------------

Povecaj:

   If Tpostavno < Tmax Then Tpostavno = Tpostavno + 1         ' povećaj post. temp. ako nije maksimalna
Return
'-------------------------------------------------------------------------------

Smanji:

   If Tpostavno > Tmin Then Tpostavno = Tpostavno - 1         ' smanji post. temp. ako nije minimalna
Return
'-------------------------------------------------------------------------------
'****************************
'Tabela za prikaz brojeva
'****************************

Tabela:
 Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255
'BROJ: 0     1     2     3     4     5     6     7     8     9   PRAZNO
Evo za tvoju temu "BASCOM za totalne neznalice".
http://www.elektronika.ba/forum/viewtopic.php?t=14230
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
mojalovaa
Napredujem
Napredujem
Posts: 135
Joined: 29-03-2013, 19:28

Re: Sobni termostat sa AT89C2051

Post by mojalovaa »

:ohno: , :lol: puno se zahvaljujem , kada sam vidio ovo :shock: , skoro sam sjeo na , na zemlju , he he hee
Kuki puno hvala , sada i mi totalne neznalice mozemo da nesto razumijemo.
mojalovaa
Napredujem
Napredujem
Posts: 135
Joined: 29-03-2013, 19:28

Re: Sobni termostat sa AT89C2051

Post by mojalovaa »

Evo gotov termostat , cim malo poslozim dokumentaciju i slike objavljujem to ovdje .
Sasvim sam zadovoljan , opet bez Kukinjosa i BOB4 ne bi bilo nista , hvala na pomoci obadvojici.
mojalovaa
Napredujem
Napredujem
Posts: 135
Joined: 29-03-2013, 19:28

Re: Sobni termostat sa AT89C2051

Post by mojalovaa »

Kao što sam i obećao , postavljam slike termostata , shemu i program .
Tiskanu pločicu nisam postavljao jer želim da se malo i drugi potrude da nešto rade a ne da samo čekaju kada će nešto da bude gotovo pa da onda nabrzinu nešto naprave a da ništa ne nauče , ipak je cilj svakog foruma da se nešto nauči.

Termostat ima mogućnost postavljanja dvije DS1820 sonde , jedna je na samoj pločici a druga se može spojiti na konektor.
Uređaj radi na +5V , probao sam ga i na na +4V spojiti i radi , samo kada napon padne na 3.5V onda se zablesira.
Rele još nisam stavio jer ne mogu da nadjem da radi na +5V.
Ostaje još samo izrada kućišta i stavljanje u stvarni pogon u mojoj kući.
Temperatura se štela tako da se obadve tipke drže stisnute nekoliko sek. dok brojevi ne počnu da trepere , onda se sa tipkama povećava ( gore tipka) ili smanjuje ( dolje tipka) na određenu temperaturu .
Kada se naštela temperatura koju želimo , pritisnemo obadve tipke zajedno 2 sek. i termostat prelazi režim rada.
Attachments
termostat + program.rar
(48.3 KiB) Downloaded 488 times
viktor_medvedovic
Napredujem
Napredujem
Posts: 131
Joined: 16-07-2013, 23:52
Location: Novska(Hrvatska)

Re: Sobni termostat sa AT89C2051

Post by viktor_medvedovic »

skidam kapu !! :shock:
mojalovaa
Napredujem
Napredujem
Posts: 135
Joined: 29-03-2013, 19:28

Re: Sobni termostat sa AT89C2051

Post by mojalovaa »

Nije to jos sve finisirano.
Nisam mogao naci relej od 5V pa cu ubaciti tiristor i optokapler , samim time drasticno ce se povecati radni vjek baterija u ovom sklopu , a jos ce mo malo da gnjavimo i Kukinjos i Bob4 da im ne bude dosadno.
Uglavnom tolerancija je 0.1 stupanj , potrosnja u radu je 5V 40 mA a kada se display prebaci u sleep mod ( odnosno na displaju se ne vidi nista ) ne moze mi instrument tako malo da pokaze koliko je potrosnja.

Kada sve zavrsim postavim slike ponovo i doradjenu shemu.
mojalovaa
Napredujem
Napredujem
Posts: 135
Joined: 29-03-2013, 19:28

Re: Sobni termostat sa AT89C2051

Post by mojalovaa »

Evo da se samo malo pohvalim , termostat uredno radi vec nekih 6 dana , za sada bez ikakvih problema.
Montirao sam ga u nadzbuknu kutiju 100x100 mm stavio na zid u boravak , preciznost je super i krece se recimo + ili - 0.1 stupanj celzijus.
Napajam ga sa 3 x 1.5V AA betrije , a umjesto relea sam stavio OK MOC3041 i triak BTA139 , ujedno je i manja potrosnja nego da ima relej.

http://www.imagebam.com/image/c19655282772356
http://www.imagebam.com/image/b444eb282772387

Doduse mogla je ici i ljepsa kutija ali to mi je bilo naj jeftinije a i jedino sto sam nasao.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Sobni termostat sa AT89C2051

Post by pedja089 »

Koliko si ti siguran u tih +/-0.1 :?:
DS18B20 ima preciznost +/- 0.5.
mojalovaa
Napredujem
Napredujem
Posts: 135
Joined: 29-03-2013, 19:28

Re: Sobni termostat sa AT89C2051

Post by mojalovaa »

Ma mislio sam na ono sto mi pokazuje na digitima , nisam ga bazdario , tako mi se krece na digitu prikazana temperatura naspram zadane , recimo ako sam zadao 24 stepena , krece se od 23.9 do 24.1 u prostoru , na ono sto prikazuje termostat , a sada koliko je 100% stvarno izmjereno ne znam , morat cu naci jedan bazdareni pa da usporedim , he heee
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Sobni termostat sa AT89C2051

Post by pedja089 »

Ako palis na 23.9 gasis na 24.1, onda ti se to zove histerezis...
mojalovaa
Napredujem
Napredujem
Posts: 135
Joined: 29-03-2013, 19:28

Re: Sobni termostat sa AT89C2051

Post by mojalovaa »

Nepalim i ne gasim , vec je postavito da gasi na 24 stepena , ali naravno zbog tromosti sistema ( podno grijanje) temperatura varira od -do , kako sam i napisao.
User avatar
bob4
Stariji član
Stariji član
Posts: 2572
Joined: 31-01-2010, 16:12
Location: Kutina

Re: Sobni termostat sa AT89C2051

Post by bob4 »

DS nema potrebe uspoređivati s bilo čime :ohno: (moje mišljenje); za ove naše potrebe.
Post Reply