Arduino + LM35 – Como montar um termometro
Para fazer essa montagem foram utilizados os seguintes componentes:
- Arduino Duemilanove – http://www.webtronico.com/produtos/view/5
- Mini protoboard – http://www.webtronico.com/produtos/view/38
- Sensor LM35 – http://www.webtronico.com/produtos/view/23
- Fios para protoboard (Wire jumpers) – http://www.webtronico.com/produtos/view/73
Para ligar o LM35 ao Arduino, é bom ter um conhecimento mínimo do conversos Analógico-Digital do Arduino (A/D).
Esse conversor tem entrada máxima de 5V. Como ele é de 10 bits, consegue diferenciar 1024 (de 0 a 1023) valores entre 0V e 5V. Ou seja, quando ele ler 5v na entrada ele vai converter para 1023.
Agora ficou fácil, pois podemos fazer um regrinha de três (interpolação para quem é mais formal):
1023 —– 5V
512 ——- X
X = (5 * 512) / 1023 = 2.5 V
Ou seja, se o A/D mostrar o valor digital 512 significa que está entrando 2.5V nele.
E o que o LM35 tem a ver com isso?
O LM35 é um sensor de temperatura linear que fornece 10mV para cada grau celcius que ele medir. Ou seja, se ele fornecer 100mV, significa que ele está medindo 10ºC.
Então da para ligar o LM35 no Arduino e fazer um termômetro?
Sim, basta fazer a ligação do esquemático abaixo e programar seu Arduino com o código fonte disponível no final desse post.
Código Fonte:
/* Exemplo para ligar o LM35 ao Arduino 13/12/2010 http://www.webtronico.com Conversor Analógico->Digital de 10 bits (1024). O valor máximo que pode entrar no A/D é 5V. Sendo assim, quando entrar: -> 5V o valor lido será 1023 -> 2.5V o valor lido será 511 ou (1023/2) -> 0V o valor lido será 0 Resumindo, é uma regra de três normal onde: 5V - 1023 X - Y */ int pinoSensor = 0; //pino que está ligado o terminal central do LM35 (porta analogica 0) int valorLido = 0; //valor lido na entrada analogica float temperatura = 0; //valorLido convertido para temperatura void setup() { Serial.begin(9600); //Inicializa comunicação Serial } void loop() { valorLido = analogRead(pinoSensor); temperatura = (valorLido * 0.00488); // 5V / 1023 = 0.00488 (precisão do A/D) temperatura = temperatura * 100; //Converte milivolts para graus celcius, lembrando que a cada 10mV equivalem a 1 grau celcius Serial.print("Temperatura atual: "); Serial.println(temperatura); delay(5000); //espera 5 segundos para fazer nova leitura }
18 Comments
Other Links to this Post
-
Tweets that mention WebTronico Blog » Arduino + LM35 – Como montar um termometro -- Topsy.com — December 14, 2010 @ 11:53 am
-
WebTronico Blog » Exemplo do Ethernet Shield ENC28J60 com Arduino — May 22, 2012 @ 2:05 pm
-
WebTronico Blog » Módulo gravador de voz ISD1820 com Arduino + LM35 — March 28, 2013 @ 4:00 pm
RSS feed for comments on this post. TrackBack URI


