Código de búsqueda

Uso de un termopar tipo K con MAX6675, relé y pantalla

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:

MAX6675 Thermocoupler module
  • 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.

Arduino wiring for MAX6675 Thermocoupler module
Arduino wiring for MAX6675 Thermocoupler module

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

Imágenes

MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
K-Type Thermocoupler module with wire
K-Type Thermocoupler module with wire
K-Type thermocoupler connector
K-Type thermocoupler connector
Arduino wiring for MAX6675 Thermocoupler module
Arduino wiring for MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
24-Arduino code for a MAX6675 K-type thermocouple (without relay and display)
Idioma: C++
/*
 * 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);
}
25-Arduino code for a MAX6675 K-type thermocouple with relay (no display)
Idioma: C++
/*
 * 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);
}
26-Arduino code for a MAX6675 K-type thermocouple with relay and display
Idioma: C++
/*
 * 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);
}
27-Arduino code for two MAX6675 K-type thermocouples with relay (no display)
Idioma: C++
/*
 * 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);
}

Archivos📁

No hay archivos disponibles.