![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
POC Breath using SMD commercial sensors
Dependencies: iAQ_Core Adafruit_SGP30_mbed mbed BME680
Diff: flow.h
- 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