This tutorial is part of: Điều khiển rơle bằng Arduino
Đây là các video được nhóm lại, tất cả đều liên quan đến môn chạy tiếp sức. Các liên kết đến các video khác nằm bên dưới bài viết này.
Using a MAX6675 K-Type Thermocouple with Relay and Display
This project demonstrates how to interface a MAX6675 K-type thermocouple with an Arduino, incorporating a relay for control and a display for temperature readings. This setup is invaluable for various applications where precise temperature monitoring and automated responses are needed. Here are some project ideas:

- Overheat protection for sensitive electronics
- Temperature-controlled incubator for biological experiments
- Automated brewing system for coffee or beer
- Industrial process monitoring and control
- Environmental monitoring in a greenhouse or other controlled environment
Hardware/Components
To build this project, you will need the following components:
- Arduino Uno (or compatible board)
- MAX6675 K-type thermocouple module (in video at 00:58)
- Relay module
- TM1637 4-digit LED display module
- Jumper wires
- Connecting wires
Wiring Guide
The wiring is explained in the video (in video at 05:36). The specific connections depend on whether you are using a surface mount chip or a PCB module. Refer to the video for a detailed wiring diagram.

Code Explanation
The Arduino code uses the MAX6675 library to read temperature values from the thermocouple. The key configurable parts of the code are:
- Thermocouple pin definitions:
thermoDO,thermoCS, andthermoCLK(in video at [03:53]). These pins need to be adjusted according to your wiring scheme. - Relay control pin: Pin 10 is used to control the relay (in video at [05:36]). Change this if needed.
- Display configuration (if used): The code includes sections for configuring the TM1637 display. Adjust the CLK and DIO pins if necessary (in video at [03:53]).
The code includes functions to read temperature in Celsius and Fahrenheit. A crucial part of the code is the conditional statement that checks if the temperature exceeds a threshold (80.0°C in this example). If it does, the relay is activated (pin 10 goes LOW).
// If temperature goes above 80.0C, turn the relay ON
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW);// Set pin 10 LOW
} else {
digitalWrite(10, HIGH);// Set pin 10 HIGH
}
Live Project/Demonstration
The video demonstrates the project in action (in video at 06:59). The sensor accurately reads the ambient temperature and increases when heated. The relay functionality is also showcased.
Chapters
- [00:00] Introduction
- [00:39] Sensor Overview
- [01:40] Pin Connections
- [02:22] Library Installation
- [03:53] Code Explanation (Setup)
- [04:06] Code Explanation (Loop)
- [05:36] Wiring
- [06:59] Live Demonstration
This tutorial is part of: Điều khiển rơle bằng Arduino
- Arduino Code and Video for a Dual-Channel 5V Relay
- Controlling a 5V Relay Using Arduino to cotrol AC or DC load like bulb or motor
- TTP224 4-Channel Touch Sensor to Turn AC/DC Loads with Relay
- Sử dụng mô-đun rơ-le 5V (Kích hoạt Thấp) với Arduino
- Using a Reed Switch to Control a Relay and AC/DC Loads with an Arduino
- Using a TTP223B touch module and relay to control AC/DC loads with an Arduino
- Using an Arduino push button to switch a relay and AC bulb
/*
* This is the Arduino code for MAX6675 Thermocouple K-Type with Relay and Display.
* This code has been explained in our video at https://youtu.be/cD5oOu4N_AE.
*
* Written by Ahmad Shamshiri for Robojax Video
* Date: December 9, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// This example is public domain. Enjoy!
// www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// Use Arduino pins
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
Serial.println("Robojax: MAX6675 test");
// Wait for MAX chip to stabilize
delay(500);
}
void loop() {
// Basic readout test, just print the current temperature
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// If temperature goes above 80.0C, turn the relay ON
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW);// Set pin 10 LOW
}else{
digitalWrite(10, HIGH);// Set pin 10 HIGH
}
delay(1000);
}
/*
* This is the Arduino code for MAX6675 Thermocouple K-Type with Relay and Display
* The output pin 10 is connected to the relay.
* When the temperature reaches the desired value, pin 10 turns the
* relay ON.
* This code has been explained in our video at https://youtu.be/cD5oOu4N_AE
*
* Written by Ahmad Nejrabi for Robojax Video
* Date: December 9, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// This example is public domain. Enjoy!
// www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// Use Arduino pins
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT);// set pin 10 as output
Serial.println("Robojax: MAX6675 test");
// wait for MAX chip to stabilize
delay(500);
}
void loop() {
// basic readout test, just print the current temp
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// If temperature goes above 80.0C, turn the relay ON
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW);// set pin 10 LOW
}else{
digitalWrite(10, HIGH);// set pin 10 HIGH
}
delay(1000);
}
/*
* This is the Arduino code for MAX6675 Thermocouple K-Type with Relay and Display
* The output pin 10 is connected to the relay.
* When the temperature reaches the desired value, pin 10 turns the
* relay ON.
* The temperature is also displayed on the display.
* You must include the TM1637 library to make the display work.
* You can download the TM1637 from http://robojax.com/learn/library
* This code has been explained in our video at https://youtu.be/cD5oOu4N_AE
*
* Written by Ahmad Nejrabi for Robojax Video
* Date: December 9, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// This example is public domain. Enjoy!
// www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
#include <Arduino.h>
#include <TM1637Display.h>
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
// Code for display
#define CLK 2
#define DIO 3
#define TEST_DELAY 2000
TM1637Display display(CLK, DIO);
// Code for display end
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// Use Arduino pins
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT);// set pin 10 as output
Serial.println("Robojax: MAX6675 test");
// wait for MAX chip to stabilize
delay(500);
}
void loop() {
// Basic readout test, just print the current temp
// Code for display
display.setBrightness(0x0f);
// All segments on
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data);
delay(1);
int temp = (int) thermocouple.readCelsius();
display.showNumberDec(temp, true, 3, 0);
// Code for display end
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// If temperature goes above 80.0C, turn the relay ON
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW);// set pin 10 LOW
}else{
digitalWrite(10, HIGH);// set pin 10 HIGH
}
delay(1000);
}
/*
* This is the Arduino code for MAX6675 Thermocouple K-Type with Relay and Display
* The output pin 10 is connected to the relay.
* When the temperature reaches the desired value, pin 10 turns the
* relay ON.
* This code has been explained in our video at https://youtu.be/cD5oOu4N_AE
*
* Written by Ahmad Shamshiri for Robojax Video
* Date: June 02, 2018, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// This example is public domain. Enjoy!
// www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
int thermoDO1 = 4;
int thermoCS1 = 5;
int thermoCLK1 = 6;
int thermoDO2 = 7;
int thermoCS2 = 8;
int thermoCLK3 = 9;
MAX6675 thermocouple1(thermoCLK1, thermoCS1, thermoDO1);// first thermocouple
MAX6675 thermocouple2(thermoCLK2, thermoCS2, thermoDO2);// 2nd thermocouple
int vccPin1 = 3;
int gndPin1 = 2;
int relayPin1 =10;
int vccPin2 = 11;
int gndPin2 = 12;
int relayPin2 =13;
void setup() {
Serial.begin(9600);
// use Arduino pins
pinMode(vccPin1, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin1, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin1, OUTPUT);// set pin 10 as output for thermocouple1
pinMode(vccPin2, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin2, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin2, OUTPUT);// // set pin 13 as output for thermocouple2
Serial.println("Robojax: MAX6675 test");
// wait for MAX chip to stabilize
delay(500);
}
void loop() {
// basic readout test, just print the current temp
// for thermocouple 1
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// if temperature goes above 80.0C, turn the relay ON
if(thermocouple1.readCelsius() > 80.00){
digitalWrite(relayPin1, LOW);// set pin relayPin1 LOW
}else{
digitalWrite(relayPin1, HIGH);// set pin relayPin1 HIGH
}
// thermocouple1 end
// for thermocouple 2
Serial.print("C2 = ");
Serial.println(thermocouple2.readCelsius());
Serial.print("F2 = ");
Serial.println(thermocouple2.readFahrenheit());
// if temperature goes above 80.0C, turn the relay ON
if(thermocouple2.readCelsius() > 80.00){
digitalWrite(relayPin2, LOW);// set pin relayPin2 LOW
}else{
digitalWrite(relayPin2, HIGH);// set pin relayPin2 HIGH
}
// thermocouple2 end
delay(1000);
}
Tài nguyên & tài liệu tham khảo
Tập tin📁
Các tập tin khác
-
Thư viện MAX6675
robojax-max6675-thermo.zip0.01 MB