Table of Contents
- Introduction to RTD Sensors
- How RTD Sensors Work
- PT100 vs PT1000: Key Differences
- Accuracy Classes and Tolerances
- Interface Circuits and ICs
- MAX31865 Wiring to Arduino
- Arduino Code with MAX31865
- 2-Wire vs 3-Wire vs 4-Wire Connections
- Industrial and Hobbyist Applications
- Frequently Asked Questions
- Conclusion
Introduction to RTD Sensors
RTD (Resistance Temperature Detector) sensors are among the most accurate and stable temperature measurement devices available to electronics engineers and hobbyists. Unlike thermistors (which use semiconductor materials with a highly nonlinear response) or thermocouples (which generate a small voltage from two dissimilar metals), RTDs use the predictable, near-linear increase in electrical resistance of pure metals — almost always platinum — as temperature rises.
The two most common RTD standards are PT100 (100 ohms at 0°C) and PT1000 (1000 ohms at 0°C). Both use the same platinum element and follow the same IEC 60751 / DIN EN 60751 standard resistance-temperature curve. The difference is purely in the nominal resistance value, which affects how you interface them with microcontrollers like Arduino, ESP32, or Raspberry Pi.
This guide walks you through everything you need to interface an RTD sensor with an Arduino: the physics, the PT100 vs PT1000 trade-offs, the MAX31865 interface IC, full wiring diagrams, and production-ready Arduino code.
How RTD Sensors Work
Platinum’s resistance increases linearly with temperature between −200°C and +850°C. The relationship is defined by the Callendar–Van Dusen equation, but for most practical purposes (0°C to 850°C) you can use the simplified linear approximation:
R(T) = R₀ × (1 + α × T)
Where:
R₀= resistance at 0°C (100Ω for PT100, 1000Ω for PT1000)α= temperature coefficient = 0.00385 Ω/Ω/°C (IEC 60751 standard)T= temperature in °C
For example, at 100°C: PT100 reads ~138.5Ω; PT1000 reads ~1385Ω. The 10:1 ratio between PT100 and PT1000 holds across the entire temperature range.
Why Platinum?
Platinum is used for RTDs because of its exceptional properties: high melting point (1,768°C), chemical inertness (does not oxidize), reproducible resistance-temperature relationship, and long-term stability. Other metals like nickel (Ni100, Ni1000) and copper are used in lower-cost RTDs but offer less accuracy and a narrower temperature range.
PT100 vs PT1000: Key Differences
Since both PT100 and PT1000 follow the same physical law and use the same platinum element, their performance in terms of temperature range, accuracy class, and long-term stability is identical. The differences are purely electrical:
| Property | PT100 | PT1000 |
|---|---|---|
| Resistance at 0°C | 100 Ω | 1000 Ω |
| Resistance at 100°C | 138.5 Ω | 1385 Ω |
| Sensitivity (per °C) | 0.385 Ω/°C | 3.85 Ω/°C |
| Lead wire resistance effect | Significant — 0.1Ω per wire causes 0.26°C error | Minor — 0.1Ω per wire causes 0.026°C error |
| Preferred for long cable runs | No (requires 3-wire or 4-wire) | Yes (2-wire often acceptable) |
| Readout electronics complexity | Higher (low resistance needs precise current source) | Lower (higher resistance more ADC-friendly) |
| Industrial prevalence | Very common (standard in most PLCs) | Common in Europe, growing globally |
| Self-heating effect | Higher (more current needed for same voltage) | Lower (10x lower current for same sensitivity) |
Which Should You Choose?
Choose PT100 if: your readout electronics already support it (most industrial transmitters and PLCs are built for PT100), you are working with standard industrial probes, or you need to follow an existing installation standard.
Choose PT1000 if: you are designing your own interface circuit from scratch, you have long cable runs (over 5 meters) and want to avoid 3-wire correction circuitry, you need lower self-heating (important for measuring ambient air temperature), or you are building battery-powered devices (lower excitation current).
DS18B20 Programmable Resolution Temperature Sensor
1-Wire digital temperature sensor with ±0.5°C accuracy — a simpler alternative to RTDs for medium-precision Arduino projects.
Accuracy Classes and Tolerances
IEC 60751 defines three accuracy classes for platinum RTDs. The same classes apply to both PT100 and PT1000:
- Class AA (1/10 DIN): ±(0.1 + 0.0017 × |T|)°C — laboratory grade, very expensive
- Class A: ±(0.15 + 0.002 × |T|)°C — industrial precision (±0.15°C at 0°C, ±0.35°C at 100°C)
- Class B: ±(0.3 + 0.005 × |T|)°C — standard industrial (±0.3°C at 0°C, ±0.8°C at 100°C)
For comparison, a DHT22 has ±0.5°C accuracy, a DS18B20 has ±0.5°C accuracy, and a thermocouple with a good cold-junction compensator achieves ±1–2°C. Class A RTDs far exceed all of these at ±0.15–0.35°C across the 0–100°C range. If you need to measure liquid temperatures to the tenth of a degree (pharmaceutical processing, sous vide cooking, calibration baths), RTDs are the correct choice.
Interface Circuits and ICs
The fundamental challenge of reading an RTD is converting a small resistance change (0.385 Ω/°C for PT100) into a voltage your ADC can read accurately. There are three approaches:
1. Simple Voltage Divider (PT1000 Only)
For PT1000, you can use a simple voltage divider with a precision resistor (e.g., 1kΩ 0.1% tolerance) and measure the voltage with a 10-bit or 12-bit ADC. With a 3.3V supply and 1kΩ reference, you get roughly 1.65V at 0°C and 1.81V at 100°C — a 160mV span that a 12-bit ADC can resolve to ~0.04°C. This works for non-critical applications. It is not suitable for PT100 because the low resistance values make lead wire resistance errors significant.
2. Wheatstone Bridge
A Wheatstone bridge with three matched resistors and the RTD as the fourth arm amplifies the small resistance change into a differential voltage. Adding an instrumentation amplifier (e.g., INA128) allows accurate reading with a standard ADC. This is the classic industrial circuit but requires precise matched resistors and careful PCB layout.
3. MAX31865 RTD-to-Digital Converter (Recommended for Arduino)
The MAX31865 is a dedicated RTD-to-digital converter IC from Maxim (now Analog Devices). It contains a precision current source, a ratio-metric ADC, fault detection, and an SPI interface. It handles all the complexity internally and outputs temperature-proportional counts directly to your microcontroller over SPI. It supports both 2-wire, 3-wire, and 4-wire RTD configurations via a single jumper selection, and works with both PT100 and PT1000 (configured by the reference resistor value on the breakout board).
MAX31865 Wiring to Arduino
The MAX31865 breakout board (available from Adafruit and compatible vendors) exposes standard SPI pins plus chip-select. Here is the wiring for Arduino Uno:
| MAX31865 Pin | Arduino Uno Pin | Notes |
|---|---|---|
| VIN | 5V | Board has onboard 3.3V regulator |
| GND | GND | |
| CLK (SCK) | D13 | SPI clock |
| SDO (MISO) | D12 | MAX31865 → Arduino |
| SDI (MOSI) | D11 | Arduino → MAX31865 |
| CS | D10 | Chip select (active low) |
| F+ / F- (RTD) | — | Connect RTD probe wires here |
PT100 vs PT1000 selection: On most MAX31865 breakout boards, a solder jumper selects the reference resistor. PT100 uses a 430Ω reference resistor; PT1000 uses a 4300Ω reference resistor. Check your board’s documentation and set the correct reference value in code.
LM35 Temperature Sensor
Classic analog temperature sensor with 10mV/°C output — great for learning temperature measurement before moving to precision RTD circuits.
Arduino Code with MAX31865
Install the Adafruit MAX31865 library via the Arduino Library Manager before uploading this sketch.
#include <Adafruit_MAX31865.h>
// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 thermo = Adafruit_MAX31865(10, 11, 12, 13);
// Reference resistor value:
// PT100 → 430.0
// PT1000 → 4300.0
#define RREF 430.0
// Nominal resistance at 0°C:
// PT100 → 100.0
// PT1000 → 1000.0
#define RNOMINAL 100.0
void setup() {
Serial.begin(115200);
// MAX31865_2WIRE, MAX31865_3WIRE, or MAX31865_4WIRE
thermo.begin(MAX31865_2WIRE);
Serial.println("MAX31865 RTD Temperature Sensor");
}
void loop() {
uint16_t rtd = thermo.readRTD();
float ratio = rtd / 32768.0;
float resistance = ratio * RREF;
float temperature = thermo.temperature(RNOMINAL, RREF);
Serial.print("RTD value: "); Serial.println(rtd);
Serial.print("Ratio: "); Serial.println(ratio, 8);
Serial.print("Resistance: "); Serial.println(resistance, 4);
Serial.print("Temperature: "); Serial.print(temperature, 2);
Serial.println(" °C");
// Fault detection
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- RTDIN- Under/Over voltage");
thermo.clearFault();
}
delay(1000);
}
2-Wire vs 3-Wire vs 4-Wire Connections
Lead wire resistance is the biggest source of error in RTD measurements. Each meter of 24 AWG copper wire adds about 0.08Ω of resistance — equivalent to a 0.2°C error for PT100 (0.02°C for PT1000). The connection method determines how well this error is compensated:
2-Wire (No Compensation)
Both current and voltage are measured through the same two wires. Lead resistance adds directly to the measured RTD resistance. Suitable only for PT1000 with short cable runs (<1m) or when ±1°C accuracy is acceptable.
3-Wire (Industrial Standard)
One wire carries the excitation current; two wires carry the voltage measurement. The interface IC assumes the third wire has the same resistance as the measurement wire and subtracts it. This cancels most of the lead resistance error. Requires all three lead wires to have the same resistance (same gauge, same length). Accuracy: ±0.1°C typical for PT100 over 10m cable.
4-Wire (Highest Accuracy)
Separate pairs of wires carry current and voltage. The voltmeter draws negligible current through the voltage-sense wires, so their resistance adds essentially zero error. Best for laboratory and calibration applications. Accuracy: ±0.01°C possible. The MAX31865 supports 4-wire mode via configuration.
Industrial and Hobbyist Applications
Sous Vide and Precision Cooking
Home chefs use PT100/MAX31865 to control water bath temperatures to ±0.1°C for sous vide cooking. A PID algorithm on an Arduino Mega controls a relay or SSR (solid-state relay) driving an immersion heater. The RTD’s stability and accuracy far outperform the NTC thermistors in most commercial sous vide units.
3D Printer Hot-End Monitoring
High-temperature 3D printing (above 300°C for engineering filaments) exceeds the range of standard NTC thermistors. PT100 sensors rated to 400°C are the standard choice for Volcano and SuperVolcano hot ends. Most 32-bit printer boards include a MAX31865 option for this purpose.
Industrial Furnace and Oven Control
Food processing ovens, industrial kilns, and laboratory furnaces use PT100 sensors inserted in stainless steel thermowell sheaths. The 4-wire configuration over shielded cable provides accurate readings despite the electrically noisy environment.
Weather Station
For a precision outdoor weather station, a PT1000 in a radiation shield provides ambient temperature data accurate enough for scientific logging. The lower self-heating of PT1000 (due to lower excitation current) is especially important for ambient air temperature measurement.
DHT11 Digital Temperature & Humidity Sensor Module
Affordable digital sensor for combined temperature and humidity measurement — ideal for climate monitoring and HVAC control projects.
Frequently Asked Questions
Q: Can I use a PT100 sensor without the MAX31865?
A: Yes, but it is difficult to achieve good accuracy. You need a stable precision current source (typically 1mA), a low-noise differential amplifier, and a good ADC. For hobbyist projects, the MAX31865 breakout board (typically ₹300–₹600) is by far the easiest and most accurate approach.
Q: What is the difference between a PT100 and a thermocouple?
A: Thermocouples generate a small voltage (microvolts per °C) from the Seebeck effect at the junction of two dissimilar metals. They cover a much wider temperature range (some up to 2300°C) but are less accurate (±1–2°C typical) and require cold-junction compensation. PT100 RTDs are more accurate (±0.1–0.3°C) but limited to around −200°C to +850°C. Use thermocouples for very high temperatures; use RTDs for precision measurement in the industrial range.
Q: My MAX31865 shows “FAULT_RTDINLOW” — what does this mean?
A: This fault indicates the RTD input voltage is below the expected threshold, usually meaning an open circuit (broken or disconnected RTD wire) or a short circuit. Check all four RTD wires for continuity and proper connection to the F+ and F- terminals.
Q: Can I use the MAX31865 with a 3.3V Arduino (like Arduino Due or Nano 33)?
A: Yes. Connect VIN to 3.3V directly (the Adafruit breakout board includes a 3.3V regulator but can also run directly from 3.3V). All SPI signals are 3.3V compatible.
Q: How do I convert the MAX31865 resistance reading to temperature manually?
A: Use the Callendar–Van Dusen equation. The Adafruit library handles this automatically via the temperature() function, which uses the IEC 60751 polynomial. For manual conversion, refer to the IEC 60751 standard tables or the NIST platinum resistance thermometry publication.
Conclusion
RTD sensors — both PT100 and PT1000 — represent the gold standard for precision temperature measurement in the range accessible to electronics hobbyists and industrial engineers. The MAX31865 RTD-to-digital converter IC makes interfacing these sensors with Arduino or any SPI-capable microcontroller straightforward, delivering Class A accuracy (±0.15°C at 0°C) with minimal external components.
Choose PT100 when working with existing industrial infrastructure or standard equipment. Choose PT1000 when designing your own interface circuits from scratch, for long cable runs where lead resistance matters, or for battery-powered devices where the 10x higher sensor resistance means 10x lower excitation current and thus lower power draw and less self-heating error.
Whichever variant you choose, the combination of an RTD probe + MAX31865 + Arduino gives you laboratory-grade temperature measurement capability at a fraction of the cost of dedicated instruments — opening the door to precision sous vide controllers, industrial furnace monitors, scientific weather stations, and high-performance 3D printer hot-end management.
Add comment