AVR + 3310 LCD ultra slow cooker controller.

Status — working but forever being tweaked


Note that there may be a problem with hepatitis in pork which may require higher sterilization temperatures.
A study has found 71C for 20 minutes works - see links section.


August-14 --- The new xmega based version is working.
Sept-3 --- beginning to run more complex automated cooking sequences.
Sept-25 --- Reasonably complete.

Project started on 31-May-2011.

I have been slowly working on a slow cooker controller. It is a very low priority fun project with is partly working.
Unlike Sous-vide cooking I'm not using a water bath. Initially I'm just using my six litre slow cooker.
The project is based on my 3310 LCD AVR PCB - Nokia 3310 LCD.


Slow cooking is an interesting pastime. I get to write fun code, watch my creation do its thing and eat the results.
Low temperature cooking is thought by some (including me) to be less destructive to the nutrients and less likely to cause undesirable chemical reactions.
However I think most interest in this form of cooking is due to the taste and texture produced.
Slow food (mostly meat) tends to be softer and tastier than fast food.
Fast cooking can produce soft food - but it is different.
Slow food is soft without being overcooked, it is hard to put into words, it has to be experienced.
The cooking is also very even and there is plenty of time for spices to do what spices do.
Paradoxically some foods (vegetables) can be firmer that usual. In particular it is possible to cook potato which is cooked but crunchy.

Ultra slow cooking can also be convenient. I find regular slow cookers are too fast for most meals. I don't want to prepare food in the morning for the evening meal - I would rather prepare it the night before.

One mixed blessing is some fats don't melt during cooking. This can be a negative in that you can't drain the fat off - or a positive in that you can easily remove it manually.
Duck is one example where the skin and a layer off fat can easily be peeled of leaving a lean meat for the plate.

Extreme slow cooking can be risky if you don't know what you are doing. Several deadly microbes love breeding in warm food.

I wasn't sure if I'd do much low temperature cooking beyond experimenting for a while. It has become my primary means of cooking. I use the cooker almost everyday - when not cooking a main meal it is often use to cook eggs or maker yogurt. (Nov-10) I'm going to make a second larger (6L) cooker as somethings are just too big for the little one.

I have cooked and eaten maybe 60 meals without poisoning myself but have had a couple of belly aches from eating undercooked beans.
It has been a huge success and can't see how I ever lived without one.


The V1 controller.
AVR mega328 based. Uses a nokia3310 LCD and five buttons for user interface. Has one dual diode temperature sensor.
There are six LEDs including the power indicator.
Worked fine but I ran out of program space.

The V2 controller.
Same as V1 but used a tactile joystick and nokia5110 display.
This was used to write code while V1 was cooking. V2 was never connected to the cooker.

The V3 controller.
AVR Xmega128D3 based. Uses a nokia5110 LCD and tactile joystick for user interface. Has two single diode temperature sensors.
There are six LEDs including the power indicator.

The cooker.

At the moment I am using a cheap ($40) six litre slow cooker as the basis for my low temperature cooking tests.
The cooker is set to low and 230V power is switched externally.
The "low" element is 200 watts.
Later.. Also used a 3ltr slow cooker. Both low and high elements measure 175 watts (maybe low has a thermostat?), the "keep warm" setting measures 135 watts.


Initially I have insulted to cooker by wrapping it in Dacron and placing it in plastic box. The lid is covered by a blanket.

Power control.

Initially I have used a 40amp solid state relay to switch power to the cooker. This is massive overkill (like 400X).

The micro-controller.

I am using a AVR mega328 to control the temperature etc. This is working fine but I will run out of program memory before I have finished adding all the features I have in mind.
I have designed an xmega based board for slowcooker mach-2.

Temperature probe.

Section to be added.

Temperature control algorithm.

To minimize temperature errors, overshoots and oscillations I use modified form of PID.
PID is probably not the best method but it works very well. It is modified PID in that I don't do the integrate part (the I) unless the P (the error) is small.
The "D" part - the derivative would be too noisy and small if I used too short a time period in looking for the rate of change of temperature. Too get around this I used temperature measurements one minute apart.
I think the method could be further modified to account for the fact the up and down temperature slopes are very different. I other words I can heat the cooker much more rapidly than I can cool it. However my code is working remarkably well as is. Tuning is difficult because the amount of food, insulation and outside temperature all come into play. A full cooker with insulation can oscillate at less than one cycle per hour so trial and error takes a long time.
I tuned it using the six litre cooker but the code seems to work with both cookers and varying quantities of food inside.

The wiggles.

Temperature control is confounded by an internal thermostat. When trying to reach temperature above 70C or so the heater begins to cut out. The cooker can reach 90C or more but it takes more time than it would without the thermostat. The heater power cycling can be seen as a wiggle in the temperature plot.
In xmega version I added monitoring, logging and averaging of the power duty cycle.
I simply count how many seconds the heater power is on every minute - this gives me a number from 0-60 with 0 being heater off.
The reading is a bit unstable so I average over a longer period.
This number lets my software take some guesses about the state of the food that I wouldn't otherwise have.

