13#ifndef ZEPHYR_INCLUDE_ZEPHYR_PRECISION_TIMING_PRECISION_PI_H_
14#define ZEPHYR_INCLUDE_ZEPHYR_PRECISION_TIMING_PRECISION_PI_H_
void precision_pi_reset(struct precision_pi *pi)
Reset the accumulated integral term.
double precision_pi_update_interval(struct precision_pi *pi, double error, double interval)
Update a PI controller from an error sample taken after an interval.
double precision_pi_update(struct precision_pi *pi, double error)
Update a PI controller from an error sample.
void precision_pi_init(struct precision_pi *pi, double kp, double ki)
Initialize a PI controller.
void precision_pi_set_limits(struct precision_pi *pi, double integral_limit, double output_limit)
Set the limits of a PI controller.
State of an independent proportional-integral controller.
Definition precision_pi.h:30
double kp
Proportional gain.
Definition precision_pi.h:32
double integral
Accumulated integral term.
Definition precision_pi.h:36
double ki
Integral gain.
Definition precision_pi.h:34
double output_limit
Largest magnitude of the output, 0 for no limit.
Definition precision_pi.h:40
double integral_limit
Largest magnitude of the integral term, 0 for no limit.
Definition precision_pi.h:38