How to Use PT-100 RTD with MAX31865 Module and Arduino

Temperature measurement is a critical parameter in almost every engineering system—whether it’s 3D printing, industrial automation, HVAC, heat treatment, or laboratory research. While common sensors like thermistors and thermocouples are easy to use, they often fall short when accuracy, stability, and repeatability are required. RTD PT-100 temperature sensors are widely used when high accuracy and stable readings are required.

In this article, you’ll learn how to interface a 3-wire PT-100 RTD temperature sensor with the MAX31865 RTD-to-Digital Converter Module using Arduino.
We’ll cover working principle, wiring, circuit, Arduino code, calibration tips, and real-world applications—all explained step by step.

What is RTD Sensor?

Resistance Temperature Detectors (RTDs) are sensors in which the electrical resistance changes with temperature. Platinum is the most commonly used and most accurate material, and RTDs made with platinum are called PT-RTDs. Other metals such as nickel and copper can also be used to make RTDs. Platinum RTDs have a wide operating temperature range (up to more than +800 °C), high accuracy, good repeatability, and fairly linear response.

3 Wire RTD
3 Wire RTD

PT-RTDs

For PT-RTDs, the most common nominal resistance values at 0 °C are 100 Ω and 1000 Ω, although other values are also available. The average rate at which resistance changes with temperature between 0 °C and +100 °C is called alpha (α). This value depends on the purity of the platinum and the amount of impurities present. The two most commonly used alpha values are 0.00385 and 0.00392, which correspond to the IEC 751 (PT100) standard and the SAMA standard, respectively.

Callendar-Van Dusen equation

The relationship between resistance and temperature in an RTD is mostly linear, but it has a small amount of curvature. This behavior is described by the Callendar–Van Dusen equation, which accurately represents how RTD resistance changes with temperature:

R(T) = R₀ (1 + aT + bT² + c(T − 100)T³)

Where:

  • T is the temperature in °C
  • R(T) is the resistance at temperature T
  • R₀ is the resistance at 0 °C

According to the IEC 751 standard, the value of α (alpha) is 0.00385055, and the Callendar–Van Dusen coefficients are:

  • a = 3.90830 × 10⁻³
  • b = −5.77500 × 10⁻⁷
  • c = −4.18301 × 10⁻¹² for temperatures from −200 °C to 0 °C
  • c = 0 for temperatures from 0 °C to +850 °C
PT100 RTD resistance vs. temperature
PT100 RTD resistance vs. temperature

The resistance-versus-temperature curve for a PT100 RTD closely follows this equation. A straight-line approximation is often used for simplicity, based on the slope between 0 °C and +100 °C, but the Callendar–Van Dusen equation provides more accurate results over a wide temperature range.

To obtain accurate temperature readings, especially at higher temperatures, this equation must be used to account for the non-linear behavior of the RTD. However, when using the Adafruit_MAX31865 library, this calculation is already implemented internally. Because of this, the user does not need to manually apply the Callendar–Van Dusen equation, and the temperature values provided by the library are already compensated and accurate.

What is RTD PT-100 Temperature Sensor?

An RTD (Resistance Temperature Detector) is a sensor whose electrical resistance changes predictably with temperature.
Platinum RTDs are preferred because platinum offers:

  • Excellent linearity
  • Long-term stability
  • High accuracy over a wide temperature range

Why It’s Called PT-100

This temperature is called as “PT-100” due to its material and its temperature-resistance relationship characteristics shown below:

  • PT → Platinum element
  • 100 → Resistance is 100 Ω at 0°C

As temperature increases, the resistance increases in a nearly linear manner.

PT-100 Key Characteristics

Characteristics Value
Resistance @ 0°C100 Ω
Temperature Range−200°C to +850°C
AccuracyVery High
DriftExtremely Low
Industrial AcceptanceGlobal Standard

Types of Wiring Configurations in RTDs

RTD sensors are available in different wiring configurations. The number of wires mainly affects measurement accuracy by handling the resistance of connecting wires. RTDs come in 2-wire, 3-wire, or 4-wire configurations, with the 3-wire configuration being the most common one.

wiring schematics of RTDs
wiring schematics of RTDs

2 Wire RTDs
In a 2-wire RTD, the same two wires are used to supply current and measure resistance. The resistance of the lead wires adds to the sensor resistance, which causes measurement error. This configuration is simple and low cost, but accuracy is limited. It is suitable only for short cable lengths and low-precision applications.

2 wire RTD connection with MAX31865
2 wire RTD connection with MAX31865

