Overview
The MAX31865 is a high-precision 15-bit resistance-to-digital converter manufactured by Maxim Integrated (Analog Devices). Designed specifically to interface with Platinum Resistance Temperature Detectors (PT100 and PT1000 RTDs), it replaces complex analog instrumentation op-amp circuits with a single digital SPI IC.
Supporting 2-wire, 3-wire, and 4-wire RTD configurations, the MAX31865 achieves an ultra-fine resolution of ( per LSB) across extreme temperature ranges ( to ). It incorporates built-in fault detection (detecting open RTD elements, short circuits to ground/, and over-range temperatures).
Quick reference
Operating voltage (VIN) | 3.3 V to 5.0 V DC (breakout includes 3.3V LDO regulator) |
IC supply voltage (VDD) | 3.0 V to 3.6 V DC (3.3 V nominal) |
| Interface | SPI (Mode 1 or Mode 3, up to 5 MHz) |
| Supported RTD types | PT100 ( nominal at ) & PT1000 ( nominal at ) |
| Wiring modes | 2-Wire, 3-Wire, and 4-Wire RTD probe connections |
| ADC resolution | 15-bit Delta-Sigma ADC ( LSB) |
| Temperature accuracy | total accuracy (over full range) |
| Fault detection | Detects open RTD wire, short to GND, short to VCC, and out-of-range thresholds |
| Reference resistor () | or for PT100 ( or for PT1000) |
Pinout
Breakout module header & Terminal Block:
| Pin | Name | Type | Description |
|---|---|---|---|
| 1 | VIN | Power | Supply power input (+3.3 V to +5.0 V DC) |
| 2 | GND | Power | Ground reference (0 V) |
| 3 | 3V3 | Power Output | Regulated 3.3V power output pin |
| 4 | SDO / MISO | Digital Output | SPI Master Input Slave Output |
| 5 | SDI / MOSI | Digital Input | SPI Master Output Slave Input |
| 6 | CS | Digital Input | Active-Low SPI Chip Select |
| 7 | CLK / SCLK | Digital Input | SPI Serial Clock |
| 8 | RDY | Digital Output | Active-Low Data Ready interrupt output pin |
Specifications
| Parameter | Symbol | Min | Typ | Max | Unit | Conditions |
|---|---|---|---|---|---|---|
| Supply Voltage (Module) | 3.3 | 3.3 / 5.0 | 5.5 | V | Power rail with LDO | |
| Active Current | — | 2.0 | 3.5 | mA | Active conversion mode | |
| Shutdown Current | — | 1.0 | 10.0 | µA | Software shutdown | |
| ADC Resolution | — | 15 | — | bits | 2's complement 15-bit word | |
| Nominal Resistance (PT100) | — | 100 | — | Ω | Resistance at | |
| Reference Resistor (PT100) | 400 | 430 | 430 | Ω | Precision reference resistor | |
| Conversion Time | 21 | 52 | 62 | ms | 50 Hz / 60 Hz rejection mode |
RTD Resistance & Temperature Calculation Math
- Calculate RTD Resistance ():
- Callendar-Van Dusen Equation ():
Where and .
Wiring (3-Wire PT100 Probe)
| MAX31865 Pin | → | Arduino / MCU | ESP32 | Notes |
|---|---|---|---|---|
VIN | 5V / 3.3V | 3.3V | Power rail | |
GND | GND | GND | System ground | |
CS | Digital D10 | GPIO 5 | SPI Chip Select | |
SDI (MOSI) | Digital D11 | GPIO 23 | SPI MOSI | |
SDO (MISO) | Digital D12 | GPIO 19 | SPI MISO | |
CLK (SCLK) | Digital D13 | GPIO 18 | SPI Clock |
Important
Solder Jumper Configuration (2-Wire / 3-Wire / 4-Wire):
- 3-Wire RTD Probe (Most Common): Cut the thin trace between the
24solder pads, solder the3pad closed, and solder the2/3 Wirejumper pad closed. Connect 2 matching wires toRTD+/F+and 1 wire toRTD-. - 2-Wire RTD Probe: Solder the
24jumper pad closed and short terminalF+toRTD+andF-toRTD-.
Example (Adafruit_MAX31865 Library)
cpp
#include <Adafruit_MAX31865.h>
// Use hardware SPI with CS pin 10
Adafruit_MAX31865 thermo = Adafruit_MAX31865(10);
// Set Reference Resistor (430 ohms for PT100)
#define RREF 430.0
// Set Nominal 0°C Resistance (100 ohms for PT100)
#define RNOMINAL 100.0
void setup() {
Serial.begin(115200);
Serial.println("Adafruit MAX31865 PT100 RTD Test");
thermo.begin(MAX31865_3WIRE); // Configured for 3-wire PT100
}
void loop() {
uint16_t rtd = thermo.readRTD();
float ratio = rtd / 32768.0;
float resistance = RREF * ratio;
float temp = thermo.temperature(RNOMINAL, RREF);
Serial.print("RTD Raw ADC: "); Serial.print(rtd);
Serial.print(" | Resistance: "); Serial.print(resistance); Serial.print(" Ω");
Serial.print(" | Temperature: "); Serial.print(temp); Serial.println(" °C");
// Check for faults
uint8_t fault = thermo.readFault();
if (fault) {
Serial.print("Fault 0x"); Serial.println(fault, HEX);
thermo.clearFault();
}
delay(1000);
}
Common mistakes
- Mismatched value in software: Standard Adafruit/generic breakout boards use a reference resistor () for PT100. Setting in code introduces a measurement error.
- Selecting wrong wire jumpers: Failing to configure 2-wire / 3-wire PCB solder jumpers to match the connected physical PT100 probe triggers constant
RTD INLOWorRTD INHIGHfault flags.
Notes
- MAX31865 vs MAX31855: MAX31865 interfaces with RTDs (PT100/PT1000); MAX31855 interfaces with Thermocouples (K-Type).
Assets & downloads
- datasheetdatasheet
- product-pagereference