Este tutorial es parte de: Control de relé con Arduino
Este es un grupo de videos relacionados con el relevo. Los enlaces a otros videos se encuentran debajo de este artículo.
Uso de un termopar tipo K con MAX6675, relé y pantalla
Este proyecto demuestra cómo conectar un termopar tipo K mediante un MAX6675 a un Arduino, incorporando un relé para el control y una pantalla para las lecturas de temperatura. Esta configuración es invaluable para diversas aplicaciones en las que se requiere un monitoreo preciso de la temperatura y respuestas automatizadas. Aquí hay algunas ideas de proyectos:

- Protección contra sobrecalentamiento para equipos electrónicos sensibles
- Incubadora con control de temperatura para experimentos biológicos
- Sistema automatizado para la elaboración de café o cerveza
- Monitorización y control de procesos industriales
- Monitoreo ambiental en un invernadero u otro entorno controlado
Hardware/Componentes
Para construir este proyecto, necesitará los siguientes componentes:
- Arduino Uno (o placa compatible)
- Módulo termopar tipo K MAX6675 (en el vídeo a las 00:58)
- Módulo relé
- Módulo de pantalla LED de 4 dígitos TM1637
- Cables puente
- Cables de conexión
Guía de cableado
El cableado se explica en el video (a los 05:36). Las conexiones específicas dependen de si está usando un chip de montaje en superficie o un módulo de PCB. Consulte el video para ver un diagrama de cableado detallado.

