1.) The MAX31865 board dumps a whopping ~4 ma into a Pt100 sensor at room temperature causing visible self-heating while the resistance stabilizes. Sampling it less frequently made no difference until the bias voltage was shut off after reading in ReadRTD(). With the bias voltage strobed only as needed and the RTD sampled at 15+ second intervals, self-heating was at a tolerable minimum.
A patch file, were it uploadable, would look like:
Code: Select all
*** Adafruit_MAX31865.cpp 2017-02-22 18:26:54.216557800 -0600
--- Adafruit_MAX31865.cpp 2017-02-22 18:26:54.216557800 -0600
***************
*** 184,189 ****
--- 184,190 ----
delay(65);
uint16_t rtd = readRegister16(MAX31856_RTDMSB_REG);
+ enableBias(false); // to lessen sensor self-heating
// remove fault
rtd >>= 1;
Nothing to be done in the hardware however it could be much mitigated by a nice short video on calibrating the sensor in ice+water and how the 0C offset is subtracted from computed temperatures.
Canonical Lists of Pt100 RTD Class A and Class B tolerance limits are had Pythonically:
Code: Select all
ClassA_tolerances = [(T,(0.15 + abs(0.002 * T))) for T in range(-200,851)]
ClassB_tolerances = [(T,(0.30 + abs(0.005 * T))) for T in range(-200,851)]
The definitive temperature conversion code is a NIST or ITS-90 resistance lookup table with interpolation for intermediate resistances. A preliminary Arduino Uno-type library module is ready but needs more testing and prettyfication before release into the wild.
I hate GitHub, hate pull requests, would rather hand off the library to Adafruit.
4.) The foregoing suggests a need for a more accurate (= more expensive) Pt100 RTD interface board with the usual fixtures such as a constant current excitation source <= 1ma and a marginally better dual ADC, perhaps 16-18 bits. All the usual suspects (TI,Linear,Analog,etc) have a reference design. Can a feasibility discussion be had on this?