Termopar tipo K + MAX6675 – Medindo temperatura
Neste tutorial iremos demonstrar como desenvolver sistemas de monitoramento de temperatura utilizando o termopar tipo K em conjunto com o MAX6675. Para demostrar seu funcionamento, utilizaremos o Arduino uno.
[toc]
Sensores de Temperatura
Os sensores de temperatura são dispositivos que ajudam a identificar o nível de aquecimento de um determinado equipamento ou processo com o objetivo de fazer com que este permaneça em condições adequadas para o seu funcionamento. Em virtude dos infinitos tipos de aplicações existentes, é fácil perceber a necessidade de uma vasta gama de sensores, os quais, de maneira individual, cumprem requisitos particulares de cada situação.
Aqui em nosso portal nós tempos dois tutoriais muito interessantes sobre medição de temperatura:
Os termopares
Os termopares são os elementos mais populares quando falamos na realização de medições de temperaturas de processos. Estes são bastante conhecidos em virtude de sua versatilidade, sendo utilizados em vários tipos de aplicações, indo desde as mais simples até as mais complexas (geralmente existentes em áreas industriais) por serem dispositivos robustos e de custo reduzido.
O princípio de funcionamento dos termopares foi descoberto quando o físico alemão Thomas Seebeckconstatou experimentalmente a existência de uma corrente elétrica ao juntar dois fios de materiais diferentes formando um circuito fechado e posteriormente submeter uma das junções desta união a uma fonte de calor. Algum tempo depois, percebeu-se que a magnitude desta corrente era determinada pela natureza dos dois metais e pela diferença de temperatura entre as duas junções.
Caso o circuito apresentado na figura anterior seja aberto, pode-se constatar a existência de uma força eletromotriz cujo módulo é proporcional à diferença de temperatura entre as junções.
O MAX6675
Apesar de os termopares serem versáteis como citamos anteriormente, a sua utilização requer um pouco de cuidado em dois pontos muito importantes. Um dos tópicos que devem ser olhados com atenção é a chamada compensação de junta fria e o outro diz respeito à necessidade de uma certa sensibilidade na medição das tensões provenientes de um termopar, pois, para cada variação na temperatura ocorre uma pequena variação na tensão existente nos terminais do termopar.
Felizmente existem dispositivos como o circuito integrado MAX6675 que faz o papel de intermediador realizando o contato entre um Arduino e um termopar de maneira fácil. Este chip mede a saída de um termopar tipo K e entrega o resultado para o Arduino através da interface SPI.
Mãos à obra – Medindo temperaturas com um termopar tipo K + MAX6675
Componentes necessários
Para desenvolver este projeto, precisaremos dos seguintes componentes:
Montando o projeto
Programando
#include "max6675.h" int SO = 8; int CS = 9; int CLK = 10; MAX6675 sensor(CLK, CS, SO); void setup() { Serial.begin(9600); delay(500); } void loop() { Serial.print("Graus C = "); Serial.print(sensor.readCelsius()); delay(500); }
Colocando para funcionar
Entendendo a fundo
Software
Neste ponto, serão demonstrados todos os passos para o desenvolvimento do código que deve ser inserido no Arduino UNO para que seja possível a realização da medição de temperaturas com o termopar tipo K.
– Incluindo as bibliotecas que serão utilizadas
O primeiro passo que devemos realizar para atingir o objetivo proposto consiste na inclusão da biblioteca adequada para permitir a interação do módulo MAX6675 com o Arduino UNO. Caso você não tenha esta biblioteca, clique aqui para fazer o download da mesma.
#include "max6675.h"
– Definindo os parâmetros que serão utilizados
Posteriormente, devemos declarar as variáveis que irão conter os valores relativos aos parâmetros que serão utilizados na criação do objeto que representará o módulo Max6675 em nosso código. Aqui, nós criamos 3 variáveis do tipo int, que por sua vez, armazenarão os números referentes aos pinos do Arduino UNO que serão conectados com os pinos SO, CS e CLK do módulo Max6675.
int SO = 8; int CS = 9; int CLK = 10;
– Criando o objeto
Antes de prosseguirmos para a função setup(), devemos criar o objeto que representará o módulo Max6675 em nosso código. O nome do objeto em questão será sensor.
MAX6675 sensor(CLK, CS, SO);
– Definindo as configurações iniciais
Na função Setup() nós vamos apenas iniciar a comunicação serial através da sentença Serial.begin() com uma taxa de transmissão de 9600 bauds.
void setup() { Serial.begin(9600); }
– Realizando as medidas de temperatura
Dentro da função loop(), utilizamos duas sentenças Serial.print(), de modo que, a primeira delas é responsável por enviar o fragmento de texto “Graus C” para o Serial Monitor através da porta serial. Já a segunda, envia o valor de temperatura lido pelo sensor (obtido através da sentença sensor.readCelsius() utilizada como parâmetro da função print()). Por fim, recorremos à função delay() para determinar qual será o intervalo de tempo entre duas leituras sucessivas.
void loop() { Serial.print("Graus C = "); Serial.print(sensor.readCelsius()); delay(500); }
Considerações finais
Neste tutorial, demonstramos como você deve proceder para realizar medições de temperatura com um termopar do tipo K utilizando o Max 6675. Esperamos que você continue nos acompanhando e sinta-se à vontade para nos dar sugestões, críticas ou elogios. Lembre-se de deixar suas dúvidas nos comentários abaixo.
Boa tarde.
Teria como eu ter a leitura de temperatura e a tensão coreespondente a mesma em mV ao mesmo instante?
Obrigado
Olá, estou utilizando um esp32, porém o código não carrega poderia me ajudar?
Ola, quando fiz esta ligação a temperatura apresentada não estava correspondente a temperatura correta (Comparada a medição de temperatura do multímetro Fluke 17B+), então conectei o pino SCL = 13, CS= 12, SO= 11, e mudei na programação SO= 11, CS= 12 e CLK= 13 que correspondem as portas SCK, MISO, MOSI comunicação SPI do Arduino ai sim ficou ideal, não sei se alguém teve este mesmo problema, fica a dica. Até mesmo por que o datasheet do MAX6675 indica que ele é um “Simple SPI-Compatible Serial Interface”
Tive o mesmo problema, o termopar estava entregando leituras erradas com 5 graus Celsius acima da temperatura real, testei a sugestão acima e agora ele está lendo a temperatura real.
Olá, estou com o mesmo problema mas não conseguir solucionar, vc poderia mostrar o esquema que vc usou, ou me sugerir algo, por favor.
Como faço para ligar disolay 16×2 com o sensor Max6675.
Como ligar display para mostrar variaveis MAX6675
Olá, eu fiz o tutorial arisca e também testei a sugestão do Jean sobre o pino 13,12,11 mas não obtive sucesso as medições estão acima do real por volta de 5 ou 6 graus, podem me ajuda com isso com o que está acontecendo?
Boa tarde, como eu poderia colocar umas variáveis para acionar LEDS quando alcançasse determinada temperatura?!
-Primeiro você precisa colocar um LED adequadamente em seu Arduino, com o catodo na posição certa e um resistor adequado (esses dados você pode encontrar no google facilmente).
-Então, você precisaria criar no “void setup()”:
pinMode(12, OUTPUT);
/Isso serve para definir que haverá uma saída (o LED) no pino 12. Você pode usar qualquer outro pino que preferir, basta alterar a numeração.
-E então:
digitalWrite(12, LOW);
/Isso serve para garantir que o LED estará apagado quando o programa iniciar.
– No “void loop()”, você precisará utilizar a função IF e estabelecer uma condição. Digamos que eu queira que o led acenda quando a temperatura for maior ou igual a 40 graus Celsius:
if(sensor.readCelsius() >= 40){
digitalWrite(12, HIGH);
} else {
digitalWrite(12, LOW);
}
/O else é necessário para fazer com que o LED apague caso a temperatura não seja maior ou igual a 40 graus Celsius.
Espero que te ajude!
Acredito que o artigo estaria mais completo se você colocasse qual o range de temperatura que é possível medir e também como fazer os cálculos necessários. Vocês em artigos como os do SCT13 fizeram um a ótima explicação.
bom dia. Qual a resolução em bits do MAX6675 ?
12 bits
Boa noite, gostaria de saber se há possibilidade de ligação de dois termopares e dois MAX6675. Como fazer as comutações de leitura SPI.
Obrigado
A implementação era mais simples que pensei, já consegui realizar.
Se alguém tiver duvida posso disponibilizar o exemplo. Grato
Felipe, bom dia. Se possível, favor postar aqui a solução que vc encontrou.
Obrigado.
Felipe, estou com essa mesma dúvida. Poderia nos dizer qual a solução. Obrigado.
No exemplo é nomeado:
int SO = 8;
int CS = 9;
int CLK = 10;
MAX6675 sensor(CLK, CS, SO);
Para adicionar um novo sensor, basta repetir o mesmo, porém utilizando outras portas do arduino, e gerando um nome diferente para o sensor. Exemplo:
int segundoSO = 5;
int segundoCS = 6;
int segundoCLK = 7;
MAX6675 segundosensor(segundoCLK, segundoCS, segundoSO);
Então, para medir o primeiro sensor você utilizará:
sensor.readCelsius() (Igual no exemplo do site)
Para medir o segundo sensor, você utilizará:
segundosensor.readCelsius() (muda apenas o que vem antes do “readCelsius”)
Acredito que dessa forma dará certo! Infelizmente não possuo um Arduino em mãos para testar. Boa sorte!