I've wanted to cook using the sous vide method. However these things are pretty expensive where I live, so I decided to make one instead.

This also worked well with a course that I was doing where I needed to do a final assignment, so I worked them in together.

The first step was to determine how to make and calibrate the controller for the sous vide cooker. This is not as trivial as it seems because the slow cooker has a large thermal mass which introduces a large delay, PID control works, but it's tricky to get it to both stabilize quickly *AND* come up to temperature within a reasonable time.

After I had managed to control this enough to use the cooker at a constant temperature, I needed to determine an appropriate experiment.

I decided to look at elasticity of meat and how it changes over time in low temperature sous vide cooking.

This is interesting because there are some statements made about maximum cooking times which (when one eliminated food safety issues) seem to be based more on myth than science.

An early generalization about sous vide was that it was impossible to overcook food. That is clearly wrong when you look at things like fish which can easily be cooked to the point at which they become mushy (although I've never done this). Various web sites make the same claim for beef, and because beef is a more robust product it is easier to measure the elasticity. In addition to this the cooking time for fish can be so short that it would be hard to get enough readings taken.

A cooking time of 33 hours (which was extended to 36 hours) was chosen because it worked in well with my work schedule. In retrospect this could have been extended by another 24 or 48 hours.

For those playing along at home, I have also attached the DXF file used to laser cut the MDF. Note that there's an error in the DXF. It cuts an additional blank and doesn't cut the platform to put the mass on. The supports and the central shaft are not included in this either.

Design

I wanted a method to make reliable and reproducible measures of stress and strain.

The method I used initially was to alter the weight placed on the test piece over a known area and measure the displacement. The problems with this were the measurement of the masses, and the inability to keep things aligned. Consequently the measurement of displacement was very inaccurate.

For this experiment I decided to use a fixed mass and alter the displacement. The weight as read on the scales would represent the force applied by the test piece to the plunger.

The next issue is to keep the plunger vertical and make the selection of displacement simple.

The final design is a plunger passing unrestricted through a vertical channel other than by a wing nut which determines the maximum displacement.

Manufacture

All of the platforms were cut on a laser cutter. The vertical columns were cut using a drop saw. The distances between the platforms, and that of the plunger pieces is not critical. The plunger was assembled by screwing the pieces together whilst inside the channel. Only the top platform was unfixed and allowed to rotate. After the three pieces of the plunger were screwed together the top platform was nailed and glued into place.

Here is the assembled product:

​

(1) Is the single mass used to provide the force onto the item under test.

(2) Is the platform the mass is placed on.

(3) Is the top section of the plunger. This is a rigid piece that transfers force directly to the piece under test.

(4) Is the top reference. The difference between this platform and the mass platform is measured to determine the displacement. (This needs calibration to determine an offset).

(5) Adjustment platform. The wing nut on the threaded rod allows the displacement to be accurately adjusted. The normal adjustment is 1/2 a turn between readings. The actual adjustment can be calibrated, but I measured the displacement rather than by counting turns.

(6) Lower plunger. This is the 30mm x 30mm plunger used to press against the test piece. The pairs of platforms the wooden plunger pieces pass through prevent the plunger from rotating and maintain it in a vertical orientation. The threaded rod between the two wooden pieces is screwed about 50mm in to each piece.

(7) Is the piece under test. In this case it is the unsealed, uncooked meat.

(8) Is the scales used to measure the difference in force applied to the meat (it is tared after the test piece is placed on it)

(9) is the base board.

The distance between (2) and (4) is measured using the depth gauge of a digital micrometer.

Calibration

There are to calibrations required. The first one is to determine the constant offset between the measurement from the top of the mass platform (2) to the top of the top platform (4) compared to the measurement between the bottom of the plunger (6) to the top of the scales (8).

This is done by winding the wing nut to the top of its travel so that the plunger rests on the scales. The distance between the (2) and (4) is measured and subtracted from all subsequent measurements. In the case of this device, this offset is 12.13mm

The second calibration is to wind the wing nut to about mid-way and take a series of measurements between (2) and (4) as the wing nut is turned 1/2 a turn at a time. For this thread, each half turn lifted or dropped the plunger by 0.75mm

Use

(1) The plunger is wound up clear of the item under test
(2) The item to be tested is placed on the scales, weighed (if required) and the scales tared.
(3) A suitable mass is placed on the mass platform
(4) The plunger is lowered until the scales read between 20g and 50g. The location on the test piece should be chosen so that the entire plunger makes contact.
(5) The displacement (2) to (4) is measured and noted against the weight reading.
(6) The plunger is lowered 1/2 a turn at a time. After the reading on the scales has steadied, the displacement and weight are measured and recorded.

​

Example

Here is an example of the calculations performed to determine elasticity

The first column represents the weight in grams shown on the scales (285g).

The second column is the raw height measured from the top of the mass platform to the top if the top platform. (51.52mm) These first 2 columns represent the raw data captured whilst measuring. The other columns are derived from these and from various constants.

The third column is a direct conversion from g to newtons. To do this, column 1 is divided by 1000 (to get kg) and then multiplied by 9.8 to convert to newtons. In this case the figure is 2.793

Column 4 is the distance between the bottom of the plunger and the scales. This is done by applying the calibration factor determined during calibration. 12.1 was used. The value was measured as 12.13, however the final digit was considered too unreliable). In this case the figure is 39.32mm.

