A K-type thermocouple measures very high temperatures — ovens, kilns, gas tandoors, soldering stations — that would destroy a DHT or DS18B20. The MAX6675 module turns its tiny voltage into a digital reading from 0 to 1024 °C in 0.25 °C steps, and often comes bundled with a screw-in probe for about ₹350.
On the Uno it runs from 5V and talks over a simple read-only SPI link on three digital pins: SCK on D6, CS on D5 and SO on D4. The library generates the clock itself, so these needn’t be the hardware SPI pins.
The sketch reads once a second and reports an open or disconnected probe instead of a wrong number.
Wiring
| Arduino Uno R3 | MAX6675 K-type thermocouple module | Wire | Notes |
|---|---|---|---|
| — | T+ | — | To Thermocouple + (red or yellow lead) (not drawn) |
| — | T- | — | To Thermocouple − (blue lead) (not drawn) |
| GND | GND | black | |
| 5V | VCC | red | The MAX6675 runs from 3.0 to 5.5 V, so the Uno’s 5 V and 5 V logic are both fine. |
| D6 | SCK | blue | |
| D5 | CS | yellow | |
| D4 | SO | green | Data out from the MAX6675. |
3.0–5.5 V part, 5 V board. The MAX6675 runs from 3.0–5.5 V and its SO output follows VCC. Power it from 3.3 V on ESP32 and Pico, 5 V on Uno — then every pin matches your board.
Board quirks
- The Adafruit MAX6675 library bit-bangs SPI, so it doesn’t need D11–D13. That keeps the hardware SPI pins free for an SD card or radio.
- Range 0 to 1024 °C in 0.25 °C steps — it can’t read below 0 °C. The chip needs about 220 ms per conversion; reading faster just returns the old value.
- If the reading drops as the probe heats, the thermocouple leads are reversed. On K-type cable the red (or yellow) lead is +, and the blue (or red, on some Indian-sold probes) is −. Check by heating it.
- Keep the module and the cold-junction screws away from heat — the chip measures its own temperature as the reference. Only the probe tip goes into the oven or kiln.
- Use the thermocouple cable all the way to the module. Joining it with copper wire adds an error at the joint.
Code
// MAX6675 K-type thermocouple module on an Arduino Uno R3.
// VCC → 5V, GND → GND, SCK → D6, CS → D5, SO → D4. Thermocouple: red/+ → T+, blue/− → T−.
// The library bit-bangs SPI, so any three digital pins work.
#include <max6675.h>
const int SO_PIN = 4, CS_PIN = 5, SCK_PIN = 6;
MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN);
void setup() {
Serial.begin(9600);
Serial.println(F("MAX6675 K-type thermocouple"));
delay(500); // the chip needs about 220 ms to finish its first conversion
}
void loop() {
float c = thermocouple.readCelsius();
if (isnan(c)) {
Serial.println(F("Thermocouple open - check the T+/T- screws"));
} else {
Serial.print(F("Temp "));
Serial.print(c, 2); // 0.25 °C steps
Serial.println(F(" C"));
}
delay(1000); // reading faster than every 220 ms stops new conversions
}// MAX6675 K-type thermocouple module on an Arduino Uno R3.
// VCC → 5V, GND → GND, SCK → D6, CS → D5, SO → D4. Thermocouple: red/+ → T+, blue/− → T−.
// The library bit-bangs SPI, so any three digital pins work.
#include <max6675.h>
const int SO_PIN = 4, CS_PIN = 5, SCK_PIN = 6;
MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN);
void setup() {
Serial.begin(9600);
Serial.println(F("MAX6675 K-type thermocouple"));
delay(500); // the chip needs about 220 ms to finish its first conversion
}
void loop() {
float c = thermocouple.readCelsius();
if (isnan(c)) {
Serial.println(F("Thermocouple open - check the T+/T- screws"));
} else {
Serial.print(F("Temp "));
Serial.print(c, 2); // 0.25 °C steps
Serial.println(F(" C"));
}
delay(1000); // reading faster than every 220 ms stops new conversions
}Library: MAX6675 library (Adafruit) — compiled with MAX6675 library 1.1.2.
Expected serial output
MAX6675 K-type thermocouple
Temp 29.75 C
Temp 30.00 C
Temp 212.50 CMAX6675 K-type thermocouple Temp 29.75 C Temp 30.00 C Temp 212.50 C
Common errors
“Thermocouple open”
The probe isn’t connected or a lead is broken. The MAX6675 detects an open circuit and the library returns NAN.
Always reads 0 °C
SO and SCK swapped, or CS not on D5. Check the three pin numbers match the sketch.
Reading jumps by several degrees
Electrical noise on a grounded probe touching metal (heaters, motors). Add 10 nF across T+ and T−, or use an ungrounded probe.