0

Max 31855 Reading High Temperatures
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

Re: Max 31855 Reading High Temperatures

by Declan on Thu Aug 20, 2015 5:45 am

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?"

Declan
 
Posts: 11
Joined: Mon Aug 17, 2015 4:48 am

Re: Max 31855 Reading High Temperatures

by engineertype on Sun Aug 23, 2015 3:30 pm

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

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

Re: Max 31855 Reading High Temperatures

by heypete on Sun Aug 23, 2015 4:52 pm

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...

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

Re: Max 31855 Reading High Temperatures

by engineertype on Sun Aug 23, 2015 5:17 pm

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.

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

Re: Max 31855 Reading High Temperatures

by heypete on Wed Sep 02, 2015 5:16 am

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.

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

Re: Max 31855 Reading High Temperatures

by j0hnn0 on Thu Jan 07, 2016 9:40 am

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.

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

Re: Max 31855 Reading High Temperatures

by wmacevoy on Sat Feb 27, 2016 3:50 am

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)..

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

Re: Max 31855 Reading High Temperatures

by heypete on Sat Feb 27, 2016 11:32 am

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

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

Re: Max 31855 Reading High Temperatures

by ashurbr on Fri Mar 04, 2016 12:29 am

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.

ashurbr
 
Posts: 21
Joined: Fri Jun 29, 2012 3:14 pm

Re: Max 31855 Reading High Temperatures

by heypete on Fri Mar 04, 2016 8:36 am

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 | TOGGLE FULL SIZE
             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 | TOGGLE FULL SIZE
             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

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

Re: Max 31855 Reading High Temperatures

by heypete on Fri Mar 04, 2016 8:37 am

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

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

Re: Max 31855 Reading High Temperatures

by polarys on Mon May 23, 2016 3:43 am

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.

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

Re: Max 31855 Reading High Temperatures

by rswift on Fri Jun 10, 2016 11:58 am

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...

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

Re: Max 31855 Reading High Temperatures

by adafruit_support_bill on Fri Jun 10, 2016 12:12 pm

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.

adafruit_support_bill
 
Posts: 62199
Joined: Sat Feb 07, 2009 10:11 am

Re: Max 31855 Reading High Temperatures

by j0hnn0 on Fri Jun 10, 2016 7:34 pm

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 :-(

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

Please be positive and constructive with your questions and comments.