Este tutorial faz parte de: Controlando um relé usando Arduino
Esta é uma coletânea de vídeos relacionados a revezamento. Os links para outros vídeos estão abaixo deste artigo.
Usando um MAX6675 (termopar tipo K) com relé e display
Este projeto demonstra como fazer a interface entre um termopar tipo K MAX6675 e um Arduino, incorporando um relé para controle e um display para leituras de temperatura. Esta configuração é inestimável para várias aplicações que exigem monitoramento preciso da temperatura e respostas automatizadas. Aqui estão algumas ideias de projetos:

- Proteção contra superaquecimento para equipamentos eletrônicos sensíveis
- Incubadora com controle de temperatura para experimentos biológicos
- Sistema automatizado de preparo de café ou cerveja
- Monitoramento e controle de processos industriais
- Monitoramento ambiental em uma estufa ou outro ambiente controlado
Hardware/Componentes
Para construir este projeto, você precisará dos seguintes componentes:
- Arduino Uno (ou placa compatível)
- Módulo termopar tipo K MAX6675 (no vídeo em 00:58)
- Módulo de relé
- Módulo de display LED de 4 dígitos TM1637
- Fios jumper
- Fios de ligação
Guia de fiação
A fiação é explicada no vídeo (no vídeo em 05:36). As conexões específicas dependem de você estar usando um chip de montagem em superfície ou um módulo PCB. Consulte o vídeo para um diagrama de fiação detalhado.

