iranaikamo sirenaisi irukamo sirenai

pidの計算の部分だけをコトコト煮詰めてライブラリにしました。

Committer:
hamohamo
Date:
Wed Apr 14 14:24:40 2021 +0000
Revision:
1:98493ab2f769
Parent:
0:f6d51a9c6ce9
pid

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hamohamo 1:98493ab2f769 1 #ifndef IG_PID_HPP_
hamohamo 1:98493ab2f769 2 #define IG_PID_HPP_
hamohamo 1:98493ab2f769 3
hamohamo 1:98493ab2f769 4 class PID{
hamohamo 1:98493ab2f769 5 public:
hamohamo 1:98493ab2f769 6 PID(double KP,double KI,double KD,double DT):Kp(KP),Ki(KI),Kd(KD),dt(DT){
hamohamo 1:98493ab2f769 7
hamohamo 1:98493ab2f769 8 }
hamohamo 1:98493ab2f769 9 void Update(double e){
hamohamo 1:98493ab2f769 10 PROP = e;
hamohamo 1:98493ab2f769 11 INT += (curr_e + prev_e)*dt/2.0;
hamohamo 1:98493ab2f769 12 DIFF = (curr_e - prev_e)/dt;
hamohamo 1:98493ab2f769 13 mv = Kp*PROP + Ki*INT + Kd*DIFF;
hamohamo 1:98493ab2f769 14 }
hamohamo 1:98493ab2f769 15 double getmv(){return mv;} /* 操作量の取得 */
hamohamo 1:98493ab2f769 16 private:
hamohamo 1:98493ab2f769 17 double Kp,Ki,Kd; /* Pゲイン Iゲイン Dゲイン */
hamohamo 1:98493ab2f769 18 double dt; /* 微小時間 */
hamohamo 1:98493ab2f769 19 double prev_e,curr_e; /* 前回の誤差 現在の誤差 */
hamohamo 1:98493ab2f769 20 double PROP,INT,DIFF; /* 比例 積分 微分 */
hamohamo 1:98493ab2f769 21 double mv; /* manipulating variable */
hamohamo 1:98493ab2f769 22 };
hamohamo 1:98493ab2f769 23
hamohamo 0:f6d51a9c6ce9 24 #endif /* IG_PID_HPP_ */