Documentation

MAX6675 Module with K-Type Thermocouple Sensor (Measures up to 1024 Degrees) | ShillehTek Product Manual
Documentation / MAX6675 Module with K-Type Thermocouple Sensor (Measures up to 1024 Degrees) | ShillehTek Product Manual

MAX6675 Module with K-Type Thermocouple Sensor (Measures up to 1024 Degrees) | ShillehTek Product Manual

ESP32K-Typemanualmax6675-module-k-type-thermocouple-sensor-measures-up-to-1024-degreesshillehtekSPITemperature SensorThermocouple

Overview

The MAX6675 is a tiny, friendly little module that lets you read a K-type thermocouple from any microcontroller using a 3-wire SPI-style interface. Thermocouples are the workhorse of high-temperature measurement — they survive in places where ordinary digital temperature sensors melt, char, or just give up. With a standard K-type probe, this module reads temperatures from 0°C all the way up to 1024°C, with a clean 0.25°C resolution.

Where things like the DS18B20 max out around 125°C, the MAX6675 happily handles soldering irons, kilns, BBQ smokers, reflow ovens, espresso boilers, and engine exhaust manifolds. The chip handles the hard parts for you: it amplifies the tiny microvolt thermocouple signal, performs cold-junction compensation using an internal sensor, and gives you a clean 12-bit digital reading over SPI.

Hooking it up is satisfyingly simple. Power and ground, three SPI-ish wires (CS, SCK, SO), and a 2-screw terminal that holds the bare ends of your K-type thermocouple wire. Tighten the screws, observe the polarity (red is negative, yellow is positive in standard K-type), and within a few lines of code you're streaming high-temperature readings to your serial monitor.

At a Glance

Sensor Type
K-type thermocouple amp
Temperature Range
0°C - 1024°C
Resolution
0.25°C (12-bit)
Interface
SPI-style (CS, SCK, SO)
Supply Voltage
3.3V or 5V
Cold Junction
Built-in compensation

Specifications

Parameter Value
Operating Voltage 3.3V - 5V DC
Operating Current ~1.5 mA
Temperature Range 0°C to 1024°C
Resolution 0.25°C
Accuracy ±1.5°C (typical, 0-700°C)
ADC Resolution 12-bit
Conversion Time ~170 ms (read every ~220 ms)
Interface Read-only SPI (CS, SCK, SO)
Thermocouple Type K-type (Chromel/Alumel)
Cold Junction Comp. Internal, automatic
Open Thermocouple Detect Yes
Module Dimensions ~25 x 15 mm

Pinout Diagram

MAX6675 K-type thermocouple module pinout showing VCC, GND, SCK, CS, SO pins and thermocouple terminal block.
Polarity matters: Standard K-type thermocouple wire is color-coded — yellow is positive (+), red is negative (-). Wire them backwards and your readings will go down as temperature goes up. Most modules have the + and - printed next to the screw terminal.

Wiring Guide

Arduino Wiring

The MAX6675 is read-only SPI, so you can either use Arduino's hardware SPI pins or any 3 digital pins with a bit-bang library. The Adafruit MAX6675 library works with any pins.

Module Pin Arduino Pin
VCC 5V
GND GND
SCK D6
CS D5
SO D4
Tip: Connect your K-type thermocouple wires to the screw terminals — yellow to +, red to -. Snug, not gorilla-tight.

ESP32 Wiring

ESP32 has plenty of GPIO and a hardware SPI peripheral (VSPI). You can use either bit-bang on any pins or HSPI/VSPI.

Module Pin ESP32 Pin
VCC 3.3V
GND GND
SCK GPIO18 (VSPI SCK)
CS GPIO5 (VSPI CS)
SO GPIO19 (VSPI MISO)
Tip: 3.3V is fine — the MAX6675 logic is happy on either rail.

Raspberry Pi Wiring

Use the Pi's hardware SPI. Enable SPI in sudo raspi-config → Interfaces.

Module Pin Pi Pin
VCC 3.3V (pin 1)
GND GND (pin 6)
SCK GPIO11 / SCLK (pin 23)
CS GPIO8 / CE0 (pin 24)
SO GPIO9 / MISO (pin 21)
Tip: The MAX6675 only outputs — it never reads MOSI — so leave the Pi's MOSI line unconnected.

Raspberry Pi Pico Wiring

Pico has two SPI peripherals. We'll use SPI0 on its default pins.

Module Pin Pico Pin
VCC 3V3 (OUT) — pin 36
GND GND — pin 38
SCK GP18 (SPI0 SCK) — pin 24
CS GP17 — pin 22
SO GP16 (SPI0 RX) — pin 21
Tip: You can also bit-bang on any 3 free GPIOs — handy if SPI is already in use.

Code Examples

Arduino

max6675.ino
// MAX6675 K-type thermocouple - Arduino
// Library: Adafruit MAX6675 (Library Manager)

#include <max6675.h>

