Hallo,
ich habe mir eine Temperatur Anzeige gebaut.
Leider tritt immer wieder folgender Fehler auf.
Statt die richtige Temperatur zeigt das Teil -16° an. Ich habe nun die -10° durch die Software ausgeblendet, aber ich würde doch gerne wissen wovon sowas kommen könnte. Warum schickt mir da der Fühler die falschen Werte???
Habt Ihr da eine Idee?
Hier der Teil vom Log File:
Gemessene Helligkeit = 1013
Uhrzeit ist = 13:00:52
Datum ist = 18.03.07
B1_a= 255
B2_a= 255
Tempfehlera= 510
************************************************** ************************************************** **
------------------------ Fehler Temperatur Aussen ---------------------------------------------------
************************************************** ************************************************** **
B1_a= 25
B2_a= 1
Tempfehlera= 26
Aussentemperatur= 17°C
B1_i= 152
B2_i= 2
Tempfehleri= 154
Temperatur im Gehause= 41
Luefter Status AUS
Der Program Code ist:
Die definition der Variablen habe ich nicht mehr beigefügt.
Code:
'
$regfile = "m32def.dat"
$framesize = 40
$swstack = 10
$hwstack = 32
$crystal = 7372800
$baud = 2400
Const Dekaden = 6 ' Anzahl der Anzeigen (dekaden)
Const Pulsdauer = 10000 ' Dauer eines Impulses
-------------Temperatur vom Sensor T1 Ausentemperatur auslesen ----------------
Config 1wire = Portd.6 ' Eingang Temperatur Sensor 1 Außen
Dim Temperaturstr As String * 4
1wreset
1wwrite &HCC ' Skip_Rom
1wwrite &H44 ' Convert
Waitms 250
1wreset
1wwrite &HCC ' Skip_Rom
1wwrite &HBE ' Read_Sp
B1_a = 1wread()
B2_a = 1wread()
Print "B1_a= " ; B1_a
Print "B2_a= " ; B2_a
Tempfehlera = B1_a + B2_a
Print "Tempfehlera= " ; Tempfehlera
If Tempfehlera = 510 Then
'Set Portc.2
Print "******************************************************************************************************"
Print " ------------------------ Fehler Temperatur Aussen ---------------------------------------------------"
Print "******************************************************************************************************"
Goto Temperatur
End If
1wreset
If B2_a >= 248 Then
B1_a = R_a - B1_a
B2_a = R_a - B2_a
Vorzeichen_a = -1
Else
Vorzeichen_a = 1
End If
T1_a = B1_a / 16
T2_a = B2_a * 16
T1_a = T1_a + T2_a
Temper_a = T1_a * Vorzeichen_a
'Print "Temperatur aussen= " ; Temper_a
'--------- ° Grad Zeichen anhängen wenn Temperatur unter -10°C -----------------
'--------- °C Grad und C Zeichen anhängen wenn Temperatur über -10°C -----------
If Temper_a <= -10 Then
Temperatur_a = Str(temper_a) ' Wert in String wandeln
Print "Temperatur aussen= " ; Temperatur_a
Temperatur_a = Temperatur_a + "°" ' ° anhängen
Print "Aussentemperatur= " ; Temperatur_a
Else
' °C anhängen
Temperatur_a = Str(temper_a) ' Wert in String wandeln
' Print "Temperatur2= " ; Temperatur_a
Temperatur_a = Temperatur_a + "°C" ' °C anhängen
Print "Aussentemperatur= " ; Temperatur_a
End If
'-------------Temperatur vom Sensor T1 Gehäuse Temperatur auslesen ----------------
Config 1wire = Portd.7 ' Eingang Temperatur Sensor 2 (auf der Platine) ' actual measuring
'Dim Temperaturstr As String * 4
1wreset
1wwrite &HCC ' Skip_Rom
1wwrite &H44 ' Convert
Waitms 250
1wreset
1wwrite &HCC ' Skip_Rom
1wwrite &HBE ' Read_Sp
B1_i = 1wread()
B2_i = 1wread()
Print "B1_i= " ; B1_i
Print "B2_i= " ; B2_i
Tempfehleri = B1_i + B2_i
Print "Tempfehleri= " ; Tempfehleri
If Tempfehleri = 510 Then
'Set Portc.2
End If
1wreset
If B2_i >= 248 Then
B1_i = R_i - B1_i
B2_i = R_i - B2_i
Vorzeichen_i = -1
Else
Vorzeichen_i = 1
End If
T1_i = B1_i / 16
T2_i = B2_i * 16
T1_i = T1_i + T2_i
Temper_i = T1_i * Vorzeichen_i
Print "Temperatur im Gehause= " ; Temper_i
'--------------- Lüfter Steuerung ----------------------------------------------
If Temper_i > 45 Then
Print "Luefter Status EIN"
' Maskieren der ersten Stelle von Segment6 wegen Ansteuerung Lüfter
Luefter = &B10000000
Else
Luefter = &B00000000
Print "Luefter Status AUS"
End If
Print "-----------------------------------------------------------------------"
Vielen Dank im Voraus.
Gruß
Richard
Lesezeichen