en-us_commands:reference:ipidreset
Table of Contents
IpidReset()
Commands
| Command | Arguments | Return Value | Operation |
|---|---|---|---|
IpidReset(id) | uint8_t id — PID loop number. Supports 0 ~ 255 | void | Resets the PID integral value and internal state. |
Example
This example uses the MPINO-16A8R8T A0 value as the PID process value. When input D22 changes from LOW to HIGH, it resets the PID state once. It shows the result only in Serial Monitor. Check the A0 setting and D22 wiring against the product specifications.
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. } void loop() { static bool wasHigh = false; const bool isHigh = digitalRead(22) == HIGH; if (isHigh && !wasHigh) IpidReset(PID_ID); // Reset the PID state on the D22 rising edge. wasHigh = isHigh; 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); }
Precautions
- PID output can directly affect field equipment. Begin testing with a low output range and small gains.
IpidRun()retains the previous output until thesampleMsinterval has elapsed. It may be called repeatedly inloop().- The integral term is automatically constrained by the output limits to reduce windup. Use
IpidItermLimit()if additional limits are needed. - The derivative term is calculated from the PV change to reduce abrupt jumps caused by setpoint changes.
IpidReset()resets the integral term, previous PV and previous output value.- Use the same
idfor only one control loop.
Built-in Commands in the Same Category
en-us_commands/reference/ipidreset.txt · Last modified: by 127.0.0.1
