Dec 13 2010

Arduino + LM35 – Como montar um termometro

Para fazer essa montagem foram utilizados os seguintes componentes:

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
}

26 Comments

  • 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.

  • By berkley, July 28, 2013 @ 10:53 am

    Jednak masz fajne niniejsze wyroby

  • By Matheus, November 30, 2014 @ 1:24 am

    Aconselho a usar um AmpOp para multiplicar o ganho. dessa forma terá mais precisão na leitura. como visto nos seus cálculos a precisão o ADC é de 0.005 aproximadamente. No sensor isso é interpretado como 0.5 grau. ou seja, você perde bastante nas casas decimais.

  • By Lindsay, February 11, 2015 @ 4:02 pm

    Helloo there, just became aware of your blog through Google, and found hat it’s really informative.
    I am gonna watch out for brussels. I’ll be grateful if you continue
    this in future. Numerous people will be benefited feom your writing.
    Cheers!

  • By Zora, December 7, 2015 @ 12:22 am

    Gosh, how much opportunity to build your backend is their
    in all induhstries but in particular the service
    industry. ” The fact is, writers and reporters are always on the lookout for “sources,” especially at the local level. Instead of suffering through every day, why not turn to a business that will allow you to make your own hours.

  • By dicas para leitura, December 7, 2015 @ 7:47 pm

    It’s truly very complex in this full of activity life to listen news on Television, thus I just use the web for that purpose, and get the most up-to-date
    information.

  • By Pedro, January 10, 2016 @ 6:14 am

    Es bastante dificil elegir un ordenador con todos los que hay me alludar
    cual me aconsejan

  • By website, March 30, 2016 @ 7:35 am

    My partner and I absolutely love your blog and find most
    of your post’s to be precisely what I’m looking for. can you offer guest writers to write content
    for you personally? I wouldn’t mind creating a post or elaborating on a
    number of the subjects you write related to here. Again,
    awesome web log!

  • By dokter rambut erha kemanggisan, May 2, 2016 @ 5:01 am

    First of all I would like to say wonderful blog!
    I had a quick question in which I’d like to ask if you don’t mind.
    I was interested to find out how you center yourself and clear your thoughts
    before writing. I’ve had difficulty clearing my thoughts in getting
    my thoughts out there. I do enjoy writing however it just seems like
    the first 10 to 15 minutes are lost just trying to figure out how to begin. Any suggestions or tips?
    Appreciate it!

Other Links to this Post

  1. Tweets that mention WebTronico Blog » Arduino + LM35 – Como montar um termometro -- Topsy.com — December 14, 2010 @ 11:53 am

  2. WebTronico Blog » Exemplo do Ethernet Shield ENC28J60 com Arduino — May 22, 2012 @ 2:05 pm

  3. 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

Leave a comment