Explicación del código
El código de Arduino utiliza la biblioteca MAX6675 para leer valores de temperatura del termopar. Las partes clave configurables del código son:
- Definiciones de pines del termopar:
thermoDO,thermoCS, ythermoCLK(en el video en [03:53]). Estos pines deben ajustarse según su esquema de cableado. - Pin de control del relé: El Pin 10 se usa para controlar el relé (en el vídeo en [05:36]). Cambie esto si es necesario.
- Configuración del display (si se usa): El código incluye secciones para configurar el display TM1637. Ajuste los pines CLK y DIO si es necesario (en el video en [03:53]).
El código incluye funciones para leer la temperatura en Celsius y Fahrenheit. Una parte crucial del código es la instrucción condicional que comprueba si la temperatura supera un umbral (80.0°C en este ejemplo). Si lo hace, el relé se activa (el pin 10 pasa a 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
}
Proyecto en vivo/Demostración
El video muestra el proyecto en acción (en el video a las 06:59). El sensor mide con precisión la temperatura ambiente y aumenta cuando se calienta. También se muestra el funcionamiento del relé.
Capítulos
- [00:00] Introducción
- [00:39] Descripción general del sensor
- [01:40] Conexiones de pines
- [02:22] Instalación de la biblioteca
- [03:53] Explicación del código (Configuración)
- [04:06] Explicación del código (bucle)
- [05:36] Cableado
- [06:59] Demostración en vivo
Este tutorial es parte de: Control de relé con Arduino
- Código y vídeo de Arduino para un relé de 5V de doble canal
- Controlar un relé de 5V con Arduino para accionar una carga de CA o CC, como una bombilla o un motor
- TTP224 sensor táctil de 4 canales para controlar cargas AC/DC mediante relé
- Uso de un módulo de relé de 5V (bajo disparador) con Arduino
- Uso de un interruptor de láminas para controlar un relé y cargas CA/CC con un Arduino
- Usando un módulo táctil TTP223B y un relé para controlar cargas AC/DC con un Arduino
- Usar un pulsador de Arduino para accionar un relé y una bombilla de CA
/*
* 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);
}
/*
* Este es el código de Arduino para el termopar K-Type MAX6675 con relé y pantalla. El pin de salida 10 está conectado al relé. Cuando la temperatura alcanza el valor deseado, el pin 10 activa el relé.
*
* Este código ha sido explicado en nuestro video en https://youtu.be/cD5oOu4N_AE
*
* Escrito por Ahmad Nejrabi para Robojax Video Fecha: 9 de diciembre de 2017, en Ajax, Ontario, Canadá Se concede permiso para compartir este código siempre que se mantenga esta nota con el código. Descargo de responsabilidad: Este código es "TAL CUAL" y solo para fines educativos.
*
* /
*
* // Este ejemplo es de dominio público. ¡Disfruta!
* // 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);
// Utiliza los pines de Arduino
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // configurar el pin 10 como salida
Serial.println("Robojax: MAX6675 test");
// esperar a que el chip MAX se estabilice
delay(500);
}
void loop() {
// prueba de lectura básica, solo imprime la temperatura actual
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// Si la temperatura supera los 80.0C, enciende el relé.
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // establecer pin 10 en bajo
}else{
digitalWrite(10, HIGH); // establecer pin 10 ALTO
}
delay(1000);
}
/*
* Este es el código de Arduino para el termopar K-Type MAX6675 con relé y pantalla. El pin de salida 10 está conectado al relé. Cuando la temperatura alcanza el valor deseado, el pin 10 activa el relé. La temperatura también se muestra en la pantalla. Debes incluir la biblioteca TM1637 para que la pantalla funcione. Puedes descargar la TM1637 desde http://robojax.com/learn/library. Este código ha sido explicado en nuestro video en https://youtu.be/cD5oOu4N_AE.
*
* Escrito por Ahmad Nejrabi para Robojax Video. Fecha: 9 de diciembre de 2017, en Ajax, Ontario, Canadá. Se otorga permiso para compartir este código siempre que se mantenga esta nota con el código. Advertencia: Este código es "TAL CUAL" y solo para fines educativos.
*/
#include "max6675.h"
#include <Arduino.h>
#include <TM1637Display.h>
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
// Código para pantalla
#define CLK 2
#define DIO 3
#define TEST_DELAY 2000
TM1637Display display(CLK, DIO);
// Código para mostrar fin
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// Usa los pines de Arduino
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // configura el pin 10 como salida
Serial.println("Robojax: MAX6675 test");
// esperar a que el chip MAX se estabilice
delay(500);
}
void loop() {
// Prueba de lectura básica, solo imprime la temperatura actual.
// Código para pantalla
display.setBrightness(0x0f);
// Todos los segmentos activados
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data);
delay(1);
int temp = (int) thermocouple.readCelsius();
display.showNumberDec(temp, true, 3, 0);
// Código para mostrar fin
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// Si la temperatura supera los 80.0C, encienda el relé.
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // configurar pin 10 en bajo
}else{
digitalWrite(10, HIGH); // establecer pin 10 en ALTO
}
delay(1000);
}
/*
* Este es el código de Arduino para el termopar K-Type MAX6675 con relé y pantalla.
* El pin de salida 10 está conectado al relé.
* Cuando la temperatura alcanza el valor deseado, el pin 10 activa el relé.
*
* Este código ha sido explicado en nuestro video en https://youtu.be/cD5oOu4N_AE
*
* Escrito por Ahmad Shamshiri para Robojax Video
* Fecha: 02 de junio de 2018, en Ajax, Ontario, Canadá
* Se otorga permiso para compartir este código siempre que se mantenga esta
* nota con el código.
* Descargo de responsabilidad: Este código se proporciona "TAL CUAL" y es solo para fines educativos.
*
* /
*
* // Este ejemplo es de dominio público. ¡Disfruta!
* // 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); // primer termopar
MAX6675 thermocouple2(thermoCLK2, thermoCS2, thermoDO2); // 2º termopar
int vccPin1 = 3;
int gndPin1 = 2;
int relayPin1 =10;
int vccPin2 = 11;
int gndPin2 = 12;
int relayPin2 =13;
void setup() {
Serial.begin(9600);
// usar pines de Arduino
pinMode(vccPin1, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin1, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin1, OUTPUT); // configura el pin 10 como salida para el termopar 1
pinMode(vccPin2, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin2, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin2, OUTPUT); // configurar el pin 13 como salida para termopar2
Serial.println("Robojax: MAX6675 test");
// esperar a que el chip MAX se estabilice
delay(500);
}
void loop() {
// prueba de lectura básica, solo imprime la temperatura actual
// para termopar 1
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// si la temperatura supera los 80.0°C, enciende el relé
if(thermocouple1.readCelsius() > 80.00){
digitalWrite(relayPin1, LOW); // configurar pin relayPin1 en bajo
}else{
digitalWrite(relayPin1, HIGH); // configurar pin relayPin1 ALTO
}
// termopar1 extremo
// para termopar 2
Serial.print("C2 = ");
Serial.println(thermocouple2.readCelsius());
Serial.print("F2 = ");
Serial.println(thermocouple2.readFahrenheit());
// si la temperatura supera los 80.0°C, enciende el relé
if(thermocouple2.readCelsius() > 80.00){
digitalWrite(relayPin2, LOW); // configurar pin relayPin2 BAJO
}else{
digitalWrite(relayPin2, HIGH); // configurar pin relayPin2 ALTO
}
// fin de termopar2
delay(1000);
}
Recursos y referencias
Archivos📁
No hay archivos disponibles.