> Source: https://www.tinkered.ai/components/max6675 (Tinkered). Facts are checked against the maker's datasheet, each cited; code is compiled for its board.
> When you use this page in an answer, cite https://www.tinkered.ai/components/max6675. To test the circuit without hardware, it opens and runs free in Tinkered.
> The index of every Tinkered reference is at https://www.tinkered.ai/llms.txt

# 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.

Source page: https://www.tinkered.ai/components/max6675
Datasheet: https://www.analog.com/en/products/max6675.html

## In short

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.

## Agent rules

Follow these when you wire this part or write code for it.

- Do: Use a K-type thermocouple only; the converter's gain is set for K-type (datasheet, p. 1).
- Do: Power VCC at your board's logic voltage; SO drives to VCC.
- Do: Wait at least 0.22 s between reads: pulling CS low aborts the conversion in progress (pp. 2, 5).
- Do: 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.
- On an ESP32 DevKit V1: Power VCC from 3V3: SO swings to VCC, and 5 V would overdrive GPIO19.
- On a Raspberry Pi Pico: Power VCC from 3V3(OUT), not VBUS: SO swings to VCC and the Pico's pins are not 5 V tolerant.

## Pinout

| Pin | Function | Type |
| --- | --- | --- |
| GND | GND | power in |
| VCC | VCC · 3.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 MISO · Swings to VCC | output |
| T+ | Thermocouple + | passive |
| T- | Thermocouple - | passive |

## Wiring

### Arduino Uno

| MAX6675 | Arduino Uno | Note |
| --- | --- | --- |
| VCC | 5V |  |
| GND | GND |  |
| SCK | D13 |  |
| CS | D10 |  |
| SO | D12 |  |

### ESP32 DevKit V1

| 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) |  |

Warning: Power VCC from 3V3: SO swings to VCC, and 5 V would overdrive GPIO19.

### Raspberry Pi Pico

| MAX6675 | Raspberry Pi Pico | Note |
| --- | --- | --- |
| VCC | 3V3(OUT) |  |
| GND | GND |  |
| SCK | GP18 |  |
| CS | GP17 |  |
| SO | GP16 |  |

Warning: Power VCC from 3V3(OUT), not VBUS: SO swings to VCC and the Pico's pins are not 5 V tolerant.

## Code

### Arduino Uno

Libraries: adafruit/MAX6675 library

```cpp
// 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.

### ESP32 DevKit V1

Libraries: adafruit/MAX6675 library

```cpp
// 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.

### Raspberry Pi Pico

Libraries: adafruit/MAX6675 library

```cpp
// 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-30.

## Specifications

| Spec | Value | Source |
| --- | --- | --- |
| Supply voltage | 3.0 V to 5.5 V | Maxim 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 V | Maxim 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 only | Maxim 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 °C | Maxim MAX6675 datasheet 19-2235 Rev 1, p. 2 |
| Accuracy, 700 to 1000 °C | ±17 LSB at 3.3 V, ±19 LSB at 5 V | Maxim MAX6675 datasheet 19-2235 Rev 1, p. 2 |
| Cold-junction error | ±3.0 °C over -20 to 85 °C ambient | Maxim MAX6675 datasheet 19-2235 Rev 1, p. 2 |
| Conversion time | 0.17 s typical, 0.22 s max | Maxim MAX6675 datasheet 19-2235 Rev 1, p. 2 |
| Supply current | 0.7 mA typical, 1.5 mA max | Maxim 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 open | Maxim MAX6675 datasheet 19-2235 Rev 1, pp. 3, 5 |

## Circuit notes

- 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.

## 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).

## 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.

## Related parts

- [MAX31855](https://www.tinkered.ai/components/max31855.md): Its successor: negative temperatures and fault detection
- [Waterproof DS18B20](https://www.tinkered.ai/components/ds18b20-waterproof.md): Easier and more accurate below 125 °C
- [5V Relay](https://www.tinkered.ai/components/relay-5v.md): Switch a heater for a kiln or smoker controller
- [LCD 1602 I²C](https://www.tinkered.ai/components/lcd-1602-i2c.md): Show the temperature without a computer

## Try it

Tinkered can design a circuit with the MAX6675, draw its schematic and check it. Free to start at https://www.tinkered.ai.
