brewco/pid.h

Sat, 05 Dec 2015 21:46:22 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 05 Dec 2015 21:46:22 +0100
changeset 446
78e9d5234d15
parent 435
4b1ed6897d80
child 448
7fe45f6e4f48
permissions
-rw-r--r--

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

mercurial