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







Zitieren

Lesezeichen