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 Volckens Group Sensors

Revision:
43:da0708632a21
Parent:
42:fc2f2b9f07ae
Child:
44:096dcb50ff08
--- a/main.cpp	Thu Jun 11 23:11:27 2015 +0000
+++ b/main.cpp	Fri Jun 12 02:01:31 2015 +0000
@@ -88,7 +88,7 @@
 
 int main()
 {
-    RGB_LED.set_led(1,1,1);
+    RGB_LED.set_led(1,0,0);
     press = bmesensor.getPressure();
     temp = bmesensor.getTemperature();
     rh = bmesensor.getHumidity();
@@ -106,8 +106,33 @@
     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);
+    
+    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
+    massflow = MF4*pow(omronVolt,(float)4)+MF3*pow(omronVolt,(float)3)+MF2*pow(omronVolt,(float)2)+MF1*omronVolt+MF0;
+    digital_pot_setpointCK = (int)floor(DP4*pow(massflow,4)+DP3*pow(massflow,3)+DP2*pow(massflow,2)+DP1*massflow+DP0); //min = 0x7F, max = 0x00
+    atmoRho = ((press-((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)))*100)/(287.0531*(temp+273.15))+((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)*100)/(461.4964*(temp+273.15));
+    massflowSet = volflowSet*atmoRho; 
+    deltaMflow = massflow-massflowSet;
+    
+    while(abs(deltaMflow)>.05){
+      
+            digital_pot_delta = (int)floor(gainFlow*(digital_pot_setpointCK-digital_pot_setpoint));
+            digital_pot_setpoint = digital_pot_setpoint+digital_pot_delta;
+            DigPot.writeRegister(digital_pot_setpoint);
+            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
+            massflow = MF4*pow(omronVolt,(float)4)+MF3*pow(omronVolt,(float)3)+MF2*pow(omronVolt,(float)2)+MF1*omronVolt+MF0;
+            digital_pot_setpointCK = (int)floor(DP4*pow(massflow,4)+DP3*pow(massflow,3)+DP2*pow(massflow,2)+DP1*massflow+DP0); //min = 0x7F, max = 0x00
+            atmoRho = ((press-((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)))*100)/(287.0531*(temp+273.15))+((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)*100)/(461.4964*(temp+273.15));
+            massflowSet = volflowSet*atmoRho; 
+            deltaMflow = massflow-massflowSet;
+            
+            }
 
-    wait(5);
+    //wait(5);
     
     while(1) {
 
@@ -148,16 +173,19 @@
             //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
             massflow = MF4*pow(omronVolt,(float)4)+MF3*pow(omronVolt,(float)3)+MF2*pow(omronVolt,(float)2)+MF1*omronVolt+MF0;
-
             atmoRho = ((press-((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)))*100)/(287.0531*(temp+273.15))+((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)*100)/(461.4964*(temp+273.15));
             volflow = massflow/atmoRho;
             deltaVflow = volflow-volflowSet;
-
-            /*if(abs(deltaflow)>.05*volflowSet){
-                digital_pot_setpoint = f(Vsetpoint);
-                DigPot.writeRegister(digital_pot_setpoint);
-                }
-            */
+            massflowSet = volflowSet*atmoRho; 
+            deltaMflow = massflow-massflowSet;
+    
+            if(abs(deltaMflow)>.05){
+                    digital_pot_setpointCK = (int)floor(DP4*pow(massflow,4)+DP3*pow(massflow,3)+DP2*pow(massflow,2)+DP1*massflow+DP0); //min = 0x7F, max = 0x00
+                    digital_pot_setpoint = digital_pot_setpoint+(digital_pot_setpointCK+digital_pot_delta-digital_pot_setpoint);
+                    DigPot.writeRegister(digital_pot_setpoint);
+            
+                    }
+    
             movementsensor.getACCEL();
             movementsensor.getCOMPASS();
             accel_x = movementsensor.AccelData.x;
@@ -186,23 +214,6 @@
             //Unmount the filesystem
             sd.unmount();
             
-            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
-            massflow = MF4*pow(omronVolt,(float)4)+MF3*pow(omronVolt,(float)3)+MF2*pow(omronVolt,(float)2)+MF1*omronVolt+MF0;
-            digital_pot_setpointCK = (int)floor(DP4*pow(massflow,4)+DP3*pow(massflow,3)+DP2*pow(massflow,2)+DP1*massflow+DP0); //min = 0x7F, max = 0x00
-            atmoRho = ((press-((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)))*100)/(287.0531*(temp+273.15))+((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)*100)/(461.4964*(temp+273.15));
-            massflowSet = volflowSet*atmoRho; 
-            deltaMflow = massflow-massflowSet;
-                    
-                if(abs(deltaMflow)>.05){
-                    digital_pot_delta = (int)floor(gainFlow*(digital_pot_setpointCK-digital_pot_setpoint));
-                    digital_pot_setpoint = digital_pot_setpoint+digital_pot_delta;
-                    DigPot.writeRegister(digital_pot_setpoint);
-                    
-                
-                    }
-
             wait(1);
 
         }