The 4th column contains the area of the plunger in square metres. The plunger is 30mm square which is 0.0009 square metres.

The fifth column is the stress. This is calculated as the difference in pressure in N divided by the plunger area (871).

The sixth column is the strain. This is the difference in height between the previous and current reading expressed as a proportion of the previous height (0.0115)

The last column represents the elastic modulus, this is the stress divided by the strain. In this case it is 75500.

Finally all the elasticity measurements are averaged giving 78400 in this case.

Problems

The main problem is that as the displacement increases the item under test takes longer and longer to reach equilibrium.

After performing this experiment I discovered that the best way to reach equilibrium was to drop the plunger by 1 1/2 turns and then lift it by 1 turn. This results in a reading which stabilizes almost immediately.

Caution needs to be taken because some scales don't correctly deal with slowly changing weights. To test this, place a cup on the scales then pour a cup of sugar quickly into it. Note the weight. Then repeat the measurement but pour the sugar *VERY* slowly (over a minute perhaps) into the cup. If the difference in weight reading is more than a few grams (some will be out by over 100g) then DONT use this set of scales in this application.

3) Sous Vide Cooker (design, calibration, programming, and use)

The starting point is a slow cooker:

​

The controller is an arduino, and currently built on a breadboard:

​

The code was based on the Adafruit Sous Vide controller, but it has a number of changes.

1) Uses a standard LCD, switches, and LEDs rather than the special Adafruit LDC/keypad/backlight
2) Averages the temperature over time to give higher resolution.
3) Several bugs fixed
4) Enhanced logging
5) Added code to facilitate calibration
6) Dumb slewing to within a few degrees of the set point before enabling PID control

As you can see, it takes *hours* to get up to its practical peak temperature of 85C. Fortunately sousvide of meat is done at lower temperatures (55C to 70C is the main range)

4) Steps in the cooking of the meat (from raw to meal in about 50 hours!)

Meat as purchased:

​

And then seasoned:

​

The seasoning is about 2 teaspoons of Shan Meat Masala spice. Very simple but very nice.

The two pieces of meat are stacked together to make a thicker "chunk" that's easier t measure the elasticity of:

​

Then it was placed in a sous vide bag:

​

It's actually cut from a roll of plastic "tube" and one end sealed.

At this point I measured the elasticity and the weight. The bag weighs about 10g and the total weight is 418g. That means the shop weighed the meat *AND* the packaging!

Then it was vacuum sealed:

