MAX31865 and PT100 inaccurate measurement

Hello to everyone, I have a PT100 (2 wires) connected to MAX31865 and an Arduino UNO, all my connections and the code are right.
I get temperatures values but with an offset around + 10 Celsius.
ex. room temp around 20 C and the measuring temp from PT100 around 29 C. Why I get these inaccurate measurements?

Thanks

PT100 is a very old but still used sensor. Can You refresh my dusty knowledge about the principle of the PT100? Is it resistive or current sending?
Pleasy supply Your wiring diagram.

Platinum Thermistor.
Designed for a wide temp range.
Maybe not so good for room temps.

Where did you source the parts from (links).
Does the 'Ref resistor' have three or four digits (5% or 1% tolerance).
Read the "how to post" sticky if you don't want us to guess.
Leo..

2 wire connection is prone to large errors as the lead resistance adds to the reading. Try to go 3or 4 wire connection or throw it away as use a DS1820 .

Passing a current through a platinum resistance temperature detector (RTD) generates a voltage across the RTD. By measuring this voltage, you can determine its resistance and, thus, its temperature. The relationship between resistance and temperature is relatively linear. The PT100 has 100Ω at 0C.

I followed this adafruit tutorial

The Ref resistor is at 430, I'm not sure for the tolerance but I think it was 5%
I have tested with hot water but again I get wrong measurements.

The reason I chouse the PT100 over other sensors is the range of measuring and mostly the specific need of a sensor diamiaterØ4

Okey. You feed a controlled current through the "power lines" and use the other lines for sencing the voltage. Correct I think. Can You use good multimeters to check the current used as well as the voltage produced as close to the UNO as possible and calculate the temperature manually?

I believe it is a bit difficult to get any accurate measurements with that method. this is the reason I use the MAX31865 amplifier, is designed to read the low resistance and automatically adjust and compensate for the resistance of the connecting wires.

The difficult task is to first generate a precise current and read the voltage with precision but the method is okey. How about Your UNO? What is the ref voltage? UNOs built in ref or a precision external ref? Topics have been penetrating this subject. What is the test current, what is the voltage swing from the MAX31865? Is it a resolution problem? A standard approach in an UNO is 10 bits for the range 0f 0 to 5 volts. That gives 5/1024 volts per bit. What does that resolution mean to the final voltage calculated?

The MAX31865 does everything for you, and sends out the result as a digital signal.
Wrong temp could mean bad sensor, connection, soldering, supply, couterfeit or cheap parts (ebay), wrong code, etc.
No answers possible until we have all the facts.

Easy answer: subtract 9 degrees from the returned result.
Leo..

Subracting the error is one step. What about heating the sensor up to a controlled temperature like boiling water, 100 degrees Cecius, and check linearity as well?

You’ve stated you used a 430 ohm resistor. That will result in the error you are experiencing.

Please read the datasheet. You need a decent quality 400 ohm 1% metal film resistor for Rref, not a cheap 5% carbon film part with a nasty temperature coefficient.

WattsThat:
You’ve stated you used a 430 ohm resistor. That will result in the error you are experiencing.

Please read the datasheet. You need a decent quality 400 ohm 1% metal film resistor for Rref, not a cheap 5% carbon film part with a nasty temperature coefficient.

I agree, to test the solution, as 400R are not standard, use 4 x 100R resistors in series to see if you get a closer reading.
Tom… :slight_smile:

And remember room temperature is close to 300 Kelvin. So a 5% error is 15 degrees, not 5% of the temperature in C.

OP did not say where he got the sensor board and PT100 from.
Adafruit uses a 430ohm 0.1% resistor on it's PT100 boards (four digits, 4300 = 430 with 0 zeros).
Leo..

Hi,
Can you post a picture of your MAX board please.

If it is the one from Adafruit, you only need to connect the PT100 and solder the links to set it up for 2 wire.

Thanks.. Tom.. :slight_smile:

Of course you can use a 430 ohm resistor but then the scaling changes since the ADC output is equal to the ratio of the sensor to Rref. Using 400 ohms makes it a simple divide by 4 with a 100 ohm RTD.

Since the OP hasn’t posted his code or the source of his library (if any), we really don’t know what calculation is taking place. It’s an assumption on my part the resistor is the source of the trouble. A 430 ohm 5% part could be as low as 410R or as high 450R.

If you want precision on the output, you’ve got to start with precision on the input. A PT100 is pretty precise. What we don’t know is what is downstream from it, both in hardware and software.

Just another typical thread where we play guessing games with posters who want help but don’t help us with the relevant information.