WiFi/Raspberry Pi kiln controller

A slow cooling cone 6 glaze load firing as I type
A slow cooling cone 6 glaze load firing as I type

Well, here it is. I’ve been keeping busy. Here’s how to build an web controlled pottery kiln controller for about $60.


I have an old evenheat kiln that is completely manual and comes with no “infinite” switches to control heat between low-med-hi, either. The only controls on the kiln are five on off switches, each controlling one set of elements. My mentor friend instructed me of a firing technique for this kiln, which I went with the first few times. For a bisque load I was to turn on the bottom element with the lid cracked and a fan blowing in, and wait one hour. An hour later, the 3rd element. An hour after that, the 5th. Now that the kiln has been candling for a few hours, the temperature is slowly raised by closing the lid progressively more and more until we gently ease through quartz inversion (~573C). While that worked well, it was exhausting to maintain a kiln two flights of stairs down like that.
That’s when my idea for making my own controller came in. I searched low and high for an adequate solution, and downloaded many half-hearted attempts in the process. The one that I finally stumbled upon and ended up using has been picoReflow:


I knew I had hit the jackpot when I took a look at the python code and the web interface. Simply written, yet immensely powerful, picoReflow has a web interface and profile editor tailored to multiple temperature set-points at different times.

Originally intended as a soldering reflow oven controller, picoReflow takes in the current real temperature, compares it to the target temperature), and makes a control decision (heat on/off) while taking into consideration the previous error.

A proportional-integrator-derivative controller, or PID controller, is an excellent and simple way to control a process variable (in this case temperature) in order to have it closely match a target value. Implementing PID control offers a way to account for error over time and allows the system to “self-correct” in a way. After overshooting toe process variable target (temperature), the PID controller starts accumulating error the more time the process variable (temperature) is above the desired value. This accumulated error informs future decisions the controller makes, in order to hopefully limit the overshoot in the future. This is intended as a quick write up to share my progress, but I can attempt to elaborate more on the process/theory if anyone seems to have a desire.

Now on to our three main bits of hardware in this operation:

Solid State Relay (40 Amps)
Solid State Relay (40 Amps)
MAX31855K Thermocouple Reader
MAX31855K Thermocouple Reader
Raspberry Pi Zero
Raspberry Pi Zero

and of course, the K type thermocouple. Thermocouples themselves are wonderfully simple devices which exploit the Seebeck effect. The Seebeck effect is a phenomenon in which a temperature difference between two dissimilar electrical conductors or semiconductors produces a voltage difference between the two substances. Since the properties of the conductors and voltage response is well known, we are able to make highly sensitive temperature measuring devices spectacularly simply (merely welding two rods together at the tip!).

I modified a handful of things in picoReflow, but I started with the code base and worked in simple changes, such as updating every 10 seconds instead of every 0.5 to save on resources. If you are trying to get things running I highly suggest following the picoReflow getting started guide. Other than that it was simply a matter of getting things hooked up. I can provide a circuit diagram if anyone is interested, but the general idea was to simply insert the solid state relay in series with the load (either at the mains, or in my case after the kiln sitter. By putting the relay after the kiln sitter I am able to use the kiln sitter as a safety device. If I put a pyrometric bar or cone that is 2 or so cones higher than my maximum temperature, the software will control the firing fully and the kiln sitter will never activate and remove power to the kiln if all goes well. If something does not go well and the relay were to get stuck on, say, the kiln sitter would eventually trip and prevent the system from continuing to climb in temperature.

And that’s really all it is. The temperature gets read by the max31855K and sent to the raspberry pi. The raspberry pi looks at what the temperature “should” be (as specified by what profile is being run), and makes a control decision (heat ON/OFF) that takes into account previous error. After the 10 second cycle of the power ON or OFF, the temperature is again checked against the current target. Repeat about 4,000 times and you have a twelve hour bisque firing! I have gotten wonderful results so far and have been able to control the cooling rate in the kiln after reaching peak temperature to allow for particular effects. All of this work has allowed me to exceed the capabilities of any commercially available solution at a total cost of about $60. The cheapest commercial solution to simply control the temperature starts at about $400. Huzzah!

I’ll update more soon, but I’ve decided to simply share what I’ve got as I go, in an effort to avoid delay. The image with everything layed out to show components is below. They have since been moved back into their enclosure, reducing the risk of running into safety issues.

A few more images:


4 thoughts on “WiFi/Raspberry Pi kiln controller”

    1. Yes, I’ll attempt to update the article a bit now that things have moved along. Current thoughts:

      – Care in design considerations for where the controller and relay is in relation to the kiln helps avoid headaches
      – DIY downdraft kiln vent was fairly easy and effective, but the mating of the “baffle” and the underside of the kiln carries some complexity. If I have a moment I’ll include that in the write-up.
      – Keep things simple and make sure you have everything you need. Starting from just testing the thermocouple, moving on to the SSR, then moving on to configuring everything in picoReflow was a helpful way to go about it.

      Is there anything you’re curious about or encountering difficulties with? I’ll hopefully post an update soon.

  1. Hey Rami,
    Nice pots!
    I just set up picoReflow for my kiln, but it’s kind annoying to do it in original time format: seconds. I see you have made it more suitable for ceramic purpose. Wouldn’t you mind to share your changes?



    1. Hi! I’m sorry for the late reply, but I just ended up finally getting back around to the ceramics after a hectic time!

      I’ll double check what I changed other than the setting of timescale in “h” instead of “s” in the main config. I can’t recall the changes off the top of my head. Did you make any headway on your own, out of curiosity?

Leave a Reply