Um termistor é um resistor cuja resistência varia com a temperatura. Bem, praticamente todo resistor varia com a temperatura, porém normalmente queremos que esta variação seja pequena, pois queremos uma resistência constante. Num termistor estamos interessados em ter uma variação de resistência previsível e mensurável.
Como medir a resistência com um microcontrolador? Convertendo a resistência em tensão e a medindo com um ADC. O jeito mais fácil de fazer isto é montando um divisor resistivo. Uma ponta do termistor é ligada à alimentação (Vcc)) e a outra a um resistor de resistência R conhecida e ao ADC. A outra ponta da resistência R é ligada ao terra:
Conforme a resistência do termistor muda, a corrente que flui pelo par termistor/resistor muda. Supondo que a resistência R seja fixa, podemos calcular o valor da resistência do termistor (RT) a partir da tensão medida pelo ADC (V):
RT = R * (Vcc - V) / V
Como converter esta resistência em temperatura? A primeiro coisa a considerar é que existem dois tipo de termistor. O que vou usar é o mais comum, o chamado NTC (negative temperature coefficient), no qual a resistência diminui quando a temperatura aumenta.
A wikipedia apresenta algumas fórmulas para calcular a temperatura (em Kelvin) a partir da resistência (em ohms). A mais simples considera que a resistência varia linearmente com a temperatura, mas isto é uma aproximação muito ruim.
A opção seguinte é a baseada num parâmetro chamado Beta (B):
T = B * ln (R/Rx)
onde Rx = R0 * exp (- B / T0), sendo T0 a temperatura correspondente à resistência R0.
Mais completa inda é a equação de Steinhart-Hart, que utiliza três parâmetros (a, b, c):
1/T = a + b * ln(R) + c * (ln(R)^3)
Idealmente o fabricante informa os parâmetros do termistor. No meu caso eu usei um termistor "genérico", cuja única marcação é 102 (o que indica uma resistência de 1K a 25oC). O jeito foi calcular o beta usando a seguinte expressão que se baseia em duas correspondências conhecidas entre R e T:
B = ln (RT1/RT2) / ( (1 / T1) - (1 / T2))
O programa abaixo ilustra o uso de um termistor com beta conhecido para medir a temperatura:
/* * Leitura de temperatura usando um termistor */ // Conexão do termistor const int pinTermistor = A0; // Parâmetros do termistor const double beta = 2400.0; const double r0 = 1404.0; const double t0 = 273.0 + 21.0; const double rx = r0 * exp(-beta/t0); // Parâmetros do circuito const double vcc = 5.0; const double R = 2200.0; // Numero de amostras na leitura const int nAmostras = 5; // Iniciação void setup() { Serial.begin(9600); } // Laço perpétuo void loop() { // Le o sensor algumas vezes int soma = 0; for (int i = 0; i < nAmostras; i++) { soma += analogRead(pinTermistor); delay (10); } // Determina a resistência do termistor double v = (vcc*soma)/(nAmostras*1024.0); double rt = (vcc*R)/v - R; // Calcula a temperatura double t = beta / log(rt/rx); Serial.println (t-273.0); // Dá um tempo entre leituras delay (10000); }
Referências
https://en.wikipedia.org/wiki/Thermistor
https://www.ametherm.com/thermistor/ntc-thermistor-beta
http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-termistor-ntc-com-arduino
Um comentário:
Estou estudando eng. elétrica estou acompanhando o seu blog, alias muito bem feito. Continue publicando, abraços !!
Postar um comentário