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:
7:42e7f18361c8
Parent:
6:7f90a61e1a69
--- a/main.cpp	Sun Aug 11 08:34:00 2013 +0000
+++ b/main.cpp	Wed Nov 06 07:38:20 2013 +0000
@@ -4,7 +4,8 @@
 
 InterruptIn in(p8);   //connect to the Discharge of 555
 DigitalOut run555(p9);//connect to the Reset     of 555
-DigitalOut led(LED1);
+DigitalOut led1(LED1);//running 555
+DigitalOut led2(LED2);//not ready
 Timer t1;
 
 float my_interval = 0;//between interrupts in microseconds
@@ -23,13 +24,13 @@
 
     if(rest_in <= 0){
         //No use interrupt
-        run555 = led = 0;
+        run555 = led1 = 0;
         t1.stop();
     }
 }
 
 int main() {
-    run555 = led = 0;
+    run555 = led1 = led2 = 0;
     // Set up the interrupt
     in.mode(PullUp);
     in.rise(&flip);
@@ -41,12 +42,14 @@
         my_interval = 0;
         t1.start();
         rest_in = IN_TIMES;
-        run555 = led = 1;
+        run555 = led1 = 1;
+        led2 = 0;
         wait_ms(WAIT_IN);
-        run555 = led = 0;//force stop
+        run555 = led1 = 0;//force stop
 
         if (my_interval < MIN_INTERVAL || my_interval > MAX_INTERVAL){
             printf("\r not ready\n");
+            led2 = 1;
         } else {
             my_freq = ONESEC_BY_MICRO / my_interval;  // Convert to Hz
             my_ohm  = my_interval     * CONV_KILO_OHM;// Convert to kilo ohm