The PT1000 heating sensor outputs a variable analog resistance (nominally 1000Ω at 0°C, increasing by approximately 3.85Ω per °C). Because microcontrollers cannot read resistance directly, you must use a dedicated amplifier like the MAX31865 to convert that analog resistance into a digital SPI signal. This guide covers the exact wiring, the raw-to-Celsius math, and how to eliminate the switching noise that plagues high-power heating projects.

The Sensing Principle Behind Platinum Heating Sensors

A PT1000 is a Resistance Temperature Detector (RTD) constructed from a thin film or wire-wound platinum element. Platinum exhibits a highly predictable, nearly linear positive temperature coefficient (PTC). As the heating element transfers thermal energy to the sensor probe, the platinum lattice vibrates more intensely, increasing electron scattering and thereby raising the electrical resistance. The "1000" denotes the base resistance of 1000Ω at 0°C, which is ten times higher than the industrial-standard PT100.

This higher base resistance is exactly why the PT1000 is the superior heating sensor for embedded DIY and 3D printing applications. In a 2-wire configuration, the copper lead wires add parasitic resistance (typically 0.5Ω to 2Ω depending on length). On a PT100, a 1Ω lead error translates to a ~2.5°C measurement offset. On a PT1000, that same 1Ω lead error shrinks to a negligible 0.25°C offset, allowing you to use longer, simpler 2-wire cables without sacrificing hotend or oven accuracy.

Hardware Wiring and Pinout for ESP32

The bare PT1000 outputs analog resistance, but the ESP32 requires a digital interface to process it reliably without the noise inherent in analog-to-digital conversion of high-impedance voltage dividers. We use the MAX31865 RTD-to-Digital converter. Below is the SPI wiring map for a standard ESP32 DevKit v1 to an Adafruit-style MAX31865 breakout.

Table 1: ESP32 to MAX31865 SPI Wiring and Supply Range
MAX31865 Pin ESP32 Pin Function Notes & Constraints
VIN / VCC 3V3 Power Supply Must be 3.3V. Do not use 5V on ESP32 SPI lines.
GND GND Common Ground Keep ground return path short to minimize loop area.
SCK GPIO 18 (VSPI) SPI Clock Max clock speed 5MHz for stable reads.
SDO (MISO) GPIO 19 (VSPI) Serial Data Out Data from MAX31865 to ESP32.
SDI (MOSI) GPIO 23 (VSPI) Serial Data In Data from ESP32 to MAX31865.
CS GPIO 5 Chip Select Active LOW. Pull high when not reading.
RDY GPIO 4 (Optional) Data Ready Interrupt pin; can be left unconnected if polling.
⚠️ Callout Tip: Reference Resistor Selection
The MAX31865 board must have the correct reference resistor ($R_{REF}$) soldered on the back. For a PT100 sensor, this is 430Ω. For a PT1000 heating sensor, you must use a 4300Ω (4.3kΩ) 0.1% precision resistor. Using the wrong resistor will result in mathematically valid but physically impossible temperature readings.

Output Signal Math: Raw Registers to Celsius

The MAX31865 does not output temperature directly; it outputs a 15-bit raw ADC register value representing the ratio of the RTD resistance to the reference resistor. To get a physical unit (Celsius), you must perform a two-step conversion.

Step 1: Convert Raw ADC to Resistance
The formula to extract the actual PT1000 resistance ($R_{RTD}$) is:

$$R_{RTD} = \frac{Raw_{ADC} \times R_{REF}}{32768}$$

Worked Numeric Example: Assume your $R_{REF}$ is 4300Ω. You read a raw 15-bit ADC value of 10600 from the SPI register.
$R_{RTD} = (10600 \times 4300) / 32768 = 1390.38\Omega$.

Step 2: Convert Resistance to Temperature
For quick approximations between 0°C and 100°C, a linear model works: $T = (R_{RTD} - 1000) / 3.85$. Using our example: $(1390.38 - 1000) / 3.85 = 101.4°C$.
However, for heating applications like reflow ovens or 3D printer hotends pushing 250°C+, platinum's slight non-linearity demands the Callendar-Van Dusen (CVD) equation. The Adafruit MAX31865 library handles this CVD polynomial under the hood, referencing the NIST ITS-90 temperature scale coefficients to ensure accuracy within ±0.5°C up to 400°C.

Calibration, Scaling, and EMI Interference