Defrost detection.

There is generally no temperature probe in or on the food.
Put simply more power is required to maintain the set temperature if the food is cold.
This has (so far) been a reliable way to detect frozen food and extend to cooking time accordingly.

First dry test.

The first attempt at temperature control went pretty much as I expected. With simple threshold detection and no PID or other fancy control system I expected the temperature to overshoot and oscillate and it did. With the cooker empty, power set to high and temperature set to 80 deg C.The initial overshoot was seven degrees C but it was less after the first cycle - about five degree for the second cycle. The period of oscillation was about fifteen minutes. Reducing the power to low and adding food seem to reduce the temperature swing to about four degrees.

First cooking test.

The first cooking test was mixed whole vegetables cooked at 80 deg C for 10 hours. They turned out fine but I was surprised to find the cauliflower had turned brownish as it often does when baked.

Second test.

Next up I cooked kangaroo roast. For novelty I left it in the plastic tray with the plastic wrap pricked. It cooked for ten hours with the temperature set to 75C. The centre of the meat was a bit higher when measured with a digital thermometer - about 78C. The meat was fairly "well done" but soft and evenly cooked.


Note - not in chronological order.

80 degrees.

Eggs - whole eggs cooked dry 3 hours 10 minutes including about 1 hour warm up.
I once read a webpage which (from memory) said the ideal temperature to cook eggs was 80 deg C.
Now having the technology I though I'd try it out. I cooked them without water and they seemed to cook a little unevenly but the theory seems about right. The white was still soft when the yoke was cooked.

Take-2. Chicken drumsticks is 3 litre cooker. Around 2.5 hrs including almost an hour to reach temperature.

75 degrees.

Frozen octopus,prawns and mussels cooked in about three hours. I didn't check it earlier so they may have been ready sooner..

70 degrees.

Fish - fresh mullet fillets. I checked after 2 hours 50 minutes (including warm up) and the fish was already falling apart. It seemed to be about right for my tastes but it was a fairly bland fish.

Take two. Fresh salmon and snapper fillets, frozen mussel, scollops, octopus and prawns.
I heated the cooker to 40 deg to flaw the frozen stuff then added the fresh fish at set 70 deg.
I checked after 1 hour and 10 minute and found everything looked cooked. I ate the prawns and octopus. The scollops seemed a bit undercooked and I gave the rest of the stuff another 30 minutes. All seemed good. The fish still texture was firmer.

Gnocchi surprise.
Gnocchi, frozen roo mince, pasta sauce, tomato, dried shiitake mushroom and onion.
The three litre cooker was about half full.
Cooked for six hours using 300 watt hrs. Everything was cooked except the onion was still crunchy - however it didn't taste raw.

65 degrees.

Note that this is the minimum temperature commercial food outlets are allowed to use to prevent food poisoning.

Frozen octopus,prawns and mussels cooked in about ten hours. I didn't check it earlier.... possibly way overcooked.
Frozen half chicken - well cooked after 12 hours.

In both cases the octopus and prawns were very soft - pretty much falling apart. This may not be a good thing if you like them firm.

Lamb chops.
Cooked for 16 hours in a plastic storage container and no ceramic liner in the small cooker. Energy required 275 Watt hours.
It was a cold night so power usage would be higher than usual.

Chicken (possibly still partly frozen).
Cooked for 9.5 hours using 260 watt hrs. It was a cold night.
There was scum formed in the 60 deg session (below) but not here.

Gravy beef.
Cooked for 18 hrs. It was passable but not great. This is very cheap beef.
I don't usually buy beef so I don't really know what to expect.

60 degrees.

Note that this is risky. If you trust the internet - 55 degrees C kills food pathogens.
With only 5 degrees safety margin measurement errors or uneven heat could allow botox to build up.

A compete meal including vegetables, dried beans, gnocchi pasta, dried pasta, kelp,eggs and kangaroo roast.
The cooker was insulated for the first time.
It took over a hour to come up to temperature.
After 20 hours a digital thermometer showed the temperature was a little high (inside the potato) - 62.5 deg.
After 24 hours (including warm up) the meat,beetroot and pumpkin was cooked. The egg was runny with the yoke firmer than the white. The potato and sweet potato needed more time.
I haven't tested the food at the bottom yet.
The food was different to high temperature cooked food but it is a little hard to describe - definitely worth exploring further.

After 30 hours I opened it up and dug deeper. Not much had changed. Eggs were still too soft to peel. Potato was still hard but the sweet potato was (barely) cooked. The meat was good.
Both the cauliflower and broccoli tasted terrible. The gnocchi and other pasta was very soft. The beans and lentil were crunchy.
After 40 hours the potato was still hard, the eggs still soft and I'd lost my appetite.
So I recruited our mascot to be my official taster.

She selected the potato and declared it was just perfect. Her tastes are a little questionable at times. Little miss piggy also got into the act and found her first ever potato quite agreeable.

Kangaroo steak.
Using the small cooker this time. I sampled the steak after about 12 hours and it was undercooked IMHO. Others may like it that rare but not I. It needed about 19 hours for my taste and maybe even more. The meat was very soft.

