Você está na página 1de 4

Como utilizar Termistor NTC

com Arduino

Neste tutorial vamos utilizar o Termistor NTC de 10K junto com o Arduino e a
biblioteca Thermistor para obtermos os valores em graus Celsius. Esta biblioteca utiliza a
equação de Steinhart-Hart para converter o valor da resistência em valores de temperatura e
em uma segunda monstagem, mostramos como fazer o mesmo só que agora utilizando o
método do Fator Beta (exemplo baseado em um exemplo da Adafruit). 
 
Lista de Materiais 
1 x  Arduino Uno Rev 3  ou Garagino  Rev 1* 
1 x  Termistor NTC de 10KΩ
1 x  Resistor de 10KΩ
1 x  Protoboard Mini
Alguns  jumpers
 
* Se for utilizar o Garagino você necessitará do conversor USB-Serial, pois vamos imprimir o
valor convertido do sensor em ºCelsius no Serial Monitor.
 
O Termistor

Para fazer a leitura da temperatura, vamos utilizar um Termistor. Este é um tipo de resistência
especial que altera seu valor razão da temperatura onde o componente é colocado.
Existem dois tipos de Termistores os NTC e os PTC.
 
Termistor PTC (Positive Temperature Coefficient): Este tipo de Termistor tem o coeficiente
de temperatura positivo, ou seja, a resistência aumenta com o aumento da temperatura.
Termistor NTC (Negative Temperature Coefficient): Já este é o inverso do anterior e seu
coeficiente de temperatura é negativo. Com isto sua resistência diminui com o aumento da
temperatura.
 
O valor nominal do termistor é dado normalmente a 25 ºCelsius e neste caso utilizaremos um
termisitor de 10K. Ele atua na faixa de -40 a +125.
  
Determinação da temperatura
Para determinar a temperatura do existe dois métodos um utilizando a interpolação pela
fórmula de Steinhart-Hart ou ainda podemos utilizar a equação do fator Beta.
Abaixo você vê dois métodos para aquisição da temperatura:
 
Método Steinhart-Hart

  Equação Steinhart-Hart
 O método de Steinnhart- Hart é implementado por uma biblioteca que fizemos algumas
modificações para mantermos a compatibilidade da mesma com a IDE do Arduino.
 
A biblioteca  pode ser baixada neste link: Thermistor.zip
Realizamos alguns testes aqui com este sensor junto aos valores desta biblioteca e o termistor
respondeu a valores muito próximos desejados(mesmo sem ter feito alterações nos valores dos
coeficientes de temperatura). 
Para este Circuito podemos utilizar e o Sketch exemplo com este circuito:

Circuito para o Método Steinhart-Hart


Sketch

#include <Thermistor.h>
Thermistor temp(0);
void setup() {
  Serial.begin(9600);
}
void loop() {
  int temperature = temp.getTemp();
  Serial.print("Temperatura no Sensor eh: ");
  Serial.print(temperature);
  Serial.println("*C");
  delay(1000);
}
 
 
Método do Fator Beta
 
 

 Equação do fator Beta


O método do fator beta pode ser implementado utilizando um código de exemplo usado pela
adafruit (fizemos uma pequena modificação pois o Termistor que utilizamos é um NTC).
O circuito deve ser montado segundo a função abaixo:
 

 Circuito para Método do Fator Beta


Segundo o manual do nosso termistor, o fator beta do mesmo é 3977 e utilizamos ele no
Sketch abaixo:
 // Pino onde o Termistor esta conectado
#define PINOTERMISTOR A0         
// Valor do termistor na temperatura nominal
#define TERMISTORNOMINAL 10000      
// Temp. nominal descrita no Manual
#define TEMPERATURENOMINAL 25   
// Número de amostragens para 
#define NUMAMOSTRAS 5
// Beta do nosso Termistor
#define BCOEFFICIENT 3977
// valor do resistor em série
#define SERIESRESISTOR 10000    
 
int amostra[NUMAMOSTRAS];
int i; 
void setup(void) {
  Serial.begin(9600);
  analogReference(EXTERNAL);
}
 
void loop(void) {
  float media;
 
  for (i=0; i< NUMAMOSTRAS; i++) {
   amostra[i] = analogRead(PINOTERMISTOR);
   delay(10);
  }
 
  media = 0;
  for (i=0; i< NUMAMOSTRAS; i++) {
     media += amostra[i];
  }
  media /= NUMAMOSTRAS;
  // Converte o valor da tensão em resistência
  media = 1023 / media - 1;
  media = SERIESRESISTOR / media;
  
  //Faz o cálculo pela fórmula do Fator Beta
  float temperatura;
  temperatura = media / TERMISTORNOMINAL;     // (R/Ro)
  temperatura = log(temperatura); // ln(R/Ro)
  temperatura /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)
  temperatura += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
  temperatura = 1.0 / temperatura;                 // Inverte o valor
  temperatura -= 273.15;                         // Converte para Celsius
 
  Serial.print("Temperatura no Sensor eh: "); 
  Serial.print(temperatura);
  Serial.println(" *C");
 
  delay(1000);
}

Você também pode gostar