​

Again, the elasticity was measured. This was to determine how the vacuum sealing affected the elasticity.

Then the meat was placed in the fridge overnight as the sous vide cooker was given plenty of time to come up to temperature.

After being taken out of the fridge:

​

And another elasticity measure to see what cooling did...

Then it was placed in the sous vide bath for 3 hours. At the end of 3 hours:

​

Then after 6.75 hours:

​

After 36 hours:

​

Contents of the bag, about 80ml of juices. Actually, only 60ml of juices and 20ml of water that entered the bag via osmosis(?).

​

The meat out of the bag. The colour of this meat is due to the seasoning, not the cooking.

​

Cut in half, the meat is edge to edge medium-rare.

​

See! Yum...

​

Served on a column of rice and with a large scoop of sauce on top.

​

And it tasted *really* good. Super tender and tasty.

Recipe:

1) Season 400g of gravy beef with 2tsp of Shan meat masala powder.
2) Seal in a bag and sous vide for 33 hours at 56.0C
3) Thinly slice 2 medium onions and fry with 1/2 tsp of salt and some oil until browned.
4) Add 1 heaped tsp chopped ginger and 2 tsp finely chopped garlic. Fry for a few minutes.
5) Add one tin of diced tomatoes and deglaze the pan.
6) Simmer on a low heat adding water as needed to keep the mix the consistency of a tomato paste.
7) Cook 2 cups of rice.
8) Remove meat from sous vide. Empty the juices into the sauce.
9) Prepare a column of rice by packing it into a biscuit cutter, egg ring, etc
10) Cut meat in half and place a piece on the rice column.
11) take a scoop of sauce and pile on the meat trying not to hide the cut edge of the meat.

Serve and eat immediately.

5) Raw data (data logging, weight, stress, strain, time, etc.)

Here is a dump of various data files used. If you're interested in them in more detail, please ask.

Rise.zip contains the raw data file and a spreadsheet containing a graph of the time vs temperature characteristics of my slow cooker at 100% power.

calib.zip contains the logging of the calibration run of my controller. It takes a little over 28 hours to complete. The steps are:

1) Full power to 85C
2) Zero power to 35C
3) Step rise from 35C to 85C
4) Zero power to 35C

The step rise steps the temperature up in 10C steps. Each step proceeds as follows:
1) Zero power until the temperature falls 1C below the start temp
2) 100% power until the temp rises to the next step.

The step rise test looks at overshoot and undershoot at various temperatures.

I intend to perform analysis of this data to determine appropriate P and I values for the controller. The ideal temperatures actually vary with temperature so a final implementation of the controller will probably trim the PID settings to suit the target temperature.

Compress test.zip is a spreadsheet listing the change in height of the plunger with 1/2 turns of the wing nut.

6) Results

The quick results:

1) Elasticity rises
2) Ignoring bad measurements it looks like it increases at a decreasing rate.
3) The mass increased! (osmosis of water through the bag?)

​

In more detail (see the attached spreadsheet for the raw data):

The change in elasticity with time can be described by the equation

Y = 670 X + 67700

Where Y is the elasticity in Pa and X represents the cooking time at 56C in hours.

Approximately 70% of the variation in elasticity is explained by this equation. If we ignore the three readings flagged earlier the equation is very similar, but over 95% of the variation is explained.

There is no reliable indication that the elasticity of the meat starts to decrease, and perhaps a longer cooking time would be required to show this (if indeed it happens).

The results are unsurprising because at 56C the enzymes cease activity (due to denaturing) and cannot be responsible for collagen breakdown. The breakdown of collagen to gelatin requires a significantly higher temperature.

There are lots of things which could be done to either improve this experiment or to investigate further.

I've been asked for the changed libraries (wow, somebody read this!)

I started with the Arduino PID_v1.01 library (see here). This has now need superseded, but I will attach it below in case you need it. I recommend you use the newer version and apply the changes that I will list below: