PID motor controll for the biorobotics project.

Dependencies:   FastPWM QEI

Dependents:   PID_example Motor_calibration Demo_mode Demo_mode ... more

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?

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