Medindo Temperatura com Termistores
Em alguns projetos, faz-se necessária a medição de uma determinada temperatura para a tomada de alguma decisão, como por exemplo, acionar uma carga ou sinalizar algo. Dependendo do projeto, talvez seja necessário monitorar a temperatura de um circuito eletrônico a fim de evitar falhas ou problemas que possam ocorrer. Com isso mente, neste tutorial te ensinaremos como utilizar o termistor NTC 10k em conjunto com um Arduino.
[toc]
Da Automação Industrial para Automação Residêncial
O monitoramento da temperatura por muito tempo limitou-se a ambientes industriais, como por exemplo, no controle de fornos, no monitoramento do funcionamento de máquinas, em controle de processos, entre outros.
A redução do custo dos sistemas automáticos, impulsionada pela disseminação das placas de desenvolvimento de baixo custo e dos conceitos de Internet das Coisas (IoT – Internet of Things), possibilitaram que sensores de grandezas físicas (luminosidade e temperatura) ganhassem importância em ambientes residencias e empresariais.
Hoje, qualquer pessoa pode montar seu próprio sistema de automação que responda sozinho a variações de luminosidade e/ou temperatura utilizando tecnologias baratas tais como placas Arduino.
Os diferentes tipos de sensores de temperatura
A variedade de tipos de processos e ambientes no qual precisamos medir temperatura resultou em uma grande variedade de sensores de temperatura, cada um com sua particularidade.
Os principais sensores de temperatura encontrados no mercado são:
- Termopares
- RTD – Transdutores Termoresistivos
- Termistores
Obs: Ainda existe outros sensores inteligentes tais como o LM35 e o DS18B20
Termopares
Sensores baseados na variação proporcional da tensão entre dois metais a temperatura ao qual são submetidos. Este efeito é chamado de Seebeck. Com custo elevado, são empregados em aplicações profissionais, onde se requer alta confiabilidade e precisão.
Esse tipo de sensor é explicado com detalhes no Tutorial Termopar tipo K + MAX6675.
RTD – Transdutores Termorresistivos
Seu funcionamento tem como base a variação proporcional da resistência de um material condutor conforme temperatura ao qual é submetido. Esse efeito é denominado de termorresistividade.
Como exemplo de transdutores termos o PT100 e o PT1000 feitos com fio de Platina. Estes dois sensores apresentam uma alta importância na indústria, pois apresentam alta precisão, além de oferecerem estabilidade e alta imunidade aos ruídos elétricos produzidos no ambiente no qual foi empregado.
Termistores
Os termistores também utilizam a propriedade física da termorresistência. A diferença é que os termistores são constituídos de semicondutores, enquanto os transdutores são constituídos por metais.
Esses componentes, quando submetidos a uma variação de temperatura, apresentam variação no valor de sua resistência.
A grande vantagem dos termistores é seu baixo custo e pequeno tamanho. Esses sensores são comumente utilizados em sistemas eletrônicos tais como impressoras, eletrodomésticos, notebooks,etc.
Diferença entre Termistores NTC e PTC
A relação entre temperatura e resistência pode variar de forma negativa ou positiva conforme variação de temperatura, fazendo com que os termistores se dividam em dois grupos:
– Termistores NTC
NTC é a sigla para o termo Negative Temperature Coefficient, que traduzindo significa Coeficiente Negativo de Temperatura. Isso significa que para um aumento de temperatura o termistor terá a sua resistência diminuída seguindo sua curva característica. Abaixo é possível visualizar essa curva característica de um modelo de termistor como exemplo.
– Termistores PTC
PTC é a sigla para o termo Positive Temperature Coefficient, que significa Coeficiente Positivo de Temperatura. Ele apresenta um funcionamento inverso ao anterior, ou seja, quando ocorre aumento de temperatura, a resistência do termistor aumentará seguindo sua curva característica. Como no caso anterior, abaixo poderá ser visto um exemplo de curva característica de um modelo de termistor PTC.
Resistência do Termistor
Por padrão, os termistores são especificados pela sua resistência na temperatura de 25ºC. Ou seja, o termistor NTC 10k terá a resistência de 10k Ohm quando submetido a temperatura de 25ºC.
A relação entre resistência e temperatura de um termistor não é linear e pode ser feita usando coeficiente B ou Beta, fornecido pelo datasheet.
Este coeficiente é calculado baseado na formula de Steinhart–Hart que descreve a temperatura de um dispositivo semicondutor em dada temperatura. Você pode entender melhor esse coeficiente no artigo em inglês do Wikipédia sobre Termistores.
Para esse tutorial utilizarmos a biblioteca thermistor.h que calculará o valor da temperatura conforme a resistência medida, assim não ficará mais simples medir a temperatura.
Termistor NTC 10K
Quando se trata de Arduino e outras placas de desenvolvimento, o termistor NTC 10k é definitivamente um dos sensores de temperatura mais populares.
Sua popularidade se dá pelo seu baixo preço e facilidade de utilização junto com microcontroladores.
Esse termistores possuem as seguintes especificações:
- Resistência à 25ºC: 10k Ohm
- Faixa de leitura: -55 a 125°C
- Coeficiente Beta: B25/100 = 4300 K
Veja as especificações desse sensor na página 37 deste datasheet.
Mãos a obra – Medindo a temperatura ambiente com Termistor NTC
Componentes necessários
Para este exemplo prático, serão necessários os seguintes itens:
Com esses itens em mãos, conseguiremos medir a temperatura utilizando o sensor.
Montando o projeto
O circuito eletrônico pode ser visto logo abaixo:
Programando
Tratando-se do código, é necessário realizar o download da biblioteca “thermistor.h”, que pode ser baixada clicando aqui.
O código utilizado se encontra abaixo.
#include "thermistor.h" int pinNTC = A1; float temperatura; THERMISTOR thermistor(pinNTC, 10000, 3950, 10000); void setup() { Serial.begin(9600); } void loop() { temperatura = thermistor.read(); Serial.print("Temperatura: "); Serial.print(temperatura); Serial.println(" graus"); Serial.println(""); delay(1000); }
Colocando em prática
Aqui está imagens do resultado deste exemplo prático.
Entendendo a fundo
Neste tópico serão abordados o hardware e o software deste exemplo, com o objetivo de permitir que você possa compreender bem todo o funcionamento e com isso fazer as alterações que julgar necessárias para adaptá-lo aos seus projetos.
Hardware
O hardware deste circuito consiste em um simples divisor de tensão, no qual o pino analógico A0 é conectado na junção entre o sensor e o resistor, que por sua vez, estão conectados em série. A tensão de 5V é conectada ao outro terminal do sensor e o GND é conectado ao terminal restante do resistor.
Quando ocorre variação de temperatura, há uma variação na resistência do sensor, e consequentemente na tensão sobre o resistor de 10kΩ. Essa variação de tensão sobre o resistor será lida pelo Arduino e com isso o valor de temperatura poderá ser estipulado.
Caso você utilize um termistor que apresente outro valor de resistência máxima, lembre-se de ter em mãos um resistor que possua um valor de resistência igual ao do termistor.
Software
Agora será explicado cada linha do código utilizado.
– Configurações iniciais
É incluso a biblioteca “Thermistor.h”.
#include <thermistor.h>
Cria-se duas variáveis, uma para armazenar o valor da temperatura e outra para usar como identificador do pino analógico utilizado.
int pinNTC = A1; float temperatura;
Cria-se o objeto “thermistor” com os seguintes parâmetros: pino utilizado para a leitura no arduino, valor da resistência do termistor, coeficiente do termisto, valor da resistência do resistor utilizado.
THERMISTOR thermistor(pinNTC, 10000, 3950, 10000);
Habilitamos a conexão serial entre o arduino e o computador com 9600 de baud rate.
Serial.begin(9600);
– Leitura do sensor e envio para o monitor serial
É efetuada a leitura do sensor pelo comando thermistor.read() e é salvo na variável “temperatura”.
temperatura = thermistor.read();
O valor é mostrado no monitor serial e após isso, é dado um tempo de espera de 1 segundo.
Serial.print("Temperatura: "); Serial.print(temperatura); Serial.println(" graus"); Serial.println(""); delay(1000);
Considerações finais
Esperamos que este tutorial tenha esclarecido qualquer dúvida sobre a utilização de um termistor e suas aplicações no mundo maker.
Obrigado pela atenção e continue buscando conhecimento no portal do Vida de Silício.
Técnico em eletrotécnica e estudante de Engenharia Elétrica pelo IFES.
4 Comments
Deixe uma pergunta, sugestão ou elogio! Estamos ansiosos para ter ouvir!Cancelar resposta
Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.
ivermectin plus
cheap stromectol
A biblioteca não existe mais?
Como fazer para ler 2 ou mais sensores?
bom dia galera!
Estou com um projeto com arduino usando o multiplicador de canais analógiocos mux74hc4067. Instalei 16 sensores NTC 10K, e estou usando o código para sinais analógicos que vem na biblioteca dele. Fiz uma pequena modificação do código para que o valor de saída seja dado em graus °C. Só que os valores de temperatura estão uns 3 graus abaixo do valor real. Quando coloco o código para testar os sensores sem o mux a temperatura é mais precisa com a real.Tenho pouquissima experiencia e por preciso de uma ajuda. Segue o código que estou usando, se alguém puder me ajudar…./**
* This example demonstrates how to read analog signals
* It assumes there are potentiometers connected
* to the 16 channels of the 74HC4067 mux/demux
*
* For more about the interface of the library go to
* https://github.com/pAIgn10/MUX74HC4067
*/
#include “MUX74HC4067.h”
// Creates a MUX74HC4067 instance
// 1st argument is the Arduino PIN to which the EN pin connects
// 2nd-5th arguments are the Arduino PINs to which the S0-S3 pins connect
MUX74HC4067 mux(7, 8, 9, 10, 11);
void setup()
{
Serial.begin(9600); // Initializes serial port
// Waits for serial port to connect. Needed for Leonardo only
while ( !Serial ) ;
// Configures how the SIG pin will be interfaced
// e.g. The SIG pin connects to PIN A0 on the Arduino,
// and PIN A0 is a analog input
mux.signalPin(A0, INPUT, ANALOG);
}
// Reads the 16 channels and reports on the serial monitor
// the corresponding value read by the A/D converter
void loop()
{
int data;
for (byte i = 0; i < 16; ++i)
{
// Reads from channel i. Returns a value from 0 to 1023
data = mux.read(i);
delay(5000);
Serial.print("Canal ");
Serial.print(i);
Serial.print(" Temperatura ");
Serial.print((double)(data) *50/(1023));
Serial.println("°C");
}
Serial.println();
delay(3000);
}