Forum: Mikrocontroller und Digitale Elektronik Temperatur aus Sensorbinärwert


von Martin (Gast)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Martin schrieb:
> Nun steht im Datenblatt:
Wessen Datenblatt?

> Sensitivity: 280 LSB/°C
> Temperature Offset: -13,200LSB (35°C)
13200/280 = 47
Das hat ja schon mal nix mit 35°C zu tun...

von Martin (Gast)


Lesenswert?

Klar, ITG3200 (Gyro, Datenblatt)

wobei ich den ITG3205 benutze, bin einfach mal von den selben Werten 
ausgegangen

von Karl H. (kbuchegg)


Lesenswert?

Aus dem Datenblatt des DS3205

> TEMP_OUT_H/L 16-bit temperature data (2’s complement format)

Das können daher keine 50000 sein.

von Martin (Gast)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Martin schrieb:
> Stimmt, aber 2er Kompelment wird ja nur durch die vordere 1 signalisiert.
Nein. Lies mal was zum Thema Zahlendarstellung...
Als Denkanstoß z.B. den Beitrag "Frage zu Struct"

von Martin (Gast)


Lesenswert?

Stimmt, da ist der Denkfehler

Danke

von Falk B. (falk)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.