Bóson Treinamentos em Ciência e Tecnologia

Medindo temperatura com LM35 e Arduino

Monitoramento de temperatura com sensor LM35 e Arduino

Como medir temperatura com LM35 e Arduino

Por Fábio dos Reis

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:

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:

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:

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:

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:

Lista de Materiais

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

Código

const int VERMELHO=9;
const int VERDE=10;
const int AZUL=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é!

 

Sair da versão mobile