Tutorial: Como utilizar Termistor NTC com Arduino

Adquira estes componentes na Loja do Lab de Garagem

Olá Garagistas!!! 

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 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);
}

É isto pessoal espero que vocês gostem do Tutorial e que usem estes sensores, eles são uma alternativa barata e simples de conseguir uma amostra da temperatura ambiente. Se gostarem do tutorial ou tiverem dúvidas, por favor, deixem seus comentários abaixo.

\o/

Exibições: 88559

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de juliano wiesniewski em 1 março 2015 às 9:22

Bom dia. Achei muito joia este projetinho. Gostaria de ver se alguem consegue me ajudar a colocar este projeto

para visualir no visual studio. Um programa somente com label, que apresente esta indicação. 

Comentário de Alexandre Marins Cunha de Olivei em 14 janeiro 2015 às 18:51

Boa noite, fiz o primeiro exemplo e esta dando sempre o valor de -62º C. sendo que estou no Rio e aqui deve estar uns 40º.

Alguem pode me ajudar, preciso tambem que quando a temperatura chegar a um grau especifico ele ligue um rele.

Obrigado.

Comentário de Bruno Barbosa Bisinoto em 19 agosto 2014 às 1:51

Boa noite pessoal, meu programa do arduino é 1.0.2,  e deu erro na segunda linha. do sketch, oq devo fazer?

Comentário de Sergio Pena em 2 agosto 2014 às 11:12

Bom dia a todos. Montei os dois projetos, ,as achei que o Fator Beta funcionou muito bem. Gostaria de montar um circuito para chocadeira sem a interface do Arduino. Posso gerar o 3,3v com um lm7803, ou existe um jeito melhor?

Comentário de Rodolfo Macedo Galucio em 15 julho 2014 às 14:49

O meu sempre dá negativo, fiz os dois exemplos exatamente igual mais não funcionou, o que pode ser?

alguém pode me ajudar?

Comentário de Henrique G de Castro em 8 março 2014 às 16:24

boa tarde pessoal,

tenho um termistor NTC de 1k - alguem sabe o que devo fazer no código acima para que funcione com o meu termistor?

abs

Comentário de Gustavo Craws Dantas Pereira em 24 fevereiro 2014 às 18:25

O meu sempre informa uma temperatura com sinal invertido, tipo agora em Natal-RN ele está lendo -34 ºC

estou usando a biblioteca e codigo disponibilizados no smartkit.

Comentário de Eliezer da Silva Letao Junior em 9 janeiro 2014 às 17:10

Não deu certo no meu.

fica congelado o valor -273.15.

Comentário de Tiago Ferreira da Silva em 25 setembro 2013 às 20:18

Vou fazer análise do valor de temperatura da respiração e inspiração. Com essa rotina é póssível realizar a análise???
Obrigado

Comentário de burst em 26 junho 2013 às 10:05

como uso 2 NTC com a lib. thermistor?

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço