logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Attiny2313/Bascom]Prosty Termost

skater156 23 Maj 2010 10:08 2080 2
REKLAMA
  • #1 8107831
    skater156
    Poziom 14  
    Witam.Pan Mirley napisał mi program do prostego termostatu.2 diody led (czerwona się świeci jak grzałka grzeje,a zielona się świeci jak grzałka nie grzeje).Temperatura załączania grzałki jest ustawiana w programie (w kodzie w bascomnie) o raz histereza 2C.Przekaźnik podczepiony pod port scalaka.Tak samo DS18b20.Mój problem polega na tym, że mi to nie działa.Po zagrzaniu czujnika na pinie przekaźnika nadal jest napięcie 6V-10V.Co zrobić????

    KOD:
    
    '****************************
               'Konfiguracja
    '****************************
    $regfile = "attiny2313.dat"
    $crystal = 12000000
     
    Config Portb = &B11111111 : Portb = &B11111111
    Config Portd = &B11100111 : Portd = &B11111111              'piny 3 i 4 jako wejścia, reszta wyjścia
     
    Config 1wire = Pind.5
     
    Config Timer0 = Timer , Prescale = 64
    Enable Timer0 : On Timer0 Przerwanie0
     
     
    Enable Interrupts
    '****************************
          'Zmienne
    '****************************
    Dim Lsb As Byte
    Dim Msb As Byte
    Dim Co4ms As Byte , Co100ms As Byte , Co1s As Byte
    Dim Tempa As Word
    Dim Tempu As Word
    Dim Histereza As Byte
    Dim Tempp As Word                                           'zmiena pomocnicza
     
     
    Dim Zezw_przyciski As Bit
    Dim Pomiar_odczyt As Bit
    Dim Minus As Bit
    Dim Miganie As Bit
    '****************************
          'Wartosci Poczatkowe
    '****************************
    Histereza = 20
    Tempu = 400
    '****************************
          'Petla glowna
    '****************************
    Do
     
    If Zezw_przyciski = 1 Then
      Reset Zezw_przyciski                                      'co 100ms
     
     
      If Pind.7 = 0 Then                                       'jezeli jest wlaczony przekaznik
       If Tempa >= Tempu Then Portd.7 = 1                       'jezeli tempa dochodzi do ustawionej to wyl przekaznik
      Else                                                      'jezeli wyl przekaznik
       Tempp = Tempu - Histereza                                'punkt wylaczenia
       If Tempa < Tempp Then Portd.7 = 0                        'jezeli tempa mniejsza niz ustawiona temp. - histereza to wlacz przek.
      End If
     
      portd.0 = pind.7
      portd.1 = not pind.7
     
    End If
     
    Loop
    End
    '****************************
          'Przerwanie timer0
    '****************************
    Przerwanie0:
    Timer0 = 5
    Incr Co4ms
     If Co4ms = 3 Then
       Co4ms = 0
       '***************************************  co 4ms
       Incr Co100ms
       If Co100ms = 25 Then
         Co100ms = 0
         '*************************************** co 100 ms
         Set Zezw_przyciski                                    
         Miganie = Not Miganie                             
         Incr Co1s
         If Co1s = 7 Then
           Co1s = 0
           '*************************************** co 1s
           Pomiar_odczyt = Not Pomiar_odczyt
     
           Disable Interrupts
           1wreset
     
           If Pomiar_odczyt = 1 Then
            1wwrite &HCC
            1wwrite &H44
           Else
            If Err = 0 Then
     
              1wwrite &HCC
              1wwrite &HBE
              Lsb = 1wread():
              Msb = 1wread():
     
              Minus = Msb.7
     
              Tempa = Msb * 256
              Tempa = Tempa + Lsb
     
     
              If Minus = 1 Then
                Tempa = Not Tempa
                Tempa = Tempa + 1
              End If
     
              Tempa = Tempa * 10                                'temperatura *10
              Tempa = Tempa / 16
     
            End If
           End If
     
           Enable Interrupts
           '***************************************
         End If
         '***************************************
       End If
       '***************************************
     End If
     
    Return
    


    Bardzo proszę o pomoc i wskazówki:)
  • REKLAMA
  • #2 8110811
    OlekM
    Poziom 17  
    Cytat:
    Co zrobić????


    Pokazać schemat :-)
  • #3 8112879
    arktik1
    Poziom 27  
    Przecież można to zrobić prościej:
    
    If Temp <= 320 Then   'TEMP WLACZENIA 
       Portx.0 = 1
       End If
       If Temp >= 340 Then   'WYLACZENIA 
       Portx.0 = 0
    
REKLAMA