Temperatur aus Sensorbinärwert

Gast #2557703
Lesenswert?

Hi,

komischerweise bekomme ich den Sensorbinärwert nicht korrekt 
umgerechnet. Ich habe einen 16bit Temperaturwert ausgelesen (ungefähr 
bei 50000).

Nun steht im Datenblatt:

Range: -30 to 85 °C
Sensitivity: 280 LSB/°C
Temperature Offset: -13,200LSB (35°C)
Linearity: +-1°C

Nun wollte ich aus meinen 50000 den Temperaturwert berechnen.
Mein Ansatz:

Offset abziehen 50000-13200=36800
°C ausrechnne 36800/280=131,42°C
Nun negative Gradskala rausnehmen: 131,42-30=101,42 °C

Irgendwie steh ich auf dem Schlauf, wobei mir mein Sensorbinärwert auch 
als deutlich zu hoch vorkommt...

Achja, hier sind es 20°C

Gruß und Danke
Gast #2557743
Lesenswert?

Stimmt, aber 2er Kompelment wird ja nur durch die vordere 1 
signalisiert. Pack ich das in eine unsigned Variable habe ich einfach 
das doppelte.

Also 32000(sign) wird zu 65000 unsigned

Dreht man die Skala passt es ungefähr

(65536-50000)/280=55,48
Offset 35°abziehen => 20,48°C
#2557805
Lesenswert?

Ist doch nicht so schwer. Lineare Gleichung aufstellen, fehlende Werte 
berechnen, fettig.

T = m*x +n

Ein Messpunkt ist gegeben, -13200 bei 35°C, der Anstieg sind 280LSB/°C, 
muss für unsere Gleichung 1/x gerechnet werden, denn wir brauchen 
°C/LSB, fehlt noch der echte Offset.

35°C = 1/280 * (-13200) + n
   n = 35°C -(1/280*-13200)
   n = 82,14 °C

Wie bereits geschrieben sind die 50000 eher ein Zweierkomplement, also 
50000-65536 = -15536. Der Wert ist auch recht nah an dem 35°C Wert.

Eingesetzt ergibt das

T = 1/280*(-15536) + 82,14 = 26,65 °C

Klingt plausibel. Und damit man nicht mit den bösen Fließkommazahlen 
rechnen muss, nimmt man Festkommaarithmetik.

Et voilà!

MFG
Falk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren