Medição de temperatura: Aplicação de Termopares com MAX31855

Tipos de termopares Leis para Termopares MAX31855

Olá leitor, desta vez estamos trazendo para você a continuação do material referente aos instrumentos de medição de temperatura, voltado para uma aplicação prática referente ao uso do MAX31855 na leitura de termopares juntamente com o Arduino UNO

 

Introdução

 

O MAX31855 é um CI utilizado para realizar a digitalização do sinal de termopares, bem como fazer a compensação de junta fria (assunto que será abordado no próximo artigo da série), necessária para garantir que a resposta do termopar seja a mais fiel possível à realidade. Este elemento proporciona a possibilidade de se realizar leituras de temperaturas altas como 1800°C e também de temperaturas baixas como -270°C, no entanto, exibe temperaturas com uma precisão de ±2°C no intervalo de medição que vai de -200°C a 700°C para termopares tipo K. Para maiores informações clique aqui.

 

MAX31855
Figura 1 - MAX31855

 

 

Objetivo

 

Este projeto consiste em criar uma aplicação utilizando o CI MAX31855 para realizar a medição da temperatura de um determinado processo utilizando um termopar tipo K. Observe que o desenvolvimento será feito no Proteus/ISIS por questões de praticidade além de poder fornecer um material de mais fácil entendimento para o leitor. No entanto, este conteúdo pode ser feito com os componentes reais da mesma forma.

 

 

Hardware - Conectando os componentes com o Arduino

 

A seguir são apresentados os componentes utilizados no Proteus, assim como o esquema de ligação dos mesmos.

 

Componentes necessários

 

Aplicação de Termopares com MAX31855
Figura 2 - Componentes necessários para a simulação

 

 

Diagrama esquemático das ligações

 

Diagrama esquemático das ligações com MAX31855.
Figura 3 - Diagrama esquemático das ligações

 

Antes de prosseguir com o desenvolvimento do código deve-se fazer algumas ressalvas em relação aos componentes utilizados no Proteus/ISIS para aqueles que desejam reproduzir este circuito para realizar simulação.

 

Os termopares quando são inseridos no ambiente de desenvolvimento possuem dois terminais que são basicamente as pontas dos fios constituídos de metais diferentes (assim como já foi explicado nos outros artigos), no entanto, ainda existe um outro terminal nomeado por CJ cuja função é definir a temperatura da junta fria através de um determinado nível de tensão aplicado no mesmo. Porém, não foi possível constatar os valores de tensão para as diferentes temperaturas de junta fria por meio de nenhuma referência, logo, até então isto deve ser feito de forma experimental (medir a tensão nos terminais do termopar enquanto coloca-se a temperatura da junta quente de acordo com a que se deseja obter na junta fria e progressivamente aumenta-se a tensão no terminal CJ até que o voltímetro esteja zerado, já que as temperaturas em ambas as juntas serão iguais). Além disso, para que a medida tenha o menor erro possível é imprescindível que a temperatura da junta fria seja a mesma temperatura "ambiente" no qual está inserido o CI (esta pode ser definida na aba de preferências do componente no Proteus/ISIS).

 

 

Desenvolvimento do código - Adquirindo medidas utilizando o MAX31855

 

No decorrer desta seção serão explicados todos os passos utilizados para o desenvolvimento do programa, isto é, o código será comentado de modo que todo conhecimento aplicado seja facilmente compreendido.

 

Primeiramente deve-se incluir a biblioteca SPI.h  para que seja possível fazer a interação do Arduino UNO com o MAX31855 por meio do protocolo SPI e em seguida deve-se adicionar ao código a biblioteca Adafruit_MAX31855.h (Esta biblioteca pode ser encontrada aqui) que será responsável por fornecer as funções básicas para a aquisição dos dados referentes às medidas da temperatura.

 

#include <SPI.h>
#include "Adafruit_MAX31855.h"

 

Em seguida utiliza-se a diretiva #define para associarmos os elementos do MAX31855 aos seus respectivos pinos no Arduino UNO. Neste momento os pinos SO, CS e SCK do MAX31855 estão relacionados com os pinos 5, 6, e 7 do Arduino UNO respectivamente. 

 

#define SO 5;
#define CS 6;
#define SCK 7;

 

O próximo passo é criar o objeto responsável por representar o termopar no programa, este será denominado termopar

 

Adafruit_MAX31855 termopar(SCK, CS, SO);

 

Dentro da função setup() apenas iniciamos a comunicação serial para poder conferir a leitura dos valores do termopar. Em alguns códigos referentes ao uso do MAX31855 encontrados utiliza-se um tempo para estabilização do CI, logo, neste caso, um pequeno delay será adicionado ao código para cumprir a função citada.

 

void setup() {
  
  Serial.begin(9600);
  delay(500);

}

 

