Instructables

Cheap and effective Sous Vide cooker (Arduino powered)

FeaturedContest Winner

Sous-vide cooking is a great new way of cooking food. I will not explain why and how it works here... for great recipes and explanations, you can check out those guys :

http://modernistcuisine.com/2013/01/why-cook-sous-...
 

Unfortunately, a good (and I mean precise to the half °C) sous-vide machine is very very expensive (500, 1000$ or more). If you wonder why you need such precision, I suggest you check this out :

http://hoerup.dk/how-to-cook-an-egg-sous-vide-the-...
 

Some Arduino-based designs come cheap (50, 60$), but as they are based on PID regulation , they require adequate tuning to perform well. Good PID tuning is very hard to achieve in practice, so those designs don't hold well against reality (at least, in my experience). Also, who needs a 20$+ LCD screen when a cheap 5$ led 8-digits display does a better job in terms of readability.
 

After weeks of work and tests, I came up with my own design, with the primary goal of useability in mind. Behold the "Adaptative regulation sous-vide cooker"
 

Features :

  • Works out of the box : no need for tweaking or tuning, the software adapts itself to the characteristics of your cooker : whether it is big, small, full of water, half-full, whether room temperature is low or high, it works.
  • Efficient regulation in the range of 0.5°C
  • Sound alarm warns when target temperature is reached
  • Automatic detection of lid opening and closing : regulation does not get mad when temperature probe is taken out of the water (which is a thing you need to do if you want to actually put food in your cooker)
  • Safety features :
    • automatic cut-off after 5 minutes of continuous heating providing no change in temperature
    • automatic cut-off after 24 hours of operation

    • automatic cut-off when temperature reaches 95 °C

    • allows target temperature only in the safe 50°c to 90°C range

  • Dead cheap and simple : no expensive LCD or Solid State Relay
 
Remove these adsRemove these ads by Signing Up
1-40 of 51Next »
Sembazuru5 months ago

For safety reasons, when switching AC one should always switch the "line" conductor or both the "line" and "neutral" conductors. In step 3 you have spliced the relay into the wrong conductor. IEC color codes (most of Europe) have blue wire the "neutral" conductor. You should have spliced the relay into the brown wire (this is the IEC "line" or "hot" conductor). If the power cord is made to US NEC or Canadian CEC codes, the wire to splice the relay in would be the black wire.

See http://www.allaboutcircuits.com/vol_5/chpt_2/2.html

I'm not sure for the rest of the world. I would suspect Mexico either uses the US NEC (or mirrors it) simply due to proximity and simplicity of product flowing across the boarder, but I'm not sure about the rest of Central America or even South America. Asia and Africa... Nope, I don't know what standards they use for electrical AC wiring color codes. Check your local standards. ;-)

Wibin Sembazuru20 days ago

However, turn the cable around in the socket and live becomes neutral. There is no left and right like in US and UK plugs, either or might be live which I find poor design. :) But then again polarity agnosticism is one of the advantages of AC-current so why not make use of it. ;)

Etienne Giust (author)  Sembazuru5 months ago

Sembazuru, thanks to point that out. I'll update my posting to reflect that.

bennelson5 months ago

Small wire cooling racks work well for this too. I do that for baking in my cast iron dutch oven while camping.

S0uraV_DAS1 month ago

It looks pretty cool!

iparallax1 month ago

Your unit woks great but I found the crock pot I use seems to suffer uneven hot spots. I resolved this by adding a small 12 vdc CPU pump into the mix to circulate the water. This seems to have eliminated the hot spots. Use flat tubing to reduce lid lift.

mlee89 made it!3 months ago

Thanks for the instructable. But my unit will shutdown 1 to 2 times before the temperature stablises. I found that the following line:

tCheckNotHeatingWildly = millis() + 1000 * 60 * MAX_HEATINGTIME_NO_TEMP_CHANGE_MINUTES

in the "checkShutdownConditions()" function performs integer calculation instead of long integer calculation, making checking time shorter than intended.

Anyway, thanks so much for giving me a chance to use sous vide, I really enjoy it!

Below is a photo of the control box I built. Your choice of LED display is very cool and the connection is very easy. I managed to put everything inside a small box (not as easy as I have thought though). The control box is then pluged in series with a 1.8L rice cooker. I am now testing the right interior to get the circulation efficient. I will show you my arrangement after more trial and error.

