Sat, 05 Dec 2015 21:46:22 +0100
Switched to PID code from Arduino
#ifndef PID_H #define PID_H #define P_MANUAL 0 #define P_AUTOMATIC 1 #define P_DIRECT 0 #define P_REVERSE 1 typedef struct _pid_var { double Kp; /* (P)roportional Tuning Parameter */ double Ki; /* (I)ntegral Tuning Parameter */ double Kd; /* (D)erivative Tuning Parameter */ double dispKp; double dispKi; double dispKd; int Direction; /* Controller direction */ double *myInput; /* Input parameter */ double *myOutput; /* Output parameter */ double *mySetpoint; /* Setpoint parameter */ long lastTime; /* Last compute time */ double ITerm; double lastInput; long SampleTime; double outMin; double outMax; int inAuto; } pid_var; void PID_init(pid_var *, double *, double *, double *, double, double, double, int); void PID_setMode(pid_var *, int); void PID_setOutputLimits(pid_var *, double, double); void PID_setTunings(pid_var *, double, double, double); void PID_setControllerDirection(pid_var *, int); void PID_setSampleTime(pid_var *, int); double PID_getKp(pid_var *); double PID_getKi(pid_var *); double PID_getKd(pid_var *); int PID_getMode(pid_var *); int PID_getDirection(pid_var *); int PID_compute(pid_var *); #endif