MAX31865 RTD converter

The MAX31865 reads a PT100 or PT1000 platinum RTD as a 15-bit resistance ratio over SPI, with fault thresholds and a data-ready pin.

Aliases: MAX31865 module, Adafruit PT100 RTD amplifier, PT1000 amplifier. A platinum RTD is the most accurate common thermometer: its resistance rises steadily with temperature, 100 ohms at 0 C for a PT100. The MAX31865 measures it against a precise reference resistor on the board.

Pins

Pin What it does
VIN, GND Supply, 3 to 5 V on the board.
CLK, SDI, SDO, CS SPI in mode 1 or 3.
RDY Low when a new result is waiting.

Properties

temperature is the RTD's (the slider changes it), nominal its resistance at 0 C (100 or 1000) and reference the board's reference resistor (430 or 4300).

Reading it on an Arduino

With Adafruit's library, which Mokxi ships as Adafruit_MAX31865.h:

#include <Adafruit_MAX31865.h>
Adafruit_MAX31865 thermo(10, 11, 12, 13);   // CS, SDI, SDO, CLK

void setup() {
  Serial.begin(9600);
  thermo.begin(MAX31865_3WIRE);
}

void loop() {
  Serial.println(thermo.temperature(100.0, 430.0));
  delay(1000);
}

How it talks

The first byte is an address, bit 7 set to write: 0x00 configuration, 0x01 and 0x02 the RTD ratio (the low bit is the fault flag), 0x03 to 0x06 the high and low thresholds, 0x07 the fault status. With the bias on (configuration bit 7), a one shot (bit 5) takes 52 ms; automatic mode (bit 6) converts every 16.7 ms. The ratio is R_RTD / R_REF x 32768.

What it does not model

The wire count's effect on the reading, the fault detection cycle's voltage tests (an open probe reports a high-threshold and REFIN- fault), and mains noise.

Common mistakes

Reading with the bias off: nothing converts. Using a PT1000's numbers with a PT100 board: set nominal and reference to match the probe and the board.