Questo tutorial è parte di: Controllo del relè tramite Arduino
Questo è un gruppo di video tutti correlati alla staffetta. I link ad altri video si trovano sotto questo articolo.
Utilizzo di una termocoppia di tipo K con MAX6675, relè e display
Questo progetto dimostra come interfacciare una termocoppia di tipo K MAX6675 con un Arduino, integrando un relè per il controllo e un display per le letture della temperatura. Questa configurazione è preziosa per varie applicazioni in cui è necessario un monitoraggio preciso della temperatura e risposte automatizzate. Ecco alcune idee di progetto:

- Protezione dal surriscaldamento per dispositivi elettronici sensibili
- Incubatore a temperatura controllata per esperimenti biologici
- Sistema automatizzato per la preparazione di caffè o birra
- Monitoraggio e controllo dei processi industriali
- Monitoraggio ambientale in una serra o in un altro ambiente controllato
Hardware/Componenti
Per costruire questo progetto, avrai bisogno dei seguenti componenti:
- Arduino Uno (o scheda compatibile)
- Modulo termocoppia di tipo K MAX6675 (nel video a 00:58)
- Modulo relè
- Modulo display LED a 4 cifre TM1637
- Cavi di collegamento
- Fili di collegamento
Guida al cablaggio
Il cablaggio è spiegato nel video (nel video a 05:36). Le connessioni specifiche dipendono dal fatto che si utilizzi un chip a montaggio superficiale o un modulo PCB. Consulta il video per uno schema di cablaggio dettagliato.

Spiegazione del codice
Il codice Arduino utilizza la libreria MAX6675 per leggere i valori di temperatura dal termocoppia. Le parti chiave configurabili del codice sono:
- Definizioni dei pin della termocoppia:
thermoDO,thermoCS, ethermoCLK(nel video a [03:53]). Questi pin devono essere regolati in base al tuo schema di cablaggio. - Pin di controllo del relè: il pin 10 viene usato per controllare il relè (nel video a [05:36]). Modificalo se necessario.
- Configurazione del display (se utilizzato): Il codice include sezioni per configurare il display TM1637. Regolare i pin CLK e DIO se necessario (nel video a [03:53]).
Il codice include funzioni per leggere la temperatura in Celsius e Fahrenheit. Una parte cruciale del codice è l'istruzione condizionale che verifica se la temperatura supera una soglia (80.0°C in questo esempio). Se ciò avviene, il relè viene attivato (il pin 10 va 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
}
Progetto/Dimostrazione dal vivo
Il video mostra il progetto in azione (nel video a 06:59). Il sensore rileva con precisione la temperatura ambiente e il valore aumenta quando viene riscaldato. Viene anche mostrata la funzionalità del relè.
Capitoli
- [00:00] Introduzione
- [00:39] Panoramica del sensore
- [01:40] Connessioni dei pin
- [02:22] Installazione della libreria
- [03:53] Spiegazione del codice (Configurazione)
- [04:06] Spiegazione del codice (ciclo)
- [05:36] Cablaggio
- [06:59] Dimostrazione dal vivo
Questo tutorial è parte di: Controllo del relè tramite Arduino
- Codice Arduino e video per un relè a doppio canale da 5 V
- 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
- Utilizzando un modulo relè a 5V (bassa attivazione) con 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
- Usare un pulsante Arduino per commutare un relè e una lampadina in corrente alternata
/*
* 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);
}
/*
* Questo è il codice Arduino per il termocoppia K-Type MAX6675 con relè e display.
* Il pin di uscita 10 è collegato al relè.
* Quando la temperatura raggiunge il valore desiderato, il pin 10 accende il relè.
*
* Questo codice è stato spiegato nel nostro video su https://youtu.be/cD5oOu4N_AE
*
* Scritto da Ahmad Nejrabi per Robojax Video
* Data: 9 dicembre 2017, ad Ajax, Ontario, Canada
* Autorizzazione concessa per condividere questo codice a condizione che questa nota venga mantenuta con il codice.
* Dichiarazione di non responsabilità: questo codice è "COSÌ COM'È" e solo per scopi educativi.
*
* /
*
* // Questo esempio è di pubblico dominio. Divertiti!
* // 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);
// Usa i pin di Arduino
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // imposta il pin 10 come uscita
Serial.println("Robojax: MAX6675 test");
// aspetta che il chip MAX si stabilizzi
delay(500);
}
void loop() {
// test di lettura di base, stampa semplicemente la temperatura attuale
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// Se la temperatura supera gli 80,0 °C, accendi il relè.
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // imposta il pin 10 a LOW
}else{
digitalWrite(10, HIGH); // imposta il pin 10 su ALTO
}
delay(1000);
}
/*
* Questo è il codice Arduino per il termocoppia K-Type MAX6675 con relè e display. Il pin di uscita 10 è collegato al relè. Quando la temperatura raggiunge il valore desiderato, il pin 10 accende il relè. La temperatura è anche visualizzata sul display. Devi includere la libreria TM1637 per far funzionare il display. Puoi scaricare il TM1637 da http://robojax.com/learn/library. Questo codice è stato spiegato nel nostro video su https://youtu.be/cD5oOu4N_AE.
*
* Scritto da Ahmad Nejrabi per Robojax Video. Data: 9 dicembre 2017, ad Ajax, Ontario, Canada. Permesso concesso per condividere questo codice a condizione che questa nota venga mantenuta con il codice. Dichiarazione di non responsabilità: Questo codice è "COSÌ COM'È" e solo per scopi educativi.
*
* /
*
* // Questo esempio è di pubblico dominio. Divertiti!
* // www.ladyada.net/learn/sensors/thermocouple
*/
#include "max6675.h"
#include <Arduino.h>
#include <TM1637Display.h>
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
// Codice per la visualizzazione
#define CLK 2
#define DIO 3
#define TEST_DELAY 2000
TM1637Display display(CLK, DIO);
// Codice per la visualizzazione della fine
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// Usa i pin di Arduino
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // imposta il pin 10 come uscita
Serial.println("Robojax: MAX6675 test");
// attendere che il chip MAX si stabilizzi
delay(500);
}
void loop() {
// Test di lettura di base, stampa semplicemente la temperatura attuale.
// Codice per la visualizzazione
display.setBrightness(0x0f);
// Tutti i segmenti attivi
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data);
delay(1);
int temp = (int) thermocouple.readCelsius();
display.showNumberDec(temp, true, 3, 0);
// Codice per la visualizzazione della fine
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// Se la temperatura supera gli 80,0 °C, accendere il relè.
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // imposta il pin 10 su LOW
}else{
digitalWrite(10, HIGH); // imposta pin 10 su ALTO
}
delay(1000);
}
/*
* Questo è il codice Arduino per il termocoppia K-Type MAX6675 con relè e display. Il pin di output 10 è collegato al relè. Quando la temperatura raggiunge il valore desiderato, il pin 10 attiva il relè.
*
* Questo codice è stato spiegato nel nostro video su https://youtu.be/cD5oOu4N_AE
*
* Scritto da Ahmad Shamshiri per Robojax Video. Data: 02 Giugno 2018, ad Ajax, Ontario, Canada. Permesso concesso per condividere questo codice a condizione che questa nota venga mantenuta con il codice. Dichiarazione di non responsabilità: Questo codice è "COSÌ COM'È" e solo per scopi educativi.
*
* /
*
* // Questo esempio è di pubblico dominio. Buon divertimento!
* // 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); // primo termocoppia
MAX6675 thermocouple2(thermoCLK2, thermoCS2, thermoDO2); // 2° termocoppia
int vccPin1 = 3;
int gndPin1 = 2;
int relayPin1 =10;
int vccPin2 = 11;
int gndPin2 = 12;
int relayPin2 =13;
void setup() {
Serial.begin(9600);
// usa i pin Arduino
pinMode(vccPin1, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin1, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin1, OUTPUT); // imposta il pin 10 come uscita per il termocoppia1
pinMode(vccPin2, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin2, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin2, OUTPUT); // imposta il pin 13 come uscita per il termocoppia2
Serial.println("Robojax: MAX6675 test");
// aspetta che il chip MAX si stabilizzi
delay(500);
}
void loop() {
// test di lettura di base, stampa semplicemente la temperatura attuale
// per termocoppia 1
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// se la temperatura supera gli 80,0 °C, accendi il relè
if(thermocouple1.readCelsius() > 80.00){
digitalWrite(relayPin1, LOW); // imposta pin relayPin1 BASSO
}else{
digitalWrite(relayPin1, HIGH); // imposta pin relayPin1 ALTO
}
// thermocoppia1 fine
// per termocoppia 2
Serial.print("C2 = ");
Serial.println(thermocouple2.readCelsius());
Serial.print("F2 = ");
Serial.println(thermocouple2.readFahrenheit());
// se la temperatura supera gli 80,0 °C, accendi il relè
if(thermocouple2.readCelsius() > 80.00){
digitalWrite(relayPin2, LOW); // imposta pin relayPin2 a LOW
}else{
digitalWrite(relayPin2, HIGH); // imposta il pin relayPin2 ALTO
}
// termocoppia2 end
delay(1000);
}
Risorse e riferimenti
File📁
Nessun file disponibile.