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:
- β: 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.
Você precisa fazer log in para comentar.