I’ve rewired my kiln to automate the firing schedule. This is my first electrical/hardware/coding project on my own, so I’m not an expert by any means. The issue I have been having is that at high temperatures (<800°C) my thermocouple is under reading the temperature and the ambient temperature is actually 50-200°C hotter than it says it is.
Components used:
Nodemcu V1.0
LCD 16x2 i2c
Rotary encoder switch
MAX31855K
Type K ceramic kiln thermocouple
Type K thermocouple extension wire
50A Solid State relay
I’ve attached a wiring diagram and my code for reference. (sorry won't let me upload directly because I'm new). My code and the wiring seem to work properly so I suspect it has something to do with the MAX31855?
My code uses this linearization code found on adafruit site to correct the thermocouple temperature Maxim 31855 Thermocouple Linearization | Calibrating Sensors | Adafruit Learning System. The thermocouple reads within 1-2°C when compared to 2 kitchen thermometers between 0-100°C but at higher temperatures seems to be way off causing overfiring. I’ve tried a few things to try and fix it such as moving the protoboard with all my components on it away from the kiln a few feet and putting it in a “heat resistant” container, as well as, turning off the wifi connection on the microcontroller to stop any interference it may be causing with the MAX31855. Does the MAX31855 need to be shielded? I did see that someone was having issues with line-interference when powering their arduino through a usb cord on their laptop while it was charging. They fixed it by unplugged and just using battery. Although mine is not through a computer and just usb directly to an outlet so not sure if that would also cause line-interference. I can't find much else on this issue online, any suggestions on how to fix this? Thanks!
If you still have manual control of your kiln I would load a simple MAX31855 example that just read temperature. Then test to see if you are any closer.
Does you display show noticeable variations or is the display pretty stable?
Just to ask, are you sure your probe is type K? I doubt it would be anything else but need to ask.
Note:
To be "off" by 200 °C at 800 you would have to* have a 6 mV error.
With no linearization your error would only be a few µC
Are you certain that you have the "K" version of the chip?
The MAX31855 data sheet does not seem to characterize the uncorrected accuracy beyond about 125 C. You should calibrate it yourself for use at high temperatures.
From the data sheet:
Note that the MAX31855 assumes a linear relationship between temperature and voltage. Because all thermocouples exhibit some level of nonlinearity, apply appropriate correction to the device’s output data
The display has pretty stable readings but the offset experienced doesn't seem to be consistent which is why I haven't tried to linearize/calibrate it myself. For example, using my last two firings and using a 05 pyrometric cone as a reference, one firing read 950°C and the cone was bent fully (which would be about 1020°C given my ramp) and the other at 850°C with the cone being a complete puddle and the ceramics starting to bubble which would suggest it would be over 1200°C.
The probe is definitely k-type but there is a chance that the max31855 isn't the "K" version of the chip even though it stated it was online. I'll try getting another max31855K and see if that helps.
You should be able to see the "K" on the chip itself. The body of mine has 3 lines of text. The top line is "M31855K".
If yours doesn't have any text on it I would suspect a fake or reject of some sort. There is no reason to sand off the markings if it is legit, after all there is not design to guard.
If you have the wrong thermocouple type, then you might have a error but it would be consistent and stable. So that is not your variability issue.
I see your diagram is your Mains adapter capable of the current? Do you have a different one you could try?
What Value is your pot?
You mention your ramp rate. What is it and do you feel comfortable that it is consistent? And how do you achieve the ramp rate?
Can you modify your program to log temperature to the IDE serial monitor? Seeing the measured temperature might be useful is determining what is going on.