Dependencies:   KellerDruck_pressure PID PWM-Coil-driver Sensirion_SF04 VL6180

Fork of PUMP_SCRIPT1 by Ian Wolf

Revision:
6:e3eff8a04b25
Parent:
4:79b23d1fbcd1
--- a/main.cpp	Wed Jul 26 14:03:10 2017 +0000
+++ b/main.cpp	Thu Jul 27 14:27:22 2017 +0000
@@ -1,188 +1,18 @@
 #include "main.h"
-//---------------------------
-void dutycycleincrease()
-{
-    dutycycle=dutycycle+0.01;
-}
-
-void dutycycledecrease()
-{
-    dutycycle=dutycycle-0.01;
-}
-
-void frequencyincrease()
-{
-    frequency=frequency+1;
-}
-void frequencydecrease()
-{
-    frequency=frequency-1;
-}
-void injectorvalvecontrol(){
-
-while(true){
-float openvalue=(((1/frequency)*dutycycle));
-float offvalue=(1/frequency)-openvalue;
-    
-injector.on();
-wait(openvalue);
-injector.off();
-wait(offvalue);
-}
-}
-
-//-----------------------------
-void pumpTachTrigger()
-{
-    pumpTachCounts++;
-}
-
-void pump_tach_update()
-{
-    float i = pumpTachCounts; // In case it triggers mid-calculation
-    pumpTachCounts = 0;
-    pumpRpm = (i/pumpTachPoles)*60;
-}
-
-void pump_init()
-{
-    pump.period(.001); // 1kHz PWM
-    pump = 0;
-    //ledGrn.period(.001);
-
-    InterruptIn pumpTach(pumpTachPin);
-    pumpTach.rise(&pumpTachTrigger);
-
-    pump_control_PID.setInputLimits(pumpMinPSI, pumpMaxPSI);
-    pump_control_PID.setOutputLimits(0.0, 1.0); // Output is a PWM signal ranging from 0-1
-    pump_control_PID.setMode(AUTO_MODE);
-    pump_control_PID.setSetPoint(((double)pot2)*pumpMaxPSI); // pump setpoint based on pot 2*/
-}
-
-void pump_pid_update(char error)
-{
-    if (pumpPressure.status != 0x40) {
-        pump = 0;
-        pump_control_PID.reset();
-    } else {
-        pump_control_PID.setSetPoint(((double)pot2)*pumpMaxPSI);
-
-        //Update the process variable.
-        pump_control_PID.setProcessValue(pumpPressure.pressurePSI);
-        //PID calculation and set the new output value.
-        pump = pump_control_PID.compute();
-        //pump = 0.1;
-        //ledGrn = ((float)1.0-pump.read());
-    }
-}
-
-void update_pressures()
-{
-    Timer timer;
-    timer.start();
-    char error;
-    while (true) {
-        i2c1_m.lock();
-        timer.reset();
-        error = pumpPressure.readPT();
-        //error |= mixerPressure.readPT();
-        int wait = (200 - timer.read_ms());
-        i2c1_m.unlock();
-        Thread::wait(wait);
-        pump_pid_update(error);
-    }
-}
-
-void update_flow1()
-{
-    Timer timer;
-    timer.start();
-    char error;
-    while (true) {
-        i2c2_m.lock();
-        timer.reset();
-        error = mainflow.Measure(FLOW);
-        int wait = (200 - timer.read_ms());
-        i2c2_m.unlock();
-        Thread::wait(wait);
-    }
-}
-
-//------------------------------------------------
-void update_flow2()
-{
-    Timer timer;
-    timer.start();
-    char error;
-    while (true) {
-        i2c3_m.lock();
-        timer.reset();
-        error = loopflow.Measure(FLOW);
-        int wait = (200 - timer.read_ms());
-        i2c3_m.unlock();
-        Thread::wait(wait);
-    }
-}
-//------------------------------------------------   
-
-void print_process_values()
-{
-    //Thread::wait(100); // Wait initially to allow sensors to update, prevents a zero reading from going to serial
-    Timer timer;
-    timer.start();
-    while (true) {
-        stdio_m.lock();
-        timer.reset();
-
-        pc.printf("%.02fkPa %.02fpsi %.02fC %02X %.2f%% %.0fRPM %u %.0f %s %u %.0f %s %.3f %.02fHz %.02f\r\n",
-                  pumpPressure.pressureKPA, pumpPressure.pressurePSI, pumpPressure.temperatureC, pumpPressure.status,
-                  pump.read()*100, pumpRpm,
-                  mainflow.flow.u16, (((float)mainflow.flow.i16) / mainflow.scaleFactor.u16), mainflow.flowUnitStr, 
-                  loopflow.flow.u16, (((float)loopflow.flow.i16) / loopflow.scaleFactor.u16), loopflow.flowUnitStr,
-                  ((double)pot2)*pumpMaxPSI, frequency, dutycycle);//, agentlevel;
-        int wait = (1000 - timer.read_ms());
-
-        stdio_m.unlock();
-        Thread::wait(wait);
-    }
-}
 
 // main() runs in its own thread in the OS
 int main()
 {
-    pump_init();
-    //ledBlu = 1;
-    pc.printf("Serenity Starting up...\n\r");
-//--------------------------------------------
-dutycycleup.rise(&dutycycleincrease);
-dutycycledown.rise(&dutycycledecrease);
-frequencyup.rise(&frequencyincrease);
-frequencydown.rise(&frequencydecrease);    
+  pc.baud(250000);
+    pc.printf("Starting up...\n\r");
 
-    //Thread to execute injector valve control
-    Injector_Valve_Control.set_priority(osPriorityHigh);
-    Injector_Valve_Control.start(injectorvalvecontrol);
-//--------------------------------------------
-
-    // Thread to poll pressure sensors
-    update_pressures_t.set_priority(osPriorityNormal);
-    update_pressures_t.start(update_pressures); 
+    pc.printf("SN: %u Scale: %d Unit:%s\n\r", mainflow.serialNumber.u32, mainflow.scaleFactor.u16, mainflow.flowUnitStr);
 
-    // Thread to poll flow sensor
-    update_flow1_t.set_priority(osPriorityNormal);
-    update_flow1_t.start(update_flow1);
-    
-    //Thread to poll flow sensor
-    update_flow2_t.set_priority(osPriorityNormal);
-    update_flow2_t.start(update_flow2);
-
-    // Thread to send process values to serial port
-    print_process_values_t.set_priority(osPriorityLow);
-    print_process_values_t.start(&print_process_values);
-
-    while (true) {
-         pump_tach_update();
-        
+   while (1) {
+        mainflow.Measure(FLOW);
+        mainflow.Measure(TEMP);
+        mainflow.Measure(VDD);
+        pc.printf("%.0f %s (raw: %i) Temp: %.1fC Vdd: %.2f\n\r", ((float)mainflow.flow.i16 / mainflow.scaleFactor.u16), mainflow.flowUnitStr, mainflow.flow.i16, (float)mainflow.temperature.i16/10, (float)mainflow.vdd.u16/1000);
+    wait(2);
     }
-}
-
+}
\ No newline at end of file