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:
- 34:481403146690
- Parent:
- 33:bc73a2493821
- Child:
- 35:bd978e6ccd82
diff -r bc73a2493821 -r 481403146690 main.cpp --- 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;