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:
34:481403146690
Parent:
33:bc73a2493821
Child:
35:bd978e6ccd82
--- a/main.cpp	Sun May 31 16:10:43 2015 +0000
+++ b/main.cpp	Sun May 31 22:03:37 2015 +0000
@@ -52,8 +52,10 @@
 float volflowSet = 1.0; //L/min
 float massflowSet; 
 float deltaflow;
+float gainFlow = 1.0;
 
 int digital_pot_setpoint; //min = 0x7F, max = 0x00
+int digital_pot_setpointCK;
 char filename[] = "/sd/UPAS0005LOG000000000000.txt";
 
 TwoWire Wire = TwoWire(NRF_TWI0);    
@@ -125,6 +127,24 @@
     get_time(); 
     secondsD = Seconds;
     
+    if(fmod(secondsD,2)==0){
+    omronVolt = (omronReading*4.096)/(32768*2);
+    //Mass Flow tf from file: UPAS v2 OSU-PrimaryFlowData FullSet 2015-05-29 CQ mods.xlsx
+    massflow = -2.4541*pow(omronVolt,(float)4)+15.522*pow(omronVolt,(float)3)-34.578*pow(omronVolt,(float)2)+34.05*omronVolt-11.794;
+    digital_pot_setpointCK = (int)floor(9.2456*pow(massflow,4)-89.538*pow(massflow,3)+329.03*pow(massflow,2)-566.12*massflow+412.72); //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; 
+    digital_pot_setpoint = (int)floor(9.2456*pow(massflowSet,4)-89.538*pow(massflowSet,3)+329.03*pow(massflowSet,2)-566.12*massflowSet+412.72); //min = 0x7F, max = 0x00
+    deltaflow = massflow-massflowSet;
+        
+    if(abs(deltaflow)>.025*massflowSet){
+        digital_pot_setpoint = digital_pot_setpoint+gainFlow*(digital_pot_setpointCK-digital_pot_setpoint);
+        DigPot.writeRegister(digital_pot_setpoint);
+        }
+    
+    
+    }
+    
     if(fmod(secondsD,10)==0){
     
     omronVolt = (omronReading*4.096)/(32768*2);
@@ -134,11 +154,7 @@
     volflow = massflow/atmoRho;
     deltaflow = volflow-volflowSet;
         
-    /*if(abs(deltaflow)>.05*volflowSet){
-        digital_pot_setpoint = f(Vsetpoint);
-        DigPot.writeRegister(digital_pot_setpoint);
-        }
-    */
+    
     movementsensor.getACCEL();
     movementsensor.getCOMPASS();
     accel_x = movementsensor.AccelData.x;