12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /*
- * pid.h
- *
- * Created on: Jan 12, 2021
- * Author: David Original work by Jose (PTDreamer), 2017
- */
- #ifndef PID_H_
- #define PID_H_
- #include "main.h"
- typedef struct pid_values {
- uint16_t Kp;
- uint16_t Ki;
- uint16_t Kd;
- int16_t maxI;
- int16_t minI;
- } pid_values_t;
- typedef struct {
- uint32_t lastTime;
- int32_t lastMeasurement;
- int32_t lastSetpoint;
- /* Controller gains */
- float Kp;
- float Ki;
- float Kd;
- /* Derivative low-pass filter time constant */
- float tau;
- /* Output limits */
- float limMin;
- float limMax;
- /* Integrator limits */
- float limMinInt;
- float limMaxInt;
- /* Controller "memory" */
- float proportional;
- float integrator;
- float derivative;
- float prevError; /* Required for integrator */
- float prevMeasurement; /* Required for derivative */
- /* Controller output */
- float out;
- } PIDController_t;
- extern PIDController_t pid;
- void setupPID(pid_values_t* p);
- int32_t calculatePID(int32_t setpoint, int32_t measurement, int32_t baseCalc);
- void resetPID();
- float getPID_P();
- float getPID_I();
- float getPID_D();
- float getPID_Output();
- float getPID_Error();
- int32_t getPID_SetPoint();
- int32_t getPID_PresentValue();
- #endif /* PID_H_ */
|