Cheers!

DSC_0045.jpg
Etienne Giust (author)  mlee892 months ago

Thank you for noting that. I made the correction in the code.

willster273 made it!4 months ago

This is great, thanks! I had a look at the code and think I understand it but turned off the 24 hour timeout and no temp change timeout because I was not sure if it was meddling with my code (it would reset to 0.0, 0.0 occasionally, meaning I had to restart). I was using a 550mA 5v power supply on the 5v line on a Nano v3 but the display seemed to go into shutdown mode (all LEDs on) so I tried an 850mA supply on the usb input and it has been working for a few hours so far! I have successfully cooked an egg and am currently cooking a small brisket steak for 24 hours at 59°C.

I also made a small MDF box to hold the relay, power supply (which is wired to the always-on end of the relay so I only use one wall socket) and circuit, which is currently on a breadboard. The lid is slightly open because I had another USB wire fed in because of my power supply issues.

P1070251.JPG
NickeNy4 months ago
Working great after finding a problem with the relay, only working in NC mode. Also had some problems with the powersupply to the Arduino. To small... Great job!
jamthecat made it!4 months ago

Took me a few weeks to get the parts but my GF and I are really happy. I can see the adaptive temperature in action - that's really cool! Since I'm not a programmer, it'll probably take a while for me to figure out how the program works. One thing I observed that looks odd: why is is that when the probe is removed, the program detects the removal (quickly -nice!) but the relay remains on, thus raising the temperature? Similarly, if the relay is off and I remove the probe, the program will: sense the probe removal but enable the relay after a few minutes. The good news is the program does shut down the relay after ~5 minutes being outside in both cases. Thie is so great..thanks again!

PHOTO_20140309_114250.jpg
Etienne Giust (author)  jamthecat4 months ago

Mhh.. The only time the lid should be open (and thus, the temperature probe off-water) is when adding bagged food to the water bath. Then the lid should be quickly put back on. I didn't want to perturbate current regulation when the lid was opened, so if there is heating at this time, it will not stop. However, as you point out, the safety "5 minutes but no temp change" feature still does its work to prevent unwanted overheating.

WOW your code is simply amazing and very well commented. I found a really cheap LCD shield with buttons for a mere $6, so I am altering your code to accommodate the difference as well as adding a red led to go off if the temperature goes to low as well as a green led that will turn on when a button is pushed but if power goes out and the board reboots will not turn back on. I am also adding to the display the up-time and since I live in the United States I am adding the set temp converted to Fahrenheit. Your splendid committing makes it a breeze to alter. THANKS!!!

Etienne Giust (author)  PyromaniacDaniel4 months ago

That's awesome ! Don't forget to share your code somewhere (Github for instance) and congratulations!

tarango0025 months ago

Hi Etienne Giust;

Thanks for sharing the code with all of us. Its really looks great to see this project. Can you explain more about PID in your code ? I cant understand it clearly. It would be great if you help me about this.

Thanks in advanced.

Best Regards,
Md. Istiaq Mahbub

Etienne Giust (author)  tarango0025 months ago

Hi. I'm going to put a more in depth explanation of the code on the Github page. As soon as possible.

Great Project!

I am wanting to convert the temperature to Fahrenheit instead of Celsius. Is it as simple as replacing getTempC with getTempF? Both appear to be supported in DallasTemperature.h.

The parts should arrive any day now, I can't wait!

sgtnuggets made it!5 months ago

Big-time props to Etienne Giust. The parts list for this project was very reasonable and the code flashed on to my Arduino Nano with no problems. I'm already cooking my second dish with it!

At some point in the future, I think I will modify the logging so that I can get just temperature readings in the Serial Monitor. That way, I can graph the resulting data to see if any modifications can be made to the software to improve the heating algorithm. Thanks for putting this project together and sharing!

IMG_20140301_174054.jpg
nyrazman5 months ago

Can you explain a bit about how the adaptive regulation works, or point me to a site where I can get a better understanding of what the code is doing to "adapt" to a particular cooking utensil? Thanks! Neat project.

Etienne Giust (author)  nyrazman5 months ago

