Hallo,

ich messe Temperaturen mit dem DS1820 und habe "das Gefühl" dass die Ergebnisse realistisch sind.
D.h. ich bin mir da nicht ganz sicher! Die Auflösung sollte mit meinem Programm bei 0,25°C liegen.
Die Messwerte werden über einen CAN Bus übertragen womit sie in Bytes umgerechnet werden müssen.
Das mache ich zum Schluss.

Nun gehen wir in die kalte Jahreszeit und die Temperaturen gehen unter die 0°C.
Bei mir wird dann aber ein Wert >120°C angezeigt.
Weis jemand wieso?

Code:
   1wreset                                                  ' reset the bus
   1wwrite &HCC                                             ' skip rom
   1wwrite &H44                                             ' Convert T


   Portc.3 = 1
   Waitms 800
   Portc.3 = 0


   1wreset
   1wwrite &H55

   For B = 1 To 8
   1wwrite Dsid1(b)
   Next I

   ' Temperaturbytes auswerten

   1wwrite &HBE


   Rom(1) = 1wread(1)

   If Rom(1) < 0 Then                                       'Negative Werte feststellen und Vorzeichenbit setzen
   Rom(1) = Rom(1) * -1
   Vorzeichen = 0
   Else
   Vorzeichen = 1
   End If


   Nachkommav = Rom(1) / 2
   Tempv = Rom(1) / 2

   Tempdifv = 16 - Rom(7)
   Tempdifv = Tempdifv / 16
   Tempdifv = 0.25 * Tempdifv
   Nachkomma = Nachkommav + Tempdifv


   Nachkomma = Nachkomma - Tempv
   Nachkomma = Nachkomma * 100
   Nachkomma = Nachkomma + 100                              'Hundert hinzurechnen um alle Stellen zu übertragen (03 wird nur als 3 übertragen)

   Nachkommax = Nachkomma


   'Ausgabe der Temperatur in 3 Bytes
   'Beispiel:

   ' 12,03°C

   ' Byte 1 - Vorzeichen -   0  - 000
   ' Byte 2 - Tempv      -  12  - 012
   ' Byte 3 - Nachkomma  - 103  - 103