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:
- 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); }