quarta-feira, janeiro 09, 2019

Usando um Termistor NTC

Já experimentei vários sensores de temperatura aqui no blog. Vou examinar agora um sensor bem simples, que é a base de alguns dos que já testei: o termistor.

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:
  1. /* 
  2.  * Leitura de temperatura usando um termistor 
  3.  */  
  4.   
  5. // Conexão do termistor  
  6. const int pinTermistor = A0;  
  7.   
  8. // Parâmetros do termistor  
  9. const double beta = 2400.0;  
  10. const double r0 = 1404.0;  
  11. const double t0 = 273.0 + 21.0;  
  12. const double rx = r0 * exp(-beta/t0);  
  13.   
  14. // Parâmetros do circuito  
  15. const double vcc = 5.0;  
  16. const double R = 2200.0;  
  17.   
  18. // Numero de amostras na leitura  
  19. const int nAmostras = 5;  
  20.   
  21. // Iniciação  
  22. void setup() {  
  23.   Serial.begin(9600);  
  24. }  
  25.   
  26. // Laço perpétuo  
  27. void loop() {  
  28.   // Le o sensor algumas vezes  
  29.   int soma = 0;  
  30.   for (int i = 0; i < nAmostras; i++) {  
  31.     soma += analogRead(pinTermistor);  
  32.     delay (10);  
  33.   }  
  34.   
  35.   // Determina a resistência do termistor  
  36.   double v = (vcc*soma)/(nAmostras*1024.0);  
  37.   double rt = (vcc*R)/v - R;  
  38.   
  39.   // Calcula a temperatura  
  40.   double t = beta / log(rt/rx);  
  41.   Serial.println (t-273.0);  
  42.   
  43.   // Dá um tempo entre leituras  
  44.   delay (10000);  
  45. }  

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:

Ariel Campos disse...

Estou estudando eng. elétrica estou acompanhando o seu blog, alias muito bem feito. Continue publicando, abraços !!