Ein Nachteil des Sensors ist, dass sowohl die Temperatur als auch die Feuchtigkeit eine nichtlineare Kennlinie besitzen. Dazu kommt, dass die Feuchtigkeit von der Temperatur abhängt und daher kompensiert werden muss. Doch glücklicherweise lassen sich sowohl die Nichtlinearität als auch die Kompensation mit den folgenden Formeln korrigieren:
Bei 14- bzw. 12-Bit-Auflösung:
Linearisierung der Temperatur bei 14-Bit-Auflöung:
Temp(lin) = 0.01 + 0.018 * Sensorwert (Temp)
Linearisierung der Feuchtigkeit bei 12-Bit-Auflöung:
Feuchte(lin) = -4 + 0.0405*Sensorwert(Feuchte) - 0.0000028 * Sensorwert(Feuchte)²
Temperatur-Kompensation der Feuchtigkeit bei 12-Bit-Auflöung:
Feuchte(komp)=(Temp(lin)-25)*(0.01+0.00008*Sensorwert(Feuchte))+Feuchte(lin)
Bei 12- bzw. 8-Bit-Auflösung:
Linearisierung der Temperatur bei 12-Bit-Auflöung:
Temp(lin) = 0.04 + 0.072 * Sensorwert (Temp)
Linearisierung der Feuchtigkeit bei 8-Bit-Auflöung:
Feuchte(lin) = -4 + 0.648*Sensorwert(Feuchte) - 0.00072 * Sensorwert(Feuchte)²
Temperatur-Kompensation der Feuchtigkeit bei 8-Bit-Auflöung:
Feuchte(komp)=(Temp(lin)-25)*(0.01+0.00128*Sensorwert(Feuchte))+Feuchte(lin)
Anmerkung:
Die Feuchtigkeit kann im 8-Bit-Mode auch mit guter Näherung "einfacher" ermittelt werden.
Der Fehler beträgt dabei max. +/- 0.8%:
Sensorwert(Feuchte) zwischen 0 und 127:
Feuchte(lin) = (143 * Sensorwert(Feuchte) – 512) / 256
Sensorwert(Feuchte) zwischen 128 und 255:
Feuchte(lin) = (111 * Sensorwert(Feuchte) + 2893) / 256
Die CRC-8-Checksumme wird bei meinen Anwendungen nicht benötigt!