Como usar um Termistor NTC para medir temperatura com Arduino

Medindo temperatura com Arduino: Como usar um Termistor NTC 6

Existem várias opções de sensores para medir temperatura. Neste tutorial vamos conhecer o mais simples deles – o termistor NTC- e como usá-lo junto com um Arduino.

Material necessário

No projeto exemplo deste tutorial utilizamos os seguintes componentes:

Conhecendo o Termistor NTC

Um termistor é um resistor cuja resistência muda conforme a temperatura ambiente. A rigor todo resistor tem o seu valor afetado pela temperatura, mas no termistor queremos que esta variação seja mensurável e previsível. Existem dois tipos de Termistor:

  • O termistor PTC (Positive Temperature Coefficient) é aquele onde aumento da temperatura provoca aumento na resistência; e
  • O termistor NTC (Negative Temperature Coefficient) é aquele onde aumento da temperatura provoca diminuição na resistência.

Para medir temperatura são normalmente utilizados os termistores do tipo NTC. A medição de temperatura requer:

  • A medição da resistência do termistor
  • A conversão da resistência em temperatura

Medição de Resistência com um Arduino

Para medirmos uma resistência com o Arduino vamos convertê-la em uma tensão, que será medida pelo ADC (usando o analogRead()). Para isto montamos um “divisor de tensão” colocando o termistor em série com um resistor de resistência R conhecida (e praticamente fixa na faixa de temperatura a medir):

Medição de Resistência com um Arduino
Medição de Resistência com um Arduino

A corrente que passa pelo termistor é a mesma que passa pelo resistor conhecido (considerando que a corrente que vai para o ADC é muito pequena): I = VCC / (RT + R).  A tensão medida pelo ADC será V = R * I. Resolvendo estas equações para a resistência do termistor:

RT = R * (VCC – V) / V

Conversão da Resistência do Termistor NTC em Temperatura

Infelizmente, a variação de resistência de um termistor com a temperatura não é controlada por uma fórmula simples. O que se utilizam são equações que produzem resultados aproximados (dentro de uma faixa de temperatura) com base em parâmetros específicos para cada componente.

A equação abaixo é a mais comumente usada, e se baseia em um único parâmetro (ß) que costuma ser informado pelo fabricante do termistor:

T = ß * ln (R / RX)

Onde ln é o “logaritmo natural” e RX é obtido a partir de ß e uma equivalência conhecida de resistência (R0) a temperatura(T0):

RX = R0 * exp (- ß / T0)

Nestas fórmulas a temperatura está em graus Kelvin. Para converter para Celsius é necessário subtrair 273.

A Montagem

Nesta montagem foi usado um resistor de 20K com precisão de 1%, sendo possível usar um outro valor na faixa de 10K a 100K, alterando este valor no código. Se você não estiver muito preocupado com precisão, pode usar um resistor comum com 5% de precisão.

O Código

O exemplo abaixo envia as leituras de temperatura para o monitor da IDE. Os parâmetros do termistor no código abaixo foram extraídos do datasheet do termistor para o modelo MF521033600. Para um melhor precisão é usada uma média de várias leituras da tensão.

Gostou deste tutorial? Ajude-nos a melhorar o blog comentando abaixo sobre ele.

Faça seu comentário

Acesse sua conta e participe

6 Comments

  1. Excelente, porém, falta nomear cada linha de codigo, ou seja, funcoes: //
    /*
    const
    void setup
    void loop

  2. boa tarde professor
    tenho o seguinte circuito
    ntc ligado par terra, o outro lado ligado num resistor de 50K, 1%, que esta ligado a uma fonte de 5v de precisão, entre o ntc e o resistor de 50 k, um capacitor de de 100 nF, e a saida para processodor em paralelo com o capacitor, ligando num adc e 12 bits.
    pois estou trabalhando com STM32F103RBT6.

    Então mudei o vcc para 3.3v, numero de divisões de 1024 para 4096, por que o adc é de 12 bits
    e o resistro de 20k para 50k.

    Esta certo ou não?

    1. Benedito, se eu entendi direito a sua montagem, você está medindo a tensão sobre o termistor ao invés de sobre o resistor de valor conhecido. Se for isso mesmo, você precisa acertar as equações:
      V = RT * I
      RT = V*R/(VCC-V)

  3. Gostei do artigo, o resistor fixo deve ser o mais preciso possível

  4. No texto fala que foi usado um resistor de 20k, mas no sketch esta 2000. Qual é o certo?

    const double R = 2000.0;

    1. Sílvio,

      Faltou um zero no código, pode adicionar.

      Abraços!
      Diogo – Equipe MakerHero