I am looking for suggestions to the following issue I have ran into using a PID with a derivative term.

[B]Background[/B]

This is for controlling supply air temperature using a thermo-electric actuator. It is controlled by a TPO output which varies the amount of power to the actuator to melt the correct amount of phase change material so the valve will be at the correct position to flow the correct amount of water (hot water in this case) to control the discharge air temperature - it was a fun challenge. It’s like controlling the movement of a wet bar of soap by changing the amount of grip on it. A normal person would resort to two position control for these small fan coils, but I’m not normal.

[B]What I am seeing happen[/B]

On the attached image, I have the actuator output limited to 50% to demonstrate what happens at saturation with a derivative term.

The top graph is the supply air (discharge air) temperature which is blue and setpoint which is yellow. Each of these are the input and setpoint for the PID, respectively.

The bottom graph is the TPO/PWM output % to the actuator in pink. The dark line is the graphing utility calculating the derivative of the discharge air temperature - ignore that line.

When the PID input rises above the setpoint, the integral term begins to lower as it should. This lowers the PID output which will eventually lower the PID input through the process. When the input begins to come down, the derivative term does it’s magic and increases the output. If the derivative happens to increase the output to saturation, then the anti-integral wind-up feature recalculates the integral, so we start all over again until the error is large enough for the integral to overcome any derivative disturbances.

[B]Options?

[/B]

I probably could have a smaller derivative term which would reduce the magnitude of the overshoot, but not eliminate it, but the D term I am using now works well other than at saturation. Right now, I’m leaning towards phasing out the D term when approaching saturation, but wanted to see if any of the smart people on here had any other suggestions.