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