Guten Morgen!
Ich hab die Tage auch etwas mit dem SHT-Sensor gearbeitet. Dabei ist mir
aufgefallen, daß der Temperatur-Offset, der im Datenblatt steht, bei mir
überhaupt gar nicht stimmt.
Da sich dieser Offset ja in Abhängigkeit der Versorgungsspannung ändert
und ich das Teil eigentlich an nem Akku betreiben wollte, hab ich das
Verhalten mal versucht näher unter die Lupe zu nehmen.
Dazu hab ich einfach bei (annähernd) gleichbleibender Temperatur die
Versorgungsspannung geändert und die angezeigt Temperatur abgelesen.
Nach Eintragung der Punkte in ein Open-Office-Diagramm hab ich da ne
Ausgleichskurve reingelegt, mir die Formel anzeigen lassen, und das dann
so implementiert. Und ich kann sagen, daß ich damit wirklich
zufriedenstellende Ergebnisse bekomme... Darum dachte ich, daß es
vielleicht anderen mit ähnlichen Problemen helfen könnte.
Zum Diagramm: die Ausgleichskurve ist hier eine Gerade, weil das am
bequemsten zu implementieren war. Polynome höherer Ordnung waren mir zu
wild... ;) (siehe Anhang). Der Fehler beträgt hierbei ab oberen und
unteren Ende der Kurve nicht etwa 21%, sondern 0,21°C.
Wo der Summand "4210" in Spalte C her kommt weiß ich gar nicht mehr so
genau. Ich glaubde das war der Wert, bei dem ich eben mal den richtigen
Temperaturwert bekam...
Zur Kommaanpassung im Programm wird die Temperatur mit dem Faktor 100
und die Versorgungsspannung mit dem Faktor 1000 angegeben.
Dementsprechend ist der Faktor 1000 auch in der Formel im Code wieder zu
finden.
1 | unsigned int d1 = ( ((133640L * voltage) / 1000) + 3622180L) / 1000;
|
2 | (*pointer_temperature) = (*pointer_temperature) - d1;
|
Hoffe es Hilft wem :)
VG,
Jojo