Introduction
MAX6675 with Arduino is a popular combination for measuring high temperatures using K-type thermocouples. Whether you’re working on an industrial project, a heating system, or a DIY oven controller, the MAX6675 thermocouple module makes it easy to read temperatures well beyond the range of typical sensors like DHT11 or LM35.
In this article, we’ll cover how to use the MAX6675 with Arduino, explain how it works, and guide you through wiring, coding, and even a mini-project to get hands-on experience.
What is the MAX6675 Thermocouple Module?
The MAX6675 is a digital thermocouple-to-digital converter. It interfaces with K-type thermocouples and provides temperature readings in Celsius via SPI communication. It’s ideal for applications requiring accurate readings of high temperatures, up to 1024°C.

Key Features:
- Supports K-type thermocouples
- Temperature range: 0°C to 1024°C
- Resolution: 0.25°C
- SPI communication (uses digital pins)
- 3.3V to 5V power supply
- Built-in cold-junction compensation
This makes it suitable for projects that involve high-temperature measurements where typical analog sensors fail or become unreliable.
MAX6675 Pinout:
The MAX6675 module typically comes with 5 pins. Here’s a breakdown of each pin and its function:
Pin | Label | Function |
---|---|---|
1 | GND | Ground connection |
2 | VCC | Power supply input (3.3V–5V) |
3 | SCK | Serial Clock input (from Arduino) |
4 | CS | Chip Select – tells the module when to communicate |
5 | SO | Serial Data Out – sends temperature data to Arduino |

Make sure to connect the thermocouple wires securely into the screw terminals, and double-check orientation as reversing them can cause incorrect readings.
How the MAX6675 Works
The module reads the analog voltage from the thermocouple and converts it into a digital value using a built-in 12-bit ADC. It then communicates this data over SPI to your Arduino, which reads and converts it into temperature values.
It also includes cold-junction compensation, which helps improve accuracy by accounting for ambient temperature changes, a critical feature for thermocouples.
Components Required
- Arduino UNO, Nano, or Mega
- MAX6675 module
- K-type thermocouple
- Jumper wires
- Breadboard (optional)
- USB cable for Arduino
Wiring the MAX6675 with Arduino
Here’s how to connect the MAX6675 module to an Arduino UNO:
MAX6675 Pin | Arduino Pin |
---|---|
VCC | 5V |
GND | GND |
SCK | D10 |
CS | D9 |
SO (MISO) | D8 |

Make sure all connections are firm and that the thermocouple is properly inserted in the screw terminals of the MAX6675 module.
Arduino Code Example
To read data from the MAX6675, use the Adafruit MAX6675 library. Install it from the Library Manager in the Arduino IDE.
#include <SPI.h>
#include <max6675.h>
int ktcSO = 8;
int ktcCS = 9;
int ktcCLK = 10;
MAX6675 thermocouple(ktcCLK, ktcCS, ktcSO);
void setup() {
Serial.begin(9600);
Serial.println("MAX6675 with Arduino - Temperature Reading");
}
void loop() {
Serial.print("Temperature: ");
Serial.print(thermocouple.readCelsius());
Serial.println(" °C");
delay(1000);
}
Upload this code to your Arduino, and open the Serial Monitor. You should see the temperature readings updating every second.
Troubleshooting Tips
- If readings are stuck or incorrect, check thermocouple orientation.
- Ensure the CS, SCK, and SO pins are connected properly.
- Check power connections (5V and GND).
- Make sure the thermocouple is functional and compatible.
- Re-check if you’ve selected the correct board and COM port in the Arduino IDE.
Mini Project: Digital High-Temperature Thermometer
Let’s build a simple digital thermometer using MAX6675 with Arduino and an OLED display to show real-time temperature.
Components Required:
- MAX6675 module + K-type thermocouple
- Arduino UNO or Nano
- OLED Display (0.96″ I2C)
- Jumper wires
Wiring:
Component | Pin | Arduino Pin |
MAX6675 | VCC | 5V |
MAX6675 | GND | GND |
MAX6675 | SCK | D10 |
MAX6675 | CS | D9 |
MAX6675 | SO | D8 |
OLED Display | VCC | 5V |
OLED Display | GND | GND |
OLED Display | SDA | A4 |
OLED Display | SCL | A5 |

Code:
#include <SPI.h>
#include <max6675.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
int ktcSO = 8;
int ktcCS = 9;
int ktcCLK = 10;
MAX6675 thermocouple(ktcCLK, ktcCS, ktcSO);
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 10);
display.println("Loading...");
display.display();
delay(2000);
}
void loop() {
float tempC = thermocouple.readCelsius();
display.clearDisplay();
display.setCursor(30, 10);
display.print("Temp: ");
display.setCursor(30, 40);
display.print(tempC);
display.println(" C");
display.display();
delay(1000);
}
Explanation:
This mini-project reads the high-temperature value using the MAX6675 sensor and displays it live on a 0.96″ OLED screen. It’s perfect for making a compact thermometer for ovens or industrial applications. You can also set thresholds in code to trigger alerts or relays based on the reading.
Demo:
Here is the hardware setup displaying the temperature in degrees Celsius on the OLED display.

Applications of MAX6675 with Arduino
- Industrial heat equipment monitoring
- Food and beverage processing
- Kilns and metalworking projects
- Home automation systems involving heat control
- Boiler temperature surveillance
- 3D printer hotbed temperature monitoring
The sensor’s high-temperature range and digital interface make it suitable for many demanding applications.
Related Articles
Conclusion
Using MAX6675 with Arduino makes it easy to measure high temperatures with precision. Whether you’re monitoring an oven, a heating element, or a DIY experiment, this module is a robust and beginner-friendly option for accurate temperature sensing. Try integrating it with displays or IoT systems for more advanced projects! It’s a great addition to your Arduino toolkit if you’re working with anything heat-related.