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.
Dependents: MR_example 2019_AR_Itsuki
PID.h@7:6823018ff785, 2019-11-10 (annotated)
- Committer:
- TanakaTarou
- Date:
- Sun Nov 10 01:41:03 2019 +0000
- Revision:
- 7:6823018ff785
- Parent:
- 5:ceb7cbed26f3
Add Velocity
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| soyooo | 0:da83c97448bf | 1 | #ifndef PID_H |
| soyooo | 0:da83c97448bf | 2 | #define PID_H |
| soyooo | 0:da83c97448bf | 3 | |
| soyooo | 0:da83c97448bf | 4 | #include "mbed.h" |
| soyooo | 0:da83c97448bf | 5 | |
| soyooo | 0:da83c97448bf | 6 | class PID |
| soyooo | 0:da83c97448bf | 7 | { |
| soyooo | 0:da83c97448bf | 8 | public: |
| TanakaTarou | 7:6823018ff785 | 9 | PID(float p = 0, float i = 0, float d = 0, float t = 1, float max = 1.0, bool pid_mode = false, Timer *T = NULL); |
| soyooo | 0:da83c97448bf | 10 | void setParameter(float p = 0, float i = 0, float d = 0, float t = 1, float max = 1.0); |
| soyooo | 0:da83c97448bf | 11 | void start(); |
| soyooo | 0:da83c97448bf | 12 | void reset(); |
| soyooo | 2:493370c3e206 | 13 | bool isConvergence(float timer_range); |
| soyooo | 0:da83c97448bf | 14 | |
| soyooo | 0:da83c97448bf | 15 | float output; //計算された出力値が入る |
| soyooo | 0:da83c97448bf | 16 | |
| soyooo | 0:da83c97448bf | 17 | float *sensor, *target; //センサーと目標値を示す変数のポインタ 外側から引っ張ってくる |
| soyooo | 2:493370c3e206 | 18 | float allowable_error; |
| soyooo | 2:493370c3e206 | 19 | |
| soyooo | 0:da83c97448bf | 20 | private: |
| soyooo | 2:493370c3e206 | 21 | Timer *timer; |
| soyooo | 0:da83c97448bf | 22 | Ticker pidTimer; |
| soyooo | 0:da83c97448bf | 23 | float kp, ki, kd, delta_t; |
| TanakaTarou | 7:6823018ff785 | 24 | float abs_max_output; //outputの100%を定義 |
| TanakaTarou | 7:6823018ff785 | 25 | bool pid_mode; //0:位置型, 1:速度型 |
| soyooo | 0:da83c97448bf | 26 | float integral; |
| TanakaTarou | 7:6823018ff785 | 27 | float error[3]; //現在の誤差, 前回の誤差, 前々回の誤差 |
| TanakaTarou | 7:6823018ff785 | 28 | float last_target; |
| soyooo | 2:493370c3e206 | 29 | double start_time; |
| soyooo | 0:da83c97448bf | 30 | void _compute(); |
| TanakaTarou | 7:6823018ff785 | 31 | float _gurd(float val); |
| soyooo | 0:da83c97448bf | 32 | }; |
| soyooo | 0:da83c97448bf | 33 | #endif |