Image The pinkish piece on centre left was cooked for 12 hours. The pieces on the right were done for around 19 hours.

23 hours.

Chichen (Tandoori).
17 hours.

Another note. Both the pork and chicken had suspicious looking scum on the surface of the liquid. It smelled OK, the liquid was discarded and I ate the meat with no ill effect.

45 degrees.

Yogurt (take 2). Made from powdered skim milk with some of the previously made easiyo as a starter. Much the same as the 40deg run. It set very slowly overnight. It had not set after 6 hours and was set in the morning which was another 6 hours later.

Yogurt (take 3). As above but without using the slowcooker ceramic liner. I placed the plastic tub inside the cooker on a silicone mat so the bottom was not too close to the heater.
The cooker came up to temperature more rapidly and was stable. I left it overnight and the yoghurt was very firm after 9 hours 15 minutes.
I measured the energy used to be 126 watt hrs.

Yogurt (take 4). As above but made from cheap UHT skim milk. It was a little watery as I expected and set in under five hours using 100 watt hours of energy. Opening up to take a peek makes a noticeable difference to the power consumption.

Yogurt (take N).
I've had a lot of trouble making yogurt lately. I think I have it sorted out.
Apparently powdered milk retailers don't think preservatives need to be included in the list of contents.
The generic skim milk powder from Coles and Cornetts IGA say "ingredients - skim milk powder".
I have managed to get the IGA powder to work earlier this year but the setting time was always long and sometimes the results were edible but not very nice. When I bought a new packet of milk powder things got worse. I tried Coles instead and had almost identical failures.
Finally I bought some from IGA which said it was preservative free and the problem went away.
The yogurt now sets in under 4 hours at 45deg. This includes the warmup time so it could be as little as 3 hours.
I used easiyo as the starter - that is yogurt made from easiyo powder and not the powder itself.

I also cultured some of the "bad" yogurt and found it produced and reasonable result. It took twice as long to set and the taste and texture was different.

I don't sterilize at 80C like some sites suggest. All our milk is pasteurized whether we like it or not so it should be sterile. You obviously can't sterilize the culture. Copy me at your own risk. I don't know if your milk is sterile.
Also note that easiyo yogurt maker does not sterilize - if it did it would kill the culture and it would fail.

40 degrees.

Yoghurt. Easiyo packet mix. It set very slowly overnight.

Other profiles.


I cooked chicken at 70 for 2 hours to kill off the bugs then followed up with 17 hours at 60 degrees.
This worked fine with no "scum" forming on the liquid.


Potato won't cook at low temperature so I partly cooked the potato at 90deg for two hours first. Then I dropped the temperature to 65 - added meat and sauce and cooked for 19 hours. It probably didn't need 19 hours but I wasn't home before that.

Saw tooth - sort of.

The idea is to bring the cooker up to temperature - then wait for the power input to fall below a threshold and then cut power.
After a low temperature limit is reached the process is repeated.
The power threshold test extends the heating phase when the food is thawing or the cooker is very full.
The idea is to lower the average temperature while still reaching germ killing temperatures for part of the cycle.
The interior of the food will not reach the same temperature as the air. Even the surface of the food will remain somewhat cooler.
I'm not sure if this method is at all useful but I will play with it a bit. I have other methods in mind but haven't written the code yet.
It is experiment and slightly risky - if I continue to post here you know I survived.

65/50 sawtooth.

Frozen - Fish, prawn, scollops and mussels.
The first 65 degree phase took almost an hour as the food thawed. Later this dropped to under ten minutes.
One cycle takes about an hour.
After 3 hours the prawns seemed ready. The mussels may have been on the raw side - quite tasty though.
The scollop seems a bit too raw for me.
I didn't taste the fish - it didn't feel soft enough.
After another cycle all was good and all was consumed without ill effect.

70/50 sawtooth.

Frozen - Fish, prawn, scollops, octopus and mussels.
You can see the defrost detection working. The first heating phase is much longer than the second. Also the first cooling phase is more rapid because the food is still not up to temperature.
This plot is for a four hour period. I then opened up and it was all good with the octopus being super tender as usual.
Only 124 Watt hours of energy were used.

65/50 spike.


90 then 65/40 spike.

Pork hepatitis abstract

Created by eddie. Last Modification: Monday 22 of October, 2012 17:49:38 AEDT by eddie.

Main Index

Switch Theme


System Administrator, 13:56 AEST, Sun 07 of Aug, 2016: upgrading to tiki 15.2
eddie, 19:31 AEST, Sat 06 of Aug, 2016: This website is now served from Brisbane - in a Binarylane cloud.
System Administrator, 16:07 AEDT, Wed 06 of Mar, 2013: More f'n spam. No more anon posting from now on.
Anonymous, 18:44 AEDT, Mon 04 of Mar, 2013: deleted
Anonymous, 08:36 AEDT, Sun 03 of Mar, 2013: Very nice site!

Last-Visited Pages

Online Users

61 online users