I am making a weather station using Arduino 2009
For my humidity sensor I chose a honeywell HCH-1000.
It was the cheapest (AUD $17) accurate one I could find.
The data sheet is at:http://www.honeywell-sensor.com.cn/prodinfo/sensor_humidity_moisture/datasheet/HCH-1000.pdf
The HCH-1000 has a capactance of 300 to 360 pf over the 0 to 100% range.
Honeywell have an application note for the HCH-1000:http://www.digikey.com/Web%20Export/Supplier%20Content/HoneywellSC_480/PDF/HCH_draft3%20Rev%2010%2021%2008.pdf
I use a CMOS 555 as an astable with the HCH-1000 as the capactance.
The data sheet is at:http://www.datasheetcatalog.org/datasheet/texasinstruments/tlc555.pdf
The pulse width of the output can then be determined using the
arduino PulseIn function.
I adjusted the R component of the 555 so that the output pulse width
difference between 0 and 100% gives 1023 when using PulseIn.
This is to fit in with my other sensors which use adc(0 to 1023).
Note that the equations for timing are not exact as we have a significant
leakage resistor across the HCH-1000.
This sets the range of the sensor and no other adjustment is used.
The level must be set by software.
/* A simple humidity sensor check program
The circuit uses software one point calibration.
Adjust the sensor_offset to give the known ambient humidity.
The time taken to get each sample is around 75ms.
const int pin = 7; // Analog input pin
unsigned long duration;
const int sensor_offset = 1889; //the offset to give correct RH value
Serial.begin(9600); // initialize serial communications at 9600 bps:
duration = 0;
byte j = 0; // for start counter enter digits
for (j = 0; j < 16 ; j +=1)
duration += pulseIn(pin, HIGH);
} //pulse width has some jitter so get average to smooth
long humid =( duration - sensor_offset)/10.23; //max is 1023 and to %
Serial.print("sensor = " );
Serial.print(duration); // print the adc value to the serial monitor:
Serial.print("\t humidity = ");
Serial.print(humid); // print the temperature
delay(1000); // wait 1 second before next sample
I calibrated the sensor using my Oregon scientific WMR 100.
This is the best I'm able to arrange. It is accurate enough for my use.
I have logged the data from the WMR 100 and my humidity sensor over some days and the result are within 2 % over this time.
The sensor circuit and other files are at the site given below.