By John, October 4, 2011 @ 12:51 am
Olá!
Sabe como faço para ler valores negativos se o Arduino trabalha com tensão entre 0 e 5 volts?
By ws, November 27, 2011 @ 10:29 pm
John, pra temperatura abaixo de 0°C você precisará de uma fonte simétrica. No datasheet do LM35 tem o esquema. Não deve ser difícil. Abraço
By ObservadorSP, January 6, 2012 @ 9:55 pm
Olá. Gostaria de montar um circuito onde o valor do terminal fosse mostrado em 2 ou 3 displays de 7 seguimentos. Teria como fazer isso? Preciso de pelo menos uma dica para iniciar o projeto.
Obrigado pela atenção.
By Sandro, February 7, 2012 @ 6:16 pm
Oi, gostaria de saber se vcs tem algum sensor de temperatura 1-wire para distâncias até 10 metros.
Obrigado
By jorge orengo, May 22, 2012 @ 9:47 am
Colega, Neste código com um termômetro paralelo em 26.7 C eu estou lendo no arduino o valor de 440 na saída do println, será que meu LM35 está ruim ? Logo ao ligar ele deixa um cheiro de queimado e esquenta muito. As tensões não passaram dos 5V que é a tensão de operação do LM35. O que pode ser ? Agradeço o artigo. Muito bom.
By admin, May 22, 2012 @ 11:36 am
Jorge, creio seu LM35 esteja danificado ou você ligou a tensão de forma invertida.
By Peter, May 25, 2012 @ 10:29 pm
OI, COLEGA nesste codigo esta saindo 477 …sera que tem alguma erro ?
By minilathe(Gil Pinheiro), May 29, 2012 @ 7:36 pm
Para ler temperaturas negativas, basta usar uma fonte de 5Vcc e ligar o OV do LM35 com um diodo em série. Assim, ao medir +0.7V na saida do LM35, em relação ao GND, isso equivale a aproximadamente 0 Graus Celsius, e se essa tensão for de 0V equivale a -70 Graus.
By Alian, June 5, 2012 @ 9:20 pm
Muito bom esse post seu, eu cheguei a fazer uns testes aqui para um controlador de temperatura para meu aquário, a principio to exibindo a temperatura em dois displays de 7 seg., quando conectava na USB a temperatura oscilava em + ou – 1°, quando conectava a uma fonte de 6V a temperatura chegava a oscilar em até 10°, consegui aliviar isso com um capacitor de 1000uF conectado no 0 e no 5V do sensor mas ainda estava oscilando em 5°, fiz um for para tirar a média dentre 100 leituras e resolvi o problema.
for(int i = 0; i <=99; i++){ // pega 100 leituras de temperatura
samples[i] = ( 5.0 * analogRead(pinoSensor) * 100.0) / 1023.0;
Celsius = Celsius + samples[i];
delay(30);
}
Celsius = Celsius / 100; // melhor precisão
By marciano, July 12, 2012 @ 12:17 am
Olá!
Não manjo nada de Arduíno ainda mas estou muito interessado no assunto e gostaria de saber se com esse kit e mais algumas peças que julgo serão necessárias é possível criar um automatizador de ar condicionado automotivo?
Por exemplo fazer com que o sensor mostre a temperatura num display que eu possa definir a máxima e minima temperatura para que quando atingir a temperatura máxima acione o ar condicionado e ao chegar na minima desligue o mesmo…
By Otto, September 2, 2012 @ 12:51 am
Você não colocou nenhum resistor no seu circuito. Significa que o LM35 tem uma resistência interna? Procurei essa informação na internet e não encontrei.
By http://www.instructables.com/member/Tastache/, April 3, 2013 @ 7:26 pm
Excellent post. I absolutely appreciate this site.
Stick with it!
By Fabiano Anhaia, April 13, 2013 @ 12:12 am
Caros amigos da webtronico gostaria do auxilio de vcs para esclarecer algumas duvidas:
1 Para ler temperatura negativa com lm35 eu preciso de uma fonte simétrica com tensão negativa, minha duvida é a seguinte, a porta analógica do arduino lê tensão negativa?
2 Se com a programação acima eu conseguiria fazer a leitura dessa temperatura negativa?
3 Eu tb gostaria que essa leitura fosse realizada num display de LCD 16×2 é possível?
Grato pela atenção de todos.
By Janet, May 9, 2013 @ 2:40 am
It’s going to be ending of mine day, however before end I am reading this fantastic paragraph to improve my know-how.
By abrir Cuenta facebook, May 9, 2013 @ 4:40 am
These are truly enormous ideas in regarding blogging.
You have touched some fastidious things here. Any way keep up wrinting.