3-Wire RTD
A 3-wire RTD uses an additional wire to reduce the effect of lead wire resistance. The measuring circuit assumes that the two lead wires have equal resistance and compensates for most of the error. This configuration offers much better accuracy than a 2-wire RTD and is widely used in industrial applications.

3 wire RTD connection with MAX31865
3 wire RTD connection with MAX31865

4-Wire RTD
A 4-wire RTD completely eliminates the effect of lead wire resistance by using separate wires for current supply and voltage measurement. This provides the highest accuracy among all configurations and is the most complex. Because of its higher cost and complexity, it is mainly used in laboratories and high-precision measurement systems.

4 wire RTD connection with MAX31865
4 wire RTD connection with MAX31865

Why Choose a 3-Wire PT-100 Configuration?

RTD sensors are available in 2-wire, 3-wire, and 4-wire configurations.

The Problem with Lead Resistance

RTDs measure resistance. Long connecting wires also have resistance. This extra resistance causes error in temperature reading.
Long wires add extra resistance → measurement error.
Therefore 2 Wire has low accuracy and 4 wire has very high accuracy but costs more.

Solution: 3-Wire RTD

A 3-wire configuration compensates for lead wire resistance electronically, making it the most widely used industrial standard.

Comparison Table

RTD TypeAccuracyCostUsage
2-WireLowLowShort cables
3-WireHighMediumIndustrial & research
4-WireVery HighHighMetrology labs

For Arduino-based projects, 3-wire PT-100 is the best balance. In this tutorial also, I am using a 3-Wire RTD temperature sensor.

Testing a PT100 RTD Using a Multimeter

RTDs have very low resistance, and the resistance of long connecting wires (often 1–4 Ω) can cause noticeable temperature errors. Even a small wire resistance can result in an error of 0.5 °C or more, which is not acceptable for precise temperature measurement.

For 2-wire, 3-wire, and 4-wire RTD configurations: You can check whether a PT100 RTD is working correctly using a digital multimeter set to resistance (Ω) mode. The test is simple and helps confirm that the sensor is not broken or shorted. Images shown below in this section are taken from adafruit.com

Testing a 2-Wire PT100 RTD

  • Set the multimeter to resistance (Ω) mode.
  • Connect the multimeter probes to the two RTD wires (102Ω).
  • If you then place the sensor into an ice bath (0°C) the resistance should drop to 100Ω (For example, at 0 °C, even if the total measured resistance is 102 Ω due to wire resistance, the measurement system subtracts the wire resistance and correctly calculates 100 Ω for the RTD).
  • At room temperature (around 25 °C), the resistance should be close to 109–110 Ω.

Result check:

  • Near 0 Ω → Short circuit (faulty sensor)
  • Resistance near 100 Ω at 0 °C → Sensor is OK
  • Very high or infinite resistance → Open circuit (faulty sensor)
Testing a 2-Wire PT100 RTD
Testing a 3-Wire PT100 RTD

Testing a 3-Wire PT100 RTD

  • Identify the two same-color wires and the one different-color wire.
  • Measure resistance between the two same-color wires → reading should be very low (lead resistance only – 2 Ω ).
  • Measure resistance between each same-color wire and the different-color wire.
  • Both readings should be nearly equal and close to the expected PT100 value (about 109–110 Ω at room temperature).

Result check:

  • Large difference between readings → Possible wire or sensor damage
  • Equal readings → Sensor is working correctly

Testing a 4-Wire PT100 RTD

  • Measure resistance between the two current wires.
  • Measure resistance between the two voltage-sense wires.
  • Both measurements should give almost the same resistance value, close to the PT100 resistance at the current temperature.

Result check:

  • Very low resistance → Short circuit
  • Similar resistance values → Sensor is OK
  • No reading or very high resistance → Open circuit
Testing a 4-Wire PT100 RTD

Quick Tip 💡

  • If possible, place the sensor tip in ice water (0 °C). The resistance should be very close to 100 Ω, which confirms correct operation.

This simple multimeter test works for all RTD wiring configurations and is useful before connecting the PT100 to a measurement circuit or module.

What is the MAX31865 Module?

The MAX31865 is a special IC that converts RTD resistance into digital temperature data. Instead of manually measuring resistance measuring resistance using ADCs (which is noisy and inaccurate), this module does everything internally and sends accurate data to Arduino using SPI communication. We can also say that the MAX31865 is a precision RTD-to-Digital Converter IC specifically designed for PT-100 and PT-1000 sensors.

MAX31865 Module
MAX31865 Module

Key Features of MAX31865

  • Supports PT-100 and PT-1000
  • 2-wire, 3-wire, and 4-wire RTDs
  • High-resolution 15-bit ADC
  • Built-in fault detection for broken sensors
  • SPI interface (noise-resistant)
  • Ideal for industrial environments

MAX31865 Pin Description

PinDescription
VIN3.3V / 5V supply
GNDGround
SCKSPI Clock
SDISPI MOSI
SDOSPI MISO
CSChip Select
RTD+ / RTD-PT-100 connection
Pin Configuration of MAX31865
Pin Configuration of MAX31865

The detailed technical description of the MAX31865 module can be seen in its data sheet.

Set jumper on MAX31865 board to 3-wire mode

Before connecting the PT100 sensor, the MAX31865 breakout board must be configured for 3-wire RTD Mode.

Steps to configure the board:

  1. Solder the pads labeled “2/3 Wire” together.
  2. In the section labeled “2/4 3”, solder the two right-most pads together.
  3. Cut the thin trace between the two left-most pads in the same “2/4 3” section.
setting MAX31865 in 3 wire mode
Setting MAX31865 in 3 wire mode

Important notes:

  • The trace to be cut is very thin and may be hard to see.
  • Use a sharp knife or blade and avoid cutting nearby traces.
  • After cutting, use a multimeter in continuity mode to confirm there is no electrical connection between the left and right pads.

Once these steps are completed, the MAX31865 board is correctly set for 3-wire PT100 RTD operation.

Circuit Connection: PT-100 + MAX31865 + Arduino

Connecting the 3-Wire PT-100

  • Two identical-color wires → RTD+
  • Single different-color wire → RTD-
  • Set jumper on MAX31865 board to 3-wire mode

⚠️ Wrong jumper setting is the #1 cause of incorrect readings.

How to Connect PT-100 (3-Wire) with MAX31865 and Arduino

I am explaining Step-by-Step Circuit Connection below:

Things Required

  • PT-100 3-wire temperature sensor
  • MAX31865 RTD module
  • Arduino UNO (or compatible)
  • Jumper wires
  • USB cable

Step 1: Power Off the Arduino

Before making any connections:

  • Disconnect the USB cable from Arduino
  • Make sure no power is supplied

This helps avoid damage to the module and Arduino.

Step 2: Identify MAX31865 Pins

On the MAX31865 module, locate these pins:

  • VIN
  • GND
  • SCK
  • SDI
  • SDO
  • CS
  • RTD+
  • RTD-

Check the labels printed on the PCB, as shown in a figure above.

Step 3: Connect Power Supply

  1. Connect VIN of MAX31865 to 5V pin of Arduino
  2. Connect GND of MAX31865 to GND pin of Arduino

This supplies power to the MAX31865 module (but keep the power supply off for now).

Arduino connection with MAX31865 and PT-100  RTD
Arduino connection with MAX31865 and PT-100 RTD

Step 4: Connect SPI Communication Pins

Now connect the SPI pins between Arduino UNO and MAX31865.

  1. Connect SCK of MAX31865 to D13 of Arduino
  2. Connect SDI of MAX31865 to D11 of Arduino
  3. Connect SDO of MAX31865 to D12 of Arduino
  4. Connect CS of MAX31865 to D10 of Arduino

These connections allow Arduino to read temperature data from the module.

Step 5: Set the MAX31865 Module to 3-Wire Mode

  • This step has already been explained above with complete detail, Follow it carefully. On the MAX31865 board, locate the wire-selection jumper Set the jumper to 3-wire configuration.

💡 This step is very important. Wrong jumper setting will give incorrect temperature readings.

Step 6: Identify PT-100 Sensor Wires

A 3-wire PT-100 sensor usually has:

  • Two wires of the same color
  • One wire of a different color

Example:

  • Two red wires → same color
  • One white wire → different color

Step 7: Connect PT-100 to MAX31865

  1. Connect the two same-color wires of PT-100 to RTD+ terminals
  2. Connect the single different-color wire to RTD- terminal

Tighten the screw terminals properly to avoid loose contact.

Step 8: Recheck All Connections

Before powering ON:

  • Check power connections
  • Check SPI pin connections
  • Confirm jumper is set to 3-wire mode
  • Confirm PT-100 wires are firmly connected

Step 9: Power the Arduino

  • Connect USB cable to Arduino
  • Open Arduino IDE
  • Upload the MAX31865 Arduino code (as given below)