What the output actually is: The bare sensor outputs analog resistance. The MAX31865 conditions this into a digital SPI data stream. Never attempt to read a PT1000 directly with an ESP32 analog pin using a simple voltage divider; the self-heating current and ADC impedance will ruin your scaling.

Calibration and Scaling: PT1000 probes are laser-trimmed at the factory to IEC 60751 Class A or B tolerances. Class B allows a ±0.3°C error at 0°C, scaling up to ±1.5°C at 300°C. For precision heating, perform a single-point offset calibration. Submerge the probe in boiling distilled water (correcting for your local barometric pressure via the NIST ITS-90 documentation), record the steady-state reading, and apply a static offset in your firmware to zero out the systematic error.

Common Interference Sources: The enemy of any heating sensor is the Solid State Relay (SSR) or MOSFET switching the heating element. When a 40A SSR switches a 24V or 120V AC heating cartridge, the $dv/dt$ (voltage change over time) generates massive electromagnetic interference (EMI). This noise couples into the sensor leads, causing the MAX31865 to throw "over/under voltage" fault flags or output erratic 500°C spikes.

🛠️ EMI Mitigation Checklist:
  • Twisted Pair: Always use twisted-pair wire for the PT1000 leads to cancel out magnetic field coupling.
  • Shielding: Use a grounded metal braid shield around the sensor cable, grounded at the microcontroller end only (to prevent ground loops).
  • Physical Routing: Keep the heating sensor cable at least 2 inches away from AC mains lines and SSR output terminals.
  • Zero-Cross SSRs: Use zero-crossing SSRs rather than random-fire SSRs to minimize high-frequency switching harmonics.

Heating Sensor FAQ

Why does my heating sensor read erratic temperatures when the SSR switches?

This is caused by Electromagnetic Interference (EMI) and ground bounce. When the SSR switches high current to the heating element, the rapid voltage transitions induce noise in the high-impedance RTD circuit. If you are using a bare analog voltage divider, the noise directly corrupts the ADC reading. If using a MAX31865, the noise can trigger the chip's internal fault detection, causing it to output a fault code (often reading as -242°C or 850°C). Fix this by using twisted-pair PTFE wire, routing the sensor away from the SSR, and adding a 100nF ceramic decoupling capacitor directly across the MAX31865 VCC and GND pins.

Can I use a standard 100k NTC thermistor instead of a PT1000 heating sensor?

You can, but you trade long-term stability and linearity for lower upfront cost. A 100k NTC thermistor (like the Semitec 104NT-4-R025H42G) is standard on consumer 3D printers and works fine up to 300°C. However, NTCs have a highly non-linear, exponential resistance curve requiring the Steinhart-Hart equation for scaling, and they suffer from thermal drift over hundreds of heat cycles. A PT1000 heating sensor provides a nearly linear response, negligible long-term drift, and higher accuracy at elevated temperatures, making it mandatory for PID-tuned reflow ovens, sous-vide baths, and industrial extruders.

How do I calibrate a heating sensor for a 3D printer hotend or reflow oven?

Perform a single-point offset calibration at your target operating temperature. For a 3D printer hotend targeting 250°C, use a calibrated K-type thermocouple inserted into the hotend block alongside your PT1000. Heat the block to 250°C, let it PID-stabilize for 5 minutes, and compare the ESP32 reading to the K-type meter. If the PT1000 reads 247.5°C, add a +2.5°C static offset in your firmware. For reflow ovens, perform a 3-point calibration (ice bath at 0°C, boiling water at 100°C, and a high-temp oil bath or block at 220°C) and apply a linear regression correction factor in your ESP-IDF SPI polling loop.

What is the difference between 2-wire, 3-wire, and 4-wire heating sensor configurations?

The difference lies in how the measurement circuit compensates for the resistance of the copper lead wires. In a 2-wire setup, lead resistance is added directly to the sensor reading, causing a positive temperature offset (acceptable for PT1000 over short distances due to its high base resistance). A 3-wire setup uses a third wire to measure the lead resistance and subtracts it mathematically inside the MAX31865, which is the standard for industrial PT100 sensors. A 4-wire setup uses a true Kelvin connection, passing current on one pair and measuring voltage on the other, entirely eliminating lead resistance errors. For embedded DIY heating projects under 2 meters, a 2-wire PT1000 is sufficient; beyond that, step up to a 3-wire or 4-wire PT100.