Jump to content

Home Made Kiln Controller


Recommended Posts

I have always been interested in electronics, still remember designing and making PCB back in school. The availability of good reasonably priced electronics is amazing, also a lot of rubbish out there too :D

 

Did a bit of research into the Raspberry Pi last night and thermocouple measuring. Came across this product that is designed for a type K thermocouple, not the best for cone 10, but, after searching the forum if I can desolder the type K chip and purchase the right thermocouple type it 'should' work.

 

Is it best to go for type S, or type N or type R. I am a little lost there. New chip seems to be around $5

 

No idea how this is going to work out, only studied basic programming on linux but there seem to be enough tutorials out there to copy and past my way to something that could work.

 

http://www.adafruit.com/products/269

 

The MAX31855 performs cold-junction compensation and digitizes the signal from a K-, J-, N-, T-, S-, R-, or E-type thermocouple. The data is output in a signed 14-bit, SPI-compatible, read-only format. This converter resolves temperatures to 0.25°C, allows readings as high as +1800°C and as low as -270°C, and exhibits thermocouple accuracy of ±2°C for temperatures ranging from -200°C to +700°C for K-type thermocouples. For full range accuracies and other thermocouple types, see the Thermal Characteristics specifications in the full data sheet.

Link to comment
Share on other sites

  • Replies 125
  • Created
  • Last Reply

From their site:

 

https://learn.adafruit.com/connecting-the-max31855-thermocouple-amplifier-breakout-to-an-electric-imp

 

the only issue i can see is that they say the K type thermocouple is the only one that will work with your chip. 

  • Will not work with any other kind of thermocouple other than K type

 

It looks like that K Type will only go to 900F before it melts. So that definitely wont work for cone 10. 

 

Their site is hard to understand, but from the wording it seems: the Max6675 the upgraded chip is no longer made. So I don't know what that means for your high heats. 

 

It would be cool to program this. I do a lot of small programming on the side for simple things that I need, but no idea how to even start with a rasberry pi. I assume it uses python, which is a pretty well documented language that I have used a fair bit for scripted tasks.

Link to comment
Share on other sites

Adafruit only sell the type K thermocouple as that is what people want. If you search for the chip number MAX31855 you can find all the type chips. The only thread I could find on the forum about this is here https://forums.adafruit.com/viewtopic.php?f=19&t=75143&p=395238&hilit=type+s#p395238 but they seem to say it will work fine.

 

Ordered a Pi and the board, you can also seem to get free sample chips from the manufacturer so ordered type s chips. Going to be a steep learning curve.

Link to comment
Share on other sites

Seems to use python, or at least it can and that is what people choose to program in. Been reading a few tutorials on using the General Purpose Input Output GPIO pins and they are all using python. The adafruit tutorial seems easy enough that I can achieve it. Has a simple python script that prints out the temperature every second or so. Using that info instead to control a relay is going to be the hard part. 

Link to comment
Share on other sites

Nothing like that right now. I have a small 13A electric kiln that needs some temperature control. I ripped out the old electrics as they didn't work. Before that I will probably set up something to log my firings in the kiln that I know works, has a controller and has a reliable profile to compare the homemade thermocouple results to.

 

Been looking into switching relays with the Pi tonight, seems you can get some solid state relays that switch with as low as 3v. Going to look into how you up a 3.3v to the 12v relays I have now.

Link to comment
Share on other sites

Ah, I missed the relay part. I imagine controlling relays isn't to difficult if you can pull in temps. You could set up an easy loop to constantly check temps and adjust the relay based on rules you setup. That part would be easy. I imagine figuring out how much you need to click on and off to raise temps and control temps is going to be the hard part. Considering that as the heat needed increases you will have to have different algorithms. 

Link to comment
Share on other sites

Thinking about it, you could teach your program how good your kiln heats and cools pretty quickly by building some test then recording that data then reprogramming, and repeating the test. It would take a while and you would have to continue fine tuning along the way, but I imagine you could probably get some firings going within a week or two of testing heating rates.

Link to comment
Share on other sites

Yes, how much 'on' for how much temperature increase will be interesting to work out. If I can get something that can log my temperature and send it to the internet so I can see the temp and if my kiln is finished firing I will be happy. That sounds like the place to start anyway, using it as a mod on my existing kiln.

Link to comment
Share on other sites

BTW I will be happy to help you with any logic overview concepts. I don't know how to program a pi, never even held one, read and seen a lot of really awesome things on hacker news about them. But they came out when I was sorta phasing out of my development career. Got tired of dealing with people who didn't understand want they wanted. 

 

