I used the Sensirion library (Arduino Playground - Sensirion) with a SHT15 humidity sensor and found a little problem: The humidity values I received were quite sparse. Another code at (HumidityTemperatureSHT15 \ Learning \ Wiring) did not have this problem, but does not return the temperature-corrected humidity values.
The problem seems to be in the calculation of the temperature corrected humidity values: an intermediate calculation reverts to integer math. Converting the integer raw-data for humidity into a float before the calculation seems to remove the problem. (I didn't manually check the result, so proceed with care.)
Here is the modified code:
// Calculates relative humidity from raw sensor data
// (with temperature compensation)
float Sensirion::calcHumi(uint16_t rawData, float temp) {
float humi;
float MH = rawData; // Float helper var. MH required;
if (_stat_reg & LOW_RES) { // else some calculation step below
humi = C1 + C2l * MH + C3l * MH * MH; // reverts to integer math
humi = (temp - 25.0) * (T1 + T2l * MH) + humi; // and humi returns
} else { // quite discrete values
humi = C1 + C2h * MH + C3h * MH * MH; // (non-obvious bug)
humi = (temp - 25.0) * (T1 + T2h * MH) + humi; // T. Schultz, 7 Apr. 2014
}
if (humi > 100.0) humi = 100.0;
if (humi < 0.1) humi = 0.1;
return humi;
}