I've seen a few different temperature controller projects here. I wanted to build one, with the following constraints:

  1. Controlled "dumb" appliance can be plugged directly into the unit. I didn't want to hack into the appliance, but more importantly I wanted to potentially be able to use this with more than one appliance.
  2. Simple design with simple inputs.
  3. As modular as possible, so I can pull off components if I ever want to make modifications, or if I want to sacrifice components to be used in other projects (I'm ruthless like that).

I have two specific uses in mind for this project, though hopefully I can come up with more uses somewhere down the line:

  1. Crockpot Sous Vide!! By controlling a crockpot with a precise temperature controller, I'll be able to do some amazing culinary things.
  2. Flower-pot hot plate smoker. This design will work perfectly for this type of project as well, though it will probably require a K-type thermocouple (more suited for open air), which I haven't implemented yet. This will be the next phase of the project.

I hope some of the ideas from this instructable will be tweaked and used in different projects.

Let's get cooking!

Disclaimer: This project involves mains voltage, which means you can get fried. Be careful!

Step 1: Materials and Options

Here's what went into my project. I'll link to the specific parts I used, but obviously there are variations


  • Some flavor of Arduino (mine is a Seeeduino I had leftover from another project, and I did some testing on an Uno)
  • Proto shield (any one will do, or go one step further and make your own custom PCB).




  • Project box (I designed and printed a custom one)
  • Power socket
  • 3-prong power cord (I took mine from a broken electric kettle). The higher the amperage rating, the better.
  • 9V battery connector (optional)

And, of course, whatever appliance you plan to control:

  • Crockpot/slow cooker. Having precise temperature control will let you turn your crockpot into a sous vide machine!
  • Hot plate. Down the line I plan to modify this and add a K-type thermocouple (better suited for open air), and use it with a hot plate to have a low-cost smoker.
  • Room fan or space heater? Get creative!
what part of the code needs to be changed to make this work with a 1K thermistor? Also are the pull-up resistor is required on the rotary encoder for it to work properly?
<p>This is a wonderful, complete and very smart project.</p><p>I made it on breadboard and found it one of the best temperature controller project. </p><p>But there should be a stop like (digitalWrite(relayPin, LOW); //turn heating element off) heat must stop when no time left but it doesn't stop for me and after adding the above line it started to stop.</p><p>Thermocouple setup and pins are not addressed in the code.</p><p>Overall I appreciate your work. </p><p>Thanks and regards</p><p>Atir</p>
<p>This is great! Just what I need to improve the quality of my rum distillations.</p><p>Can you give some broad guidance as to how I could simplify the code to simply run from the Serial Monitor instead of the LCD?</p>
<p>This should be really easy to do. Generally, you'll be replacing the lcd.print() commands with Serial.print() or Serial.println() commands, and you can remove the other lcd. commands (for example, you won't have to worry about setting the lcd cursor, so you can remove the lcd.setCursor() commands. There are already a few Serial commands in the code that I had used for testing, but here are a couple of good starting points for Serial communication with Arduino:</p><p><a href="https://www.arduino.cc/en/Serial/Print" rel="nofollow">https://www.arduino.cc/en/Serial/Print</a></p><p><a href="https://www.arduino.cc/en/Tutorial/ASCIITable" rel="nofollow">https://www.arduino.cc/en/Tutorial/ASCIITable</a></p>
<p>Hello, ok after replacing the thermistor it is now working as aspected. By mistake I have used a 100K thermistor instead a 10K.</p><p>Thank you for your help. </p>
<p>I am glad to hear you got it working!</p>
<p>Well I do have to correct my self, it start with negative value (-20.5) then as soon heat get applied to the sensor the reading arrive to 0 and then goes to positive digits.</p><p>Thank you.</p>
<p>Hello, nice work. I did make this Instructables and is working great. But I will like to change from Farenight to Celsius. Could you help me.</p><p>Thank you.</p>
<p>There is a helper program in the arduino file, near the end, called getThermistor(). </p><p>The last line of this helper program converts the temperature from Celsius to Fahrenheit: </p><p>f = steinhart * 1.800 + 32.00; //convert to F</p><p>If you comment this line out, and then change the following line from &quot;return f&quot; to &quot;return steinhart&quot;, then each time the program calls &quot;getThermistor() it will return Celcius! Let me know if you have any other questions.</p>
<p>Thank you, I did the change. But my value start from a negative number (-20.5) and then goes up as soon heat is applied.</p><p>Thank you for your help. </p>
<p>Any chance this could be used in a Peltier ice chest? Where I could keep the temp in the cooler at 40 degrees? Or is this only for hot stuff? Nice work.</p>
<p>yes, this unit should work for a freezer as well, since the unit simply monitors the temperature and sends an ON/OFF signal to whatever you're plugged in to. The thermistor I linked to is good down to -55C</p>

About This Instructable




Bio: Mechanical Engineer, driven by learning. I usually have a few very different projects going, with the goal of learning new skills. My overall goal is ... More »
More by smrat alleck:Plug and Play Arduino Temperature controller Midfoot Bicycle Cleat Position Laser Cutter spiral effect 
Add instructable to: