Arduino Sous-Vide Cooker

Arduino Sous Vide Cooker

Sous-vide cooking allows you to precisely control the temperature of cooked food (how “doneness” is measured) by immersing it in a carefully controlled water bath. It’s possible, but seriously difficult, to do this just with a thermometer and a pot on the stove… but if you have an Arduino do all the hard work for you, you can literally “set it and forget it.”


– Arduino microcontroller (I use the Uno… any will do)
– thermistor, or other temperature sensor (I used this one from Sparkfun )
– 3/16″ diameter aluminum or copper tube, about 6″ long
– shrink tubing
– clear silicone caulk

Arduino Sous Vide Cooker

– relay controller (this one from Sparkfun is nice, but you can make your own pretty easily)
– 9V battery or 9V power adapter
– AC outlet
– AC power cord with bare leads
– project box (I used an old cigar box)
– Crock-Pot or similar slow cooker (must have “On” setting… the dumber, the better)
– display (optional, but nice to have)
– various hookup wires
– Ziploc bags or vacuum sealer Disclaimer: this project involves household current, which is dangerous if you don’t know what you’re doing. If you’ve never dealt with household current and don’t want to mess with it, go with the Powerswitch Tail II from the Makershed or Sparkfun instead of using the relay controller and AC outlet. Please be careful, and don’t hurt yourself.

Step 1: Make your temperature probe

First we need to put together our temperature probe. This is basically our sensor (the thermistor), a protective tube, and a length of wire. The probe will stay in the water bath when you’re cooking, so the wire has to be long enough to reach. First we solder the sensor to however many wires your sensor needs; our thermistor needs two wires. Use some shrink tubing to keep the leads insulated. Next we’re going to protect the sensor so the water bath doesn’t affect our readings. Use an aluminum or copper tube (both are great thermal conductors) big enough fit your temp sensor. Seal one end of the tube with silicone caulk (or hot glue if you’re impatient, but silicone would be better). When that has cured/solidified, slide the temp sensor into the tube as far as it will go, then fill the open end with more silicone/hot glue to seal it up. Use some shrink tubing at that end for good measure.

Step 2: Wire everything up. First the sensor…

Connect the temperature probe to your Arduino. We’re going to use the thermistor set up as a voltage divider, so connect the probe leads to A0 and to 3.3V… you can use 5V instead, but if you’re using a display, you might need the slot for that. The Sparkfun thermistor has a nominal resistance of 10KOhms, so we connect a 10KOhm resistor from A0 to ground to complete the voltage divider. Now your Arduino will be able to calculate temperature based on the resistance of the thermistor.

Step 3: … next the relay controller…

Connect your relay controller to an appropriate power source. Mine will use the same 9V as the Arduino, so I connect it to the Vin and ground pins on the Arduino. Lastly connect the signal lead to digital pin 13.

Step 4: … then the AC outlet…

Connect the neutral lead of the AC power cord to the neutral pole of the AC outlet. Most outlets will have the poles labelled “Hot” or “Neutral”, but it’s easy enough to figure out if you’re not sure (in American outlets, small slot is Hot, large is Neutral, circular is ground). Definitely connect the ground lead to the ground pole on the outlet if your power cord has one… it will protect you (to some degree) if there are any shorts. Connect the hot lead of the power cord to one of the leads on your relay controller (doesn’t matter which one), and connect the other lead to the hot pole of the AC outlet. Again, if you don’t want to mess with wiring that will be connected to household current, buy a Powertail instead. Having nicely cooked food isn’t worth getting electrocuted ‘if you don’t know what you’re doing.

Arduino Sous Vide Cooker Schematic

Step 5: … and finally the display (if you want one).

These LCD displays are very common and easy to use with Arduino, but it eats up several of your I/O pins. It’s nice to have the feedback of a display to let you know that everything is working the way you want it to. Here’s how mine is connected (yours may vary):
– LCD RS pin to digital pin 12
– LCD Enable pin to digital pin 11
– LCD D4 pin to digital pin 5
– LCD D5 pin to digital pin 4
– LCD D6 pin to digital pin 3
– LCD D7 pin to digital pin 2
– LCD R/W pin to ground
– 10K resistor: ends to +5V and ground wiper to LCD VO pin (pin 3)

Step 6: Yup… It’s a Lot of Wires.

Step 7: Upload the Arduino Code…

The sketch below will work for this project only if you used the same thermistor and display that I did. You can modify it to your own needs… just follow the instructions in the sketch. To get accurate temperature readings, you’ll have to modify a few of the parameters in the sketch to reflect the actual values of your 10k resistor (use a multimeter) and the precise voltage generated by your Arduino. Again, follow the instructions in the sketch, and everything should be ok.

To set the cooking temperature, you’ll need to modify a line near the bottom of the code… it’s marked. I’ll update this project in the future to let you change the temperature with some buttons or a potentiometer.

Read more:  Arduino Sous-Vide Cooker

Leave a Comment

Your email address will not be published. Required fields are marked *