const int CS_PIN  = 5;
const int SCK_PIN = 6;
const int SO_PIN  = 4;

MAX6675 thermo(SCK_PIN, CS_PIN, SO_PIN);

void setup() {
  Serial.begin(9600);
  delay(500); // chip needs time to stabilize on first power-up
  Serial.println("MAX6675 ready");
}

void loop() {
  float c = thermo.readCelsius();
  float f = thermo.readFahrenheit();

  if (isnan(c)) {
    Serial.println("Thermocouple disconnected!");
  } else {
    Serial.print("Temp: ");
    Serial.print(c);
    Serial.print(" C  /  ");
    Serial.print(f);
    Serial.println(" F");
  }

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

ESP32

max6675_esp32.ino
// MAX6675 K-type thermocouple - ESP32
// Same Adafruit MAX6675 library works fine on ESP32.

#include <max6675.h>

const int CS_PIN  = 5;   // GPIO5
const int SCK_PIN = 18;  // GPIO18
const int SO_PIN  = 19;  // GPIO19

MAX6675 thermo(SCK_PIN, CS_PIN, SO_PIN);

void setup() {
  Serial.begin(115200);
  delay(500);
  Serial.println("MAX6675 ready");
}

void loop() {
  float c = thermo.readCelsius();
  if (isnan(c)) {
    Serial.println("Thermocouple disconnected!");
  } else {
    Serial.printf("Temp: %.2f C\n", c);
  }
  delay(300);
}

Raspberry Pi (Python)

max6675.py
# MAX6675 K-type thermocouple - Raspberry Pi
# Uses kernel SPI via spidev. Enable SPI in raspi-config first.
# pip install spidev

import spidev
import time

spi = spidev.SpiDev()
spi.open(0, 0)            # bus 0, CE0
spi.max_speed_hz = 1000000
spi.mode = 0

def read_temp_c():
    raw = spi.xfer2([0x00, 0x00])
    value = (raw[0] << 8) | raw[1]

    # Bit 2 = open-thermocouple flag
    if value & 0x4:
        return None

    # Bits 14:3 hold the 12-bit temperature, 0.25 C per step
    temp = (value >> 3) * 0.25
    return temp

try:
    while True:
        c = read_temp_c()
        if c is None:
            print("Thermocouple disconnected!")
        else:
            print(f"Temp: {c:.2f} C")
        time.sleep(0.3)
except KeyboardInterrupt:
    spi.close()

Raspberry Pi Pico (MicroPython)

max6675_pico.py
# MAX6675 K-type thermocouple - Pico (MicroPython)
# SPI0: SCK=GP18, MISO=GP16, CS=GP17

from machine import Pin, SPI
import time

spi = SPI(0, baudrate=1000000, polarity=0, phase=0,
          sck=Pin(18), mosi=Pin(19), miso=Pin(16))
cs = Pin(17, Pin.OUT, value=1)

def read_temp_c():
    cs.value(0)
    raw = spi.read(2)
    cs.value(1)
    value = (raw[0] << 8) | raw[1]

    if value & 0x4:
        return None
    return (value >> 3) * 0.25

while True:
    c = read_temp_c()
    if c is None:
        print("Thermocouple disconnected!")
    else:
        print("Temp: {:.2f} C".format(c))
    time.sleep(0.3)

Frequently Asked Questions

My readings only go down when the probe heats up — what's wrong?
The thermocouple wires are reversed. Standard K-type uses yellow for positive and red for negative. Swap the two wires in the screw terminal and the readings will move in the right direction.
I'm getting wildly wrong or NaN readings. Now what?
Check the thermocouple isn't open (a broken or loose wire triggers the disconnect bit), make sure CS is tied to a real GPIO and not floating, and add a small delay(250) between reads. The chip needs ~220 ms per conversion — read it too fast and you'll get stale or zeroed values.
Can I really measure 1000°C with this?
The chip can read up to 1024°C, but you also need a thermocouple rated for that range. Cheap glass-fiber-insulated K-types usually max out around 500-700°C. For kiln or furnace temperatures, get a sheathed industrial K-type probe.
3.3V or 5V — does it matter?
Either works. Use 3.3V with ESP32, Pico, and Raspberry Pi to keep logic levels aligned. Use 5V with classic Arduinos. The MAX6675 itself is happy with both.
Why is there no MOSI/DI pin?
The MAX6675 is read-only — there's nothing to configure on it, so it only needs an output line (SO/DO), a clock (SCK), and a chip select (CS). On Raspberry Pi you can wire MOSI to nothing.
How accurate is it?
Typically ±1.5°C across 0-700°C, with 0.25°C resolution. For a hobby module reading red-hot metal that's excellent. If you need lab-grade accuracy, use a calibrated reference thermocouple to apply a one-point offset in your code.
Can I use it with multiple thermocouples?
Yes — wire each MAX6675 to its own CS pin and share SCK and SO. Toggle one CS at a time before reading, just like any other SPI device. Most projects use 1-4 modules without issue.