brewco/pid.h

changeset 487
d5bc44183aa4
parent 486
5a237a99a793
child 488
bee1f70fb42b
equal deleted inserted replaced
486:5a237a99a793 487:d5bc44183aa4
1 #ifndef PID_H
2 #define PID_H
3
4
5 #define P_MANUAL 0
6 #define P_AUTOMATIC 1
7 #define P_DIRECT 0
8 #define P_REVERSE 1
9
10 typedef struct _pid_var {
11 double Kp; /* (P)roportional Tuning Parameter */
12 double Ki; /* (I)ntegral Tuning Parameter */
13 double Kd; /* (D)erivative Tuning Parameter */
14 double dispKp;
15 double dispKi;
16 double dispKd;
17 int Direction; /* Controller direction */
18 double *myInput; /* Input parameter */
19 double *myOutput; /* Output parameter */
20 double *mySetpoint; /* Setpoint parameter */
21 long lastTime; /* Last compute time */
22 double ITerm;
23 double lastInput;
24 long SampleTime;
25 double outMin;
26 double outMax;
27 int inAuto;
28 } pid_var;
29
30
31 void PID_init(pid_var *, double *, double *, double *, double, double, double, int);
32 void PID_setMode(pid_var *, int);
33 void PID_setOutputLimits(pid_var *, double, double);
34 void PID_setTunings(pid_var *, double, double, double);
35 void PID_setDirection(pid_var *, int);
36 void PID_setSampleTime(pid_var *, int);
37 double PID_getKp(pid_var *);
38 double PID_getKi(pid_var *);
39 double PID_getKd(pid_var *);
40 int PID_getMode(pid_var *);
41 int PID_getDirection(pid_var *);
42 int PID_getSampleTime(pid_var *);
43 int PID_compute(pid_var *);
44
45
46 #endif

mercurial