PID motor controll for the biorobotics project.
Dependents: PID_example Motor_calibration Demo_mode Demo_mode ... more
pid.h@0:009e84d7af32, 2018-10-19 (annotated)
- Committer:
- brass_phoenix
- Date:
- Fri Oct 19 10:57:39 2018 +0000
- Revision:
- 0:009e84d7af32
- Child:
- 3:f1067b5bb5af
+ Created the library.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
brass_phoenix | 0:009e84d7af32 | 1 | #pragma once |
brass_phoenix | 0:009e84d7af32 | 2 | |
brass_phoenix | 0:009e84d7af32 | 3 | #include "BiQuad.h" |
brass_phoenix | 0:009e84d7af32 | 4 | |
brass_phoenix | 0:009e84d7af32 | 5 | class PID { |
brass_phoenix | 0:009e84d7af32 | 6 | private: |
brass_phoenix | 0:009e84d7af32 | 7 | double Kp, Ki, Kd; |
brass_phoenix | 0:009e84d7af32 | 8 | double error_integral; |
brass_phoenix | 0:009e84d7af32 | 9 | double error_previous; |
brass_phoenix | 0:009e84d7af32 | 10 | double pid_period; // Time between pid updates. |
brass_phoenix | 0:009e84d7af32 | 11 | bool first_update; |
brass_phoenix | 0:009e84d7af32 | 12 | |
brass_phoenix | 0:009e84d7af32 | 13 | // Filter to make sure the derivative component does not amplify the noise. |
brass_phoenix | 0:009e84d7af32 | 14 | BiQuad low_pass_filter; |
brass_phoenix | 0:009e84d7af32 | 15 | public: |
brass_phoenix | 0:009e84d7af32 | 16 | PID(); |
brass_phoenix | 0:009e84d7af32 | 17 | void set_period(double period); |
brass_phoenix | 0:009e84d7af32 | 18 | void set_k_values(double Kp, double Ki, double Kd); |
brass_phoenix | 0:009e84d7af32 | 19 | |
brass_phoenix | 0:009e84d7af32 | 20 | double update(double error); |
brass_phoenix | 0:009e84d7af32 | 21 | }; |