IpidItermLimit() limits the minimum and maximum of the PID integral term.
void IpidItermLimit(uint8_t id, float iMin, float iMax)
| Command | Arguments | Return Value | Operation |
|---|---|---|---|
IpidItermLimit(id, iMin, iMax) | uint8_t id — PID loop number. Supports 0 ~ 255float iMinfloat iMax | void | Limits the minimum and maximum of the PID integral term. |
This example reads the raw A0 analog value (0–1023) on MPINO-16A8R8T for the PID calculation. It shows the result only in Serial Monitor and does not drive an output. Check the A0 voltage/current setting for the connected sensor.
const uint8_t PID_ID = 0; void setup() { Serial.begin(115200); IpidSet(PID_ID, 2.0F, 0.4F, 0.1F, 100, 0.0F, 1023.0F); // Set PID gains, sample interval, and output range. IpidItermLimit(PID_ID, -100.0F, 100.0F); // Limit the integral term to -100 through 100. } void loop() { const float currentValue = analogRead(A0); // Read the raw ADC value from A0. const float result = IpidRun(PID_ID, currentValue, 512.0F); // Calculate PID output from the A0 raw value and setpoint 512. Serial.println(result); delay(100); }
IpidRun() retains the previous output until the sampleMs interval has elapsed. It may be called repeatedly in loop().IpidItermLimit() if additional limits are needed.IpidReset() resets the integral term, previous PV and previous output value.id for only one control loop.