..... while i develop a proper(read: to the best of my abilities) NIST based cold junction compensation code, i would advise anyone here to only use this code/chip with + temperatures...

At -80c this chip reads -40c.
The chip uses a CONSTANT linearization which QUICKLY goes to hell at negative temperatures.... i suspect the same for positive temps.

G._________________CCS PCM 4.135 & CCS PCH 5.013

Gabriel

Joined: 03 Aug 2009Posts: 969Location: Panama

Posted: Sat Dec 12, 2015 5:19 pm

MAX31855 users be advised: there are at least 5 bad batches of IC's.
I just found out ALL of mine are from said bad batches....

I just wasted 3 days calculating nth order polynomials.... but on the bright side when i get replacements, i will post NIST compensated code for 0 to -200C

This sucks... i missed a deadline due to poor quality control.

16/04/2018 - I should update this and mention that the guys at MAXIM where SPLENDID with their customer service related to the bad batch of IC's. I apologize for not doing it sooner. They helped me get refund, new chips and some pretty cool App notes.

G._________________CCS PCM 4.135 & CCS PCH 5.013

Last edited by Gabriel on Mon Apr 16, 2018 1:13 pm; edited 1 time in total

Gabriel

Joined: 03 Aug 2009Posts: 969Location: Panama

Posted: Thu Dec 24, 2015 6:01 pm

Hi All,

Merry Christmas.

This is my modified Driver for the MAX31855 based on the OP's original driver.
Mine is Optimized for Negative Temperatures.

It does NOTHING For positive temperatures... it literally just spits the data straight from the MAX31855.

I have tested this driver down to -85C, and I am currently monitoring 3 medical freezers with it, and its working pretty good.

I have externally linearized the results (NEGATIVE ONLY) based on the MAXIM guidelines, but Ive eliminated complex calculations in favor of Lookup Tables.

I am using Floats as a result... i didn't have the time to optimize this for Integer math.

you can tell the driver is a bit RUSHED but it WORKS and its ACCURATE.

THIS FUNCTION UPDATES A GLOBAL VARIABLE CALLED "TEMPERATURE"
This goes in my Main Program.c