Dieses Tutorial ist Teil von: Relaissteuerung mit Arduino
Hier finden Sie Gruppenvideos zum Thema Staffellauf. Links zu weiteren Videos finden Sie unter diesem Artikel.
Verwendung eines MAX6675 K-Typ-Thermoelements mit Relais und Anzeige
Dieses Projekt zeigt, wie man ein MAX6675 K‑Typ-Thermoelement mit einem Arduino verbindet, ein Relais zur Steuerung integriert und ein Display zur Anzeige der Temperaturmesswerte verwendet. Dieses Setup ist für verschiedene Anwendungen, bei denen eine präzise Temperaturüberwachung und automatisierte Reaktionen erforderlich sind, äußerst wertvoll. Hier sind einige Projektideen:

- Überhitzungsschutz für empfindliche Elektronik
- Temperaturgeregelter Inkubator für biologische Experimente
- Automatisiertes System zum Brühen von Kaffee oder zum Brauen von Bier
- Industrielle Prozessüberwachung und -steuerung
- Umweltüberwachung in einem Gewächshaus oder einer anderen kontrollierten Umgebung
Hardware/Komponenten
Um dieses Projekt zu bauen, benötigen Sie die folgenden Komponenten:
- Arduino Uno (oder ein kompatibles Board)
- MAX6675 K-Typ Thermoelementmodul (im Video bei 00:58)
- Relaismodul
- TM1637 4-stelliges LED-Anzeigemodul
- Jumperkabel
- Verbindungsdrähte
Verdrahtungsanleitung
Die Verkabelung wird im Video erklärt (im Video bei 05:36). Die genauen Anschlüsse hängen davon ab, ob Sie einen SMD-Baustein (Surface-Mount-Chip) oder ein PCB-Modul verwenden. Siehe das Video für ein detailliertes Anschlussdiagramm.

