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
| Parameter | MAX6675 | MAX31855 |
|---|---|---|
| Supply Voltage | 3.0–5.5 V | 3.0–3.6 V |
| Thermocouple Types | K only | K, J, N, S, T, E, R |
| Temperature Range | 0 to +1024 °C | −200 to +1350 °C |
| Resolution | 12-bit (0.25 °C) | 14-bit (0.25 °C) |
| Cold Junction Accuracy | ±3 °C | ±2 °C |
| Interface | SPI (read-only) | SPI (read-only) |
| Conversion Time | 220 ms | 100 ms |
| Fault Detection | Open TC only | Open, 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.
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.
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.