Medindo temperatura com LM35 e Arduino

Medindo temperatura com LM35 e Arduino

Neste projeto vamos utilizar um sensor de temperatura muito popular, o LM35, para criarmos um monitor de temperatura simples. Nosso circuito irá monitorar a temperatura do ambiente, e sinalizar seu nível usando um LED RGB, de acordo com critérios que vamos estabelecer, a saber:

  • Se a temperatura do ambiente ultrapassar um determinado valor, como por exemplo 26°C, o LED deverá acender em vermelho;
  • Se a temperatura ficar abaixo de um outro valor, como 18°C, o LED deverá acender em azul;
  • Se a temperatura do ambiente estiver entre os valores máximo e mínimo estabelecidos (entre 18°C e 26°C), o LED acenderá em verde, indicando temperatura agradável.

Vamos começar explorando um pouco o sensor LM35

Sensor de Temperatura LM35

O LM35 é uma família de sensores de temperatura de precisão que apresentam em sua saída um valor de tensão linearmente proporcional à temperatura em graus Celsius medida.

Sua precisão em temperatura ambiente é de cerca de ± ¼°C, e pode ser empregado para medir temperaturas na faixa de -55°C a 150°C (neste caso, com uma precisão de ±¾°C).

Esse sensor funciona com tensões entre 4V e 30V, consumindo menos de 60μA de corrente.

As principais aplicações do LM35 são: fontes de alimentação, gerenciamento de baterias, sistemas de ar-condicionado e appliances domésticos.

A figura a seguir mostra a aplicação básica do LM35, que possui três pinos em sua versão com encapsulamento TO-92, um pino +Vs, um GND e um pino de saída de tensão:

Sensor de temperatura LM35

E a seguir temos a pinagem do componente que utilizaremos, que vem em um encapsulamento TO-92. Note que a figura traz o componente visto por baixo - cuidado para não se confundir e invertê-lo, pois isso acarretará a destruição do sensor:

Pinagem do LM35 - Sensor de temperatura

O LM35 também está disponível em outros encapsulamentos, como TO-220 e TO-CAN. Para descobrir a pinagem correta para cada encapsulamento, consulte o datasheet do componente.

Link para download do datasheet do sensor: http://www.ti.com/lit/ds/symlink/lm35.pdf

Vejamos agora o circuito a ser construído para nosso projeto.

Circuito

A figura abaixo mostra o diagrama esquemático de nosso circuito:

Diagrama esquemático do sensor de temperatura LM35 com Arduino

Tome muito cuidado para não inverter os pinos do sensor, sob risco de danificá-lo de forma permanente.

A imagem a seguir mostra o circuito montado em uma matriz de contatos:

LM35 com Arduino - Monitorando Temperatura

Lista de Materiais

  • Arduino
  • 3 resistores de 220Ω
  • LED RGB (catodo comum)
  • Sensor de Temperatura LM35
  • Fios e conectores variados

Vamos analisar agora o código a ser empregado no sketch, o qual é relativamente simples:

Código

const int AZUL=9;
const int VERDE=10;
const int VERMELHO=11;
const int TEMP=0;
float celsius=0.0;
const int MINIMA=18;
const int MAXIMA=26;
int val = 0;
void setup()
{
 Serial.begin(9600);
 pinMode (AZUL, OUTPUT);
 pinMode (VERDE, OUTPUT);
 pinMode (VERMELHO, OUTPUT);
}
void loop() 
{
 val = analogRead(TEMP);
 celsius = (val * 500.0)/1024;
 Serial.println(celsius);
 
 if (celsius < MINIMA)
 {
   digitalWrite (VERMELHO, LOW);
   digitalWrite (VERDE, LOW);
   digitalWrite (AZUL, HIGH);
 }
 else if (celsius > MAXIMA)
 {
   digitalWrite (VERMELHO, HIGH);
   digitalWrite (VERDE, LOW);
   digitalWrite (AZUL, LOW);
 }
 else
 {
   digitalWrite (VERMELHO, LOW);
   digitalWrite (VERDE, HIGH);
   digitalWrite (AZUL, LOW);
 }
 delay(500);
}

Começamos declarando constantes para definir os pinos que alimentarão o LED RGB, sendo que o pino 9 ativará a cor azul, o pino 10 acenderá a cor verde e o pino 11, a vermelha.

Além disso, declaramos uma constante temp, que define o pino de leitura A0, onde a saída do sensor será conectada.

A variável celsius, do tipo float, armazenará a temperatura medida, depois do valor lido do sensor ter sido convertido, conforme explicarei a seguir.

Também declaramos as constantes MINIMA e MAXIMA, as quais armazenarão os valores limite de temperatura que acionarão os LEDs, respectivamente 18 e 26º C.

A variável val receberá o valor lido a partir do sensor.

Rotina de setup

Usando a função pinMode ajustamos os pinos onde o LED está ligado como saída. Também inicializei o monitor serial, o qual permitirá exibir a temperatura medida na tela do computador.

Programa principal - rotina de loop

O primeiro passo é obter o valor lido a partir do sensor e armazená-lo na variável val. Este é um número inteiro, que representa a temperatura do ambiente, mas não indica exatamente qual é essa temperatura.

Para obtermos a temperatura vamos aplicar uma fórmula de cálculo sobre esse valor lido, para que ele seja convertido em graus celsius com precisão.

O sensor LM35 apresenta em sua saída uma variação de 10mV para cada grau Celsius lido, e é alimentado em nosso circuito por 5V, oriundos do próprio Arduino. A precisão do ADC do Arduino (conversor analógico-digital, porta A0) é de 10 bits, ou 1024 valores. Assim, a fórmula que usaremos para obter a temperatura exata é:

celsius = (val * 5V / 10mV) /1024

Como 10mV = 0,01V, temos que 5V / 0,01 = 500, de modo que podemos escrever a fórmula de forma simplificada assim:

celsius = (val * 500.0)/1024;

ou ainda, se preferir:

celsius = val * 0,48828125

O valor 0,48828125 pode ser atribuído a uma constante nesse caso.

Após a conversão da temperatura, usamos a função Serial.println() para exibi=la no computador, e então vamos comparar essa temperatura com os valores estabelecidos para determinar qual cor o LED deve exibir.

Para isso, basta coparar o conteúdo da variável celsius com as constantes MAXIMA e MINIMA, e então determinar a cor do LED, ligando ou desligando seus pinos de acordo.

Finalmente, aguardamos 500ms até a próxima leitura.

Testando o circuito

Para testar o circuito, basta subir o sketch para o Arduino e observar a cor na qual o LED se acenderá. Aquecendo ligeiramente o sensor (segurando-o com os dedos, por exemplo), o LED deverá acender em vermelho, e se o sensor for resfriado abaixo de 18 graus Celsius, deve acender em azul. Se a temperatura ambiente estiver dentro do intervalo programado, o LED permanecerá aceso em verde.

Em nosso próximo tutorial vamos medir a temperatura do ambiente com o LM35, e exibir a temperatura medida em um display LCD, em vez de usar o monitor serial do PC.

Até!

 

Sobre Fábio dos Reis (1173 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Astronomia, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*