Front view as I received it. This was out in front of a neighbors home, so I asked if it was available. It was, so it followed me home. I'm hoping to melt metal for casting and glass to make telescope mirror blanks. I have no idea how hot this kiln can get, but it easily melted aluminum so far. Already, it can be pretty handy. |
Side view with power cord and control (switch) box. |
View of the back of the kiln. |
Here is the data plate. |
Inside which is 17 inches wide both ways. |
A little closer look inside. The green bit seems to be algae. A fair amount of steam came out while heating the kiln up the first few times. |
Glass needs complex temperature ramp and soak control. I'm hoping to build a controller based on an Arduino or some other microcontroller. The plan is to have the controller serve a webpage to allow programming and status display. |
Here is a MAX31855 K-type thermocouple breakout board connected to an Arduino. I wrote a demo program (shown below) that streams the temperature every second to a terminal. Adding a couple of bit pins to drive solid state relays will allow me to start playing with closing the feedback loop and adding a PID or some other control routine. I also have an Ethernet adapter to install and some work to get the webpage running. /* SS: pin 10 MOSI: pin 11 MISO: pin 12 SCK: pin 13 */ #include <SPI.h> #include <util/delay.h> const int ss_pin = 10; uint16_t byte0, byte1, byte2, byte3; float t_int, t_tcpl; void setup() { Serial.begin(9600); pinMode (ss_pin, OUTPUT); digitalWrite(ss_pin, HIGH); SPI.begin(); } void loop() { SPI.beginTransaction(SPISettings(1000, MSBFIRST, SPI_MODE1)); digitalWrite(ss_pin, LOW); _delay_ms(1); byte0 = SPI.transfer(0x00); byte1 = SPI.transfer(0x00); byte2 = SPI.transfer(0x00); byte3 = SPI.transfer(0x00); digitalWrite(ss_pin, HIGH); SPI.endTransaction(); /* t cold, chip's internal temperature */ if (byte2 & B10000000) { // value is negative // Convert to negative value by extending sign and casting to signed type. int16_t tmp = 0xF800 | (((byte2 & B01111111) << 4) + ((byte3 & B11110000) >> 4)); t_int = 0.0625 * tmp; } else { t_int = 0.0625 * (((byte2 & B01111111) << 4) + ((byte3 & B11110000) >> 4)); } /* t hot, thermocouple tip temperature */ t_tcpl = 0.25 * ((byte0 & B01111111) << 6) + ((byte1 & B11111100) >> 2); Serial.println("*** MAX31855 ***"); Serial.print("fault = "); Serial.println(byte1 & 0x01); Serial.print("open circuit = "); Serial.print(byte3 & 0x01); Serial.print(" short to ground = "); Serial.print(byte3 & 0x02); Serial.print(" short to power supply = "); Serial.println(byte3 & 0x03); Serial.print("byte0 = "); Serial.print(byte0, BIN); Serial.print(" byte1 = "); Serial.print(byte1, BIN); Serial.print(" byte2 = "); Serial.print(byte2, BIN); Serial.print(" byte3 = "); Serial.println(byte3, BIN); Serial.print("T internal = "); Serial.print(t_int, 4); Serial.print(" T thermocouple = "); Serial.print(t_tcpl, 4); Serial.print( " C"); Serial.println( ""); delay(2000); } |
Some Design IssuesObvious issues are in dealing with the high heat, and high voltage and current issues, plus the complicated and long duration heating control. Safety devices will need to be robust and separate from complex systems such as temperature and timing control software. Basic over current fault -- handled by circuit breaker Mains outage fault -- handled by self energizing mains relay. If there is a mains outage, this will keep the kiln form powering up when service is restored. Over temperature fault -- Usually this is handled by a kiln sitter, which mechanically cuts power to the kiln when a pyrometric cone melts and allows a lever to disconnect mains contacts. I would prefer to not use this due to needing to have a supply of cones on hand. Sitters have also been known to fail in an unsafe manner. More work is needed here. Software fault -- This can be similar to the mains fault in that if the software fails the system should shut down. If the software recovers, it should not allow the kiln to function until the operator corrects and resets the original fault. The plan is to have the software supply a watchdog charge pump signal. The charge pump will enable the mains relay to stay energized during normal conditions. A constantly on or off charge pump signal (short circuit to power or ground, or pump stalled in an on or off state) will disable the relay. |
gEDA Files (so far) |
LinuxCNC BitBang ComponentI have had good luck with bitbanging other SPI devices with LinuxCNC, which has some very handy features, such as HALscope and HALmeter. The above is a HALscope screenshot of the component I wrote for the MAX31855 connected to a PC parallel port. Unfortunately, it doesn't work. I wasn't able to make sense of the thermocouple and internal temperature bytes. Creating an obvious condition, such as disconnecting the thermocouple, doesn't set the appropriate alarm bits. My guess is that the MAX doesn't work at such a slow clock rate. Putting the MAX back on the Arduino works fine. Oops, it looks like my thermocouples are marked backwards. An increase in temperature caused the voltage to go negative, which is why the most significant bits, in the HALscope screen above, are high. Reversing the thermocouple wires made the temperature values more sensible. More checking needs to be done.
The next step might be to add the fault HALpins and create a Glade VCP UI similar to my DRO application: http://www.wallacecompany.com/machine_shop/LinuxCNC/gvcpDRO/ |
Pages Created by Kirk Wallace |
Copyright © 2015 WALLACE COMPANY |