[Editor's note] Read the related content regarding this project: Meet the industrialized Arduino and Why use an industrialized Arduino controller?
Basic PID operation has been covered by many others. Temperature control can be particularly vexing due to the long delay between heater control and the response of the thermocouple involved. The common solution is increasing the derivative factor to slow the temperature increase and avoid overshooting. With a higher setting, the controller reduces the initial overshoot, as the copper heats up from room temperature. It throttles the heater back as the setpoint is approached. A derivative coefficient, roughly double the proportional coefficient, proved effective in this case. Unfortunately, this change reduces stability, causing the variable to oscillate around the setpoint.
Also read: PLC vs. Arduino for industrial control
Another problem is the integral coefficient. Since the equipment starts at ambient temperature and must reach a typical soldering temperature of 200 ÂşC, the initial heating takes several minutes, causing a huge stored integral term to build up. This must be overcome by the derivative coefficient to avoid overshooting the setpoint. Since the proportional coefficient is sufficient to turn the heat gun 100% on at the beginning, the integral term adds no value during initial heating.
At the same time, the integral term helps to maintain a steady temperature near the setpoint. The proportional part of the algorithm has limited gain, which means that some residual error relative to the setpoint is needed to keep the heat on to maintain soldering temperature. The integral factor of the algorithm compensates for this, by adjusting and storing an integral adjustment. It turns out that relatively little throttle is needed to maintain temperature. At the same time, since the copper is hot relative to ambient air, it cools down on its own fairly quickly. This is important since the heater can only push the temperature up; it has no mechanism to cool the workpiece if it is too hot.
Two tweaks to the integral control solve this problem. The integral factor is allowed to contribute no more than 30% to the overall throttle setting. This limits how much the differential term needs to overcome on initial heating. Also, the integral factor is not allowed to go negative. It can only be a positive contribution to the throttle. Thus, the integral part of the control equation is only effective when the temperature is at or a little below the setpoint, which is exactly the behavior needed.
Another characteristic is that when the controller turns on the heat gun, it initially blows cold air until the internal heating element warms up. So, a sudden increase in the throttle—from 0 to 100%—can cause a temperature drop of a couple of degrees before the temperature starts to increase. This is a major cause of temperature oscillation around the setpoint. In steady-state operation, some continuous heat input is needed to maintain soldering temperature. Adding a minimum throttle parameter, around 10%, is less than the heat needed to maintain the object at soldering temperature, but enough to keep the heating element primed. This minimum throttle parameter is adjustable, along with the setpoint and PID coefficients.
After several hours of tuning the PID coefficients and introducing the tweaks, the soldering heater works very nicely. Initially the throttle goes to 100% to heat the object as quickly as possible. As the temperature approaches the setpoint, the heat gun throttles back, and the object coasts up to the desired temperature with little overshoot. Added puffs of heat maintain the temperature within a degree or so of the setpoint, which is quite adequate for soldering. The controller does its job exactly as designed.
Doug Reneker is a retired electrical engineer and circuit designer who worked for Bell Labs, Recon/Optical and Arris. He has a BS and MS in electrical engineering from Iowa State University. Contact him at [email protected].