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.
pid.h@10:332a4ad5911d, 2015-12-05 (annotated)
- Committer:
- jasonliujc
- Date:
- Sat Dec 05 00:41:23 2015 +0000
- Revision:
- 10:332a4ad5911d
- Parent:
- 8:1ce513eff545
- Child:
- 11:8faa068940f1
changes in motor, pid and sensors
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jasonliujc | 4:d59328f14363 | 1 | //#ifndef PID_H |
jasonliujc | 4:d59328f14363 | 2 | //#define PID_H |
jasonliujc | 4:d59328f14363 | 3 | // |
jasonliujc | 4:d59328f14363 | 4 | //#include "mbed.h" |
jasonliujc | 4:d59328f14363 | 5 | // |
jasonliujc | 4:d59328f14363 | 6 | //class PIDController |
jasonliujc | 4:d59328f14363 | 7 | //{ |
jasonliujc | 4:d59328f14363 | 8 | //public: |
jasonliujc | 4:d59328f14363 | 9 | // PIDController(void (*output)(float), float (*error)(void), |
jasonliujc | 4:d59328f14363 | 10 | // float Kp, float Ki, float Kd, |
jasonliujc | 4:d59328f14363 | 11 | // float dt = .1) : |
jasonliujc | 4:d59328f14363 | 12 | // m_Kp(Kp), m_Ki(Ki), m_Kd(Kd), |
jasonliujc | 4:d59328f14363 | 13 | // m_dt(dt), m_integral(0), m_pError(0) |
jasonliujc | 4:d59328f14363 | 14 | // { |
jasonliujc | 4:d59328f14363 | 15 | // m_out = output; |
jasonliujc | 4:d59328f14363 | 16 | // m_error = error; |
jasonliujc | 4:d59328f14363 | 17 | // }; |
jasonliujc | 4:d59328f14363 | 18 | // |
jasonliujc | 4:d59328f14363 | 19 | // void onLoop(); |
jasonliujc | 4:d59328f14363 | 20 | // void reset(); |
jasonliujc | 4:d59328f14363 | 21 | //private: |
jasonliujc | 4:d59328f14363 | 22 | // float iController(float error); |
jasonliujc | 4:d59328f14363 | 23 | // float dController(float error); |
jasonliujc | 4:d59328f14363 | 24 | // |
jasonliujc | 4:d59328f14363 | 25 | // float m_integral; |
jasonliujc | 4:d59328f14363 | 26 | // float m_pError; |
jasonliujc | 4:d59328f14363 | 27 | // |
jasonliujc | 4:d59328f14363 | 28 | // float m_dt; |
jasonliujc | 4:d59328f14363 | 29 | // |
jasonliujc | 4:d59328f14363 | 30 | // float m_Kp, m_Ki, m_Kd; |
jasonliujc | 4:d59328f14363 | 31 | // void (*m_out)(float); |
jasonliujc | 4:d59328f14363 | 32 | // float (*m_error)(void); |
jasonliujc | 4:d59328f14363 | 33 | //}; |
jasonliujc | 4:d59328f14363 | 34 | // |
jasonliujc | 4:d59328f14363 | 35 | // |
jasonliujc | 4:d59328f14363 | 36 | |
jasonliujc | 4:d59328f14363 | 37 | |
ahmedallibhoy | 1:45f1f67eab62 | 38 | #ifndef PID_H |
ahmedallibhoy | 1:45f1f67eab62 | 39 | #define PID_H |
jasonliujc | 10:332a4ad5911d | 40 | |
jasonliujc | 10:332a4ad5911d | 41 | |
jasonliujc | 10:332a4ad5911d | 42 | |
jasonliujc | 4:d59328f14363 | 43 | #include"mbed.h" |
jasonliujc | 8:1ce513eff545 | 44 | #include "util.h" |
ahmedallibhoy | 1:45f1f67eab62 | 45 | |
jasonliujc | 10:332a4ad5911d | 46 | |
jasonliujc | 10:332a4ad5911d | 47 | |
jasonliujc | 4:d59328f14363 | 48 | class ctrl{ |
jasonliujc | 4:d59328f14363 | 49 | public: |
jasonliujc | 10:332a4ad5911d | 50 | ctrl(){ |
jasonliujc | 10:332a4ad5911d | 51 | setKp(0); |
jasonliujc | 10:332a4ad5911d | 52 | setKi(0); |
jasonliujc | 10:332a4ad5911d | 53 | setKd(0); |
jasonliujc | 10:332a4ad5911d | 54 | setprevErr(0); |
jasonliujc | 10:332a4ad5911d | 55 | setErr(0); |
jasonliujc | 10:332a4ad5911d | 56 | setCorrection(0); |
jasonliujc | 10:332a4ad5911d | 57 | floategrater=1; |
jasonliujc | 10:332a4ad5911d | 58 | decay=1; |
jasonliujc | 10:332a4ad5911d | 59 | TErr=0; |
jasonliujc | 10:332a4ad5911d | 60 | RErr=0; |
jasonliujc | 10:332a4ad5911d | 61 | prevTime=0; |
jasonliujc | 10:332a4ad5911d | 62 | timer.start(); |
jasonliujc | 10:332a4ad5911d | 63 | } |
jasonliujc | 10:332a4ad5911d | 64 | |
ahmedallibhoy | 1:45f1f67eab62 | 65 | |
jasonliujc | 5:0975b797bf54 | 66 | void setKp(float num); |
jasonliujc | 5:0975b797bf54 | 67 | void setKi(float num); |
jasonliujc | 5:0975b797bf54 | 68 | void setKd(float num); |
jasonliujc | 5:0975b797bf54 | 69 | void setprevErr(float num); |
jasonliujc | 5:0975b797bf54 | 70 | void setErr(float num); |
jasonliujc | 5:0975b797bf54 | 71 | void setCorrection(float num); |
jasonliujc | 5:0975b797bf54 | 72 | float pctrl(); |
jasonliujc | 5:0975b797bf54 | 73 | float ictrl(); |
jasonliujc | 5:0975b797bf54 | 74 | float dctrl(); |
jasonliujc | 5:0975b797bf54 | 75 | float getT(); |
jasonliujc | 5:0975b797bf54 | 76 | float getR(); |
jasonliujc | 5:0975b797bf54 | 77 | float total(); |
jasonliujc | 8:1ce513eff545 | 78 | void adjust(float xSpeed,float L, float R); |
jasonliujc | 6:95722ada4706 | 79 | void setErr(); |
jasonliujc | 8:1ce513eff545 | 80 | void updateErr(float e); |
jasonliujc | 6:95722ada4706 | 81 | |
jasonliujc | 4:d59328f14363 | 82 | private: |
jasonliujc | 5:0975b797bf54 | 83 | float error; |
jasonliujc | 5:0975b797bf54 | 84 | float ki; |
jasonliujc | 5:0975b797bf54 | 85 | float kd; |
jasonliujc | 10:332a4ad5911d | 86 | float prevTime; |
jasonliujc | 5:0975b797bf54 | 87 | float kp; |
jasonliujc | 5:0975b797bf54 | 88 | float prevErr; |
jasonliujc | 5:0975b797bf54 | 89 | float correction; |
jasonliujc | 5:0975b797bf54 | 90 | float floategrater; |
jasonliujc | 5:0975b797bf54 | 91 | float decay; |
jasonliujc | 5:0975b797bf54 | 92 | float TErr; |
jasonliujc | 5:0975b797bf54 | 93 | float RErr; |
jasonliujc | 10:332a4ad5911d | 94 | Timer timer; |
ahmedallibhoy | 1:45f1f67eab62 | 95 | }; |
ahmedallibhoy | 1:45f1f67eab62 | 96 | |
jasonliujc | 4:d59328f14363 | 97 | #endif //PID_H |