2-Wire PT100 Max31865 Troubleshooting

Hi everyone,

I am attempting to use the following sensor with my Arduino:

It is a PT100 2-wire sensor, and so I ordered the Adafruit MAX31865 breakout board to be able to convert it to a temperature for my arduino:

Right now, when I run the example code provided:

/*************************************************** 
  This is a library for the Adafruit PT100/P1000 RTD Sensor w/MAX31865

  Designed specifically to work with the Adafruit RTD Sensor
  ----> https://www.adafruit.com/products/3328

  This sensor uses SPI to communicate, 4 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

#include <Adafruit_MAX31865.h>

// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 thermo = Adafruit_MAX31865(10, 11, 12, 13);
// use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 thermo = Adafruit_MAX31865(10);

// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000
#define RREF      430.0
// The 'nominal' 0-degrees-C resistance of the sensor
// 100.0 for PT100, 1000.0 for PT1000
#define RNOMINAL  100.0

void setup() {
  Serial.begin(9600);
  Serial.println("Adafruit MAX31865 PT100 Sensor Test!");

  thermo.begin(MAX31865_2WIRE);  // set to 2WIRE or 4WIRE as necessary
}


void loop() {
  
  uint16_t rtd = thermo.readRTD();

  Serial.print("RTD value: "); Serial.println(rtd);
  float ratio = rtd;
  ratio /= 32768;
  Serial.print("Ratio = "); Serial.println(ratio,8);
  Serial.print("Resistance = "); Serial.println(RREF*ratio,8);
  Serial.print("Temperature = "); Serial.println(thermo.temperature(RNOMINAL, RREF));

  // Check and print any faults
  uint8_t fault = thermo.readFault();
  if (fault) {
    Serial.print("Fault 0x"); Serial.println(fault, HEX);
    if (fault & MAX31865_FAULT_HIGHTHRESH) {
      Serial.println("RTD High Threshold"); 
    }
    if (fault & MAX31865_FAULT_LOWTHRESH) {
      Serial.println("RTD Low Threshold"); 
    }
    if (fault & MAX31865_FAULT_REFINLOW) {
      Serial.println("REFIN- > 0.85 x Bias"); 
    }
    if (fault & MAX31865_FAULT_REFINHIGH) {
      Serial.println("REFIN- < 0.85 x Bias - FORCE- open"); 
    }
    if (fault & MAX31865_FAULT_RTDINLOW) {
      Serial.println("RTDIN- < 0.85 x Bias - FORCE- open"); 
    }
    if (fault & MAX31865_FAULT_OVUV) {
      Serial.println("Under/Over voltage"); 
    }
    thermo.clearFault();
    
  }
  Serial.println();
  delay(1000);
  
}

I get the following output:

RTD value: 0
Ratio = 0.00000000
Resistance = 0.00000000
Temperature = -242.02

When I measure across the two wires using a multimeter, I get the expected resistance reading for room temperature. I will put pictures below of my current setup:

When I measure across the solder blobs below the two terminal blocks, I get the correct resistance, so I know those connections are good. I have two boards and am getting the same issue with both, so I would be surprised if the board was the issue. Anyone have any experience with this?

I suggest to enable the fault detection and report code in the example, in order to see what the sensor identifies as the problem.

It is currently commented out, along with all the other code in loop(), including reading the sensor value. So, how did you manage to get the posted printout?

Sorry, that wasn't commented out when I was running it. Editing the post now to reflect that.

Please do not edit the original post, as it makes the thread very difficult to follow.
Post the corrected code in a separate post.

What fault report was issued, if any?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.