Turns a Raspberry Pi into an inexpensive, web-enabled kiln controller.
 
 
 
 
 
Go to file
Andrew de Quincey 9137834b41 format stdout a bit better 2021-05-18 01:20:19 +01:00
docs fixed bug about integral. it should now be reduced to get more integral 2021-04-29 15:23:41 -04:00
lib Merge branch 'master' into logger 2021-05-01 11:49:24 +01:00
public Clean up protocol 2021-04-20 23:31:14 +01:00
storage/profiles - changing approach from 108F/hour to 120F/hour 2019-01-06 12:13:45 -05:00
.gitignore - allowing profiles to be committed 2018-11-21 14:48:37 -05:00
README.md - added git to requirements 2021-03-25 17:40:50 -04:00
config.py adding support to prevent integral windup 2021-04-30 20:27:19 -04:00
config.py.EXAMPLE - added thermocouple_offset, changing config comments to match 2019-02-27 21:38:36 -05:00
kiln-controller.py - complete rewrite of oven class 2021-03-14 15:16:03 -04:00
kiln-logger.py format stdout a bit better 2021-05-18 01:20:19 +01:00
requirements.txt Fix pip module for websocket client 2021-04-29 23:22:04 +01:00
start-on-boot adding systemd service script and a script to install it as a service that runs during startup 2018-11-26 21:15:24 -05:00

README.md

Kiln Controller

Turns a Raspberry Pi into an inexpensive, web-enabled kiln controller.

Features

  • easy to create new kiln schedules and edit / modify existing schedules
  • no limit to runtime - fire for days if you want
  • view status from multiple devices at once - computer, tablet etc
  • firing cost estimate
  • NIST-linearized conversion for accurate K type thermocouple readings
  • supports PID parameters you tune to your kiln
  • monitors temperature in kiln after schedule has ended
  • api for starting and stopping at any point in a schedule
  • support of MAX31856
  • accurate simulation
  • support for shifting schedule when kiln cannot heat quickly enough

Run Kiln Schedule

Image

Edit Kiln Schedule

Image

Hardware

Parts

Image Hardware Description
Image Raspberry Pi Virtually any Raspberry Pi will work since only a few GPIO pins are being used.
Image MAX 31855 Thermocouple breakout board
Image K-Type Thermocouple Invest in a heavy duty, ceramic, k-type thermocouple designed for kilns
Image Breadboard breadboard, ribbon cable, connector for pi's gpio pins & connecting wires
Image Solid State Relay Zero crossing, make sure it can handle the max current of your kiln. Even if the kiln is 220V you can buy a single 3 Phase SSR. It's like having 3 SSRs in one. Relays this big always require a heat sink.
Image Electric Kiln There are many old electric kilns on the market that don't have digital controls. You can pick one up on the used market cheaply. This controller will work with 110V or 220V (pick a proper SSR). My kiln is a Skutt KS-1018.

Schematic

The pi has three gpio pins connected to the MAX31855 chip. D0 is configured as an input and CS and CLK are outputs. The signal that controls the solid state relay starts as a gpio output which drives a transistor acting as a switch in front of it. This transistor provides 5V and plenty of current to control the ssr. Since only four gpio pins are in use, any pi can be used for this project. See the config file for gpio pin configuration.

My controller plugs into the wall, and the kiln plugs into the controller.

WARNING This project involves high voltages and high currents. Please make sure that anything you build conforms to local electrical codes and aligns with industry best practices.

Image

Note: I tried to power my ssr directly using a gpio pin, but it did not work. My ssr required 25ma to switch and rpi's gpio could only provide 16ma. YMMV.

Software

Raspbian

Download NOOBs. Copy files to an SD card. Install raspbian on RPi using NOOBs.

$ sudo apt-get install python3-pip python3-virtualenv libevent-dev git virtualenv
$ git clone https://github.com/jbruce12000/kiln-controller.git
$ cd kiln-controller
$ virtualenv -p python3 venv
$ source venv/bin/activate
$ pip install --upgrade setuptools
$ pip install greenlet bottle gevent gevent-websocket

Note: The above steps work on ubuntu if you prefer

Raspberry PI deployment

If you want to deploy the code on a PI for production:

$ cd kiln-controller
$ virtualenv -p python3 venv
$ source venv/bin/activate
$ pip install -r requirements.txt

Configuration

All parameters are defined in config.py, just copy the example and review/change to your mind's content.

$ cp config.py.EXAMPLE config.py

You should change, test, and verify PID parameters in config.py. Here is a PID Tuning Guide.

You may want to change the configuration parameter sensor_time_wait. It's the duty cycle for the entire system. It's set to two seconds by default which means that a decision is made every 2s about whether to turn on relay[s] and for how long. If you use mechanical relays, you may want to increase this. At 2s, my SSR switches 11,000 times in 13 hours.

Usage

Server Startup

$ source venv/bin/activate; ./kiln-controller.py

Autostart Server onBoot

If you want the server to autostart on boot, run the following command:

$ /home/pi/kiln-controller/start-on-boot

Client Access

Click http://127.0.0.1:8081 for local development or the IP of your PI and the port defined in config.py (default 8081).

Simulation

In config.py, set simulate=True. Start the server and select a profile and click Start. Simulations run at near real time.

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Support & Contact

Please use the issue tracker for project related issues. If you're having trouble with hardware, I did too. Here is a troubleshooting guide I created for testing RPi gpio pins.

Origin

This project was originally forked from https://github.com/apollo-ng/picoReflow but has diverged a large amount.