Termistor NTC Explicação Detalhada e Completa

Termistor são usados amplamente no mundo da eletrônica como sensores para obter a temperatura do ambiente ou de uma superfície por ser simples de ser implementado e barato.

O que é um Termistor?

É um semicondutor que atua como resistor pois varia sua resistência conforme a temperatura atual e são classificados em dois tipos:

  • O Termistor PTC (Positive Temperature Coefficient) tem o aumento da resistência proporcional ao a temperatura;
  • O Termistor NTC (Negative Temperature Coefficient) a resistência e temperatura são inversamente proporcionais.

Os termistores tem um encapsulamento muito parecido com capacitores, varistores e até mesmo alguns diodos zenes.

Simbologia

Como medir Temperatura com o Termistor?

Como o termistor muda sua resistência conforma a temperatura, com um divisor de tensão e um resistor de referência é possível obter a resistência do termistor e assim a plicar a equação inversa de Steinhart–Hart.

Obter o Valor da Resistência do Termistor



Mas antes de ir para a equação de Steinhart–Hart, é necessário montar um divisor de tensão para encontrar a resistência, para isso é necessário entender os princípios dos resistores em série e em paralelo.

O termistor é representado por R1, enquanto o R2 é o resistor de referência pois através da voltagem de saída (Vout), tensão de entrada (Vin) e resistência de R2 será possível encontrar o valor de R1 da seguinte forma:

Principio Básico do Conversor ADC

A tensão usada no Arduino é de 5V porém se for medido com o voltímetro dará uma tensão próxima aos 5V e caso Vin seja considerado o valor ideal 5V a resistência resultante terá diferença nos valores decimais que quando submetido a equação de Steinhart–Hart, irá causar uma variação de temperatura.

Partindo do principio que os Conversores Analógicos Digital (ADC/AD) tem uma voltagem de referência no qual é proveniente da tensão de alimentação e que o numero total de bits da resolução representa o valor máximo de Vref.

Ou seja, não é necessário especificar voltagem pois Vref sempre será o valor máximo da resolução e o valor retornado sempre será com base em Vref e por isso, a voltagem poderá variar mas o resultado sempre será o mesmo. Então, Vin poderá ser representado pela resolução ADC, nesse caso será considerado 10bit (1024) e Vout será o valor retornado do ADC do Arduino (RawADC).

  • R1: Resistência do resistor 1, nesse caso, um termistor;
  • R2: Resistência do resistor 2, o resistor de referência;
  • 2^Resolution: 2^ número de bits da resolução ADC;
  • RawADC: Valor da leitura ADC.

Inversa de Steinhart–Hart

  • Tk: Temperatura de referência em Kelvin;
  • A: Constante;
  • B: Constante;
  • C: Constante;
  • R: Resistência obtida do Termistor.

Caso não seja encontrado os valores das constantes A, B e C, o ideal será usar uma outra equação matemática.



B ou β Parâmetro Equação

B ou β (beta) é mais comum de ser encontrado nos datasheets dos termistores e por isso não é necessário fazer o calculo para obter o Beta, mas caso não tenha, é só seguir este calculo:

Fontes: dqsoft e Wikipedia
  • β: Beta;
  • Rt1: Resistência do Termistor 1 (Resistência obtida);
  • Rt2: Resistência do Termistor 2 (Resistência obtida);
  • T1: Temperatura em Kelvin do Termistor 1;
  • T2: Temperatura em Kelvin do Termistor 2.

Não é necessário o uso de mais de um termistor, a equação pode deixar confuso mas os números é apenas para diferenciar os valores. A diferença de temperatura deve ser de pelo menos 10°C.

  • Rx: Resultado da operação que servirá como referência;
  • R0: Resistência do Termistor em relação a T0;
  • β: Beta;
  • T0: Temperatura de referência em Kelvin (geralmente a 25°C / 298K);
  • e: Número de Euler (2,718281828);

O penúltimo calculo já ira dará o valor da temperatura em Kelvin, depois só será necessário converter para Celsius.

  • Tk: Temperatura em Kelvin;
  • β: Beta;
  • R: Resistência obtida do termistor;
  • Rx: Resultado da operação anterior;

Conversão Kelvin para Celsius

A equação de conversão Kelvin para célsius é obrigatória para ambos os métodos, visto que os valores de temperatura são tudo em Kelvin

Termistor Arduino

Código



Por se tratar de um componente que tem uma saída analógica, não é necessário bibliotecas para estabelecer uma comunicação diferentemente do DS18B20, porém uma biblioteca pode ser montada para facilitar o uso desse componente em diversos projetos, evitando a remontagem das formulas e consequentemente diminuindo erros.

#define beta 3600
#define R2 10000
#define Rt 10000 

#define A 0.001129148
#define B 0.000234125
#define C 8.76741E-08

double Temp() {
  double Vout = analogRead(3),
         R1 =  (R2 * (1024 - Vout)) / Vout,
         t0 = 273.0 + 25.0,
         rx = Rt * exp(-beta/t0),
         t = beta / log(R1/rx),
         ln = log(R1),
         T = 1 / (A + (B * ln) + (C * (ln * ln * ln)));

  Serial.println("Tbet: " + String(t - 273));
  return T - 273.0;
}

void setup() { 
  Serial.begin(9600); 
}

void loop() {
  Serial.println("Temp: " + String(Temp()));
  delay(1000);
}

Funcionamento

No teste demonstrativo, foram adotado as seguintes constantes abaixo com base em valores comumente usados na internet e é claro que não está dimensionado adequadamente para o termistor que foi utilizado neste exemplo e por isso os dois métodos de cálculos retornaram valores diferentes porém muito próximo um do outro.

  • A: 0.001129148;
  • B: 0.000234125;
  • C: 8.76741E-08;
  • Beta: 3600.

O mais prático a ser feito seria achar o valor de beta e assim aplicar a constante correta, mas para fazer esse tipo de trabalho, seria um outro post e também teria que haver um “equipamento” para ajudar a controlar as temperaturas e medir as resistências para deixar mais preciso possível. Entretanto, isso é apenas para termistores de valores desconhecidos.

Como foi feito um teste de comparação de valores de um sensor de umidade caseiro com um HTU21D e foi usado um termistor NTC, foi aproveitado o circuito da protoboard e o display OLED para mostrar o funcionamento mas o diagrama é o mesmo.