MAX31865 sensor reading freezes

Breakout boards, sensors, other Adafruit kits, etc.

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
ToniSniff
 
Posts: 17
Joined: Mon Jul 15, 2019 5:24 am

MAX31865 sensor reading freezes

Post by ToniSniff »

Hi,

I posted below problem already some time ago but I did not receive any response.
As the old thread is locked (why?) but my problem still persists, I re-open it here. My setups comprise some 20-25 of Adafruit max31685 boards of a considerable total worth many of which show the problem described below. So I feel like asking for a bit of support from Adafruit´s side is justifiable. Especially as I - to my understanding - did a precise job on problem description and documentation. Thanks!

#############

Hi everyone,

this is a strange error I experience with several of your PT100 RTD MAX31865 boards

The Problem:
From time to time the temperature (and resistance) readings freezes and returns identical values up tp the last digit. After some time, the reading comes back to life and jumps the where it should have been - see the plateaus of the blue curve in below plot in an otherwise monotonous cooling trend - with no apparent mismatch when extrapolating the previous behaviour.

From what I can tell, freezing and recovery takes place with no apparent external trigger by itself. However, un- and re-plugging the board sometimes removes the freezing for some time until it re-appears.
ada.png
ada.png (86.26 KiB) Viewed 593 times
The setup:
There is a total of 9 RTD boads hooked up the the same Raspberry Pi 4. All share the same 3.3V source and GND. Sensing is done via SPI in star topology. PT100 are connected in 4-point geomety. Mounting holes are enlarged to about the outer diameter of the metallic ring. All boards are screwed to an anodized Al rail with a stripe of sticky tape on the bottom side to prevent unwanted shortcuts and crosstalk across the rail.

*update 2022-05-04: The problem also appears on isolated individual boards just hanging on the wires with no modification at all. Also, sourcing from the +5V pins does not make a difference

The core python code is basically identical with the Adafruit repo. All sensors are read in series once a minute (but sampling rates don´t seem to have any influence)

As far as I can tell, the freezing problem appears with all of the boards. Next to the blue curve I´ve plotted the temperature reading from another RTD board. Also here freezing appears, less prominently though, but there´s no apparent correlation to the blue freezing.

I´ve been using this kind of board for quite some time and I´ve never experienced (or recognized) a problem like this before. So I guess it originates somewhere in the comparably large number of boards in parallel, but otherwise I am out of ideas

*update 2022-05-04: As the problem also appears on setup just comprising one board, I don´t think the parallelization is the likely problem source

User avatar
tfpffr
 
Posts: 6
Joined: Sat Oct 09, 2021 8:03 pm

Re: MAX31865 sensor reading freezes

Post by tfpffr »

Very interesting; those are remarkably low temperatures you are recording. What is the operating temperature of the boards? Are you using probes that are rated that low? The Adafruit Pt100 is not. You said that when the temperature “freezes” the resistance readings also lock up. Did you determine this by reading the voltage drop across the sensor leads with a meter or is that the resistance from the resistance ratio reported by the MAX31865? There is a small glitch in the blue line near the beginning of the trace which appears to correlate with an apparent glitch in the black line, but, as you said, nothing seems to correlate with the large jump mid-trace. I am in Arizona and I sincerely hope that none of my rtd’s will ever see temps like these.
Best of luck, Tim

User avatar
tfpffr
 
Posts: 6
Joined: Sat Oct 09, 2021 8:03 pm

Re: MAX31865 sensor reading freezes

Post by tfpffr »

Very interesting; those are remarkably low temperatures you are recording. What is the operating temperature of the boards? Are you using probes that are rated that low? The Adafruit Pt100 is not. You said that when the temperature “freezes” the resistance readings also lock up. Did you determine this by reading the voltage drop across the sensor leads with a meter or is that the resistance from the resistance ratio reported by the MAX31865? There is a small glitch in the blue line near the beginning of the trace which appears to correlate with an apparent glitch in the black line, but, as you said, nothing seems to correlate with the large jump mid-trace. I am in Arizona and I sincerely hope that none of my rtd’s will ever see temps like these.
Best of luck, Tim

User avatar
ToniSniff
 
Posts: 17
Joined: Mon Jul 15, 2019 5:24 am

Re: MAX31865 sensor reading freezes

Post by ToniSniff »

Hi Tim,

thanks for your thoughts. Let me add mine and some additional informations

(1) the board itself is at ambient temperatures

(2) wires are piecewise ordinary Cu and quad-twisted phosphoros-bronze for low-T applications. The resistance of the leads is of the order of 3 Ohms one way, so 6 Ohms in total. This is much less than the resistance of the PT100 even well below -200°C. I do not see any complications from that side.

(3) Tyipcal tables of PT100 R vs. T go down to -200°C. I strongly suscpect this is due to to the conveniently accessible boiling point of liquid nitrogen at -196°C. Going below is quite some additional effort and for many low-T applications liquid nitrogen will just do fine. From a solid-state pyhsics perspective, the PT100 resistance curve should go down smootly until it levels of at a few K and a few Ohms. There is no reason to believe, that the (at it´s heart metallic) PT100 behaves any different.

(4) There´s a good chance, that the calibration polynomial for T(R) gives a poor fit below -200°C. Still, it should give a tendency and, especially, thermal noise should spoil any identical readings.

(5) Even if there´s some internal logic that stops conversion R -> T at sufficiently low temperatures, the bare resistance should be measured accurately. Freezing, however, also is seen in the R readings. Strangely however, not strictly simultaneously, see below

Code: Select all

