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*
* 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/
Comentar
Olá Cristiano,
Realmente, quanto mais longe dos 25 Graus o erro aumenta muito no metodo do Fator beta. O metodo de Steinhart-Hart este erro é muito pequeno durante toda a curva (ele utiliza 4 fatores para correção).
Mas se for necessária uma precisão muito fina vale a pena utilizar LM35.
Só um detalhe Mano??
Para temperaturas abaixo de -10 °C, a margem de erro dele aumenta para 2°C????
Você já fez este teste?? Se puder tente ler temperaturas acima dos 70°C para ver se ele aumentar a margem de erro também?? Eu estava lendo e estou fazendo o mesmo projeto no PIC16F877A e nas apostilas sobre termistores NTC tem um Beta para temperaturas acima de 25°C e abaixo da mesma. No meu caso eu coloquei 4 valores de Beta. Um Beta para abaixo de 25°C até -10°C e outro abaixo disso até -50°C, outro para acima de 25°C até 70°C e o último para temperatura de 71°C até 105°C. Eu não conseguir fazer a leitura da temperatura só com um Beta.
olá pessoal estou começando no mundo dos microcontroladores,um grande abraço .
Olá Leonardo,
Creio que você não utilizou a biblioteca que utilizamos no nosso tutorial.
Há uma biblioteca no Google code que fizemos algumas modificações para que ela pudesse ser utilizada com o Arduino 1.0.x
Baixe a biblioteca já corrigida que esta no tutorial.
eu coloquei a biblioteca porem nao consigo compilar o programa nem o que vem de exemplo, erro?
In file included from temperadura_com_NTC.ino:1:
C:\Users\Leonardo\Documents\Arduino\libraries\Thermistor/Thermistor.h:19:22: error: WProgram.h: No such file or directory
o que pode ser?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)