Help with controlling heating element

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.

jmajor817

New Member
Joined
Apr 5, 2013
Messages
4
Reaction score
0
Hello I am currently working on a project using an Uno, RTD temperature sensor, relay, and 1500W heating element. The basics of it is the Arduino will read in a temperature from the RTD, and based on that reading will or will not send out 5V to the relay which will allow the heating element to start up. The heating element will be powered by a 120V GFCI outlet. This is all working just fine, however I am trying to hold the temperature for a long period of time with +- .5 degree F and a simple on/off for the heating element will probably not be able to give me that precision.
What would be the best way to control the power to the heating element based on the temperature read of the RTD. What sort of electronics do I need and how to implement the Arduino PID library. Any point in the right direction would be greatly appreciated. Thanks.
 
0.5°F accuracy is unrealistic - you won't be able to calibrate your temperature probes that accurately, and the be variation in temperature within the heating vessel will be larger than that anyway.

How do you plan to obtain readings from the RTD? It is possible, but LM35 or DS18B20 are easier choices for the input.

Ditch the relay, you need an SSR that can handle whatever current the heating element takes, and a heatsink to mount it on.

For detailed support on the Arduino PID library try https://groups.google.com/forum/?fromgroups#!forum/diy-pid-control
 
Alien is right if you are using your element for brewing, but if you are using it for something unrelated and the RTD you are using is at least 4X more accurate than 0.5 degrees F then you should be able to make it work. A lot depends on the amount of time it takes for heat from the element to soak through the medium you are heating.
 
I went down a similar path but decided to ditch the RTD and go with thermistors. RTDs, especially the 3 wire ones, are a lot more tricky to build a proper analog front end for than thermistors. Even with thermistors I had a little bit of trouble getting a smooth consisted readings. I did two things to overcome that and both are basically low pass filters. First I added a HW low pass filter with capacitors an inductor and a resistor. Second, for each sample I took I averaged 10 ADC readings. After I did those two things I was getting consistent and stable readings. I was then able to calibrate my probes and found them to be within +/- 0.1F.

Now onto controlling temperature. As mentioned you will need to use an SSR instead of a mechanical relay. I use a 1 second cycle time and found that to work well. After tuning the PID loop for my RIMs tube I am able to stay within 0.5F of my setpoint.
 
Thanks for the input. I really would like to try and make the RTD work simply because I already have it. It is a three wire from auberins. I found this example earlier, I think I am going to try this to see if I can't get it set up and reading accuratly.

http://openenergymonitor.org/emon/node/75

I have already ordered a SSR for my heating element switches but am going to go ahead and use the mechanical relay I have to turn my pump on and off. I have already tested it and it works good. The only two things I have left is tuning my PID loop and trying to get a good reading from my RTD. Let me know what you think about that link. Or if anyone has tried this. Thanks
 
That circuit will get you a reading, but you can do better. The classical way to measure with a RTD is to set up a Wheatstone bridge rather than a voltage divider:

http://www.omega.com/temperature/z/pdf/z033-035.pdf

Also you would be better of with low drift, low noise instrumentation op amps such as the ones recommended here:

http://www.ti.com/ww/en/industrial/sensors/rtd/solutions.html

There are also custom chips like MAX6603, MAX31865, and ADS1247. The last one is the only one I would back myself to be able to solder by hand.

One other thing: make sure the ADC has a well-filtered power supply. If using a linear regulator like a 7805, ferrite beads on both the input and output of the regulator will help filter high frequency noise. If using the Arduino analogue pins, it's a good idea to put a ferrite bead or small inductor on the line to the reference voltage.
 

Latest posts

Back
Top