Na função loop() está presente a função readCelsius(), esta é responsável por apresentar o valor da temperatura lida a partir do termopar utilizando o MAX31855 em graus Celsius. Vale ressaltar que também existe a função readFarenheit(), que por sua vez retorna o mesmo valor, no entanto em graus Farenheit. Além disso, foi utilizado também um delay para dar que houvesse um intervalo entre as leituras.

 

void loop() {   
  
  Serial.print("Temperatura(C) = "); 
  Serial.println(termopar.readCelsius());   
  delay(1000);

}

 

Esta foi a quarta parte do nosso conteúdo voltado para a utilização de termopares em medições de temperatura. Preparamos esta aplicação prática para poder dar um exemplo ao leitor de como utiliza-se termopares juntamente com elementos como o Arduino UNO. Esperamos que você tenha gostado deste conteúdo, sinta-se à vontade para sugestões, críticas ou elogios. Deixe seu comentário abaixo.

Outros artigos da série

<< Medição de temperatura: Leis para TermoparesMedição de pressão - Tubo de Bourdon tipo C >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Daniel Madeira
Sou engenheiro eletricista graduado com ênfase em Controle e Automação pela Universidade Federal do Espírito Santo - UFES e Técnico em Eletrotécnica pelo Instituto Federal do Espírito Santo - IFES. Me interesso por todas as vertentes existentes dentro da Engenharia Elétrica, no entanto, as áreas relacionadas à automação e instrumentação industrial possuem um significado especial para mim, assim como a Engenharia de Manutenção que na minha opinião é um setor fascinante.

9
Deixe um comentário

avatar
 
5 Comment threads
4 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
5 Comment authors
JOAO GUILHERME MORAIS SANTOSraelFabio_Souza_EmbarcadosRafael DiasMarco Chella Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
JOAO GUILHERME MORAIS SANTOS
Visitante
JOAO GUILHERME MORAIS SANTOS

Como faço para monitorar mais de 1 termopar com o Arduino?

rael
Visitante
rael

Não encontro o max31855 no proteus. como conseguiu?

Marco Chella
Visitante
Marco Chella

De fato o CI MAX31855 facilita muito o desenvolvimento de projetos com termopar, Daniel está bem didático o artigo. Desenvolvi um projeto semelhante e acrescentei a integração por Bluetooth para comunicação com um smartphone. Quem quiser dar uma olhada, a documentação do projeto está em: https://goo.gl/fzwTdK

Rafael Dias
Visitante
Rafael Dias

Um outro aspecto que deve ser levado em consideração, e que pode não ser o foco deste artigo, é a implementação do harware do front-end analógico.

Observemos, por exemplo, para o caso do Termopar tipo K a variação de 40 uV pode determinar uma leitura de 1ºC, assim, o layout do front-end analógico deve um ruído menor do que a menor variação de tensão que pode ser lida pelo sensor. Para isso, o projeto do front-end analógico deve ser bem imune à ruídos.

Também não podemos esquecer das proteções contra ESD que devem ser inerentes è este tipo de solução.

Rafael Dias
Visitante
Rafael Dias

Muito legal. Já fiz alguns projetos usando termopares e, lá pelos idos de 1999, sempre esbarrava nas tabelas de conversão de temperatura. Na época as tabelas eram compradas, caros e difíceis de encontrar. Já comecei a achar fantástico quando comecei a encontrar as tabelas na internet, agora tem esses integrados que fazem a conversão automática. Tempos modernos.

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Eu ainda não usei esse tipo de solução, mas vou avaliar. Até hoje só implementei circuitos com operacionais. Era bacana fazer a compensação da junta fria usando diodo.

Rafael Dias
Visitante
Rafael Dias

Pelo que eu me lembro nós utilizávamos um AD de 16 bits com programador de ganho variável. Em um dos canais estava conectado à base de um transístor e em um outro canal tínhamos o termopar conectado. Para o termopar, este tinha um ganho de tensão para ser lido pelo AD utilizando a faixa de tensão deste.

A compensasão da JF era realizada por software.

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Bacana, por software fica bacana a compensação.

Rafael Dias
Visitante
Rafael Dias

O processo era simples. A JF era basicamente um transistor BJT. Era realizado a leitura da tensão B-E do mesmo. Usando a equação característica do diodo é fácil determinar a temperatura sobre o diodo. Com esta temperatura, consultamos a tabela característica do termopar em uso, como por exemplo a tipo-K (http://www.omega.com/temperature/Z/pdf/z204-206.pdf) e descobríamos a tensão correspondente a temperatura da JF. Após isso, era só subtrair este valor da leitura realizada e usar essa tensão calculada na determinação da temperatura do termopar. Este método produz erros, que são decorrentes do processo de leitura da temperatura da JF e do front-end analógico… Leia mais »