Thomas E.
07.04.2012, 14:25
Hallo!
Ich habe eine Uhr mit Temperaturanzeige und Logging-Funktion gebaut. Als Temperatursensor verwende ich einen DS1631, der sich auch problemlos ansprechen lässt. Allerdings erscheint mir der Temperaturwert etwas seltsam.
Der Sensor wird im 12-bit-Modus betrieben (R0 und R1 sind logisch eins) und wandelt kontinuierlich um (Continuos Conversion Mode). Ich lese ihn dann ungefähr jede Minute aus und wandle das Ergebnis in eine Single-Variable und diese wird wiederrum in einen String konvertiert (gerundet).
Ich bekomme (geschätzt) um etwa +1°C zuviel raus, was mich an meiner Umrechnungsmethode zweifeln lässt. Es könnte natürlich sein, dass dieses eine Grad stimmt und meine anderen Thermometer um eben dieses eine Grad zuwenig anzeigen. Aber es kann nicht schaden, fachkundigere Leute über meine Umrechnung blicken zu lassen - vielleicht fällt ja was auf. ;)
Shift Temp_l , Right , 4
Temp_single = Temp_l
Temp_single = Temp_single * Digit
Temp_single = Temp_single + Temp_h
Temp_string = Fusing(temp_single , "##.##")
Temp_h = Byte
Temp_l = Byte
Temp_single = Single
Temp_string = String*5
Digit = Const (0,0265)
Eine Erkennung des höchsten Bits im MSB zur Erkennung eines negativen Vorzeichens habe ich noch nicht eingebaut. Aus diesem Grund kommen bei negativen Temperaturen Fantasiewerte raus.
Kann es sein, dass ich irgendetwas falsch interpretiere?
Danke für die Hilfe!
Ich habe eine Uhr mit Temperaturanzeige und Logging-Funktion gebaut. Als Temperatursensor verwende ich einen DS1631, der sich auch problemlos ansprechen lässt. Allerdings erscheint mir der Temperaturwert etwas seltsam.
Der Sensor wird im 12-bit-Modus betrieben (R0 und R1 sind logisch eins) und wandelt kontinuierlich um (Continuos Conversion Mode). Ich lese ihn dann ungefähr jede Minute aus und wandle das Ergebnis in eine Single-Variable und diese wird wiederrum in einen String konvertiert (gerundet).
Ich bekomme (geschätzt) um etwa +1°C zuviel raus, was mich an meiner Umrechnungsmethode zweifeln lässt. Es könnte natürlich sein, dass dieses eine Grad stimmt und meine anderen Thermometer um eben dieses eine Grad zuwenig anzeigen. Aber es kann nicht schaden, fachkundigere Leute über meine Umrechnung blicken zu lassen - vielleicht fällt ja was auf. ;)
Shift Temp_l , Right , 4
Temp_single = Temp_l
Temp_single = Temp_single * Digit
Temp_single = Temp_single + Temp_h
Temp_string = Fusing(temp_single , "##.##")
Temp_h = Byte
Temp_l = Byte
Temp_single = Single
Temp_string = String*5
Digit = Const (0,0265)
Eine Erkennung des höchsten Bits im MSB zur Erkennung eines negativen Vorzeichens habe ich noch nicht eingebaut. Aus diesem Grund kommen bei negativen Temperaturen Fantasiewerte raus.
Kann es sein, dass ich irgendetwas falsch interpretiere?
Danke für die Hilfe!