iranaikamo sirenaisi irukamo sirenai
pidの計算の部分だけをコトコト煮詰めてライブラリにしました。
PID.hpp@1:98493ab2f769, 2021-04-14 (annotated)
- Committer:
- hamohamo
- Date:
- Wed Apr 14 14:24:40 2021 +0000
- Revision:
- 1:98493ab2f769
- Parent:
- 0:f6d51a9c6ce9
pid
Who changed what in which revision?
User | Revision | Line number | New 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_ */ |