Medindo temperatura com 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:
- 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:
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
- 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 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é!
Escreva um comentário