Medindo Temperatura com Termistor NTC e Arduino

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.

Projeto com Arduino uno usando Termistor NTC 10K
Projeto com Arduino uno usando Termistor NTC 10K

kit robotica educacional com Arduino ESP ou Microbit

[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.

Sensores de temperatura estão presente em sistemas de climatização
Sensores de temperatura estão presente em sistemas de climatização

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.

Diferentes tipos de termistores

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.

Curva característica que relaciona temperatura e resistência de um termistor NTC

- 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.

Curva característica entre temperatura e resistência de um 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.

Termistor NTC 10K 3mm
Termistor NTC 10K 3mm

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:

Esquema de montagem do Termistor NTC 10k com Arduino Uno
Esquema de montagem do Termistor NTC 10k com Arduino Uno

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.

Imagem do circuito montado em protoboard
Print screen do monitor serial

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.

Circuito eletrônico

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.


Lendo um potenciômetro com o ESP8266 NodeMCU

Lendo um potenciômetro com ESP8266 NodeMCU

Neste tutorial, nós vamos dar início a uma grande quantidade de conteúdos voltados para o ensino dos conceitos básicos necessários para que você consiga começar a utilizar o seu NodeMCU e desenvolver os seus projetos de automação, seja para sua escola, para sua casa ou até mesmo para uma indústria. Hoje, nós vamos te mostrar como você deve proceder para ler as informações provenientes de um potenciômetro com o seu ESP8266 NodeMCU.

[toc]

kit robotica educacional com Arduino ESP ou Microbit

As grandezas analógicas e a porta de entrada analógica A0

Antes de aprendermos a efetuar  leitura de um potenciômetro, nós devemos definir o que são as grandezas analógicas. Bem, as grandezas analógicas são aquelas que, ao contrário das grandezas digitais, podem assumir infinitos valores de amplitude dentro de uma faixa de valores. Imagine por exemplo, o velocímetro de um carro. Este instrumento pode ser considerado como sendo um medidor analógico, pois o ponteiro gira continuamente conforme o automóvel acelera ou freia. Se o ponteiro girasse em saltos, o velocímetro seria considerado digital.

O módulo ESP8266 NodeMCU possui um pino destinado a lidar com a leitura deste tipo de grandeza, ou seja, um pino cuja função é receber níveis de tensão e em seguida traduzir os mesmos em uma linguagem adequada para que possamos manipulá-los. Este processo ocorre da seguinte maneira: o NodeMCU que estamos utilizando suporta sinais de tensão entre 0 e 3,3V em suas entradas, portanto, caso nós coloquemos um sinal de tensão de 0 volts na porta de entrada analógica A0, o nosso módulo irá associar esta informação ao número 0 (zero) . Em contrapartida, caso o sinal em questão tenha magnitude de 3,3V, o NodeMCU irá referenciar este valor ao número 1023.

Conversão dos valores de tensão em valores numéricos
Figura 1 - Conversão dos valores de tensão em valores numéricos

 


Mãos à obra - Efetuando a leitura de um potenciômetro

Componentes necessários

Montando o projeto

Hardware utilizado
Figura 2 - Hardware utilizado

Hardware montado

Hardware montado
Figura 3 - Hardware montado

Programando

Este é o código que utilizaremos no desenvolvimento deste tutorial

float leitura;

 void setup() 
{ 
  Serial.begin(115200);
  Serial.println("Leitura do potenciometro");
  Serial.println("Valor        Volts");
}

void loop() 
{
  Serial.print(analogRead(A0));
  Serial.print("         ");
  leitura = (analogRead(A0)*3.3/1023);
  Serial.println(leitura);
  delay(1500);  
}

Colocando para funcionar

Após compilarmos o código apresentado, nós teremos este resultado:

Resultado obtido
Figura 4 - Resultado obtido

Entendendo a fundo

Software

– Declarando a variável global para armazenar o valor convertido do nível de tensão

Inicialmente, nós vamos declarar uma variável do tipo float para que ao efetuarmos os cálculos referentes à conversão do nível de tensão presente no potenciômetro, esta possa armazenar o resultado da maneira desejada, isto é, sob a forma de números com casas decimais.

float leitura;

– Definindo as configurações iniciais

Dentro da função setup() nós iniciamos a conexão com o Serial Monitor através da função Serial.begin() (passando como parâmetro o valor da taxa de transmissão de dados (como sugestão, utilize este valor)). Além disso, nós vamos utilizar a sentença Serial.println(). Para escrever na tela um título para a nossa aplicação, de modo que, este será "Leitura do potenciômetro". Por fim, recorremos à sentença Serial.println() novamente e enviamos através da porta serial o cabeçalho da tabela que estamos criando (repare que nós demos alguns espaços entre as duas palavras deste cabeçalho justamente para a tabela fique mais agradável de ser visualizada).

 void setup() 
{ 
  Serial.begin(115200); 
  Serial.println("Leitura do potenciômetro"); 
  Serial.println("Valor        Volts"); 
}  

– Lendo o valor do potenciômetro

A primeira ação que nós realizaremos dentro da função loop() será enviarmos o valor referente ao sinal de tensão já convertido na escala de 0 a 1023 através da porta serial para ser apresentado no Serial Monitor com a utilização da sentença Serial.print(). Em seguida, utilizamos a sentença Serial.print() novamente para enviar uma série de espaços para que o valor que virá depois (convertido para volts) esteja organizado logo abaixo da palavra Volts que faz parte do cabeçalho da tabela (note que aqui nós utilizamos somente as funções print() e não println() pois assim nós conseguimos escrever coisas na mesma linha).

Posteriormente, nós convertemos o valor obtido através da entrada analógica do nosso módulo ESP8266 NodeMCU para uma escala em volts e inserimos o resultado na variável leitura, de modo que, após este procedimento, nós utilizamos a sentença Serial.println() para fazer com que este valor seja enviado para o Serial Monitor. Por fim, utilizamos a função delay() para determinar o intervalo entre cada uma das aquisições.

void loop() 
{
  Serial.print(analogRead(A0));
  Serial.print("         ");
  leitura = (analogRead(A0)*3.3/1023);
  Serial.println(leitura);
  delay(1500);  
}

Considerações finais

Neste tutorial, nós demonstramos como você pode fazer para realizar a leitura de valores de sinais de tensão provenientes de um potenciômetro através de um módulo ESP8266 NodeMCU.  Esperamos que continue nos acompanhando e sinta-se à vontade para nos dar sugestões. Lembre-se de deixar suas dúvidas nos comentários abaixo.


Privacy Preference Center