Yes, you'll get a more detailed explanation on the Github page (link in step 5)

Jayefuu5 months ago

You're on Treehugger!

http://www.treehugger.com/slideshows/gadgets/make-...

Did you give them permission to copy it so completely? They did credit you, but can't imagine many people will click through since so much of the Instructable is replicated there.

Etienne Giust (author)  Jayefuu5 months ago

I did give them permission, yes. It's good to have it shared in many places

awiasmitinow5 months ago

Hi Etienne

Thanks a lot for sharing your code. It looks quite complete and well engineered. We'll have a closer look at it and maybe integrate it into our temperature regulation for http://everycook.org.

Regards

Alexis

Etienne Giust (author)  awiasmitinow5 months ago

I'll detail the algorithm on the Github page. In any case, I'm interested to know if and how you plan to use the code. Do not hesitate to contact me privately.

gowri5 months ago

Nice Project,i want to build one.where can i get this item =Integrated 8 digits led display with MAX7219 control module (3 wire interface) - 5$

Etienne Giust (author)  gowri5 months ago

yep. Just look for "MAX7219 8-Digit LED Display"

ChefJohn19555 months ago

You may want to add an aquarium "bubbler" to this construction ... The bubbles will cause the water to circulate a little better preventing "hot spots" in your cooker.

I tried a bubbler on my system. I found that the air pumped in caused the water to evaporate very quickly. It acted like a humidifier. Warm, moist air must come out if you pump dry cool air in.

Did you just put the hose into the liquid or did you attach a "bubble stone" or the like ...
Also put a lid over the unit .. It will help to get up to temp and ease the maintenance of temps...

If you wanted to get "fancy" arrange a circulation pump ...

I bought a kit for a fish-tank. It included the bubbled and an aeration stone. My is larger, I used a cool-box. and a solid state relay.

The pump is the disappointment. I am working to replace this with a motor and propeller circulation pipe. (motor on top of the lid, and a pipe + impeller stretching inside)

I tried a small 12 V submersible circulating pump, rated at 90 degrees Centigrade. It lasted for 2 hours.

Etienne Giust (author)  gromanski5 months ago

I was thinking a propeller would be the best thing; but it makes the whole thing a lot more complicated. I found natural convection to be sufficient when the water volume is sufficiently greater than the "to cook stuff" volume. Also, having the temperature probe at the same height than what's your cooking is important if your recipient is tall.

kvdeurzen5 months ago

Hi Etienne,

Thank you for the code. It looks well written.

I'm working on a similar project, where I have built my own pot (It is for brewing beer). For controlling this pot I have been using a PID controller. This works, but has not yet been optimized. The main reason is the variability of the volume that is in the pot (8L to 25L). Therefor I'm very interested in how you solved this.

I have been exploring your code, but it is quite a bit. Could you roughly describe how you go about assigning on/of status of your relay based on measured temperature?

Kind regards and thanks again,

Kanter

Etienne Giust (author)  kvdeurzen5 months ago

Hi. I'm going to put a more in depth explanation of the code on the Github page. Soon.

albertoabreu5 months ago

Thanks Etienne. The project looks extremely attractive and the code is superb. Could you let us know where one can get the 8 digit integrated LED display?

best wishes

Alberto

Etienne Giust (author)  albertoabreu5 months ago

Hi Alberto. A quick search for "MAX7219 8-Digit LED Display" should set you on course.

Deeg5 months ago

A solid state relay is more expensive but highly recommended. I built a sous vide controller with a mechanical relay and it wore out after only a few months of use.

Etienne Giust (author)  Deeg5 months ago

I do not know which kind of algorithm you used, but mine makes sure the switching period is not too small (minimum is 1.5 seconds ; that's what the MIN_SWITCHING_TIME constant is for in the algorithm). I had no problem so far but I do not use the device on a daily basis.

You could use a TRIAC.

That's typically all a solid state relay is anyway.

I second the advice about using a solid state relay. I built one with a mechanical relay, but having read the data sheet I had to slow the cycle time right down to 30 seconds to be able to get any longevity out of it- which worked mostly fine, but impaired the temperature stability with the lid off; and the lifespan is still marginal.

TRIACs are much cheaper.

1-40 of 51Next »