Explicação do Código
O código Arduino usa a biblioteca MAX6675 para ler valores de temperatura do termopar. As principais partes configuráveis do código são:
- Definições dos pinos do termopar:
thermoDO,thermoCS, ethermoCLK(no vídeo em [03:53]). Esses pinos precisam ser ajustados de acordo com seu esquema de fiação. - Pino de controle do relé: o pino 10 é usado para controlar o relé (no vídeo em [05:36]). Altere isso se necessário.
- Configuração do display (se usado): O código inclui seções para configurar o display TM1637. Ajuste os pinos CLK e DIO, se necessário (no vídeo em [03:53]).
O código inclui funções para ler a temperatura em Celsius e Fahrenheit. Uma parte crucial do código é a instrução condicional que verifica se a temperatura excede um limiar (80.0°C neste exemplo). Se assim for, o relé é ativado (pino 10 fica 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
}
Projeto/Demonstração Ao Vivo
O vídeo demonstra o projeto em ação (no vídeo aos 06:59). O sensor mede com precisão a temperatura ambiente e aumenta quando aquecido. A funcionalidade do relé também é demonstrada.
Capítulos
- [00:00] Introdução
- [00:39] Visão geral do sensor
- [01:40] Conexões dos pinos
- [02:22] Instalação da biblioteca
- [03:53] Explicação do Código (Configuração)
- [04:06] Explicação do Código (Laço)
- [05:36] Fiação
- [06:59] Demonstração ao vivo
Este tutorial é parte de: Controlando um relé usando Arduino
- Código Arduino e vídeo para um relé de 5V de dois canais
- Controlando um relé de 5V com Arduino para acionar uma carga AC ou DC, como lâmpada ou motor
- Sensor de Toque TTP224 de 4 Canais para Acionar Cargas AC/DC com Relé
- Usando um Módulo de Relé de 5V (Baixo-Gatilho) com Arduino
- Usando um interruptor de palheta para controlar um relé e cargas AC/DC com um Arduino
- Usando um módulo de toque TTP223B e um relé para controlar cargas CA/CC com um Arduino
- Usando um botão do Arduino para acionar um relé e uma lâmpada em corrente alternada
/*
* 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 é o código Arduino para o termopar K-Type MAX6675 com relé e display. O pino de saída 10 está conectado ao relé. Quando a temperatura atinge o valor desejado, o pino 10 liga o relé.
*
* Este código foi explicado em nosso vídeo em https://youtu.be/cD5oOu4N_AE
*
* Escrito por Ahmad Nejrabi para Robojax Video. Data: 9 de dezembro de 2017, em Ajax, Ontário, Canadá. Permissão concedida para compartilhar este código, desde que esta nota seja mantida com o código. Isenção de responsabilidade: este código é "COMO ESTÁ" e para fins educacionais apenas.
*
* /
*
* // Este exemplo é de domínio público. Aproveite! // 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 pinos do Arduino
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // defina o pino 10 como saída
Serial.println("Robojax: MAX6675 test");
// aguardar o chip MAX estabilizar
delay(500);
}
void loop() {
// teste básico de leitura, apenas imprima a temperatura atual
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// Se a temperatura ultrapassar 80,0 °C, ative o relé.
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // defina o pino 10 como baixo
}else{
digitalWrite(10, HIGH); // defina o pino 10 como ALTO
}
delay(1000);
}
/*
* Este é o código Arduino para o termopar K-Type MAX6675 com relé e display. O pino de saída 10 está conectado ao relé. Quando a temperatura atinge o valor desejado, o pino 10 liga o relé. A temperatura também é exibida no display. Você deve incluir a biblioteca TM1637 para que o display funcione. Você pode baixar o TM1637 em http://robojax.com/learn/library. Este código foi explicado em nosso vídeo em https://youtu.be/cD5oOu4N_AE
*
* Escrito por Ahmad Nejrabi para o vídeo Robojax. Data: 9 de dezembro de 2017, em Ajax, Ontário, Canadá. Permissão concedida para compartilhar este código, desde que esta nota seja mantida com o código. Aviso Legal: Este código é "COMO ESTÁ" e apenas para fins educacionais.
*/
#include "max6675.h"
#include <Arduino.h>
#include <TM1637Display.h>
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
// Código para exibição
#define CLK 2
#define DIO 3
#define TEST_DELAY 2000
TM1637Display display(CLK, DIO);
// Código para exibição de fim
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// Use pinos Arduino
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // defina o pino 10 como saída
Serial.println("Robojax: MAX6675 test");
// aguarde o chip MAX estabilizar
delay(500);
}
void loop() {
// Teste básico de leitura, apenas imprima a temperatura atual.
// Código para exibição
display.setBrightness(0x0f);
// Todos os segmentos ativos
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 exibição de fim
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// Se a temperatura ultrapassar 80,0 °C, ligue o relé.
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // defina o pino 10 como BAIXO
}else{
digitalWrite(10, HIGH); // defina o pino 10 como ALTO
}
delay(1000);
}
/*
* Este é o código Arduino para o termopar K-Type MAX6675 com relé e display.
* O pino de saída 10 está conectado ao relé.
* Quando a temperatura atinge o valor desejado, o pino 10 liga o relé.
*
* Este código foi explicado em nosso vídeo em https://youtu.be/cD5oOu4N_AE
*
* Escrito por Ahmad Shamshiri para Robojax Video
* Data: 02 de junho de 2018, em Ajax, Ontário, Canadá
* Permissão concedida para compartilhar este código, desde que esta
* nota seja mantida com o código.
* Isenção de responsabilidade: Este código é "COMO ESTÁ" e para fins educacionais apenas.
*
* /
*
* // Este exemplo é domínio público. Aproveite!
* // 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); // primeiro 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);
// use pinos do Arduino
pinMode(vccPin1, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin1, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin1, OUTPUT); // defina o pino 10 como saída para termopar 1
pinMode(vccPin2, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin2, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin2, OUTPUT); // defina o pino 13 como saída para termopar2
Serial.println("Robojax: MAX6675 test");
// aguarde o chip MAX estabilizar
delay(500);
}
void loop() {
// teste básico de leitura, apenas exiba a temperatura atual
// para termopar 1
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// se a temperatura ultrapassar 80,0°C, ligue o relé
if(thermocouple1.readCelsius() > 80.00){
digitalWrite(relayPin1, LOW); // defina o pino relayPin1 como BAIXO
}else{
digitalWrite(relayPin1, HIGH); // defina o pino relayPin1 ALTO
}
// termopar1 fim
// para termopar 2
Serial.print("C2 = ");
Serial.println(thermocouple2.readCelsius());
Serial.print("F2 = ");
Serial.println(thermocouple2.readFahrenheit());
// se a temperatura ultrapassar 80,0°C, ligue o relé
if(thermocouple2.readCelsius() > 80.00){
digitalWrite(relayPin2, LOW); // defina o pino relayPin2 LOW
}else{
digitalWrite(relayPin2, HIGH); // definir pino relayPin2 ALTO
}
// termopar2 final
delay(1000);
}
Recursos e referências
Arquivos📁
Nenhum arquivo disponível.