date                         temperature (°C)      resistance (Ohms)
2022-05-13 13:03:24.528773	-209.29070353515272	14.4873046875
2022-05-13 13:03:33.118824	-209.29070353515272	14.4873046875
2022-05-13 13:03:42.243193	-209.29070353515272	14.4873046875
2022-05-13 13:03:50.824790	-209.29070353515272	14.4873046875
2022-05-13 13:03:59.370647	-209.29070353515272	14.4873046875
2022-05-13 13:04:07.909003	-209.29070353515272	14.4873046875
2022-05-13 13:04:16.408785	-209.29070353515272	11.58984375
2022-05-13 13:04:24.917056	-209.29070353515272	14.4873046875
2022-05-13 13:04:33.673841	-209.29070353515272	13.03857421875
2022-05-13 13:04:42.515682	-209.29070353515272	14.4873046875
2022-05-13 13:04:51.040152	-209.29070353515272	14.4873046875
2022-05-13 13:04:59.629709	-209.29070353515272	14.4873046875
2022-05-13 13:05:08.224420	-209.29070353515272	39.91357421875
2022-05-13 13:05:16.809954	-209.29070353515272	13.03857421875
2022-05-13 13:05:25.418785	-209.29070353515272	14.4873046875
2022-05-13 13:05:33.937710	-209.29070353515272	39.91357421875
2022-05-13 13:05:42.720377	-209.29070353515272	14.4873046875
2022-05-13 13:05:51.261259	-209.29070353515272	14.4873046875
2022-05-13 13:05:59.830698	-209.29070353515272	13.03857421875
2022-05-13 13:06:08.577796	-209.29070353515272	14.4873046875
2022-05-13 13:06:17.121981	-209.29070353515272	14.4873046875
2022-05-13 13:06:25.845573	-209.29070353515272	14.4873046875
2022-05-13 13:06:34.425974	-209.29070353515272	13.03857421875
2022-05-13 13:06:43.281423	-209.29070353515272	11.58984375
2022-05-13 13:06:51.769732	-209.29070353515272	14.4873046875
while T is just completely identical, R switches between a few numbers and is identical up to the last digit in between

(6) Aside all out-of-range at low-T considerations, the freezing also happens at elevated temperatures well within typical operation ranges.

(7) And finally, I have a number of different experiments where the max31865 + PT100 yields reasonable results down to -230° with no signs of freezing. So it cannot be a general problem of the board.


This is really a conundrum to me. And, to be honest, I am both irritated and disappointed Adafruit does not seem to care.

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

Re: MAX31865 sensor reading freezes

Post by adafruit_support_bill »

(7) And finally, I have a number of different experiments where the max31865 + PT100 yields reasonable results down to -230° with no signs of freezing. So it cannot be a general problem of the board.
If you swap boards with a test configuration that is not showing the problem, does the problem follow the board, or does it seem to be associated with a particular configuration?

User avatar
ToniSniff
 
Posts: 17
Joined: Mon Jul 15, 2019 5:24 am

Re: MAX31865 sensor reading freezes

Post by ToniSniff »

The problem persists when I exchange the board with a board from a comparable low-temperature 4-point setup that works just fine otherwise.

What I wonder is: what could possibly be the reason why the board spits out identical values?
Is there some way that a charge builds up somewhere giving some capacitative disturbance? Or a short somewhere.

From my underdstanding, frozen values are highly unlikely to result from any such analog problem in the circuitry outside the board. It's an analog world and a poor circuitry should give poor, yet noisy and hence non-indentical readings.

More plausible seems a problem inside the IC´s algorithms or inaccessible circuitry. But then, the problem should disappear once theboard is replaced with healty one.

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

Re: MAX31865 sensor reading freezes

Post by adafruit_support_bill »

Can you post some photos and/or a circuit diagram?

Is your code reading the fault status register? There is this test in the datasheet that sounds like it might possibly be relevant:

https://datasheets.maximintegrated.com/ ... X31865.pdf
When an overvoltage or undervoltage condition is
detected, bit D2 of the Fault Status register is set and the
ADC halts conversion updates until the fault is no longer
detected, at which point conversions resume.

User avatar
ToniSniff
 
Posts: 17
Joined: Mon Jul 15, 2019 5:24 am

Re: MAX31865 sensor reading freezes

Post by ToniSniff »

Interesting, thanks for the hint with the conversion halt.

Not quite sure if this is correct, but

Code: Select all

import adafruit_max31865 as ada

spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
cs = digitalio.DigitalInOut(board.D5)

ans = ada.MAX31865(spi,cs)._read_u8(_MAX31865_FAULTSTAT_REG))
reads 0 when freezing occurs. So with the entire register being 0, D2 naturally is too.

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

Re: MAX31865 sensor reading freezes

Post by adafruit_support_bill »

That code looks right. Although conversions resume when the fault goes away, the fault status bits are latched. So they should stay set until explicitly cleared via the configuration register.

Other than a fault condition, I can't think of any other reason for the output to freeze at some arbitrary value. We certainly have not seen that before. Freezing at 0 or 65535 usually indicates a problem on the bus. But it looks like you are reading actual values from the registers.

You might try contacting Maxim to see if they have any insights to offer.

User avatar
ToniSniff
 
Posts: 17
Joined: Mon Jul 15, 2019 5:24 am

Re: MAX31865 sensor reading freezes

Post by ToniSniff »

I could not figure out, why the error is raised (and if this is the origin of the freezing).

So if enyone encounters this problem, let me now...

Until then, my work around is to hook up the MAX31865 board Vcc to a GPIO pin set to HIGH. I make two readings within 100ms and if both are identical, the GPIO pin is set LOW and HIGH again to reboot the MAX31865 board. Not very elegant but it seems to work and amounts only to a few lines of additional code.

Toni

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

Return to “Other Products from Adafruit”