Electronics > Projects, Designs, and Technical Stuff
Need expert advice on PID controllers
(1/3) > >>
Peabody:
I've been through Dave's stuff and other material on PID controllers, and generally understand how they work.  But the part that's still a mystery to me is whether, and how, they deal with situations of extremely laggy reponse.

The attached picture shows a hotplate reflow session for leaded paste.  It shows the power duty cycle (over each 2-second period) in red, and the actual temperature in black.  The duty cycle seqence was arrived at manually through trial and error.  You can see that it takes a long time for the hotplate to respond to changes in average power.

I don't understand how a PID controller could be set so that, for example, it would start cutting back on power when the actual temperature is still less than 1/3 of the target soak level - so as to avoid overshoot.  Can PID controllers do that?  If so, how would you go about choosing the weights for the three equations?

Having done the grunt work, at this point I'm planning to build in the fixed sequence so that anyone using the same setup I used could in theory reproduce the temperature profile I produced, without needing any thermocouple feedback at all.  But if a workable PID solution could produce the same curve, I would like to consider it.  The controller would need to be software for the Arduino if that's possible.  I've seen libraries, but don't know anything about them.

If PID controllers successfully deal with this kind of situation, it would be helpful if someone could point me to an example of that.

Thanks for any wisdom on this subject.
james_s:
This is what the derivative portion does, the 'D' in 'PID'. It comes from the rate of change of the process value. So if you're heating something up and the temperature is rising very rapidly, the derivative will be high and will act to throttle back the heat in order to avoid overshoot. The system has to be properly tuned in order to know how much to back off on the heat in to avoid overshooting. It does the same thing you would do manually if you were controlling a flame under something and watching the temperature with a thermometer.

A properly tuned PID controller will bring the process value in line with the set value as quickly as possible with minimal overshoot. They work remarkably well in most cases.
EmmanuelFaure:
"D" term does not offer anything great in such thermal control applications.
By order of preference, three solutions :
1) Integrator tweaking. Basically shutting down the integrator after rise and fall of setpoint. See : https://en.wikipedia.org/wiki/Integral_windup.
2) A cascaded controller. Controller n°1 controls for example the power supplied to the heating resistor, or the surface temperature of that resistor using a close coupled temperature sensor. Controller n°2 controls the air temperature. Controller 1 is in the loop of the controller 2. Controller n°1 is fast, controller n°2 is slow. The system is always faster that way than with a single controller controlling everything. But requires hardware modifications, cost and complexity increase.
3) Smith predictor https://en.wikipedia.org/wiki/Smith_predictor. Overkill.
snarkysparky:
Look up "lead compensator"   This can be implemented with proper derivative and gain terms in the PID like James says. 

Also investigate tuning rules for PID that bring down overshoot.

Basically as the process approaches the setpoint the proportional gain will start lowering the plant output.  The derivative term of the error will be lowering the plant drive also as it is negative, but near the transition the derivative of error works with the gain to smooth the response.
This is how i see it anyway.

Also cut back on integral action until you like the transient response.
Rerouter:
The other simple thing for cases like this is an integral based set point. Have your set point wind up at about the same rate the process is able to. This will keep things in a controlled state rather than 100% output for x minutes.
Navigation
Message Index
Next page
There was an error while thanking
Thanking...

Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod