LM35 com Arduino
O sensor LM35 com Arduino é muito simples de utilizar para medir temperaturas diretamente em graus Celsius. Então além de medir temperaturas, vamos controlar a intensidade de luminosidade de dois LEDs; um verde e um vermelho. Quando estiver dentro da range de normalidade, a intensidade do LED verde variará conforme a porcentagem de variação estipulada; o mesmo para o LED vermelho, quando estiver na range de alerta.
Para esse projeto utilizaremos dois pinos PWM (que são os pinos precedidos pelo ‘~’ (til)) para controlar a intensidade.
Encontrei um tutorial terrível onde o Ground e o V+ estavam invertidos, então, preste MUITA atenção no modo de ligar esse sensor:
Essa referência eu peguei em um site que também dá exemplos de LM35 com Arduino (http://www.ladyada.net/learn/sensors/tmp36.html).
Olhando o componente de frente, considerando que a frente seja sua face plana, a alimentação ficará à esquerda, o ground à direita e o pino central será a nossa referência, bastanto converter a frequência gerada nesse pino para a medida em graus, com a seguinte fórmula:
temperatura = (5.0 * freq * 100.0)/1024.0;
O LED é muito simples de ligar e está descrito nesse outro post, caso necessite entender mais detalhes do que o que está descrito nesse experimento.
Para controlar a intensidade da luminosidade do LED, utilizaremos as frequencias sem aplicar a fórmula para assim ter um espaço de variação de luminosidade maior. Se você ainda não conhece o modo de funcionamento do PWM, veja nesse outro post que descrevo o recurso.
Utilizaremos o pino 9 para o LED verde e o pino 10 para o LED vermelho. O pino analógico 0 será utilizado para leitura da frequência gerada no sensor. Também utilizaremos um resistor de 330ohms entre o sensor e sua alimentação de 5v, já considerando que haverá ruído de sinal, que pode ser eliminado utilizando aref e 3v em substituição ao 5v (mas não será feito isso nesse exemplo).
O circuito deve ficar assim:
O código é muito simples e os componentes são controlados por poucas linhas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#include <stdlib.h> //Mensagem exibida na serial String mensagem = " "; //variavel para guardar o valor de conversao float temperatura; //variavel para guardar o valor de conversao em string char buf[50]; //variavel que recebe o valor do pino de frequencia int freq = 0; void setup(){ //inicia serial Serial.begin(9600); } void loop(){ //le a frequencia do sensor no pino 0 analogico freq = analogRead(0); //calculo para conversao em graus celcius temperatura = (5.0 * freq * 100.0)/1024.0; //conversao em string para imprimir na serial mensagem = dtostrf(temperatura,3,2,buf); //imprime na serial Serial.println(mensagem); //pausa entre os ciclos delay(1000); // se a temperatura for menor que 23, esta OK e acende no maximo o LED verde if (temperatura < 23){ analogWrite(9,255); analogWrite(10,0); } //senao se a temperatura for maior que 23 mas menor que 24, acende verde mais fraco else if (temperatura >23 && temperatura < 24){ analogWrite(9,60); analogWrite(10,0); } //senao se for maior que 24 mas menor que 25, vermelho fraco else if (temperatura > 24 && temperatura < 25){ analogWrite(9,0); analogWrite(10,60); } //senao, certamente e maior que 25 e deve acender vermelho no maximo else { analogWrite(9,0); analogWrite(10,255); } } |
E abaixo, o resultado desse trabalho:
Pode-se fazer uma escala com LEDs, mas a precisão continuaria limitada visualmente. Assim sendo, o LED seria ideal para quando estivesse OK ou ALARMADO e as temperaturas mostradas como string em um display. Por isso, o próximo post será sobre controle de display no Arduino com o display comprado no WebTronico e em seguida veremos um projeto que se utilize do display para controlar os limites para alarme, incluindo um buzzer além dos LEDs verde e vermelho (vide nesse post).
Os próximos posts serão projetos utilizando sensores de 3 pernas para luminosidade e gases inflamáveis, a partir de onde geraremos alarmes, ligaremos lâmpadas, acionaremos ventiladores, etc. Diversão garantida!
Eletrônica digital com Arduino – Acionamento de relé (ou relê, ou relay…) | Djames Suhanko – Linux e Programação
[…] Esse artigo apenas introduz ao acionamento do relé, inclusive com um exemplo simples utilizando um LED com 5V externo para fazer a prova de conceito. No próximo exemplo, ligaremos um ventilador baseado na variação de temperatura, que será monitorada através de um sensor de temperatura LM35 (esse sensor foi exemplificado nesse artigo). […]
Eletrônica digital com Arduino – Acendendo lâmpada pelo note | Djames Suhanko – Linux e Programação
[…] post desse link, adicionando apenas uma leitura analógica no pino 0. A leitura do LM35 você vê nesse outro link, basta adicioná-lo ao circuito. Se quiser utilizar lâmpadas com sensor de luminosidade, então […]
Eletrônica digital com Arduino – EtherShield V1.1 na IDE 1.0.1 | Djames Suhanko – Linux e Programação
[…] nesse post como utilizar o LM35. Para entender a parte do PWM, veja esse outro […]
Sensor digital de luminosidade TSL235R | Do bit Ao Byte
[…] post anterior iniciei o uso de sensores com o sensor de temperatura LM35 alternando LEDs e intensidade de brilho dos LEDs. Como prometi, darei continuidade ao controle de […]