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.
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.
- Arduino Uno
- 8 Gallon Stainless Steel Pot
- Solid State Relay
- DS1820B Thermocouple
- Thermowell Nut
- Thermowell O-Ring
- Water Heater Element
- Water Heater O-Ring
- Water Heater Nut
- DC Power Supply
- 20 Amp 120 VAC Connector
- 12/3 Wire
- 1/4″ – 1-3/8″ Step Bit
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.
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.
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.
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.