MAX6675
A K-type thermocouple amplifier module that measures 0 to 1024 °C in 0.25 °C steps and reports it over a read-only SPI interface.
- Supply voltage3.0 V to 5.5 V
- Absolute maximum-0.3 V to 6 V on VCC; SO, SCK, CS, T-, T+ at most VCC + 0.3 V
- Range and resolution0 °C to +1023.75 °C, 12 bits, 0.25 °C per LSB, K-type only
- Accuracy, 0 to 700 °C±8 LSB (±2 °C) at 3.3 V, ±9 LSB (±2.25 °C) at 5 V, at TA = 25 °C

The MAX6675 converts a K-type thermocouple to a 12-bit reading from 0 to 1024 °C with 0.25 °C resolution and cold-junction compensation, running from 3.0 V to 5.5 V (Maxim MAX6675 datasheet Rev 1, pp. 1 to 2). It is read-only SPI: wire SCK, CS and SO (no MOSI) and allow 0.22 s per conversion (p. 2). Power the module at your board's logic voltage, because SO swings to VCC.
A thermocouple produces a few tens of microvolts per degree, relative to the temperature of the junction where it meets the circuit board. The MAX6675 measures both: it amplifies the thermocouple voltage, measures its own die as the cold junction, and outputs the compensated hot-end temperature as 12 bits from 0 °C to +1023.75 °C (Maxim datasheet Rev 1, pp. 1, 4). It works only with K-type thermocouples.
Accuracy depends on the supply: from 0 to 700 °C the temperature error is ±8 LSB (±2 °C) at 3.3 V and ±9 LSB at 5 V, widening to ±17 and ±19 LSB from 700 to 1000 °C; cold-junction compensation adds up to ±3 °C over -20 to 85 °C ambient (p. 2). It cannot read below 0 °C; its successor, the MAX31855K, reads from -200 °C.
The common red module carries the chip, a screw terminal for the probe and a 5-pin header. Reading is simple: pull CS low and clock out 16 bits on SO. Pulling CS low stops the conversion in progress, and raising it starts a new one (p. 5), so read no more often than every 0.22 s.
MAX6675 pinout
| Pin | Function | Type |
|---|---|---|
| GND | GND | power in |
| VCC | VCC3.0 V to 5.5 V, equal to your board's logic level | power in |
| SCK | SPI SCK | input |
| CS | SPI CS (active low) | input |
| SO | SPI MISOSwings to VCC | output |
| T+ | Thermocouple + | passive |
| T- | Thermocouple - | passive |
How to wire the MAX6675
Pin by pin, for the board you have.
| MAX6675 | Arduino Uno | Note |
|---|---|---|
| VCC | 5V | |
| GND | GND | |
| SCK | D13 | |
| CS | D10 | |
| SO | D12 |
| MAX6675 | ESP32 DevKit V1 | Note |
|---|---|---|
| VCC | 3V3 | |
| GND | GND | |
| SCK | GPIO18 (D18) | |
| CS | GPIO5 (D5) | VSPI's default CS. GPIO5 is a strapping pin that must be high at boot; CS idles high, so boot is unaffected. |
| SO | GPIO19 (D19) |
- Power VCC from 3V3: SO swings to VCC, and 5 V would overdrive GPIO19.
| MAX6675 | Raspberry Pi Pico | Note |
|---|---|---|
| VCC | 3V3(OUT) | |
| GND | GND | |
| SCK | GP18 | |
| CS | GP17 | |
| SO | GP16 |
- Power VCC from 3V3(OUT), not VBUS: SO swings to VCC and the Pico's pins are not 5 V tolerant.
MAX6675 code
Every example here compiles for its board.
// MAX6675 on Arduino Uno: wiring and a free simulation at https://www.tinkered.ai/components/max6675
// MAX6675 on an Arduino Uno: VCC 5V, SCK D13, CS D10, SO D12
#include <max6675.h>
const int PIN_SCK = 13;
const int PIN_CS = 10;
const int PIN_SO = 12;
MAX6675 thermocouple(PIN_SCK, PIN_CS, PIN_SO); // (SCLK, CS, MISO)
void setup() {
Serial.begin(115200);
delay(500); // let the first conversion finish (220 ms max)
Serial.println("MAX6675 K-type thermocouple");
}
void loop() {
float tempC = thermocouple.readCelsius();
if (isnan(tempC)) {
Serial.println("Thermocouple open: check the probe wires");
} else {
Serial.print("Temperature: ");
Serial.print(tempC, 2);
Serial.println(" C");
}
delay(1000); // each read restarts a 170 to 220 ms conversion
}
Compiled for arduino:avr:uno on 2026-10-30// MAX6675 on ESP32 DevKit V1: wiring and a free simulation at https://www.tinkered.ai/components/max6675
// MAX6675 on an ESP32 DevKit V1: VCC 3V3, SCK GPIO18, CS GPIO5, SO GPIO19
#include <max6675.h>
const int PIN_SCK = 18;
const int PIN_CS = 5;
const int PIN_SO = 19;
MAX6675 thermocouple(PIN_SCK, PIN_CS, PIN_SO); // (SCLK, CS, MISO)
void setup() {
Serial.begin(115200);
delay(500); // let the first conversion finish (220 ms max)
Serial.println("MAX6675 K-type thermocouple");
}
void loop() {
float tempC = thermocouple.readCelsius();
if (isnan(tempC)) {
Serial.println("Thermocouple open: check the probe wires");
} else {
Serial.print("Temperature: ");
Serial.print(tempC, 2);
Serial.println(" C");
}
delay(1000); // each read restarts a 170 to 220 ms conversion
}
Compiled for esp32:esp32:esp32 on 2026-10-30// MAX6675 on Raspberry Pi Pico: wiring and a free simulation at https://www.tinkered.ai/components/max6675
// MAX6675 on a Raspberry Pi Pico (arduino-pico): VCC 3V3(OUT), SCK GP18, CS GP17, SO GP16
#include <max6675.h>
const int PIN_SCK = 18;
const int PIN_CS = 17;
const int PIN_SO = 16;
MAX6675 thermocouple(PIN_SCK, PIN_CS, PIN_SO); // (SCLK, CS, MISO)
void setup() {
Serial.begin(115200);
delay(500); // let the first conversion finish (220 ms max)
Serial.println("MAX6675 K-type thermocouple");
}
void loop() {
float tempC = thermocouple.readCelsius();
if (isnan(tempC)) {
Serial.println("Thermocouple open: check the probe wires");
} else {
Serial.print("Temperature: ");
Serial.print(tempC, 2);
Serial.println(" C");
}
delay(1000); // each read restarts a 170 to 220 ms conversion
}
Compiled for rp2040:rp2040:rpipico on 2026-10-30Before you wire it
- Use a K-type thermocouple only; the converter's gain is set for K-type (datasheet, p. 1).
- Power VCC at your board's logic voltage; SO drives to VCC.
- Wait at least 0.22 s between reads: pulling CS low aborts the conversion in progress (pp. 2, 5).
- Keep the module away from heat sources: it measures its own die as the cold junction, so a warm board shifts every reading.
- Never use a grounded-tip thermocouple, or let the probe touch a grounded metal part: the MAX6675 and MAX31855 are not compatible with grounded thermocouples (Adafruit thermocouple guide, p. 5).
- Never extend the probe with copper wire: use K-type extension wire, or each joint becomes an extra thermocouple.
- Never expect readings below 0 °C: the output range starts at 0 °C (p. 1). Use a MAX31855 for cold work.
- The 16-bit frame holds a dummy sign bit (D15), the 12-bit temperature (D14 to D3) and an open-thermocouple flag (D2) (datasheet, p. 5); the Adafruit library returns NAN when D2 is set.
- Bypass VCC with 0.1 µF close to the chip (p. 4); the modules already do this.
- In electrically noisy places (motors, heaters switched by relays), a 0.01 µF capacitor across the thermocouple terminals cuts pickup (Adafruit thermocouple guide, p. 7).
- Several MAX6675s can share SCK and SO, each with its own CS pin.
- Polarity matters: swapped leads give a reading that falls as the tip heats.
Specifications
- Supply voltage
- 3.0 V to 5.5 VMaxim MAX6675 datasheet 19-2235 Rev 1, p. 2
- Absolute maximum
- -0.3 V to 6 V on VCC; SO, SCK, CS, T-, T+ at most VCC + 0.3 VMaxim MAX6675 datasheet 19-2235 Rev 1, p. 2
- Range and resolution
- 0 °C to +1023.75 °C, 12 bits, 0.25 °C per LSB, K-type onlyMaxim MAX6675 datasheet 19-2235 Rev 1, pp. 1, 4
- Accuracy, 0 to 700 °C
- ±8 LSB (±2 °C) at 3.3 V, ±9 LSB (±2.25 °C) at 5 V, at TA = 25 °CMaxim MAX6675 datasheet 19-2235 Rev 1, p. 2
- Accuracy, 700 to 1000 °C
- ±17 LSB at 3.3 V, ±19 LSB at 5 VMaxim MAX6675 datasheet 19-2235 Rev 1, p. 2
- Cold-junction error
- ±3.0 °C over -20 to 85 °C ambientMaxim MAX6675 datasheet 19-2235 Rev 1, p. 2
- Conversion time
- 0.17 s typical, 0.22 s maxMaxim MAX6675 datasheet 19-2235 Rev 1, p. 2
- Supply current
- 0.7 mA typical, 1.5 mA maxMaxim MAX6675 datasheet 19-2235 Rev 1, p. 2
- Interface
- Read-only SPI, 16-bit frame, SCK up to 4.3 MHz; bit D2 high means the thermocouple is openMaxim MAX6675 datasheet 19-2235 Rev 1, pp. 3, 5
From the MAX6675 product page and datasheet, published by Analog Devices (Maxim Integrated).
Common mistakes
Reading too fast
Calling readCelsius() in a tight loop keeps aborting conversions, so the value never updates or reads stale. Leave at least 220 ms between reads (datasheet, p. 2); once a second is plenty for most projects.
Swapped thermocouple leads
If the temperature drops when you heat the tip, swap the wires at the screw terminal. On K-type wire the negative (alumel) lead is the magnetic one.
Readings that jump near motors or mains heaters
The thermocouple is an antenna. Add 0.01 µF across the terminals, twist the leads, and keep them away from mains wiring.
5 V module on a 3.3 V board
With VCC at 5 V, SO swings to 5 V. Power the module from 3.3 V on an ESP32 or Pico; the chip runs down to 3.0 V and is slightly more accurate there (p. 2).
MAX6675 questions
What temperature range does the MAX6675 cover?
0 °C to +1023.75 °C in 0.25 °C steps (Maxim datasheet Rev 1, pp. 1, 4). Below 0 °C it reads 0; for negative temperatures use the MAX31855.
MAX6675 or MAX31855?
The MAX31855 is the successor: 14 bits from -200 °C to +1350 °C for the K-type MAX31855K, separate fault flags for open and shorted probes, but a 3.0 V to 3.6 V supply. The MAX6675 runs at 5 V directly and is fine from room temperature to about 1000 °C.
Why does it read NAN or 'thermocouple open'?
Bit D2 goes high when no thermocouple is connected (p. 5). Check that both leads are tight in the screw terminal and the probe is not broken.
Does the MAX6675 need MOSI?
No. It is read-only: SCK, CS and SO are the whole interface, and the library bit-bangs them on any three pins.
How accurate is it?
About ±2 °C from 0 to 700 °C at 3.3 V, plus up to ±3 °C of cold-junction error over -20 to 85 °C ambient (p. 2), and the probe's own tolerance on top. It suits kilns, smokers and reflow ovens, not lab work.
Build something with the MAX6675
- Build this
BBQ smoker thermometer
Show pit temperature on an LCD and beep when it leaves a band.
- Build this
Reflow oven controller
Follow a solder reflow profile by switching a toaster oven through a relay.
- Build this
Kiln logger
Log a firing curve once a minute over USB.
This page as plain Markdown, for ChatGPT, Claude or your own agent. /components/max6675.md