on meat & PID loops
a couple months ago, i had the pleasure of eating some of the best steak i’ve ever eaten. it was perfectly medium-rare throughout, incredibly juicy, and had a perfect crust. i asked the waiter about the process, and it turns out it was cooked with the sous-vide method.
at its core, sous-vide cooking really only has two components: vacuum-sealed food, and a precisely temperature-controlled water bath. the sealed bags ensure the integrity of the food and lock in the juices, and the temperature-controlled water bath means that your food is cooked at the precise doneness you desire for as long as it takes to cook at that perfect temperature throughout.
professional sous-vide products can cost many thousands of dollars, though a rebirth of the sous-vide movement has led to home consumer models, such as the sous-vide supreme (which could be yours for only $400!). i decided that i could do it for myself for way cheaper, and probably with better accuracy (the supreme, for example, is only accurate to within one degree f, which is clearly pathetically imprecise)
a picture can describe the outcome better than any mumbo-jumbo, so here’s a glamour shot of my finished product:

interested? here’s a recipe for how i built a sous-vide machine in two weekends with my electrical engineering buddy. if you are interested in making one, i would recommend doing it somewhere that has 1) experienced electrical engineers, since you will be switching ac current and 2) abundant supply of resistors, leds, &c.
ingredient list
- one arduino duemilanove (from amazon, $29.99)
- one styrofoam cooler, around 15-20L (from the corner store, $4.99)
- two norpro 559 immersion heaters (from amazon, 2x$6.48 = $12.96 total)
- one analog temperature sensor (via octoparts, $1.71)
- one digital temperature sensor (via octoparts, $4.23)
- one optocoupler (via octoparts, $1.32)
- one triac (via octoparts, $0.95)
- two connector headers (via octoparts, 2x$1.98 = $3.96)
- assorted resistors, small-gauge wire, heat shrink (via my friend)
- one 3-plug extension cable (was just lying around)
- protoboard (via my friend, you can source octoparts)
- coat hangers (from the corner store, ~$2)
- tupperware container (corner store, ~$1)
- ziplock bags, for the food (corner store, ~2)
- (optional) aquarium pump + bubbler for water circulation (from petco, ~$30)
- software (my source code is available from github)
total cost: $95 ($65 without the optional bubbler for mixing)
recipe
in essence, our sous-vide machine is a glorified water heater, not much different than what keeps your shower hot. our two redundant temperature sensors measure the temperature, and the arduino microcontroller does the decision making vis-à-vis our ac-powered immersion heaters.
we first used a breadboard to lay out the basic circuit (a slightly modified version of a schematic found on the arduino forums), and tried it out:

you can see the immersion heater at the bottom left, our breadboard on the table, and the spliced extension cable connected to the breadboard (being switched by the arduino and monitored on the laptop). blurry overhead view:

(we were using the larger wall wart also connected to the extension cable as a monitor, since it had a led that went on when power was applied). after this was successful, we connected up the temperature sensors, and used heat shrink to water proof them:

(my electrical engineering buddy soldering the sensors to the connecting wire)
while my friend prototyped the various electrical components, i hacked together the software using an existing PID library. for those unfamiliar, a PID controller is basically a fancy way of regulating an output based on inputs such that the output will match some desired value. in our case, the inputs are the temperature sensors, the desired temperature value (the ‘setpoint’) being the cooking temperature, and the output is the length of time the heaters are turned on for some time period.
you can see the whole system together for the first time here:

the entire system is visible here, from the styrofoam container to the laptop-side GUI. the GUI is actually pretty sweet, you can monitor the various internal mechanisms/inputs/outputs:

(you can see the temperature, in red, was misbehaving quite a bit, and so the output, in blue, was very wild)
the setup was extremely hacked together, and not “production” ready in any sense. the heater elements were being supported by plastic coat hangers and the output was being monitored with a multimeter:

the next weekend, my buddy john joined us and we put together some very professional cages for the heaters so we could just dangle them in the water and not be worried about food/sensors/hands touching them:

we mounted the protoboard in a little tupperware container, made some notches in the sides of the cooler so the top could rest easily, and voila!:

we did some various runs to get the PID controller tuning right. since it is a large body of water, and the heaters are very slow to react, this was somewhat time consuming. i’m still not entirely satisfied with the result, but it keeps the temperature to the setpoint +/- a quarter of a degree f, so that’s not too shabby.
the real test is how it actually performed cooking. the answer? very well. i grabbed some random ribeye from the store and “vacuum sealed” the meat using the ziplock bag method described in this blog post on serious eats. NB: make sure to add a little oil to the bag to help with the sealing process and keep air out. i set the desired temperature to 135F (medium-rare), and let it heat up. to speed things up, i boiled a pot of water and added it partway. you can see the difference that makes:

once it hit 135, i added the ziplock bags and walked away:

(the clear plastic tube on the left is the air supply for the aquarium bubbler, which helps with circulating the water)
you can see an in-progress snap on how well the system regulates temperature here:

(notice that the temperature is only off 0.07 degrees C from our desired 57.2C, not too shabby!)
1.5 hours later (and after making some lemon-butter asparagus), i took the meat out and seared it for one minute on each side on a smoking-hot cast iron, yielding the meat you can see in the first picture. it was perfectly done throughout, with a beautiful crust and just amazingly tender. i’m definitely going to try some more flavorful cuts next time, but i’m super pleased with how the whole project turned out!