All mbed code for control over dive planes, pump motor, valve motor, BCUs, UART interface, etc.

Dependencies:   mbed ESC mbed MODDMA

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_ */