Glass Kiln Controller
A few years ago I started the hobby of fused glass art pieces. As I got more creative with the pieces, I needed better control for my home built kiln. The kiln is just some fire brick with a heating element in the roof (which I wont address here). To properly fuse glass pieces, the temperature must be ramped up slowly to avoid breakage, then held at the fusing temp, then cooled do to the annealing temp and held, and then shut off for the final cooling. The maximum temps are between 1300 F and 1500 F degrees.
I initially started with a crude 555 timer circuit controlled by a variable pot to manually control the firing rate. I then advanced to a PIC controlled unit, but the integer math limited control a lot. Finally the Arduino with floating point math allowed the polynomial equation for the thermocouple to be computed without having to fudge the integer math. The thermocouple polynomial coefficients are from Omega Engineering technical reference for temperature (circa 1985) page Z-14.
Supplies
Arduino Nano
ADS1115 module (Ebay)
4x4 keypad (Ebay)
40 amp SSR (Ebay)
SSR heat sink with cooling fan (of your choosing)
Thermal heat sink paste
Wall power supply (6.5 - 9 volt)
16x2 Arduino I2C LCD display + 4-40 nuts and bolts to secure
30 x 10 breadboard with voltage rails
1 uF cap tantalum
0.01 uF cap disk
100k ohm resistor
10K thermistor
2 - 120 v switches
Type K thermocouple socket
High temperature type K thermocouple
Type K thermocouple plugs and sockets for making extensions
5.5 mm power socket
Power cord (Heavy Duty - 15 amp)
Assorted wire
Project Box
Project Box
The first thing I needed was a project box. I made one from surplus material, namely particle board and old laminate. While I show the pictures, this was a mistake! I should have purchased a plastic box online. The particle board was way to hard to work with for the openings. I had to first cut the pieces of the box on a table saw, then glue them together. I should have cut the holes first before gluing the thing together. Holes were drilled in order to use a coping saw to cut the rectangular openings. A coarse file was then used to smooth the edges. I did not include dimensions for this step - it's up to you what size you want based on any future additions inside the box. My box was 6.5" by 6" by 4" high to accommodate the SSR heat sink. A different heat sink may require a taller and/or wider box.
The next thing was to get the face plate ready. I needed to cut the opening for the LCD display, and the a slot for the keypad cable to pass through. A Dremel tool with a saw blade worked great for this. I also cut a hole for the power switch for the electronic control. A separate switch for power to the kiln (rated for at least 16 amps) was mounted on the side of the box. A hole for the power cord to supply kiln power as well as a small hole for the 5.5 mm power connector for the controller electronics.
The SSR and heat sink assembly will depend of the parts. For this pair of parts, it was necessary to cut some fins off the heat sink and file it smooth to allow for good contact with the SSR. Holes need to be drilled to hold the SSR and heat sink together with thermal paste in between. I used some liquid nails to attach the fan to the heat sink.
Faceplate Assembly
The first thing to do was attach the LCD display to the face plate. Holding the LCD in place it the opening, mark the hole locations for drilling. Pick a drill size slightly larger than the 4-40 bolts. I also used some small spacers between the display and face plate to mount the display flush with the surface, but that's not essential.
I had to get my keypad ready. Instead of having to remember which keys did what, I printed up a new keypad cover. I scanned the keypad and opened the image in a photo editor. I created another layer over the keypad image with my desired text. I printed out the new keypad face and attached it with clear packing tape to protect the paper wrapping the tape under the keypad to hold it together. I then used double sided tape to attach it to the face plate.
I had to prepare to mate the keypad connector to the Arduino unit. I soldered some multi-pin headers back to back so I could plug the connector into the bread board. For my original prototype I de-soldered the eight required pins from the Arduino unit and re-soldered them on top to directly plug the keypad straight into the Arduino nano. This a tricky operation and requires apply a low melting alloy like Chipquik to remove the necessary header pins, then wick off solder for the holes allowing the header to be inserted from the top and re-soldered. Tricky but a smooth way to attach the keypad socket.
Controller Wiring
I originally tried to hard wire the project on perf board using solder and wire wrap. The result was erratic performance with no way to change out defective parts. I then decided to use a small bread board. This was much faster and simpler than the hard wired option. A schematic diagram is not necessary due to such few connections being made. The picture shows the project ready for testing before installing in the project box.
Referring to the picture, two power rails at the top are for the input 6.5 to 9 volts used to power the cooling fan and Vin for the Arduino. The lower rails are for the 5 volts from the Arduino nano on board regulator. The power connections are pretty straight forward as well as the I2C CLK and DATA connections. The LCD display is not connected at this point for clarity, but the four wires for power and data are pretty straight forward.
Special connections to note:
- Arduino D2 to ADS1115 ALERT
- ADS1115 ADDR to ground
- SSR control to Arduino D11 (not connected at this time)
The thermocouple input is to A0 on the 1115 ADC board. Note the 0.1 uf filter capacitor to ground. Also note the 1 uf capacitor on the power rail.
As part of determining the temperature, the 10K thermistor is part of a voltage divider with the 100k resistor to measure the ambient temperature. Assuming the kiln is operated indoors, this could be eliminated, and an ambient temperate of 75F could be used in the code with the thermistor calculation commented out(/* -*/). To learn more about thermistor use and calibration go to:
https://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm
Calibration involves measuring resistance at several know temperatures. Since the thermistor is measuring temps over a narrow range, just adding a temperature off ste in the code can accomplish the same as calibration. At a known ambient temp, just figure the difference in the code to arrive at the correct calculated value.
Now is a great time to test the unit. Connect the thermocouple. Power up through the USB connection and upload the Arduino sketch. The serial monitor window should confirm ADS1115 connection and ask for set point input (refer to Step 5). A display of "nan" for the ambient temp means something is wrong. This will also ripple over to the temp displayed since ambient is part of the temp calculation.
Project Assembly
The last step is to put everything together. Before final assembly, the circuit assembled previously shroud be tested and verified attached to a PC in the Arduino editor with the serial monitor.
Since the bread board I was using was adhesive backed, I just stuck it to the back of the face plate where the keypad cable could attach. The LCD was also plugged into to the 5 volt power rail and the Arduino A5(CLK) and A4(DATA)..
The next picture shows the face plate attached to the box.
- The Arduino VIN power is connected controlled by the top face plate switch
- SSR is connected to D11 and GND
- Thermocouple is connected to ADS1115 A0 and GND
- Kiln high voltage is connected to side high power switch through SSR
- Cooling fan connected to the high side of the bread board for optimal speed (12 volt fan)
Due to heat buildup inside the box, I moved the thermistor outside the box via a small hole in the side and an attached lead to better monitor the ambient temp.
The kiln power is controlled separately to enable the kiln to be powered down without stopping the kiln controller. This separate arrangement is also handy for replacing the high voltage switch will will eventually fail due to the high amperage passing through it.
Test Time
It's finally time to see if this works. Plug in the power supply and flip the switch. On my first power up, I had to mess with the LCD wires bread board connection before it came to life. Assuming a thermocouple is attached, after going through the start up sequence, a temperature should be displayed.
Start up:
- Enter the set point temperature (eg. 1325) Fahrenheit is assumed
- Press Set
- Select firing sequence (more on that later)
- Press Start (it will take a few seconds to start)
The display shows the ambient temperature, the current thermocouple temperature, the duty cycle on the heating element (PWM), the set point temperature, and the firing sequence selected.
The firing sequence has three options:
- No temperature hold steps with firing straight to set point. Approx. 12 minute hold at set point.
- One 30 minute hold at 1250F, then on to set point with 12 minute hold at set point.
- This is a two hold sequence with the first hold at 1110F and the second at 1250F, before attaining the set point and holding.
All firing sequences include a cooling hold at 900F for a 30 minute anneal, before shutting off completely for final cooling.
The Code
The first thing to do with the code is to install the libraries needed. The next part of the code deals with the keypad for data entry. From there, the code reads the thermistor for ambient temp and thermocouple temp. from there the SSR PWM is computed for the heating rate (ramping) of the kiln temp. Kiln temp is monitored until the hold temps are reached or the set point is reached. The "get_temp" and "hold_temp" functions perform these tasks. The hold time is accomplished by code looping the number of counts to get the desired time. The main "void loop" monitors the temp and performs the temp ramping function and lastly directs the hold sequence. The "Cycle" part of code monitors the cooling and performs the anneal step.
Oddly, I found I had to add 32 degrees to my computed temp above 700 F to match the PID controller I was using as a reference. At around room temp, this was not needed, so the code ramps this down to near zero at room temp. Of course I had no way to verify the PID controller I was using as a reference was correct - I just assumed a cheap controller from China was correct - hum?
Of course, equipment should always be calibrated for the intended targeted temps like 1300F to 1500F. I found my glass fusing results matched the published data. Also, my calculated temps matched the PID controller which I used early on for my work. As a side note, I checked the calculated temp for an ice pack at -12.8C (lab thermometer) converted to F (-12.8*1.8 +32 = 8.96F) with a displayed temp of 12F - off by 3 degrees F - not bad!
Downloads
Closing
As always with a work in progress, I am planning more upgrades. I'm eyeing a touch screen for the next upgrade. Also a word of warning: Always use gloves when handling objects from the kiln and don't open the lid when above 250 degrees F!