After uploading:

  • Open Serial Monitor
  • Set baud rate to 9600
  • Temperature value should appear in °C

Step 10: Verify Sensor Operation

  • Touch the PT-100 probe with your hand
  • Temperature value should slowly increase
  • This confirms the circuit is working correctly

Summary of Connections for Arduino UNO to MAX31865 (SPI)

MAX31865 PinArduino UNO Pin
VIN5V
GNDGND
SCKD13
SDID11
SDOD12
CSD10
RTD+Two same-color PT-100 wires
RTD-Single different-color PT-100 wire

How the System Works

  1. MAX31865 injects a constant current into the PT-100
  2. PT-100 resistance changes with temperature
  3. MAX31865 measures resistance precisely
  4. Resistance is converted to temperature internally
  5. Arduino reads temperature digitally via SPI

This method eliminates ADC noise, wire resistance errors, and calibration complexity.

Arduino Code for PT-100 + MAX31865

Download Adafruit_MAX31865 library

Before proceeding to the Arduino code for PT-100 RTD and MAX31865, we must have the library of MAX31865 module. Therefore, the process steps for downloading the MAX31865 library in Arduino IDE is given in the image below. Follow these steps and install the library first.

max31865 arduino library download
MAX31865 Arduino library download process
#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_3WIRE);  // 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);
}

Calibration Tips for Maximum Accuracy

  • Use shielded twisted-pair cables
  • Keep RTD wires away from heaters & motors
  • Verify RREF resistor value on your module
  • Perform ice-bath calibration (0°C)
  • Average multiple readings in software

💡 With proper setup, accuracy better than ±0.3°C is achievable.

Where This Setup Is Used (Real-World Applications)

PT-100 vs Thermocouple vs Thermistor

SensorAccuracyStabilityBest Use
PT-100 RTD⭐⭐⭐⭐⭐ExcellentIndustrial & research
Thermocouple⭐⭐⭐MediumVery high temperatures
Thermistor⭐⭐⭐⭐LowConsumer electronics

👉 If precision and repeatability matter, PT-100 wins.

Conclusion

The combination of a 3-wire PT-100 RTD and MAX31865 module with Arduino delivers industrial-grade temperature measurement with digital simplicity.
It’s one of the best temperature sensing solutions for serious electronics, mechatronics, and research projects.

If you’re building professional systems—not just hobby demos—this setup is worth every rupee.

Frequently Asked Questions (FAQs)

What is a PT100 RTD temperature sensor?

A PT100 is a resistance temperature detector made from platinum. It has a resistance of 100 ohms at 0 °C and provides accurate and stable temperature measurements.

Why is PT100 more accurate than thermistors?

PT100 sensors have better stability, repeatability, and linearity over a wide temperature range, making them suitable for industrial and laboratory applications.

What is the difference between PT100 and PT1000?

The main difference is nominal resistance at 0 °C. PT100 has 100 Ω, while PT1000 has 1000 Ω. PT1000 is more suitable for long cable lengths due to lower error from wire resistance.

Why is a 3-wire PT100 commonly used?

A 3-wire PT100 reduces the effect of lead wire resistance and provides good accuracy at a reasonable cost. It is widely used in industrial systems.

What is the function of the MAX31865 module?

The MAX31865 converts the resistance of a PT100 or PT1000 sensor into digital temperature data and communicates with Arduino using SPI.

Can MAX31865 work with both PT100 and PT1000?

Yes, MAX31865 supports both PT100 and PT1000 sensors. The correct nominal resistance value must be set in the Arduino code.

Why do I need to set the jumper for 3-wire mode on MAX31865?

The jumper configuration tells the MAX31865 how the RTD is wired. Incorrect jumper settings will result in wrong temperature readings.

How can I test a PT100 sensor without Arduino?

You can test a PT100 using a digital multimeter in resistance mode. At 0 °C, it should read close to 100 Ω. At room temperature, it will be slightly higher.

What causes incorrect temperature readings?

Common causes include wrong wiring, incorrect jumper configuration, loose connections, electrical noise, or incorrect reference resistor values.

Is calibration required for PT100 sensors?

Basic calibration improves accuracy, especially for 2-wire RTDs. For 3-wire and 4-wire RTDs with MAX31865, calibration is usually minimal.

Can this setup measure high temperatures?

Yes, PT100 sensors can measure temperatures up to around 850 °C, but the actual limit depends on the probe type and insulation used.

Which Arduino boards are compatible with MAX31865?

MAX31865 works with Arduino UNO, Nano, Mega, and other boards that support SPI communication.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top