sexta-feira, 3 de abril de 2015

Sensor de temperatura LM35 e Arduino - Termômetro para Sistema de Irrigação

Olá!
Nessa nova postagem, trago algumas experiências com o sensor de temperatura LM35, e alguns incrementos. A ideia é incrementar um módulo de monitoramento de  temperatura ambiente no meu sistema de irrigação para hortas e jardins, e ainda procurar manter o padrão de postagem com experimentos significativos que realmente sirvam para alguma coisa, alem de hobbies e aprendizado.
Indo ao que interessa, a ideia é fazer um termômetro simples e preciso, utilizando componentes básicos que qualquer "usuário" de Arduino tenha em mãos, ou seja de fácil acesso. Um desses componentes é o LM35, um circuito integrado simples e barato que parece um transistor comum do tipo BC547, e é capaz de medir temperaturas que variam de -55  a +150 °C, com uma incrível precisão de mais ou menos 0,5 °C. O seu funcionamento é bem simples, onde a cada  grau Celsius de temperatura ele enviará 10mV ao microcontrolador, ou qualquer outro dispositivo que possa fazer leitura de tensão (V). Ex: Se a tensão V de saída do LM35 for igual a 250mV, teremos uma temperatura de aproximadamente 25 °C. Partindo desse princípio temos uma regra de três simples, onde os valores são diretamente proporcionais.
Então:



Para que o Arduino consiga efetuar a leitura de forma correta, precisamos converter esses valores para a faixa de leitura da entrada analógica do microcontrolador. Ou seja, as entradas analógicas do Arduino recebem valores de tensão 0 a 5V, e mapeia valores inteiros de 0 a 1023. Isso quer dizer que:

 

Agora basta associarmos os valores obtidos da primeira operação com os da segunda:

Onde:

250mV = Tensão de saída do Sensor;
5 V = Tensão máxima suportada pela porta analógica
0,0049V = Tensão por unidade da porta analógica;
100 = Conversão de milivolts (mV) para Graus Celsius.

Observando que existe uma pequena diferença entre os resultados, porém essa diferença está dentro da margem de erro que é de mais ou menos 0,5 °C.
Depois de conseguir esses dados, fica fácil escrever o programa para o Arduino: 


/*Sensor de temperatura - LM35
Computadores Fazem Arte
Computadoresfazemarte-odilon.blogspot.com.br */

int pinoSensor = 0; //Pino A0 do Arduino conectado ao LM35
int valorLido = 0; //Variável que armazena o valor lido pelo Sensor
float temperatura = 0;//Ponto flutuante, armazena a temperatura
void setup() {
 
  Serial.begin(9600); //Inicia comunincação Serial
}
void loop() {
  valorLido = analogRead(pinoSensor); //Linha de código que iguala a leitura analógica do pinoSensor com o valorLido
  temperatura = valorLido * 0.0049;  // X/5 * 0.0049 , onde X representa valor lido
  temperatura = temperatura * 100;   // Conversão de milivolts para Celcius 
  Serial.print("Temperatura Atual = "); // Escreve no serial o resultado.
  Serial.print(temperatura);
  Serial.print(" Graus Celsius");
  delay(2000); //Aguarda 2 segundo para efetuar nova leitura
}


Depois de programar o Arduino basta montar o hardware.
Necessitaremos de:


Um Arduino (modelo de sua preferência);

Um sensor de temperatura LM35;

Protoboard;

Jumpers.

O esquema de montagem é simples:


*Sempre que for montar algo, dê uma revisada no datasheet de todos os componentes para que não reste dúvida sobre o funcionamento de cada um.

Proposta de montagem na protoboard:


Depois de montar e conferir se todas as ligações estão corretas, basta ligar o Arduino e testar:
Tela serial, indicando o valor de temperatura obtido:



Você pode incrementar o projeto, de várias maneiras, por exemplo, adicionando um LED para sinalizar a temperatura muita alta, muito baixa ou os dois, adicinar dispositivos para acionar outras cargas, como relés, utilizar um display para mostrar o valor de temperatura, etc.
Em fim, basta usar a criatividade e aproveitar as infinitas possibilidades que o Arduino pode oferecer.

Até.


Fontes de pesquisa:
Arduino.cc
Blog.webtronico.com
blog.novaeletronica.com.br