Duesentrieb
20.10.2010, 22:53
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?
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
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?
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