All mbed code for control over dive planes, pump motor, valve motor, BCUs, UART interface, etc.
Dependencies: mbed ESC mbed MODDMA
Diff: robotic_fish_6/PumpWithValve/PumpWithValve.h
- Revision:
- 0:c3a329a5b05d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/robotic_fish_6/PumpWithValve/PumpWithValve.h Tue Jan 14 19:17:05 2020 +0000 @@ -0,0 +1,80 @@ + +/* + * PumpWithValve.h + * + * Author: Cyndia Cao, Robert Katzschmann + */ + +#ifndef PUMPWITHVALVE_H_ +#define PUMPWITHVALVE_H_ + +#include "mbed.h" + +#define valvePwmPin p22 +#define pumpPwmPin p23 +#define hallInterruptPin p12 +//#define encoderPinA p25 +//#define encoderPinB p24 +//#define valveCurrentPin p19 + +#define count2rev 12 +#define valveMotorGearRatio 297.92 +#define KpFreq 10000.0 // frequency on the order of 10^-7 +#define KdFreq 0.00 +#define valveOffsetGain 0.5 + +class PumpWithValve +{ +public: + // Initialization + PumpWithValve(); + void start(); + void stop(); + + void flipFlowUp(); + void flipFlowDown(); + void set(float freq_in, float yaw_in, float thrust_in); + void setVoid(); + + float getVset(); + bool getVside(); + +protected: + void calculateYawMethod1(); + void calculateYawMethod2(); + +private: + + volatile float frequency; + volatile float yaw; + volatile float thrust; + volatile float periodSide1; + volatile float periodSide2; + + volatile bool valveSide; + volatile float valveV1; + volatile float valveV2; + volatile float Vfreq; + volatile float VfreqAdjusted; + volatile float Vset; + + volatile float freqAct; + volatile float freqErr; + volatile float prevFreqErr; + volatile float dVFreq; + + PwmOut pumpPWM; + PwmOut valvePWM; + //QEI valveEncoder; + //AnalogIn valveCurrent; // actually is a voltage value proportional to current + InterruptIn hallSignal; + Timer timer; + DigitalOut valveLED; + + Ticker valveControl; +}; + +// Create a static instance of PumpWithValve to be used by anyone controlling the pump with valve +extern PumpWithValve pumpWithValve; + +#endif /* PUMPWITHVALVE_H_ */