How to Create an Arduino Sous Vide Cooker

What exactly is this word that I can’t pronounce?

Sous vide cooking allows for low controlled heating of food to prevent overcooking.  The general process involves cooking vacuum sealed food such as steaks and fish in a controlled low heating setting for longer periods of time.  The temperatures for most meats hovers around 140 degrees Fahrenheit.  Sous vide cooking has been increasing in popularity within high end restaurants.  It has also recently been increasing in popularity within home use.   Devices such as Anova and Joule have stormed the markets bringing relatively cheap sous vide cooking to the general market.  Utilizing an Arduino we can create this technology with minimal difficulties.

These new products are ranging from around $100 to thousands of dollars.  We are here to show you how to build your own sous vide cooker yourself.  The build that is listed out below cost about $120 but there are lots of places to significantly reduce the cost.  Below we detail the mechanical, electrical, and coding steps taken to create the sous vide system.

Components

All of the items used are readily available online and many of the items can be reused and re-purposed later on if desired.  You can potentially use a smaller pot with a smaller heating element to suit your needs as well.

Electrical Build:

We will be using AC power to power a water heating element to heat water to a desired temperature.  If you are not comfortable or have safe knowledge of AC and DC power I would recommend having someone experienced help you.

The water heater will require the most amperage draw and at 1650 watts this will require about 13.75 watts.  I wanted this system to be able to run on a 15 amp circuit if required and this was the largest heating element I could find that would suit the build.

My power circuit has a 20 amp circuit breaker in the panel, but I don’t really want to go that high as stated above.  I have decided to fuse the entire heating system to 15 amps and then 1.25 amps (need to check) for the power supply.  All of the wiring that would pulling on the 15 amp leg is 12 AWG and using a thinner gauge could result in a fire or damage.

The solid state relay will need to be able to handle greater than 10 amps and many of the Arduino targeted relays that are sold from stores can’t handle the amount of amperage required.  You will most likely damage those lower amp relays.  You will need a solid state relay rated for higher than 15 amps.  The one I chose is rated to 30 amps which we should never see and comes with a heat sink to dissipate heat.  I also chose a solid state relay since it will not produce any feed back to the Arduino when opening and closing so a flyback diode is not required.

I have detailed the Arduino electrical circuit below.  It also includes an LCD screen that I was using for ease of use and tuning but it’s not required.

wiring, arduino, uno, wiring, electrical
Sous vide wiring diagram.

Mechanical Build:

The first thing that we need to do will be to tap the required holes for the water heating element and also the thermocouple.  I used a step drill to do this but a whole saw would be a much better solution.  Having a machinist tap the holes is the best solution I would say though.

Tapping into the pots was probably the most difficult part.  You will want to wear eye protection and clamp down the pot as the pot I used was more difficult to tap into than expected.  Since the food is not going to be directly in contact with the food, you could use JB Weld to fix any leaks although mine sealed with the provided fittings listed above.

Code:

There are a few very useful and well written libraries that we will be using for this project.  The One Wire, and the Dallas Temperature Library.  From there we will be taking all of these pieces and putting them together to create a working project.

I wanted to keep this as simple as possible so the method I used to approach the heating was a basic lookup table.  When the current temperature is within certain percentages of the desired temperature the heater will turn on and off for different lengths of time depending how close we are to our temperature goal.  I found that the attributes of water and the amount of water worked very well using this application.  You could use PID control for this as well but I saw my system perform well enough off this approach.  I did try the PID and auto tuning approach although it didn’t give me results that were much better.

Please go to the following GitHub site to download my Arduino Sous Vide code that I used for this system.  It has been a little while since I have run the code and need to test it out again.  The relay coding may need to be switched from LOW to HIGH and vice-versa.

https://github.com/SackLunch/Sous-Vide

PID Control Option:

There is the option of using PID control parameters to keep the temperature constant and to prevent overshooting.  There are two libraries written for PID control and PID automated tuning but I found that they were overly complicated for the process I wanted.  I had a much simpler solution that was able to deliver constant temperature with a fluctuation of approximately 1 degree Fahrenheit.  The PID control libraries are very cool but they can be frustrating and difficult if you are not experienced using them.  Many of the examples were written for use using PWM output so they would need to be modified for use with the solid state relay I wanted to use.

PID Library

PID Auto Tune Library

Sous Vide Build Using PID

 

 

 

 

 

 

 

9 comments

  1. hai,as i try to run your coding, I get some error..here the error

    C:\Users\User\Desktop\sketch_sep17a\sketch_sep17a.ino:3:35: fatal error: Adafruit_RGBLCDShield.h: No such file or directory

    #include

    compilation terminated.

    can you help me where i can find the library because i try to find the library at the github but i can’t find.. thank you

    1. That error is from not having the Arduino library for the LCD display. I used Adafruit’s LCD display and you will need to import their library into your Arduino libraries if you want to use their LCD shield. Other LCD shields may have other libraries.

      Download for LCD library: https://github.com/adafruit/Adafruit-RGB-LCD-Shield-Library
      Instructions for Adafruit’s LCD screen: https://learn.adafruit.com/rgb-lcd-shield/overview

      Let me know if you need help importing the libraries or if anything else pops up.

        1. Hello Azimah,

          Sorry for the delayed response. You will need to do the following.
          -Download the library for the Adafruit RGB LCD Shield from this link: Library.
          -Unzip the folder to a known location and open that location. There should be one file labeled Adafruit-RGB-LCD-Shield-Library-master once it has been unzipped.
          -Copy the that entire folder and paste it into where the Arduino is set up on your computer. In that Arduino folder there should be a folder labeled “libraries”.
          -Paste the entire folder into this location. You may have to remove the “-master” portion but I think it should work with both.

          If you need further help or run into issues let me know and I’ll write something more thorough.

  2. sorry for asking you again. Can you tell me how you maintain the water during the cooking process? Because usually the water will reduced if we cook for a long time.When I see other people who make their own sous vide ,they using water pump to circulate the water.So,can i ask for your help with the connection of water pump if you don’t mind because I really like your connection.

    1. The pot that I’m using came with a lid so that helps prevent any loss of water due to the temperature. It’s also an 8 gallon pot so I’ve never been too concerned with losing a lot of water.

Leave a Reply

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