Max 31855 Reading High Temperatures

Breakout boards, sensors, Drawdio, Game of Life, other Adafruit kits, etc.

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
User avatar
Declan
 
Posts: 11
Joined: Mon Aug 17, 2015 4:48 am

Re: Max 31855 Reading High Temperatures

Post by Declan »

I won't be liable if you blow up whatever it is that you're working with
Chernobyl comes to mind
OR
Challenger cockpit voice recorder "What's this button for?"

User avatar
engineertype
 
Posts: 2
Joined: Sun Aug 23, 2015 3:20 pm

Re: Max 31855 Reading High Temperatures

Post by engineertype »

I'm learning a lot from the conversation here. If anyone is interested in testing the newer MAX31856 IC I have some breakout boards available. The communication to the IC is different than the MAX31855; you have registers that need to be written to before readings can be made.

I've written an Arduino library for the MAX31856:
https://github.com/engineertype/MAX31856

Cheers,

Peter

User avatar
heypete
 
Posts: 32
Joined: Sat Jan 11, 2014 4:50 pm

Re: Max 31855 Reading High Temperatures

Post by heypete »

engineertype wrote:I'm learning a lot from the conversation here. If anyone is interested in testing the newer MAX31856 IC I have some breakout boards available. The communication to the IC is different than the MAX31855; you have registers that need to be written to before readings can be made.

I've written an Arduino library for the MAX31856:
https://github.com/engineertype/MAX31856

Cheers,

Peter
I'd be interested in one of those boards if it's not too much trouble...

User avatar
engineertype
 
Posts: 2
Joined: Sun Aug 23, 2015 3:20 pm

Re: Max 31855 Reading High Temperatures

Post by engineertype »