Code-Erklärung
Der Arduino-Code verwendet die MAX6675-Bibliothek, um Temperaturwerte vom Thermoelement zu lesen. Die wichtigsten konfigurierbaren Teile des Codes sind:
- Thermoelement-Pinbelegungen:
thermoDO,thermoCS, undthermoCLK(im Video bei [03:53]). Diese Pins müssen entsprechend Ihrem Verdrahtungsschema angepasst werden. - Relais-Steuer-Pin: Pin 10 wird verwendet, um das Relais zu steuern (im Video bei [05:36]). Ändern Sie dies bei Bedarf.
- Display-Konfiguration (falls verwendet): Der Code enthält Abschnitte zur Konfiguration des TM1637-Displays. Passen Sie bei Bedarf die CLK- und DIO-Pins an (im Video bei [03:53]).
Der Code enthält Funktionen zum Auslesen der Temperatur in Celsius und Fahrenheit. Ein entscheidender Teil des Codes ist die Bedingung, die prüft, ob die Temperatur einen Schwellenwert überschreitet (in diesem Beispiel 80.0°C). Überschreitet sie diesen, wird das Relais aktiviert (Pin 10 geht 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-Projekt/Demonstration
Das Video zeigt das Projekt in Aktion (im Video bei 06:59). Der Sensor erfasst die Umgebungstemperatur genau und der Messwert steigt bei Erwärmung an. Die Funktionalität des Relais wird ebenfalls demonstriert.
Kapitel
- [00:00] Einleitung
- [00:39] Sensorübersicht
- [01:40] Pinanschlüsse
- [02:22] Bibliotheksinstallation
- [03:53] Code-Erklärung (Einrichtung)
- [04:06] Code-Erklärung (Schleife)
- [05:36] Verdrahtung
- [06:59] Live-Demonstration
Dieses Tutorial ist Teil von: Relaissteuerung mit Arduino
- Arduino-Code und Video für ein zweikanaliges 5V-Relais
- Ein 5V-Relais mit Arduino steuern, um AC- oder DC-Lasten wie eine Glühbirne oder einen Motor zu schalten
- TTP224 4-Channel Touch Sensor to Turn AC/DC Loads with Relay
- Verwendung eines 5V-Relaismoduls (Low-Trigger) mit 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
- Einen Arduino-Taster verwenden, um ein Relais und eine Wechselstromlampe zu schalten
/*
* 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);
}
/*
* Dies ist der Arduino-Code für den MAX6675 Thermoelement K-Typ mit Relais und Anzeige. Der Ausgangspin 10 ist mit dem Relais verbunden. Wenn die Temperatur den gewünschten Wert erreicht, schaltet Pin 10 das Relais EIN.
*
* Dieser Code wurde in unserem Video unter https://youtu.be/cD5oOu4N_AE erklärt.
*
* Geschrieben von Ahmad Nejrabi für Robojax Video
* Datum: 9. Dezember 2017 in Ajax, Ontario, Kanada
* Erlaubnis zur Weitergabe dieses Codes, sofern diese
* Notiz mit dem Code beibehalten wird.
* Haftungsausschluss: Dieser Code ist "WIE BESEHEN" und nur zu Bildungszwecken gedacht.
*
* /
*
* // Dieses Beispiel ist gemeinfrei. Viel Spaß!
* // 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);
// Verwende Arduino-Pins
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // Setze Pin 10 als Ausgang.
Serial.println("Robojax: MAX6675 test");
// Warte, bis der MAX-Chip stabil ist.
delay(500);
}
void loop() {
// Basisdurchlauf-Test, einfach die aktuelle Temperatur ausdrucken.
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// Wenn die Temperatur über 80,0 °C steigt, schalte das Relais EIN.
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // setze Pin 10 auf LOW
}else{
digitalWrite(10, HIGH); // setze Pin 10 auf HIGH
}
delay(1000);
}
/*
* Dies ist der Arduino-Code für den MAX6675 Thermoelement K-Typ mit Relais und Anzeige. Der Ausgangspin 10 ist mit dem Relais verbunden. Wenn die Temperatur den gewünschten Wert erreicht, schaltet der Pin 10 das Relais EIN. Die Temperatur wird auch auf der Anzeige angezeigt. Sie müssen die TM1637-Bibliothek einfügen, um die Anzeige zum Laufen zu bringen. Sie können die TM1637 von http://robojax.com/learn/library herunterladen. Dieser Code wurde in unserem Video unter https://youtu.be/cD5oOu4N_AE erklärt.
*
* Geschrieben von Ahmad Nejrabi für Robojax Video
* Datum: 9. Dezember 2017 in Ajax, Ontario, Kanada
* Erlaubnis zur Weitergabe dieses Codes, sofern diese
* Notiz mit dem Code aufbewahrt wird.
* Haftungsausschluss: Dieser Code ist "WIE BESEHEN" und nur zu Bildungszwecken gedacht.
*/
#include "max6675.h"
#include <Arduino.h>
#include <TM1637Display.h>
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
// Code zur Anzeige
#define CLK 2
#define DIO 3
#define TEST_DELAY 2000
TM1637Display display(CLK, DIO);
// Code für die Anzeigeende
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// Verwenden Sie Arduino-Pins
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // Pin 10 als Ausgang festlegen
Serial.println("Robojax: MAX6675 test");
// Warten Sie, bis sich der MAX-Chip stabilisiert hat.
delay(500);
}
void loop() {
// Basis-Ablesetest, einfach die aktuelle Temperatur drucken
// Code zur Anzeige
display.setBrightness(0x0f);
// Alle Segmente aktiviert
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data);
delay(1);
int temp = (int) thermocouple.readCelsius();
display.showNumberDec(temp, true, 3, 0);
// Code für die Anzeigeende
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// Wenn die Temperatur über 80,0 °C steigt, das Relais einschalten.
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // setze Pin 10 auf LOW
}else{
digitalWrite(10, HIGH); // setze Pin 10 auf HIGH
}
delay(1000);
}
/*
* Dies ist der Arduino-Code für das MAX6675 Thermoelement K-Typ mit Relais und Display. Der Ausgangspin 10 ist mit dem Relais verbunden. Wenn die Temperatur den gewünschten Wert erreicht, schaltet Pin 10 das Relais EIN.
*
* Dieser Code wurde in unserem Video unter https://youtu.be/cD5oOu4N_AE erklärt.
*
* Geschrieben von Ahmad Shamshiri für Robojax Video
* Datum: 02. Juni 2018, in Ajax, Ontario, Kanada
* Genehmigung zur Weitergabe dieses Codes, sofern diese
* Hinweis mit dem Code aufbewahrt wird.
* Haftungsausschluss: Dieser Code ist "WIE BESEHEN" und nur für Bildungszwecke gedacht.
*
* /
*
* // Dieses Beispiel ist gemeinfrei. Viel Spaß!
* // 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); // erste Thermoelement
MAX6675 thermocouple2(thermoCLK2, thermoCS2, thermoDO2); // 2. Thermoelement
int vccPin1 = 3;
int gndPin1 = 2;
int relayPin1 =10;
int vccPin2 = 11;
int gndPin2 = 12;
int relayPin2 =13;
void setup() {
Serial.begin(9600);
// verwende Arduino-Pins
pinMode(vccPin1, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin1, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin1, OUTPUT); // Setze Pin 10 als Ausgang für Thermoelement 1.
pinMode(vccPin2, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin2, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin2, OUTPUT); // Setze Pin 13 als Ausgang für Thermoelement 2.
Serial.println("Robojax: MAX6675 test");
// Auf das Stabilisieren des MAX-Chips warten.
delay(500);
}
void loop() {
// Basis-Aussagetest, einfach die aktuelle Temperatur ausgeben.
// für Thermoelement 1
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// Wenn die Temperatur über 80,0 °C steigt, das Relais einschalten.
if(thermocouple1.readCelsius() > 80.00){
digitalWrite(relayPin1, LOW); // setze Pin relayPin1 auf LOW
}else{
digitalWrite(relayPin1, HIGH); // setze den Pin relayPin1 auf HIGH
}
// thermoelement1 Ende
// für Thermoelement 2
Serial.print("C2 = ");
Serial.println(thermocouple2.readCelsius());
Serial.print("F2 = ");
Serial.println(thermocouple2.readFahrenheit());
// Wenn die Temperatur über 80,0 °C steigt, das Relais einschalten.
if(thermocouple2.readCelsius() > 80.00){
digitalWrite(relayPin2, LOW); // setze Pin relayPin2 auf LOW
}else{
digitalWrite(relayPin2, HIGH); // setze Pin relayPin2 auf HIGH
}
// thermoelement2 Ende
delay(1000);
}
Ressourcen & Referenzen
Dateien📁
Keine Dateien verfügbar.