本教程是的一部分: 使用 Arduino 控制继电器
这里是所有与接力赛相关的视频合集。其他视频的链接在本文下方。
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
本教程是……的一部分: 使用 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
- 使用5V继电器模块(低触发)与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);
}
/*
* 这是用于MAX6675 K型热电偶、继电器和显示器的Arduino代码。输出引脚10连接到继电器。当温度达到预定值时,引脚10会使继电器开启。
*
* 该代码在我们的视频中进行了讲解,视频链接为https://youtu.be/cD5oOu4N_AE
*
* 作者:Ahmad Nejrabi,Robojax视频
* 日期:2017年12月9日,加拿大安大略省Ajax
* 允许分享此代码,前提是保留此说明。
* 免责声明:此代码为“按现状”提供,仅用于教育目的。
*
* /
*
* // 此示例为公共领域。请享用!
* // 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);
// 使用Arduino引脚
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // 将引脚10设置为输出
Serial.println("Robojax: MAX6675 test");
// 等待MAX芯片稳定
delay(500);
}
void loop() {
// 基本读数测试,仅打印当前温度
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// 如果温度超过80.0°C,开启继电器。
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // 将引脚10设置为低电平
}else{
digitalWrite(10, HIGH); // 将引脚10设置为高电平
}
delay(1000);
}
/*
* 这是用于MAX6675 K型热电偶与继电器和显示器的Arduino代码。输出引脚10连接到继电器。当温度达到所需值时,引脚10会使继电器开启。温度也会在显示器上显示。您必须包含TM1637库才能使显示器工作。您可以从http://robojax.com/learn/library下载TM1637。该代码已在我们的视频中解释,视频链接为https://youtu.be/cD5oOu4N_AE。
*
* 作者:Ahmad Nejrabi,Robojax视频
* 日期:2017年12月9日,加拿大安大略省Ajax
* 允许分享此代码,前提是该说明与代码一同保留。
* 免责声明:该代码为“按原样”提供,仅用于教育目的。
*/
#include "max6675.h"
#include <Arduino.h>
#include <TM1637Display.h>
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
// 显示的代码
#define CLK 2
#define DIO 3
#define TEST_DELAY 2000
TM1637Display display(CLK, DIO);
// 显示结束的代码
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// 使用Arduino引脚
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // 将引脚10设置为输出
Serial.println("Robojax: MAX6675 test");
// 等待 MAX 芯片稳定。
delay(500);
}
void loop() {
// 基本读数测试,只需打印当前温度。
// 显示的代码
display.setBrightness(0x0f);
// 所有段落开启
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data);
delay(1);
int temp = (int) thermocouple.readCelsius();
display.showNumberDec(temp, true, 3, 0);
// 显示结束的代码
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// 如果温度超过 80.0C,则打开继电器。
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // 将引脚10设置为低电平
}else{
digitalWrite(10, HIGH); // 设置引脚10为高电平
}
delay(1000);
}
/*
* 这是用于MAX6675 K型热电偶与继电器和显示器的Arduino代码。
* 输出引脚10连接到继电器。
* 当温度达到所需值时,引脚10将继电器打开。
*
* 这段代码在我们的视频中进行了说明,网址为https://youtu.be/cD5oOu4N_AE
*
* 作者:Ahmad Shamshiri,Robojax视频
* 日期:2018年6月2日,加拿大安大略省Ajax
* 许可分享此代码,前提是保留此注释。
* 免责声明:此代码为“按原样”提供,仅用于教育目的。
*
* /
*
* // 这个示例为公共领域。尽情享受!
* // 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); // 第一个热电偶
MAX6675 thermocouple2(thermoCLK2, thermoCS2, thermoDO2); // 第二个热电偶
int vccPin1 = 3;
int gndPin1 = 2;
int relayPin1 =10;
int vccPin2 = 11;
int gndPin2 = 12;
int relayPin2 =13;
void setup() {
Serial.begin(9600);
// 使用Arduino引脚
pinMode(vccPin1, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin1, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin1, OUTPUT); // 将引脚10设置为热电偶1的输出。
pinMode(vccPin2, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin2, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin2, OUTPUT); // 将引脚13设置为热电偶2的输出
Serial.println("Robojax: MAX6675 test");
// 等待MAX芯片稳定。
delay(500);
}
void loop() {
// 基本读数测试,只需打印当前温度
// 用于热电偶 1
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// 如果温度超过80.0摄氏度,将继电器打开。
if(thermocouple1.readCelsius() > 80.00){
digitalWrite(relayPin1, LOW); // 将引脚 relayPin1 设置为低电平
}else{
digitalWrite(relayPin1, HIGH); // 设置引脚 relayPin1 为高电平
}
// 热电偶1端
// 用于热电偶2
Serial.print("C2 = ");
Serial.println(thermocouple2.readCelsius());
Serial.print("F2 = ");
Serial.println(thermocouple2.readFahrenheit());
// 如果温度超过80.0摄氏度,将继电器打开。
if(thermocouple2.readCelsius() > 80.00){
digitalWrite(relayPin2, LOW); // 设置引脚 relayPin2 低电平
}else{
digitalWrite(relayPin2, HIGH); // 设置引脚 relayPin2 为高电平
}
// 热电偶2端
delay(1000);
}
资源与参考
文件📁
没有可用的文件。