Arduino Sous Vide and Crock-pot Controller


This project was originally inspired by an article in Make Magazine about making a $75 Sous Vide cooker and an article by Andy on called Turn your crock pot into a PID controlled sous vide cooker for $25. The end result was a ~$50 arduino-based controller box that can turn any small electric cooking appliance into a sous vide machine.

The controller box consists of an Arduino Nano and a relay module on a solder breadboard, which is mounted inside a plastic outlet box along with a 5V power adapter. The power adapter and the AC side of the relay are attached to the end of a cut up extension cord. The relay output is wired into one plug of a standard duplex outlet. The picture above shows an older version where an external power adapter was plugged into the other plug of the duplex outlet, but the current version with the internal power supply uses the second plug for the aquarium pump.

The temperature sensor is a 3-Pin TO-92 Dallas One-Wire digital temperature sensor. The sensor was tested against a few oral thermometers and read about 0.5°C low (erring on the side of food safety). It is soldered onto a two-wire cable (data and ground). The solder joint and all exposed wires were coated with silicone aquarium sealant, and the silicone was covered with heat shrink tubing. The other end of the wire connects to the box through a 2.5mm audio plug.

The crock pot is a Rival 6.0 Qt model which is regularly available for under $20 (see update below). To circulate the water in the crock pot, I purchased the cheapest aquarium filter I could find at a local pet shop and removed the filter portion, leaving behind a tiny pump with suction cups that mounts to the inside of the crock pot. I haven't had any problems running it for hours in hot water, but I've also never cooked at above 65°C with the pump in.

Tuning the PID loop was a bit tricky. All sorts of tuning algorithms were tried, but given how slow a large crockpot is to react to changes in input, none of them really worked. Due to the amount of damping present in the system due to the large volume of water and the ceramic crock, a PI loop ended up being the best approach. Tuning it was as simple as increasing the P alone until the crockpot came to a steady temperature quickly, and then adding a small amount of I. With very little time spent optimizing the values, the controller was able to keep the water bath within 0.1°C of the target temperature.

The code below also includes functions for using the controller to automate crockpot cooking.

The crockpot could often take up to an hour to come up to temperature, so version 2.0 of the project uses the Continental Electric Stainless Steel Single 30-Cup Coffee Wall Urn, which is available from Amazon for $30 shipped (idea taken from The percolator tube and basket were removed and two small holes were drilled in the lid -- one for the temperature sensor and one for a silicone aquarium air hose. The air hose was connected to an aquarium pump to provide bubbles to agitate the water, and a standard aquarium diffuser was used to weigh down the end of the tube. The latest version of the code below has the PID values adjusted for the urn. The urn can come up to temperature in a matter of minutes.

Bill of Materials:

DealExtreme Arduino Nano V3.0 Clone  $10.99
Mini 6000mA USB Power Adapter  $2.40
DealExtreme TM1638 LED Input/Output Module  $6.99
RadioShack Multipurpose PC Board with 417 Holes  $2.19
15-Amp White Duplex 120V Outlet  $1.19
1-Gang White Duplex Outlet Wall Plate  $0.49
1-Gang Deep Weatherproof Box  $8.99
Tiny Aquarium Filter Pump    $9.99
Cheap extension cord  $0.99
eBay 5V One Channel Isolated Relay Optocoupler Driver Module For PIC ARM DSP AVR  $3.99
Dallas DS18B20+ 1-Wire Temperature Sensor   FREE*
Assorted wire, solder, heat-shrink, and caulk    N/A
Total  $48.21
* DS18B20+ was a free sample from here.

For more on Sous Vide cooking, especially on how to SAFELY cook food at low temperatures, I would highly recommend the free A Practical Guide to Sous Vide Cooking by Douglas Baldwin. 


Arduino .ino file available to download here.  


Zan Hecht,
Dec 11, 2016, 11:34 AM