measure ohm of HS15P

Dependencies:   mbed

Fork of Frequency_counter by Neel Shah

This test program measures ohm of HS15P, humidity sensor.

/media/uploads/strysd/hs_15p_try4a.png

C(micro F) with LMC5550.10.150.220.330.470.681
CONV_KILO_OHM0.00720.00480.00330.00220.00150.00110.00072

If you get 2500 microseconds as interrupt time interval , it means 18 kilo ohm when 0.1 micro F. ( = 2500 * 0.0072 )

  • ohm of HS15P is calculated from pulse interval of LMC555.
    • CONV_KILO_OHM will be used.
  • this program reads interval time.between interrupt in the P8.
  • takes ON the P9 to oscillate LMC555 as short as enough to measure interval time
  • last several interval times will be used for calculation.
    • the time is defined as READ_TIMER .
  • In current circit, VDD of LMC555 is about 1.55V, AC 0.4V between pins of HS15P.
    • LMC555 consumes 120 micro A while oscillation, 90 micro A when level of P9 is OFF. (reset is ON)
    • Total 1-2mA is consumed in the circit.

Related nootbook : https://mbed.org/users/strysd/notebook/measure_humidity_with_hs15p_and_lmc555/

Revision:
5:9be3080ca8ba
Parent:
4:64d9c0bed75b
Child:
6:7f90a61e1a69
--- a/main.cpp	Mon Jun 03 15:04:08 2013 +0000
+++ b/main.cpp	Tue Jun 04 06:14:19 2013 +0000
@@ -4,14 +4,14 @@
 #define CONV_KILO_OHM 0.0072 //if use 0.1 micro F
 #define IN_TIMES  10 //interrupt times
 #define READ_TIMER 3 //rest times when reads timer
-#define WAIT_IN 200 //wait interrupts in msec
-#define WAIT_NEXT 4800 //wait next measurement in msec
+#define WAIT_IN   1000 //wait interrupts       in msec
+#define WAIT_NEXT 4000 //wait next measurement in msec
 #define MAX_INTERVAL 100000 //  > 0.1 sec ( < 10 Hz)  in microseconds
 #define MIN_INTERVAL 20 // < 20 micro sec ( > 50 kHz) in microseconds
 #define ONESEC_BY_MICRO 1000000//   1 sec             in microseconds
 
 InterruptIn in(p8);   //connect to the Discharge of 555
-DigitalOut run555(p9);//connect to the Reset of 555
+DigitalOut run555(p9);//connect to the Reset     of 555
 DigitalOut led(LED1);
 Timer t1;
 
@@ -29,7 +29,7 @@
         t1.reset();// Reset timer and wait for next interrupt
         rest_in--;
     }
-    
+
     if(rest_in == 0){
         //No use interrupt
         run555 = led = 0;
@@ -39,11 +39,12 @@
 
 int main() {
     run555 = led = 0;
+    // Set up the interrupt
     in.mode(PullUp);
-    in.rise(&flip);// Set up the interrupt for rising edge
+    in.fall(&flip);
 
     printf("\rStarting measure\n");
-      
+
     while (1) {
         //Use interrupt
         my_interval = 0;