Este é um projeto que mostra como fazer um projeto com um sensor de temperatura, mostrar os dados de temperatura no LCD e acender Leds e tocar um buzzer caso a temperatura esteja muito alta.
Lista de materiais: Arduino, Leds, Resistores de 200 ohm, Buzzer, sensor de temperatura LM335, resistor de 1K ohm, um display LCD 16x2, um potenciometro e jumpers.
A figura abaixo mostra as ligações:
No projeto, o Arduino recebe dados analógicos do sensor de temperatura LM335 e converte em graus Celsius ou Fahrenheight. Se a temperatura estiver entre 20ºC e 25ºC, um Led acenderá. Se estiver entre 25 e 30, dois leds acenderão e se estiver mais que 30ºC, os três leds acenderão e o buzzer apitará. A programação está demonstrada abaixo:
// include the library code:
#include <LiquidCrystal.h>
#include <Tone.h>
int sensorPin = 0;
int led1=9;
int led2=8;
int led3=7;
int led4=6;
int buzzer=10;
Tone player;
int note[]={NOTE_A3,NOTE_G4};
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
Serial.begin(9600);
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("Lab de Garagem");
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(buzzer,OUTPUT);
player.begin(10);
}
void loop() {
int reading = analogRead(sensorPin);
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
float voltage = (reading) * 5.0;
voltage /= 1024.0;
// print out the voltage
Serial.print(voltage); Serial.println(" volts");
// now print out the temperature
float temperatureC = (voltage - 0.5) * 10 ; //converting from 10 mv per degree wit 500 mV offset
//to degrees ((volatge - 500mV) times 100)
Serial.print(temperatureC);
Serial.println(" degrees C");
lcd.print(temperatureC);
lcd.print(" Celsius");
// now convert to Fahrenheight
float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
Serial.print(temperatureF); Serial.println(" degrees F");
if(temperatureC<25)
{
digitalWrite(led1,HIGH);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
}
if((temperatureC>=25) && (temperatureC<30))
{
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
}
if((temperatureC>=30) )
{
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,HIGH);
player.play(note[0]);
delay(200);
player.play(note[1]);
delay(200);
player.stop();
}
delay(500);
}
Referências:
http://arduino.cc/en/Tutorial/LiquidCrystal
http://arduino.cc/playground/Main/InterfacingWithHardware
http://labdegarag1.lojatemporaria.com/kits/starter-kit-com-arduino-...
Depois de feito o UPLOAD para o Arduino, um led piscará e o display LCD mostrará o nome Lab de Garagem na primeira linha e na segunda linha mostrará o valor que está sendo obtido pelo sensor de temperatura em graus Celsius.
Pronto! Agora você tem seu próprio medidor de temperatura ambiente. Boa sorte e boa diversão! Se quiser, poste aqui caso tiver dúvidas ou sugestões!
Comentar
massa
Galera montei um projeto com sensor LM35 de temperatura com monitor LCD esta funcionando legal, mas tenho um modulo rele acionado via controle remoto IR para acionar a lampada do quarto, mas não consigo juntar os códigos do modulo rele com o de temperatura mais LCD. Sei que tem que colocar as partes iguais juntas, porem sem sucesso, alguém pode me dar uma luz sobre o que tenho que fazer ou que estou fazendo errado?
Desculpem a minha falta de informação mas e que sou iniciante ainda
esse codigo é para TMP36! O LM335 é 10mV/K!
cara, esta linguagem esta errada nao esta?
nao consigo compilar
sketch_sep24a.ino:3:18: fatal error: Tone.h: No such file or directory
compilation terminated.
Erro compilando.
Boa tarde... O meu arduino é uno, esta dando erro na linha Tone player, porque?
Salve Henrique!
Para desenhar o circuito sugiro o Fritzing. Leva um tempinho para aprender como funciona mas ele produz resultados bem satisfatórios no desenho da placa.
Para testar a precisão da temperatura arrumei um termometro de infravermelho, que miro na capsula do LM335. Parece bem preciso.
Sobre o problema que eu havia comentado do meu backlight do LCD: foi comida de bola minha: no datasheet dele recomenda um resistor na alimentação do backlight. Coloquei o resistor e tudo ficou suave.
Espero ter contribuido.
Abraço!
Roberto
alguem sabe pq no meu arduino uno da erro na linha "tone player"
Pessoal,
Fiz um medidor de temperatura com alarme com um thermistor 1k NTC, que ja esta funcionando na protoboard. preciso de ajuda para
a. transformar em produto acabado (circuito+"caixa")
b. testar/avaliar precisao em uma escala de 0-50 C
b1. alguém sabe o que oferece melhor precisao nesta faixa (thermistor/LM335/outro)?
b2. algum instrumento para eu testar precisão na medição de temperatura?
Alem da finalização acima, estou trabalhando com versões mais sofisticadas com envio de email, alertas no iPhone, etc.
Quem estiver trabalhando em temas relacionados e quiser unir esforços, estou a disposição.
Abs
Salve camarada! Só para confirmar: você está usando MESMO o LM335 ou é o LM36? Pergunto pois estou com o LM335 e ele mede os graus em Kelvin. Já o LM36, que vem no kit do arduino, esse sim já entrega a leitura pronta para celsius. http://www.ti.com/lit/ds/symlink/lm135.pdf
Estou trabalhando num projeto que tem muito a ver com o que vc fez. No entanto estou com problemas ao ativar o backlight do LCD. Quando faço isso o regulador de tensão do arduino começa a esquentar imediatamente.
Você chegou a ativar o backlight do seu lcd? Valeu.
bom ddia
com este projeto o que tenho que fazer para enviar estes valores de temperatura via sms para um celular
tem alguma dica
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)