Temperature seems like the easiest thing in the world to control. Turn on the stove and set the temperature you want. Switch on the furnace in the morning and set the thermostat. Adjust the hot and cold water to make the shower just right. Easy! But what if you want to control temperature beyond these everyday applications? If you want temperatures outside the normal ranges, or want stable temperature within a narrow range, you’re mostly on your own.
In my case, I wanted to control the temperature of a hot plate used for surface mount soldering. Initially, I used pulse width modulation to provide stable temperatures and experimentally determined settings to create the temperature profile required. You can read all about that in this Instructable. This system works and control of temperature in this manner is all well and good, but it has shortcomings.
Works only for my specific hot plate. Others are similar, but not identical and experiments are required to determine the settings and times needed to produce the requited profile.
Same situation if I want a different profile or temperature.
The soldering process takes a long time since stable temperatures must be approached slowly.
Ideally, we could just specify a temperature- time profile, press a button, and the controller would cause the hot plate to perform as programmed. We know this is possible since there are many industrial processes that use exactly this sort of control. The question is can this be done easily and inexpensively at home?
As you might have guessed, since I’m writing this Instructable, the answer is yes! This Instructable will show you how to build your own industrial-strength temperature controller. I’ll particularly target surface mount soldering, but any process requiring precise time temperature profile can use this system.
Note: When I use the name “Arduino” I mean not just the (not quite) copyrighted Arduino itself, but also the many public domain versions collectively known as “Freeduino”. In some cases I use the term “Ard/Free-duino”, but the terms should be considered interchangable for the purposes of this Instructable.
The temperature control scheme used in the Extreme Surface Mount Soldering Instructable is known as open-loop control. That is, a value that has produced the desired temperature in the past is expected to produce the same temperature when used again. Frequently this is true and produces the desired result. But if conditions are slightly different, say the garage where we’re working is a lot cooler or warmer, then you may not get the expected result.
If we have a sensor that can read the temperature and report it back to a controller, then we have closed-loop control. The controller is able to set an initial value to increase the temperature, look at the temperature as time passes, and adjust the setting to make the temperature go higher or lower until the desired temperature is reached.
Our approach will be to replace the AVRTiny2313-based PWM controller with a more powerful ATMega-based controller. Programming will be done in the Arduino environment. We’ll use a pc (Linux-Mac-Windows) running Processing to display the results and adjust the controller.
For the sensor, we’ll use an Infrared Temperature Sensor from Harbor Freight. The IR sensor will be modified to output the temperature as a serial data stream that the controller can read. We'll use an Ard/Free-duino as the controller, with a PC (Mac – Linux – Windows) for input to the controller. When we’re all done, the system will look like the picture. (You may have less extraneous circuitry on your breadboard however. That's OK.)
Step 1: Modifying the IR Sensor
Many thanks to my clever friend, Scott Dixon, for his careful detective work in figuring out how this instrument works and how to make it generally useful with a controller by exposing its serial interface.
The device we'll start with is Harbor Freight Part Number: 93984-5VGA. Costs about $25. Don't bother buying the warranty. :)} Here's the link.
Figures 1 and 2 show Front and Back Views. The arrows on Figure 2 indicate where the screws are that hold the case together.
Figure 3 shows the inside of the case when the screws are removed and the case is opened. The laser pointer module can probably be removed and used for other projects, although I haven't done this yet. The arrows point to the screws to remove if you want to take the board out to solder to it (screws removed in this picture). Also indicated is the area where a cut out should be made for your wiring to exit the case. See also Figure 5. Make the cut out while the board is removed, or at least before you solder the wires on. It's easier that way. ;)}
Figure 4 shows where the wires will be soldered. Note the letter of each connection so you'll know which wire's which when you close the case.
Figure 5 shows the wires soldered in place and routed through the cut out. You can now put the case back together and the instrument should operate as it did before your operation. Note the connector on the wires. I use longer wires to actually connect to my controller. If you use small wire, a small connector, and keep the wires short, you can tuck it all back in the case if you wish and the instrument looks unmodified.
Scott has also created the software to interface this device. He used this document if you want the details. That's it! You now have an IR temperature sensor that will work from -33 to 250 C.