But I can help with logical processes and the big picture of how you should do things and maybe even some python scripts if you have some problems. 

Link to comment
Share on other sites

Thank you :D sure I will have some badly written code for you to look over in the future. 

 

Going to have a lot of hardware issues before that and general electronic design to learn. First stop is a blinking LED. hopefully it will have been delivered tomorrow so I can pick it up and start messing around. The kit really isn't that expensive and is seems lots of companies are now making boards that can do anything with these new microprocessors or computers really, whatever brand you go for.

Link to comment
Share on other sites

High Bridge, I spent quite a bit of time researching DIY controllers earlier this year after my kiln's controller died. For a while I was heading towards using an Arduino Uno with the MAX31855K chip, but I ended up just getting a PID ramp/soak controller from Auber Instruments. I don't have your electronics background, so I didn't want to have deal with trouble-shooting any issues that might occur, and the Auber controller wasn't that much more expensive. But programming a controller would have been fun.

 

If you want to program a PID controller, this is an excellent webpage:
http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/
You'll have to translate the code to use with a Raspberry Pi though.

The guy who wrote the code, Brett Beauregard, is also involved in the production of an open source PID controller. When I was doing my research they were having some technical trouble, but they seem to be up and running again.

 

Lastly, I thought I'd throw this out for anyone else interested:

http://www.jameco.com/1/1/52149-cjkit-20428-pid-temperature-controller-kit-16mhz-resonator.html

It's cheap, but too advanced for my skills and I couldn't find any reviews of how well it works.

Let us know how your controller turns out. I'm pretty happy with my Auber controller, but if I get a kiln that needs zone control one day, I'd like to try making my own.
 

Link to comment
Share on other sites

Thank you for the information :D will be great to have a look through the code and how they are getting it to read temperature.

 

I wouldn't say I have an electronics background  :unsure: it was 2 years of basic education 10 years ago :D It's just kiln controllers are the last mystery in understanding how to work a kiln and I want to know!

Link to comment
Share on other sites

Does that mean Keep it simple stupid? If so I am going to keep it very stupid :D

 

Will you use one of the KISS software programs available?

Jed

 

Heyy, you never know. If I can work out something it could be a big seller  ;) Pi arrived yesterday, thought it was broken for an hour before I swapped out the HDMI it arrived with... So much for cheap HDMI cables, brand new and doesn't even work.

 

Had a little play around with some tutorials, having a lot of fun. I now have an LED that comes on when I get a new email, loool.

I think the breakout thermocouple chip arrived but I haven't been to the studio again to pick it up.

High Bridge Kiln Company, ready yet?  ^_^

Link to comment
Share on other sites

http://forum.arduino.cc/index.php?topic=208061.0

 

The above is a link to the Arduino MAX31855 library . Why re-invent the wheel. I have been using the Arduino to control my kiln for several years.

 

Here is the code I use.

 

#include <MAX31855.h>

float tempOut = 0;
int command = 0;
int value;
// Adruino 1.0 pre-defines these variables
//int SCk = 13;
//int MISO = 12;//SO
//int SS = 11;//CS

// Setup the variables we are going to use.
double tempTC, tempCJC;
bool faultOpen, faultShortGND, faultShortVCC, x;
bool temp_unit = 0; // 0 = Celsius, 1 = Fahrenheit
//temp(SCk,CS,SO)
MAX31855 temp(11, 12, 13);

