quarta-feira, 14 de outubro de 2015

Ôhmimetro Arduíno com lm35

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
multiplicando cruzado temos a seguinte expressão:





 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.





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

}
}