Back to Sensors & Actuators Series

Thermocouple Interface: MAX6675 & MAX31855

April 10, 2026 Wasil Zafar 9 min read

MAX6675 & MAX31855 deep dive — thermocouple physics, SPI interfacing, cold-junction compensation, fault detection, and industrial applications.

Contents

  1. Working Principle
  2. Electrical Characteristics
  3. Interfacing with MCU
  4. Calibration
  5. Code Example
  6. Real-World Applications
  7. Limitations

Working Principle

The MAX6675 and MAX31855 are thermocouple-to-digital converter ICs from Maxim Integrated. They read the microvolt-level voltage produced by a thermocouple junction (Seebeck effect), perform cold-junction compensation, linearise the output, and deliver a digital temperature value over SPI.

Thermocouple basics: Two dissimilar metal wires joined at a tip produce a voltage proportional to temperature difference between the tip (hot junction) and the connection point (cold junction). The MAX ICs integrate a cold-junction temperature sensor to compensate automatically.

  • MAX6675: K-type thermocouple only, 12-bit resolution (0.25 °C), 0–1024 °C range
  • MAX31855: K/J/N/S/T/E/R types, 14-bit resolution (0.25 °C), −200 to +1350 °C, fault detection

Electrical Characteristics

ParameterMAX6675MAX31855
Supply Voltage3.0–5.5 V3.0–3.6 V
Thermocouple TypesK onlyK, J, N, S, T, E, R
Temperature Range0 to +1024 °C−200 to +1350 °C
Resolution12-bit (0.25 °C)14-bit (0.25 °C)
Cold Junction Accuracy±3 °C±2 °C
InterfaceSPI (read-only)SPI (read-only)
Conversion Time220 ms100 ms
Fault DetectionOpen TC onlyOpen, Short-to-GND, Short-to-VCC

Interfacing with an MCU

Both chips use a read-only SPI interface: connect SCK, CS (SS), and SO (MISO). No MOSI needed — the MCU only reads data. The MAX31855 operates at 3.3 V — use level shifters with 5 V Arduinos or use 3.3 V boards.

Safety: Thermocouples can measure furnace/kiln temperatures exceeding 1000 °C. Use appropriate fire-rated wiring and keep the thermocouple probe properly secured. Never leave high-temperature setups unattended.

Calibration

The MAX ICs are internally calibrated for their supported thermocouple types. For highest accuracy:

  • Cold junction placement: Keep the MAX IC away from heat sources; its internal cold-junction sensor must be at ambient temperature
  • TC wire quality: Use proper thermocouple extension wire (same alloy) — not copper leads
  • Ice-point verification: Dip thermocouple tip in ice water to verify 0 °C reading

Code Example

/*
 * MAX6675 K-Type Thermocouple Reader — Arduino
 * Wiring: SCK → Pin 13, CS → Pin 10, SO → Pin 12
 * Library: max6675 by Adafruit
 */
#include <max6675.h>

#define TC_CLK  13
#define TC_CS   10
#define TC_DO   12

MAX6675 thermocouple(TC_CLK, TC_CS, TC_DO);

void setup() {
    Serial.begin(9600);
    delay(500);   /* Let MAX6675 stabilize */
    Serial.println("MAX6675 Thermocouple Reader");
}

void loop() {
    float tempC = thermocouple.readCelsius();
    float tempF = thermocouple.readFahrenheit();

    Serial.print("Temp: ");
    Serial.print(tempC, 2);
    Serial.print(" C / ");
    Serial.print(tempF, 2);
    Serial.println(" F");

    /* MAX6675 needs ~220ms between reads */
    delay(1000);
}

Real-World Applications

Industrial Furnace & Kiln Monitoring

Ceramic kilns and metal heat-treatment furnaces routinely exceed 1000 °C — far beyond semiconductor sensor limits. K-type thermocouples paired with MAX31855 converters provide reliable, real-time temperature monitoring with fault detection for open or shorted probes, enabling automated firing profiles and safety shutdowns.

IndustrialHigh TemperatureSafety

Limitations

  • Cold junction error: The ±2–3 °C cold junction accuracy is the dominant error source at moderate temperatures.
  • Slow conversion: 100–220 ms per reading limits use in fast control loops.
  • MAX6675 K-only: Cannot use J, T, or other thermocouple types. Upgrade to MAX31855 for multi-type support.
  • Noise sensitivity: Thermocouple millivolt signals are susceptible to electromagnetic interference — use shielded cable in noisy environments.
  • MAX31855 is 3.3 V only: Not directly compatible with 5 V Arduino logic without level shifting.