void setup() {
 
  pinMode(2, OUTPUT);      // Test Com Reset issue  
  pinMode(3, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode (10,OUTPUT);
  digitalWrite(10, HIGH);

  Serial.begin(9600);

}

void Average10() { // average 10 readings
 
  float Ave;
  int AveCt ;
  AveCt =0;
  Ave = 0;
  delay(50);
  do {
 
      temp.readMAX31855(&tempTC, &tempCJC, &faultOpen, &faultShortGND, &faultShortVCC, temp_unit);
      Ave = Ave +  tempTC ; // tempTC ;
      AveCt = AveCt + 1;
      delay(10);
     } while  (AveCt < 10 ) ;
 
    tempOut = (Ave/10);
 }

void loop() {
   if ( analogRead(0)> 1021) {          // it's too high turn it off
          digitalWrite(2,LOW);
      }
     value = 0;
     Serial.flush();
     if (Serial.available()) {      // Look for char in serial que and process if found
      command = Serial.read();
      if (command == 84 ) { // If command = "T" turn it on (unless to high)
          digitalWrite(2,HIGH);
         // delay (500); // keep it on for at least half a sec to prevent bounce
      }
      if (command == 67) {          // If command = "C" turn it off
          digitalWrite(2,LOW);
         // delay(500); // keep it off for at least half a second to prevent bounce
      }
      if (command==68){                 //if command ="D" sound tone
        tone(9,220);
      }
      if (command==69){                 //if command ="E" end tone
        noTone(9);
      }
          command = 0;                 // reset command
   }
    delay(50);
    Average10(); // take averaged sample
    delay(50);
    Serial.flush();
 
    Serial.print("@- ");
    Serial.print(tempOut);       // output to computer USB port
    Serial.println(" -Tmp ");
 
 }

 

I use a Visual basic or a Java software  interface to do the logic to control the kiln. You can use any code that allows you to read/write from a usb device. 

A solid state relay is used to toggle the kiln on and off directly from the Arduino.

 

I use an AD595 chip rather then the MAX because Of noise problems. The AD595 is a very stable A/D for type K thermocouples. It works pretty much the same except you have to run it through a op amp.

 

Do some research on Google... there is a lot out there already done for you.

 

.

Link to comment
Share on other sites

Sorry :D you are going to have to take this through slowly. So the library lets you call predefined code?things?statements? that work with the hardware? I have used libraries but never really understood them.

 

You then have your program that has these scripts?things?statements? that you use in some java software? All I could work out from the code is defining the variables, a strange serial bit and telling it how to turn on and off.

 

Going to have to have a good look at your code, thank you for sharing. I'm not trying to invent the wheel and I 'dodo' a lot of googling, the problem I think is how little I know to start with :D No reinvention just ignorance 

Link to comment
Share on other sites

There is nothing wrong with reinventing the wheel. The code above is nice, but if you dont understand it, then what do you do when you want to change something in your controller. You can't, and if you just blindly use it, then you can't contact someone to change it or to find help your stuck. That is why I often rebuild things that are already working, but instead of just using their code completely, I read their code, and build my own code that does similar things, but this way I understand what is happening.

 

I think your doing the right thing starting from the beginning HBP.

Link to comment
Share on other sites

I'm having enough fun remote logging into the pi over the local network :D already broken it 10 times. Managed to comment out my user in some file and then still be logged in as that user unable to do anything  :blink: It kept asking me 'Who are you?'

 

I will be doing a lot of copying wheels, pasting wheels, hitting wheels with hammers. Breaking wheels, running wheels and troubleshooting wheels  B)

 

Do you write your own libraries? Only if you need to? I guess understanding of them is needed to write a good program. I suppose they are a program within a program.

wntgd.jpg

Link to comment
Share on other sites

The code is written in C. A pretty old and common language.  It was just a sample. I did not know what your level of understanding is. basically what it does is loop and  read a value (temp) from the chip and send it out the USB port to another program.

 

The other program looks at the temperature and either tells the Arduino to turn  on or shut off a relay depending on what the ramp temp should be at the time. The MAX library you need to run the data acquisition is available on the Arduino site. I gave you the link.

 

Since you are a beginner, Nothing is going to come easy. As I said before, the Arduino module is cheap and has tons of code and support. The development interface is free for the download and comes with lots of example plug and play code. Since the code is written in public domain "C" it is almost infinitely expandable. Using visual drop in code blocks like the LEGO code interface and others, might seem simpler to learn, but you are stuck with what capability they will provide. To really do what you want to do will take some real commitment at your level... like probably months.

 

Here is an ebay link to a cheap Arduino clone ...

 

http://www.ebay.com/itm/UNO-R3-MEGA328P-CH340-CH340G-Development-Board-USB-Cable-For-Arduino-Compatible-/331520285609?hash=item4d30261ba9

 

Here is a link to the MAX 31855...

 

http://www.ebay.com/itm/MAX31855-thermocouple-breakout-board-for-5V-systems-type-K-K-type-/301193478531?hash=item462087c183

 

Buy the clone, download the Arduino development environment and play around with it.

Link to comment
Share on other sites

Besides the issue of support, the impression I got was that the Arduino is less finicky than the Raspberry Pi. But I don't have personal experience with either of them, so don't take my word for it. I think Bob's suggestion is good, but since you've already started using the Raspberry Pi you might want to check out this site for a controller that runs on a Raspberry Pi. It's for a gas kiln, but you should be able to use the code (available on GitHub) to get the controller to read the temperature.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.