Coleta de dados de NTC com ôhmimetro Arduíno e sensor de temperatura lm35
O presente protótipo tem a finalidade de obter dados de um NTC (Negative Temperature Coeficient), a partir da temperatura ambiente que tende ir aumentando em intervalos de 2 em 2 graus por intermédio de uma lâmpada incandescente controlada por um dimmer de chuveiro, podendo ouvir um sinal sonoro toda vez que o dado é coletado assim que a temperatura soma dois graus, o monitoramento da temperatura se deve ao sensor lm35, para o ôhmimetro um divisor de tensão com resistor e o NTC ao qual se quer averiguar a resistência.
Todos os dados coletados mais os cálculos foram processados pelo Arduíno Mega, sendo possível verificar os resultados via display de cristal liquido 16X2 e porta serial aparecendo na tela do notebook, a placa controladora foi acomodada dentro de uma caixa plástica de “luz”, com uma tampa cega devidamente perfurada para á fixação do display, as demais ligações ocorreram na proto-board, a caixa que continha o Arduíno foi fixada na proto-board com o auxilio de elásticos de amarrar dinheiro.
Cálculos
O ohmímetro consiste em um divisor de tensão, onde temos R1 ligado ao positivo (5 volts), estando em série com R2 que está ligado no GND, a tensão de saída (vs) é obtida na ligação entre os resistores R1 e R2.
No circuito apresentado deve-se substituir R1 pelo NTC ou resistor que se queira saber a resistência, o cálculo do divisor de tensão pode ser efetuado pela seguinte expressão:
Como se deseja saber o valor de R1, este deve ser isolado na formula.
Onde:
vs= valor lido na porta analógica
R1=?
R2= valor de resistor conhecido (ex 470Ω)
V= tensão total, no caso 5 volts
Como a porta analógica do Arduíno lê valores de 0 á 1023 bits, e necessita-se valores de 0 á 5, se faz necessário uma regra de 3 para obter esse valor, onde:
5= Tensão máxima
1023= é o máximo de dados lidos pela porta analógica
vs= é o valor convertido para aplicar na formula do divisor de tensão.
Dessa forma temos que 5 é igual a 1023, e VS é igual á porta analógica
5-------1023
vs-----porta analógica
vídeo abaixo mostra o cálculo passo a passo.
O sensor de temperatura lm35 vem calibrado de fábrica para sua utilização, precisando apenas multiplicar o valor lido pela porta analógica por 0.00488 e multiplicar por 100, para se ter o valor em graus Celsius.
temperatura = (valorLido * 0.00488*100);
Disposição dos sensores
Os sensores mantiveram contato direto com a lâmpada, sendo preso por um elástico de prender dinheiro, a utilização da lâmpada neste circuito é mais simples, uma vez que dispensa o isolamento dos sensores com esmalte, técnica usada quando se mergulha os sensores em líquidos quente, caso não se tenha o dimmer para controlar a lâmpada, á possibilidade de utilizar uma lâmpada de consumo 220V em uma rede com 110V, o resultaria em um brilho e aquecimento menor.
Arduíno IDE
Todo o código do programa foi escrito no software do Arduíno IDE (Integrated Development Environment), que utiliza uma linguagem de programação C. A plataforma Arduíno permite a utilização de cálculos nas montagens de equipamentos, por ser dinâmico auxilia em algumas rotinas necessárias para corrigir erros de sensores, como no caso da variação do Lm35, que necessitou á soma de 200 dados do lm35 seguindo da divisão por 200, o que garante um valor estável.
Os dados foram visualizados via display LCD 16X2 e monitor serial, da própria interface IDE, os números separados por virgulas facilitam a exportação para planilhas eletrônicas.
O vídeo abaixo mostra o funcionando.
O vídeo abaixo mostra o funcionando.
Figura 1. Display com a temperatura real (38º), o valor da próxima leitura e abaixo o valor da resistência.
Fonte. Próprio autor.
Figura 2. Dados coletados no serial monitor da IDE.
Fonte. Próprio autor.
Figura 3. Lâmpada com sensores instalados, á direita Lm35, a esquerda NTC 50D-9.
Fonte. Próprio autor.
Gráfico 1. Curva gerada com dados obtidos pelo aparelho.
Fonte. Próprio autor.
Conclusão
O presente equipamento permitiu a coleta e visualização de dados obtidos dos sensores Lm35 e NTC, conflitando esses dados foi possível traçar um gráfico para analisar se o NTC possui resistência ôhmica. A eletrônica empregada no equipamento foi bem simples como visto no texto, exigindo um pouco mais de pesquisa e testes para o código empregado.
Deixem um comentário sobre o artigo, caso necessitem de alguma correção me avisem, obrigado!
Referencia
http://www.if.ufrgs.br/mpef/mef004/20061/Cesar/SENSORES-Termistor.html
http://www.marcelomaciel.com/2013/03/sensor-ntc-no-pic.html
http://mecatronizando.blogspot.com.br/2014/12/tutorial-como-fazer-um-ohmimetro-com.html
Anexo
Lista de materiais
01 Arduíno
01 NTC 50D-9
01 Resistor 470Ω
01 Buzzer
01 Display de cristal liquido 16x2
01 Proto-board
Fios para ligação
Garra de jácaré
Código
/*Referencia blog Mecatronizando Ideias
Programa Ohmimetro Basico com Arduino
Blog Mecatronizando Ideias
Qualquer copia do codigo deve ser feita com devida atribuicao de autoria do mesmo
05/12/2014*/
#include <LiquidCrystal.h>
float Vr;
int lm35 = 0;
int valorLido;
int temperaturamais2 = 0;
float temperatura = 0;
int tempz=0;
char pino_leitura = 1; // Pino para a leitura dos valores da tensão Vx \\ Pode ser suprimida essa linha sem problemas
float leitura = 0; // Variavel para armazenar o valor lido pela entrada analógica (valor entre 0 e 1023)
float Vs = 0.0; // Variavel para calcular o valor lido pela entrada analóica em volts (entre 0 e 5 volts)
float R = 0.0; // Variavel para receber o valor do resistor de referencia a ser dado pelo usuario via serial monitor
float resultado = 0; // Variavel para calcular o valor do resistor utilizando a formula (3) do embasamento teorico
int tem=0;
int i;
const int buzzer = 12; //Buzzer
LiquidCrystal lcd(8, 9, 5, 7, 3, 2); // Cria um objeto lcd e atribui os pinos
void setup() {
pinMode(buzzer,OUTPUT);
Serial.begin(9600); // Configuraçao do serial monitor
lcd.begin(16, 2);
Serial.println("Temperatura,Resistencia");
pinMode(pino_leitura, INPUT); // Configuraçao do pino de leitura como entrada de dados \\ também pode ser suprimida essa linha
}
void loop() {
delay(1000);
while(i < 200){
valorLido = analogRead(lm35);
temperatura = (valorLido * 0.00488);
temperatura = (temperatura *100);
tem=tem+temperatura;
i++;
}
while(i >=200) {
tem=tem/200;
temperatura=tem;
i=0;
}
tempz=temperatura;
lcd.setCursor(0, 0);
lcd.print("Temper");
lcd.setCursor(7, 0);
lcd.print(tempz);
lcd.print ((char) 223);
lcd.setCursor(0,1);
lcd.print("Resist ");
lcd.setCursor(7,1);
lcd.print(Vr);
lcd.print ((char) 244);
float Vs;// 470 é o valor do resistor R1
Vs = (5.0*analogRead(A1))/1023.0;
Vr=(5*470/Vs);
Vr=(Vr-470);
if (temperatura >= temperaturamais2) {
lcd.setCursor(0, 0);
lcd.print("Temper");
temperaturamais2 = tempz + 2;
lcd.setCursor(12,0);
lcd.print(temperaturamais2);
//Ligando o buzzer com uma frequencia de 1500 hz.
tone(buzzer,1500);
delay(300);
//Desligando o buzzer.
noTone(buzzer);
float Vs;
Vs = (5.0*analogRead(A1))/1023.0;
Vr=(5*470/Vs);
Vr=(Vr-470);
Serial.print(tempz); // Imprime no serial monitor o resultado calculado
Serial.print(",");
Serial.println(Vr); // Imprime no serial monitor o resultado calculado
lcd.setCursor(0,1);
lcd.print("Resist ");
lcd.setCursor(7,1);
lcd.print(Vr);
lcd.print ((char) 244);
}
}