This project was originally inspired by an article in Make Magazine about making a $75 Sous Vide cooker and an article by Andy on ChiefMarley.com 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.
MARCH 2013 UPDATE:
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 http://lowereastkitchen.com/). 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:
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.
Source code available from https://github.com/zanhecht/SousVide/blob/master/SousVide.ino
Arduino .ino file available to download here.