Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: KellerDruck_pressure PID PWM-Coil-driver Sensirion_SF04 VL6180
Fork of TestBenchSerenity-proto_F429ZI by
Revision 7:b385e6a3f622, committed 2017-08-03
- Comitter:
- 212600191
- Date:
- Thu Aug 03 19:07:43 2017 +0000
- Parent:
- 5:f2cb21046678
- Commit message:
- jfkdd;
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
| main.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r f2cb21046678 -r b385e6a3f622 main.cpp
--- a/main.cpp Wed Aug 02 21:08:10 2017 +0000
+++ b/main.cpp Thu Aug 03 19:07:43 2017 +0000
@@ -34,13 +34,14 @@
//-----------------------------
void pumpTachTrigger()
{
+
pumpTachCounts++;
}
void pump_tach_update()
{
float i = pumpTachCounts; // In case it triggers mid-calculation
- pumpTachCounts = 0;
+ pumpTachCounts=0;
pumpRpm = (i/pumpTachPoles)*60;
}
@@ -48,10 +49,12 @@
{
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
@@ -134,8 +137,8 @@
stdio_m.lock();
timer.reset();
- pc.printf(" %.02fprespsi %.01fsetpsi% .02fHz %.02f\r\n",
- pumpPressure.pressurePSI, ((double)pot2-.002)*pumpMaxPSI,
+ pc.printf(" %.02fprespsi %.01fsetpsi %.0fRPM %.02fHz %.02f\r\n",
+ pumpPressure.pressurePSI, ((double)pot2-.002)*pumpMaxPSI, pumpRpm,
frequency, dutycycle);//, agentlevel;
int wait = (1000 - timer.read_ms());
@@ -148,13 +151,16 @@
int main()
{
pump_init();
+ pump_tach_update();
//ledBlu = 1;
pc.printf("Serenity Starting up...\n\r");
//--------------------------------------------
dutycycleup.rise(&dutycycleincrease);
dutycycledown.rise(&dutycycledecrease);
frequencyup.rise(&frequencyincrease);
-frequencydown.rise(&frequencydecrease);
+frequencydown.rise(&frequencydecrease);
+pumpTach.rise(&pumpTachTrigger);
+pump_tach_ticker.attach(&pump_tach_update, 1.0);
//Thread to execute injector valve control
Injector_Valve_Control.set_priority(osPriorityHigh);
@@ -176,10 +182,12 @@
// 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();
+
+
- }
+
}
diff -r f2cb21046678 -r b385e6a3f622 main.h --- a/main.h Wed Aug 02 21:08:10 2017 +0000 +++ b/main.h Thu Aug 03 19:07:43 2017 +0000 @@ -58,7 +58,7 @@ #define pumpPwmFrequency 1000 // Frequency of PWM signal supplied to pump #define pumpTachPoles 6 // 6 pulses per revolution -#define pumpTachPin PB_15 // Pump tach input (green wire) +#define pumpTachPin PA_10 // Pump tach input (green wire) #define pumpCtrlPin PB_13 // Pump control (white wire) // End Liquid pump defines @@ -66,7 +66,7 @@ Mutex i2c1_m, i2c2_m, i2c3_m, stdio_m; //DigitalOut myled(LED2); -Serial pc(USBTX, USBRX, 250000); // tx, rx, baud +Serial pc(SERIAL_TX, SERIAL_RX, 250000); // tx, rx, baud // an I2C sub-class that provides a constructed default class I2CPreInit : public I2C @@ -93,13 +93,14 @@ AnalogIn pot2(A1); PwmOut pump(pumpCtrlPin); + //pump.period(.001); PID pump_control_PID(pumpKp, pumpKi, pumpKd, pumpPIDRate); -//InterruptIn pumpTach(pumpTachPin); -volatile int pumpTachCounts = 0; -volatile float pumpRpm = 0; +InterruptIn pumpTach(pumpTachPin); +int pumpTachCounts = 0; +float pumpRpm = 0; //PwmOut ledRed(PE_11); //PwmOut ledGrn(PD_15); @@ -108,4 +109,5 @@ // Level sensor //VL6180 level(i2c1); //I2C object //float agentlevel = 0; +Ticker pump_tach_ticker, pump_pid_ticker, print_process_values_ticker, lcd_update_ticker; #endif \ No newline at end of file
