42 lines
673 B
C
42 lines
673 B
C
/*
|
|
* pid.h
|
|
*
|
|
* Created on: Jan 18, 2022
|
|
* Author: mcfly
|
|
*/
|
|
|
|
#ifndef INC_PID_H_
|
|
#define INC_PID_H_
|
|
|
|
|
|
typedef struct {
|
|
//Controller gains
|
|
float Kp;
|
|
float Ki;
|
|
float Kd;
|
|
|
|
//Derivative low-pass filter time constant
|
|
float tau;
|
|
|
|
//Output limits
|
|
float limMin;
|
|
float limMax;
|
|
|
|
//Sample time in seconds
|
|
float T;
|
|
|
|
//Controller "memory"
|
|
float integrator;
|
|
float prevError; //required for integrator
|
|
float differentiator;
|
|
float prevMeasurement; //required for differentiator
|
|
|
|
//Controller output
|
|
float out;
|
|
} PIDController;
|
|
|
|
void PID_Init(PIDController *pid);
|
|
float PID_Update(PIDController *pid, float setpoint, float measurement);
|
|
|
|
#endif /* INC_PID_H_ */
|