Matthew Pedler / Mbed 2 deprecated Nav_Box_LPC1768

Dependencies:   mbed

Committer:
Ximidar
Date:
Wed Aug 19 06:18:07 2015 +0000
Revision:
0:7afdddad09e6
Child:
1:0a55ccb22a4e
Initial commit. Program is not testable yet.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ximidar 0:7afdddad09e6 1 #ifndef PID_H
Ximidar 0:7afdddad09e6 2 #define PID_H
Ximidar 0:7afdddad09e6 3
Ximidar 0:7afdddad09e6 4 //This is an attempt at a custom PID for thrusters on an submarine.
Ximidar 0:7afdddad09e6 5
Ximidar 0:7afdddad09e6 6 //This program was made with this reference - https://en.wikipedia.org/wiki/PID_controller
Ximidar 0:7afdddad09e6 7 //And this reference https://github.com/br3ttb/Arduino-PID-Library
Ximidar 0:7afdddad09e6 8 //And this reference http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/
Ximidar 0:7afdddad09e6 9
Ximidar 0:7afdddad09e6 10 //I didn't want to just use the pre-build library because I want to understand what a PID is and how to use it.
Ximidar 0:7afdddad09e6 11 //Plus I've had problems with code I didn't write myself before.
Ximidar 0:7afdddad09e6 12
Ximidar 0:7afdddad09e6 13 //Things to implement-
Ximidar 0:7afdddad09e6 14 // automatic kp, ki, kd adjustment
Ximidar 0:7afdddad09e6 15 // IMU reference input from MPU-6050
Ximidar 0:7afdddad09e6 16 // Thruster adjustments (figure out how to implement PID values to the thruster)
Ximidar 0:7afdddad09e6 17
Ximidar 0:7afdddad09e6 18 class pid{
Ximidar 0:7afdddad09e6 19
Ximidar 0:7afdddad09e6 20 public:
Ximidar 0:7afdddad09e6 21 pid();
Ximidar 0:7afdddad09e6 22 pid(double p, double i, double d, double desired, int minval, int maxval);
Ximidar 0:7afdddad09e6 23 double PIDoutput();
Ximidar 0:7afdddad09e6 24 void getReference(double ref);
Ximidar 0:7afdddad09e6 25 void updateDesired(double desired);
Ximidar 0:7afdddad09e6 26 double getref_IMU();
Ximidar 0:7afdddad09e6 27
Ximidar 0:7afdddad09e6 28 double ref_IMU;
Ximidar 0:7afdddad09e6 29 float ref_IMUf;
Ximidar 0:7afdddad09e6 30
Ximidar 0:7afdddad09e6 31 private:
Ximidar 0:7afdddad09e6 32 void setLimit(int minval, int maxval);
Ximidar 0:7afdddad09e6 33 void sampleTime(unsigned long sample);
Ximidar 0:7afdddad09e6 34 void setPIDTune(double kp, double ki, double kd);
Ximidar 0:7afdddad09e6 35
Ximidar 0:7afdddad09e6 36
Ximidar 0:7afdddad09e6 37 double kp;
Ximidar 0:7afdddad09e6 38 double ki;
Ximidar 0:7afdddad09e6 39 double kd;
Ximidar 0:7afdddad09e6 40 double kiTemp;
Ximidar 0:7afdddad09e6 41 double lastInput;
Ximidar 0:7afdddad09e6 42
Ximidar 0:7afdddad09e6 43
Ximidar 0:7afdddad09e6 44 int minv;
Ximidar 0:7afdddad09e6 45 int maxv;
Ximidar 0:7afdddad09e6 46
Ximidar 0:7afdddad09e6 47 double setPoint;
Ximidar 0:7afdddad09e6 48 //tbd
Ximidar 0:7afdddad09e6 49
Ximidar 0:7afdddad09e6 50 };
Ximidar 0:7afdddad09e6 51 #endif