Code supports writing to the SD card as well as working with the Volckens group smartphone apps for the mbed HRM1017
Dependencies: ADS1115 BLE_API BME280 Calibration CronoDot EEPROM LSM303 MCP40D17 NCP5623BMUTBG SDFileSystem SI1145 STC3100 mbed nRF51822
Fork of UPAS_BLE_and_USB by
Diff: main.cpp
- Revision:
- 49:19e828650618
- Parent:
- 48:b8cbef6aaed2
- Child:
- 51:91cfb90e901c
- Child:
- 53:03d8d5b1f06b
--- a/main.cpp Sun Jun 14 01:51:04 2015 +0000 +++ b/main.cpp Sun Jun 14 18:05:08 2015 +0000 @@ -49,6 +49,11 @@ int omronReading; float omronVolt; //V +float omronVMin = 0.7; //V +float omronVMax = 2.3; //V +float omronMFMin = 0.2209; //g/L +float omronMFMax = 3.548944; //g/L + float atmoRho; //g/L float MF0 = -8.794; float MF1 = 27.914; @@ -87,7 +92,9 @@ int main() { - + // Setup and Initialization + //---------------------------------------------------------------------------------------------// + if(volflowSet==1.0){ gainFlow = 100;} else if(volflowSet==2.0){ @@ -120,18 +127,20 @@ sprintf(filename, "/sd/UPAS0010LOG_%02d-%02d-%02d_%02d-%02d-%02d.txt",RTCtime[5],RTCtime[4],RTCtime[3],RTCtime[2],RTCtime[1],RTCtime[0]); FILE *fp = fopen(filename, "w"); fclose(fp); - pc.printf("%d\r\n",digital_pot_setpoint); - - + //pc.printf("%d\r\n",digital_pot_setpoint); + + //---------------------------------------------------------------------------------------------// + //Following lines are needed to enter into the initiallization flow control loop + wait(10); - + omronReading = ads.readADC_SingleEnded(0, 0xC583); // read channel 0 PGA = 2 : Full Scale Range = 2.048V omronVolt = (omronReading*4.096)/(32768*2); //Mass Flow tf from file: UPAS v2 OSU-PrimaryFlowData FullSet 2015-05-29 CQ mods.xlsx - if(omronVolt<=0.6427){ - massflow = 0.000127; - }else if(omronVolt>=2.3){ - massflow = 3.548944; + if(omronVolt<=omronVMin){ + massflow = omronMFMin; + }else if(omronVolt>=omronVMax){ + massflow = omronMFMax; }else{ massflow = MF4*pow(omronVolt,(float)4)+MF3*pow(omronVolt,(float)3)+MF2*pow(omronVolt,(float)2)+MF1*omronVolt+MF0;} deltaMflow = massflow-massflowSet; @@ -139,16 +148,18 @@ //pc.printf("%f,%f,%f,%f,%d,%u,%x\r\n",omronVolt,massflow,massflowSet,deltaMflow,digital_pot_set,digital_pot_set,digital_pot_set); wait(5); + //---------------------------------------------------------------------------------------------// + //Sets the flow withen +-1.5% of the desired flow rate based on mass flow while(abs(deltaMflow)>.015){ omronReading = ads.readADC_SingleEnded(0, 0xC583); // read channel 0 PGA = 2 : Full Scale Range = 2.048V omronVolt = (omronReading*4.096)/(32768*2); //Mass Flow tf from file: UPAS v2 OSU-PrimaryFlowData FullSet 2015-05-29 CQ mods.xlsx - if(omronVolt<=0.7){ - massflow = 0.2209; - }else if(omronVolt>=2.3){ - massflow = 3.548944; + if(omronVolt<=omronVMin){ + massflow = omronMFMin; + }else if(omronVolt>=omronVMax){ + massflow = omronMFMax; }else{ massflow = MF4*pow(omronVolt,(float)4)+MF3*pow(omronVolt,(float)3)+MF2*pow(omronVolt,(float)2)+MF1*omronVolt+MF0;} @@ -172,6 +183,11 @@ } RGB_LED.set_led(0,1,0); + + //---------------------------------------------------------------------------------------------// + //---------------------------------------------------------------------------------------------// + //---------------------------------------------------------------------------------------------// + // Main Control Loop while(1) { @@ -211,10 +227,10 @@ //UPAS0009=-2.662*L14^4+16.421*L14^3-35.797*L14^2+34.579*L14-11.77 //massflow = -2.662*pow(omronVolt,(float)4)+16.421*pow(omronVolt,(float)3)-35.797*pow(omronVolt,(float)2)+34.579*omronVolt-11.77; //UPAS0010=-3.6933*L14^4+21.633*L14^3-44.694*L14^2+40.387*L14-12.82 - if(omronVolt<=0.7){ - massflow = 0.2209; - }else if(omronVolt>=2.3){ - massflow = 3.548944; + if(omronVolt<=omronVMin){ + massflow = omronMFMin; + }else if(omronVolt>=omronVMax){ + massflow = omronMFMax; }else{ massflow = MF4*pow(omronVolt,(float)4)+MF3*pow(omronVolt,(float)3)+MF2*pow(omronVolt,(float)2)+MF1*omronVolt+MF0;}