ichinoseki_Bteam_2019 / PID

Dependents:   MR_example 2019_AR_Itsuki

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?

UserRevisionLine numberNew 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