9 #ifndef _PID_ALGORITHMS_H_ 10 #define _PID_ALGORITHMS_H_ 19 virtual float compute(
float error, uint32_t dt_millis) = 0;
20 virtual void clear() = 0;
80 float Ts = (float)dt_millis / 1000.0;
85 float D_by_Ts =
get_D() / Ts;
87 float a = P + D_by_Ts;
88 float b = -P + I*Ts - 2*D_by_Ts;
118 #endif // !_PID_ALGORITHMS_H_ float get_Lower()
Definition: pid_algorithms.h:40
float i_
Definition: pid_algorithms.h:45
void set_Limits(float max_out, float min_out)
Definition: pid_algorithms.h:34
PID_Algorithm()
Definition: pid_algorithms.h:17
virtual float compute(float error, uint32_t dt_millis)=0
void clear()
Definition: pid_algorithms.h:106
Discrete_PID()
Definition: pid_algorithms.h:56
void set_D(float d)
Definition: pid_algorithms.h:24
void set_PID(float p, float i, float d)
Definition: pid_algorithms.h:25
Definition: pid_algorithms.h:14
float get_P()
Definition: pid_algorithms.h:30
virtual ~PID_Algorithm()
Definition: pid_algorithms.h:42
float get_Upper()
Definition: pid_algorithms.h:39
float compute(float error, uint32_t dt_millis)
Definition: pid_algorithms.h:79
void error(Error err)
Definition: error.cpp:13
Discrete_PID(float p, float i, float d)
Definition: pid_algorithms.h:52
float ll_err_
Definition: pid_algorithms.h:115
float d_
Definition: pid_algorithms.h:45
float l_output_
Definition: pid_algorithms.h:113
float p_
Definition: pid_algorithms.h:45
float max_
Definition: pid_algorithms.h:46
float l_err_
Definition: pid_algorithms.h:114
Discrete_PID & operator=(Discrete_PID &&)=default
PID_Algorithm(float p, float i, float d)
Definition: pid_algorithms.h:18
Definition: pid_algorithms.h:49
void set_P(float p)
Definition: pid_algorithms.h:22
~Discrete_PID()
Definition: pid_algorithms.h:63
float min_
Definition: pid_algorithms.h:46
float get_I()
Definition: pid_algorithms.h:31
float get_D()
Definition: pid_algorithms.h:32
void set_I(float i)
Definition: pid_algorithms.h:23