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:


Showing 14 comments
  • Mel Ristau

    Any additional advice gleaned from your controller project? Thanks for posting!

    • rami

      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.

  • Dizzy Travel

    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?



    • rami

      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?

  • Andrew Malota

    Thanks so much for posting this. For a couple of years I have been using a similar concept to fry turkeys with a pi – https://github.com/2bitoperations/roboburn . Until now, I wasn’t aware of picoreflow – muuuuuuch nicer of an interface than my sloppy android app!

    I’m in the midst of rehabbing an old Paragon kiln – the elements work but the control knobs / kiln sitter are a total wreck. Your project is exactly what I needed to proceed.

    Could you post a picture or two of your electronics enclosure for the SSR and the pi? I’m trying to figure something that’ll protect it well and still provide adequate ventilation for the SSR.

    • rami

      Hi! So sorry — i have auto approved comments off and I have had many health problems that limit my ability to tend to things.

      Did you ever have any luck with your paragon? I tohught the same thing when I found picoreflow — perfect for old manual kilns!

      I’ve experimented with 3d printed cases, and I think I like ceramic cases. I’ll try to post some updates at some point on cases, but no promises 🙂

      Fun to hear about the turkey frying! I found some turkey frying gas controls online when looking for PicoReflow — I also have a raku kiln i’ve wondered about converting with picoreflow or the like.

      Thank you for the comment and let me know how things have gone!

  • Troy Halliday

    I have just found your site while trying to figure out a way to do exactly what you have done. Could you share your wiring diagram and perhaps a github link to your current setup. I would be more than happy to reciprocate with anything I achieve while working on solving this solution myself.

    Troy Halliday

    • rami

      Hello — my apologies on the late reply.

      A wiring diagram is beyond the scope of this project. Wiring a solid state relay is fundamental to the understanding of this project and I’m not looking to re-create basics that also require some great care! One should never undertake a project involving mains voltage without understanding the underlying concepts, and I can’t extensively explain those concepts in this article.

      • Lucas

        Thanks for your work on this! I know lots of us are out there trying to convert picoReflow for use with our own kilns. If you don’t mind me asking for a wiring diagram of your MAX31855, I’d love to make sure I followed along correctly.

        Also, I feel that asking for a wiring diagram shouldn’t be met with such a brick wall statement, especially when you said you’d provide one if asked, above…

        “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”

        Not trying to be rude back, as I do really appreciate the info you’ve written up for us all already.

        • rami

          Totally, I understand. My main concern was I don’t want to provide a tutorial on the controlling an SSR Side of things — it’s assumed one should be comfortable with that.

          I’m sorry it’s taken so long to get back, comments are in moderation (tons of spam) and for some reason I didn’t notice the message. I’m trying to find time to make the site functional again but life has been fairly brutal for a while. Your best bet would be to get the MAX31855 wired and functional with the adafruit library and tutorial, or a similar one: https://github.com/adafruit/Adafruit-MAX31855-library

          SparkFun probalby has a tutorial as well. You can treat getting a temperature reading form the max31855 (or max31856 which I now use, a bit more resilient it seems) as the first independent step towards getting things running. Once you’re up with that library, you just have to reconfigure the pin numbering in picoReflow to match from what I recall.

          Are you still experiencing difficulty? Where are you currently stuck, if you are?

          Hope you were able to move forward a bit and happy to help time permitting.

        • rami

          To that end, where do you know of others trying to convert picoreflow for kiln use? Can you point me to them, if you’re on a forum? I can work to re-write this in a more coherent and concluded manner that fills in the details people are struggling the most with.

  • Jeff Pynnonen

    This is awesome! We want to build a kiln controller for an old Everheat Kiln in our maker space.

  • Jay

    Hi, did you end up estimating the heating parameters for the kiln system for in the config.py file or did you just leave the defaults?

  • Ryan

    Hi Rami,

    I know this is a several year old post, but I figured I’d try anyways. I have tons of experience building and repairing kilns, but almost no experience coding or working with a raspberry pi. Is this something that I could possibly pick up on the internet? Are there any resources that I should check out before I go buy all of the part’s I’ll need for this project?


Leave a Reply

Contact Us

I'm not available right now. Send me a message and it'll get over to me via email. I'll respond soon.

Not readable? Change text. captcha txt

Start typing and press Enter to search