what is the temperature of your oven? how to cook reliably with an inaccurate oven

Ovens may have digital controllers or analogue temperature controllers and cooks seem to have blind faith in their settings. In this household the cooks were burning food so I checked the oven temperature. It was so inaccurate that I decided to fit a device to monitor its temperature.

Background: The dial on my shiny Smeg oven not only set a wrong temperature, the set temperature varies by 40°C as its thermostat clicks on and off. After replacing the oven thermostat (twice) the set temperature still disagreed with every oven measuring device I could find.

I decided to fit the oven with a separate thermocouple to measure its temperature. The thermocouple would be connected to a wi-fi enabled ESP32. The ESP32 sends temperature readings to a home automation setup which displays them on a graph over time. The temperature is also sent to a small LED screen near the oven so that we can adjust the actual temperature before cooking. A second thermocouple is fitted to add credibility to those readings. The setup was then checked against other devices and a known good oven. Nothing burns anymore.

what you’d need for this project

  • an oven with holes, gaps or removable lining to allow you to safely route thermocouple cables
  • a MAX6675 and K-type thermocouple plus ESP32 development board running ESPHome
  • Home Assistant running on a Raspberry PI or other home automation hub
  • optional: TTGO T-display to show oven temperature readings
  • splashproof project boxes and a nearby socket for a 5 volt power supply

experiment results: what is the actual temperature of the oven?

Before we get making let me show why I lost faith in the oven’s thermostat setting. Initially I placed three measuring devices in the oven and recorded the readings over time. That experiment revealed our two problems: firstly the oven temperature is different to that set on the dial. Secondly the graph shows that whatever the set oven temperature it varies by as much as 40°C as the thermostat tries to control the oven temperature. A temperature swing of 15°C is considered acceptable (link just below).

The easy way to improve the accuracy of the oven could be to calibrate the oven temperature dial e.g. to overprint it with new numbers. That’s still a bit crude and uncertain. To deal with the 40°C temperature swing, a more dramatic approach, apart from replacing the oven entirely, would be to fit it with a digital temperature controller. These are inexpensive but the idea is too worrisome for my safety. There is a lot to know about PID / PWM controllers and more – in this electrical engineer’s discussion on oven technology.

dial set temperaturemeasured temperaturedial set temperaturemeasured temperature
100°C133°C150°C185°C
125°C164°C200°C230°C
These are the temperatures achieved at different oven dial settings. Three different measuring devices were used with the probe being set
The red line shows how crudely the temperature of the oven is controlled. The green arrows are drawn on the mean temperature of the oven. In my oven the set temperature is 20 to 35 degrees too high.

experiment results: how long does an oven take to warm up to cooking temperature?

This Smeg oven takes 20-25 minutes to reach a typical cooking temperature of 180° Celsius. The oven takes 25-30 minutes to reach 200°C. A small microwave combination oven takes 8 minutes to reach 180°.

how we fit the oven with a MAX6675 K-type thermocouple and an ESP32 development board running ESPHome

Your electric oven, analogue or digital will have a probe pointing into it somewhere. On my old-style analogue oven the probe is at the end of a flexible metal tube. The tube runs to the back of the knob that sets the oven temperature – we don’t interfere with this at all even though its sets erroneous temperatures. I’m retrofitting a MAX6675 K-type thermocouple – like a meat thermometer with a pointy metal end. A K-type thermocouple consists of two different metal wires covered with a metal braid or heat shrink.

Two thermocouple tips peek into the top of the oven

The thermocouple (below shown with an orange plug) fits the MAX6675 connection board (ticked below). The prongs need a bit of filling or cutting. The polarity should be matched.

The thermocouple probe is fitted at the top of the oven. Routing the thermocouple wires required removing the back panel of the oven. The oven was of course disconnected from the mains and care was taken to route the wires away from surfaces that get hot as well as sharp metal edges inside.

Choose a K-type thermocouple with a temperature range that suits your use. A MAX6675 K-type thermocouple might be sold as a kit. I didn’t use the bolted thermocouple but instead used the bare wire thermocouple on the left. You could be luckier with the supplied bolt thermocouple.

The MAX6675 is connected to an ESP32 development board using five female Dupont wires supplied with a kit. Connect GND to GND and VCC to 3.3V between the sensor and the board. MISO on the sensor board is connected to pin 12 on the ESP32, CS on the sensor board is connected to pin 13 and CLOCK (or CLK) on the sensor is for pin 15 on the ESP32. These aren’t the only pins you can use.

The pin location will differ from your board. The pin numbers will match the configuration text below

go to ESPhome in Home Assistant and add this configuration to your ESP32 dev board

We now use ESPHome which is an add-on within Home Assistant. If you’ve never used ESPHome see here. Otherwise set up a new device in ESPhome and get to the point where you edit and configure the code.

Actually this step is best done on a test bench before the thermocouple is fixed in the oven. The following code is added to a new ESPhome device, followed by selecting COMPILE and DOWNLOAD BINARY. Connect the ESP32 to upload the ‘binary’ file to the ESP32 board.

# Create a new device in ESPHome. Add these lines to the yaml file 
substitutions:
  devicename: oven
esphome:
  name: ${devicename}
  platform: ESP32
  board: esp32dev

spi:
   miso_pin: GPIO12
   clk_pin: GPIO15

sensor:
  - platform: max6675 
    name: ${devicename} 
    temperature cs_pin: GPIO13 
    update_interval: 5s 
    accuracy_decimals: 0 filters: offset: -1
    sliding_window_moving_average:
     window_size: 10
     send_every: 1
  
 logger:
 api:
   password: ""
ota:
captive_portal:

wifi:
  ssid: ""
  password: ""
  manual_ip:
    static_ip: 192.168.1.18
    gateway: 192.168.1.1
    subnet: 255.255.255.0
ap:
    ssid: ${devicename} fallback hotspot
    password: ""
   # in case wifi connection fails
 
switch:
  - platform: restart
    name: ${devicename} restart 

now go to Home Assistant > Integrations to add this new ESPhome device, then find your oven temperature sensor entity

  • Go to the Home Assistant frontend or Overview. In the top corner find Configure UI
  • Add a History graph card and or a Sensor card. That’s it.

As it’s a good policy to double check your devices, I fitted two temperature measuring thermocouples to the oven.

I turned on the oven well ahead of time to ensure the pizza would cook at a good temperature. The cooking time was 12 minutes at 220°C. Home Assistant can not only show you a live graph of the oven temperature, it records a history of the oven temperature. I suppose that’s useful to the cook. It’s certainly useful to see how long the oven takes to reach temperature and also how much the oven cools when you open the oven door!

Going forward I feel a want for an automation routine that a) notifies me when the oven is at a steady state b) notifies me when the oven has been left on for too long. Any other ideas?

Next project: display the oven temperature on a mini- LED screen near the cooker

Now this was really useful: get a TTGO OLED T-display to display the temperature readings.

The display was stuck to the back of black glass cupboard door

Leave a Reply

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