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:
Bardzo proszę o pomoc i wskazówki:)
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:)