POC Breath using SMD commercial sensors

Dependencies:   iAQ_Core Adafruit_SGP30_mbed mbed BME680

Revision:
5:646a7e58989e
Parent:
4:54dc2a95c130
Child:
6:f6faf142e5fc
--- a/flow.h	Fri Jul 26 09:31:58 2019 +0000
+++ b/flow.h	Thu Jan 23 15:24:41 2020 +0000
@@ -2,17 +2,17 @@
 
 // First the inputs and pins are defined
 
-AnalogIn flowIn(PA_0);
+AnalogIn flowIn(PA_1);//PA0 on schematic but PA1 on PCB
 Serial co2(PC_10,PC_11);
 AnalogIn sensor1(PC_0);
 AnalogIn sensor2(PC_1);
 AnalogIn sensor3(PC_2);
 AnalogIn sensor4(PC_3);
-AnalogIn sensor5(PA_4);
-AnalogIn sensor6(PA_5);
-AnalogIn sensor7(PA_6);
-AnalogIn sensor8(PA_7);
-AnalogIn temp(PA_1);
+AnalogIn sensor5(PA_4); //Also 2612
+AnalogIn sensor6(PA_5); //Also 2610
+AnalogIn sensor7(PA_6); //Also 2620
+AnalogIn sensor8(PA_7); //Also 2602
+AnalogIn temp(PA_0);//PA1 on schematic but PA0 on PCB
 
 ///////////////////// FLOW LOOP /////////////////////////
 float finalflow;
@@ -22,8 +22,10 @@
 int flag=0;
 int o=0;
 float bpArray[10];
-float fp;float sp;
+float fp;
+float sp;
 float FPressure;
+
 float flow()
 {
     while(1) 
@@ -39,7 +41,7 @@
             bpArray[o]=P1;  
             sp+=bpArray[o];
             o=o+1;
-                    if (o=9)
+                    if (o==9)
                     {
                         fp=sp/10;
                         flag=1;
@@ -47,9 +49,14 @@
         }
         if (flag==1)
         {
-            FPressure=P1-fp;
+          FPressure=P1-fp;
           finalflow=(0.24*sqrt(FPressure)); //flow in litter per second
-          return finalflow;
+            if(isnan(finalflow)==true){
+                return 0;
+                }
+          else{
+              return finalflow;
+              }
         }
     }
 }
@@ -97,15 +104,15 @@
 float getTemp()
 {
     while(1) {
-        float B = 3478; //Define thermistor constant
-        float rRef=10e3; // Define reference resistance
-        float r1=10e3; // Define thermistor resistance at 25 C
-        float t1=25+273; // Define thermistor initial temperature s 25C in Kelvin
+        float B = 3380.00; //Define thermistor constant
+        float rRef=10000.00; // Define reference resistance
+        float r1=10000.00; // Define thermistor resistance at 25 C
+        float t1=25.00+273.00; // Define thermistor initial temperature s 25C in Kelvin
         float x = temp.read(); //Measure input voltage at pin A0 in bits
         float v = 3.3*x; //Convert bits into voltage
-        float r2 = (3.3*rRef/v)-rRef; //Convert voltage into thermistor resistance
+        float r2 = (5*rRef/v)-rRef; //Convert voltage into thermistor resistance
         float t2 = (B*t1)/(B-t1*log(r1/r2)); //Convert thermistor resistance into temperature in Kelvin (log means natural logarithm ln)
-        t2Cel = t2-273; //Convert temperature from Kelvin to Celcius
+        t2Cel = t2-273.00; //Convert temperature from Kelvin to Celcius
         return t2Cel;
 //  printf("Temp: %f\n", t2Cel);
     }
@@ -113,67 +120,103 @@
 
 ///////////////////// 8-CHANNEL SENSOR LOOP /////////////////////////
 
-float s1()
+int c2612()
+{
+    float sen5;
+    while(1){
+        sen5=1000*((5/sensor5*3.3)-1);
+        return (int)sen5;
+    }
+}
+
+int c2610()
+{
+    float sen6;
+    while(1){
+        sen6=1000*((5/sensor6*3.3)-1);
+        return (int)sen6;
+    }
+}
+
+int c2620()
 {
-    float sen1;
+    float sen7;
+    while(1){
+        sen7=1000*((5/sensor7*3.3)-1);
+        return (int)sen7;
+    }
+}
+
+int c2602()
+{
+    float sen8;
     while(1){
-            sen1=sensor1*3.3;
+        sen8=1000*((5/sensor8*3.3)-1);
+        return (int)sen8;
+    }
+}
+
+int s1()
+{
+    int sen1;
+    while(1){
+            sen1=((5E6)/(sensor1*3.3))-(5E6);
             return sen1;
             }
 }
-float s2()
+int s2()
 {
-    float sen2;
+    int sen2;
     while(1){
-            sen2=sensor2*3.3;
+            sen2=((5E6)/(sensor2*3.3))-(5E6);
             return sen2;
             }
 }
-float s3()
+int s3()
 {
-    float sen3;
+    int sen3;
     while(1){
-            sen3=sensor3*3.3;
+            sen3=((5E6)/(sensor3*3.3))-(5E6);
             return sen3;
             }
 }
-float s4()
+int s4()
 {
-    float sen4;
+    int sen4;
     while(1){
-            sen4=sensor4*3.3;
+            sen4=((5E6)/(sensor4*3.3))-(5E6);
             return sen4;
             }
 }
-float s5()
+int s5()
 {
-        float sen5;
+        int sen5;
         while(1){
-                sen5=sensor5*3.3;
+                sen5=((5E6)/(sensor5*3.3))-(5E6);
                 return sen5;
                 }
 }
-float s6()
+int s6()
 {
-        float sen6;
+        int sen6;
         while(1){
-                sen6=sensor6*3.3;
+                sen6=((5E6)/(sensor6*3.3))-(5E6);
                 return sen6;
                 }
 }
-float s7()
+int s7()
 {
-        float sen7;
+        int sen7;
         while(1){
-                sen7=sensor7*3.3;
+                sen7=((5E6)/(sensor7*3.3))-(5E6);
                 return sen7;
                 }
 }
-float s8()
+int s8()
 {
-        float sen8;
+        int sen8;
         while(1){
-                sen8=sensor8*3.3;
+                sen8=((5E6)/(sensor8*3.3))-(5E6);
                 return sen8;
                 }
 }
\ No newline at end of file