heypete wrote:I'd be interested in one of those boards if it's not too much trouble...
Hmmm, no way to send you a PM. Please contact me through my web site (http://www.whizoo.com/about) and we'll work out the details.

User avatar
heypete
 
Posts: 32
Joined: Sat Jan 11, 2014 4:50 pm

Re: Max 31855 Reading High Temperatures

Post by heypete »

engineertype wrote:
heypete wrote:I'd be interested in one of those boards if it's not too much trouble...
Hmmm, no way to send you a PM. Please contact me through my web site (http://www.whizoo.com/about) and we'll work out the details.
Follow-up: the boards arrived yesterday (thanks!). I tested one of them today in the lab with the thermocouples I ordered and it reads pretty much spot-on using engineerguy's library. The library is clean, compact, and easy to read/modify. The included example program compiles (using the Arduino Uno as a target) to 6552 bytes of flash and uses 346 bytes of RAM leaving plenty of room for other programs on the Arduino.

Liquid nitrogen (actual temperature -196C) is measured to be -190.4C, which is within the reasonable manufacturing variations of thermocouples. Compared to the MAX31855's non-corrected value of -130C, the accuracy of the MAX31856 is outstanding. I measured up to +300C and the measurement was also right on the money. I'm afraid I don't have the capability to accurately heat things to temperatures higher than that, so I can't comment on its accuracy at extremely high temperatures, but I imagine it'd continue to work as expected.

I also really like the "FAULT" LED on the board: it illuminates whenever there's a fault (in my case, the thermocouple got disconnected) and makes it easy to quickly identify that there's a problem.

User avatar
j0hnn0
 
Posts: 3
Joined: Thu Jan 07, 2016 9:35 am

Re: Max 31855 Reading High Temperatures

Post by j0hnn0 »

heypete wrote:
engineertype wrote:
heypete wrote:I'd be interested in one of those boards if it's not too much trouble...
Hmmm, no way to send you a PM. Please contact me through my web site (http://www.whizoo.com/about) and we'll work out the details.
Follow-up: the boards arrived yesterday (thanks!). I tested one of them today in the lab with the thermocouples I ordered and it reads pretty much spot-on using engineerguy's library. The library is clean, compact, and easy to read/modify. The included example program compiles (using the Arduino Uno as a target) to 6552 bytes of flash and uses 346 bytes of RAM leaving plenty of room for other programs on the Arduino.

Liquid nitrogen (actual temperature -196C) is measured to be -190.4C, which is within the reasonable manufacturing variations of thermocouples. Compared to the MAX31855's non-corrected value of -130C, the accuracy of the MAX31856 is outstanding. I measured up to +300C and the measurement was also right on the money. I'm afraid I don't have the capability to accurately heat things to temperatures higher than that, so I can't comment on its accuracy at extremely high temperatures, but I imagine it'd continue to work as expected.

I also really like the "FAULT" LED on the board: it illuminates whenever there's a fault (in my case, the thermocouple got disconnected) and makes it easy to quickly identify that there's a problem.
Bearing in mind that the published boiling point of LN2 can vary by as much as 2 degrees C depending on your altitude. Where I live, at 5000 ft, liquid nitrogen boils at less than -197 C. At 1 atm, (0 ft), the published BP is -195.8 C.

The MAX31856 looks like an excellent device BTW. Just wish I could get hold of some.

User avatar
wmacevoy
 
Posts: 1
Joined: Sat Feb 27, 2016 3:27 am

Re: Max 31855 Reading High Temperatures

Post by wmacevoy »

I am building a kiln (500-1500 deg F) and noticed the large error without the curve compensation. I copied the code from jh421797 and got good results. I added them to a forked version of the library (https://github.com/wmacevoy/Adafruit-MAX31855-library) so you can just create an Adafruit_HighResMAX31855 and use it for corrected results (there is lowRes version in every high res version if you need it).

.... And there is a correct version of the Fahrenheit methods (along with the old misspellings for back-compatibility) as well.

NOTE: heypete's version here: https://learn.adafruit.com/calibrating- ... earization has a bug! The negative profile is incorrect (there is a comma missing leading to the wrong polynomial)..

User avatar
heypete
 
Posts: 32
Joined: Sat Jan 11, 2014 4:50 pm

Re: Max 31855 Reading High Temperatures

Post by heypete »

Thanks for noticing the bug. I'll correct it later today.

User avatar
ashurbr
 
Posts: 28
Joined: Fri Jun 29, 2012 3:14 pm

Re: Max 31855 Reading High Temperatures

Post by ashurbr »

Greetings there, heypete. It's been a while since I looked into the forum, and saw the nice calibration work-up that you put together. Embarrassingly, I see that years ago you asked me some questions about my post from 2013 where I figured out how to back out the emf from the temperature and reference junction temperature readings. Like you I tried what was written in the MAXIM documentation with similar results to yours. Basically, I guessed that the manual was incorrect. Using a thermocouple calibrator, I was able to impose a given emf, then use the 31855 to read it, and through experimentation with known quantities, elucidate the function that I used.

I hope this explains my "tour de force" emf calculation. I think you have already figures out the other things you asked about.

Good luck,

Bob A.

User avatar
heypete
 
Posts: 32
Joined: Sat Jan 11, 2014 4:50 pm

Re: Max 31855 Reading High Temperatures

Post by heypete »

Hi adafruit,

Could you please update my example code at the thermocouple linearization page to fix the bug wmacevoy found?

Here's the buggy line:

Code: Select all

             double c[] = {0.000000000000E+00,  0.394501280250E-01,  0.236223735980E-04 - 0.328589067840E-06, -0.499048287770E-08, -0.675090591730E-10, -0.574103274280E-12, -0.310888728940E-14, -0.104516093650E-16, -0.198892668780E-19, -0.163226974860E-22};
Here's the fixed line:

Code: Select all

             double c[] = {0.000000000000E+00,  0.394501280250E-01,  0.236223735980E-04, -0.328589067840E-06, -0.499048287770E-08, -0.675090591730E-10, -0.574103274280E-12, -0.310888728940E-14, -0.104516093650E-16, -0.198892668780E-19, -0.163226974860E-22};
Thank you!
-Pete

User avatar
heypete
 
Posts: 32
Joined: Sat Jan 11, 2014 4:50 pm

Re: Max 31855 Reading High Temperatures

Post by heypete »

ashurbr wrote:I hope this explains my "tour de force" emf calculation. I think you have already figures out the other things you asked about.

Good luck,

Bob A.
Indeed! No worries: it's easy for messages to slip through the cracks, and I ultimately was able to figure things out. Thanks for the reply.

Cheers!
-Pete

polarys
 
Posts: 3
Joined: Thu Mar 05, 2015 12:58 am

Re: Max 31855 Reading High Temperatures

Post by polarys »

I've ported jh421797's code to python and added it to a fork of the official Adafruit library:

https://github.com/marcn/Adafruit_Python_MAX31855

Instead of "readTempC()" just call "readLinearizedTempC()" instead. I've also added a function called "readState()" that returns a dictionary of the status/fault codes from the MAX31855 (open circuit, short, fault, etc) since it's sometimes handy to have.

UPDATE: this code has been pulled into the main repo, so no need to use my fork (thanks tdicola)
Last edited by polarys on Fri Jun 10, 2016 3:23 pm, edited 1 time in total.

User avatar
rswift
 
Posts: 6
Joined: Mon Apr 25, 2016 2:07 pm

Re: Max 31855 Reading High Temperatures

Post by rswift »

Hello,

I've built an adafruit based coffee bean temperature arrangement following the blog here: http://roasthacker.com/?p=529

It has been my first electronics and micro controller project and I've learnt a great deal from these forums and elsewhere. One thing I've struggled with is fluctuations of on board temperature, i.e. the internal temperature. I've incorporated the linearisation code from this thread, but, due to the fact that the Gene Café coffee roaster is a rotating off axis drum, there is no option but to physically locate the MAX31855 board on the roasting drum, meaning it gets hot. It can be up to 75°C hot. So quite warm, but well within the operating limits according to the data sheet.

What I noticed was that the linearised temperature would not rise as expected (I'm transmitting all the data via WiFi to a gash iOS app I've written to receive UDP broadcast messages) and after some debugging I determined that the chip itself was heating up at a very different rate from the thermocouple junction itself - almost certainly due to the fact that the mass of metal there is mahoosive relative to the chip. When I desoldered the big blue junction and soldered the thermocouple directly to the board, bishbashbosh, the readings became much more consistent and in line with what I'd expect.

Like I say, I'm new to all this, so possibly I've a) done the wrong thing b) not understood, or c) both a & b (no doubt with some unknown d thrown in too).

Anyway, I thought I'd pass on my experience in case it is something for others to think about, this thread has helped me tremendously and I've enjoyed my first adafruit project.

Cheers - Robert...

User avatar
adafruit_support_bill
 
Posts: 84640
Joined: Sat Feb 07, 2009 10:11 am

Re: Max 31855 Reading High Temperatures

Post by adafruit_support_bill »

Yea, the cold-junction compensation assumes that the chip die is at the same temperature as the physical connection to the thermocouple wire. It sounds like your installation has some steep temperature gradients that could invalidate that assumption.

Getting rid of the thermal mass of the terminal block as you have done should help with that. If it is possible to add some insulation between the board and the roaster drum, that may help also.

User avatar
j0hnn0
 
Posts: 3
Joined: Thu Jan 07, 2016 9:35 am

Re: Max 31855 Reading High Temperatures

Post by j0hnn0 »

I've also noticed this, and thought that the board could certainly be improved a bit by running a (possibly unconnected) exposed ground plane fill from underneath the chip to underneath the connector block. Also, the chip could maybe be placed a bit closer to the connector. This would improve their thermal coupling. It remains a great board though. Have used it quite a bit. One more thing on my wish list would be an onboard logic level converter. Some of us still operate 5v logic sometimes :-(

Locked
Please be positive and constructive with your questions and comments.

Return to “Other Products from Adafruit”