Sensor de temperatura LM35 e Arduino - Termômetro para Sistema de Irrigação 
Autor: Odilon Almeida | Publicado: 2015-04-03T07:51:00-07:00


Olá!
Nessa nova postagem, trago algumas experiências com o sensor de temperatura
LM35, e alguns incrementos. A ideia é incrementar um módulo de monitoramento
de&nbsp; temperatura ambiente no meu sistema
de irrigação para hortas e jardins, e ainda procurar manter o padrão de postagem
com experimentos significativos que realmente sirvam para alguma coisa, alem de hobbies&nbsp;e aprendizado.

Indo ao que interessa, a ideia é
fazer um termômetro simples e preciso, utilizando componentes básicos que
qualquer "usuário" de Arduino tenha em mãos, ou seja de fácil
acesso. Um desses componentes é o LM35, um circuito integrado simples e barato que parece um
transistor comum do tipo BC547, e é capaz de medir temperaturas que variam de
-55&nbsp; a +150 °C, com uma incrível precisão
de mais ou menos 0,5 °C. O seu funcionamento é bem simples, onde a cada &nbsp;grau Celsius de temperatura ele enviará 10mV
ao microcontrolador, ou qualquer outro dispositivo que possa fazer leitura de
tensão (V). Ex: Se a tensão V de saída do LM35 for igual a 250mV, teremos uma
temperatura de aproximadamente 25 °C. Partindo desse princípio temos uma regra
de três simples, onde os valores são diretamente proporcionais.

Então:







<!--[if gte vml 1]><v:rect id="_x0000_s1026"
 style='position:absolute;left:0;text-align:left;margin-left:154.1pt;
 margin-top:67.4pt;width:108pt;height:27pt;z-index:251662336' fillcolor="#f2f2f2 [3052]">
 
  <![if !mso]>
  

    <![endif]>
    
    
<span style='font-family:"Agency FB","sans-serif";
    color:red'>5 /1023 = 0,0049 V

<![if !mso]>
   

<![endif]>
<![endif]--><!--[if !vml]-->


<!--[endif]-->Para
que o Arduino consiga efetuar a leitura de forma correta, precisamos converter
esses valores para a faixa de leitura da entrada analógica do microcontrolador.
Ou seja, as entradas analógicas do Arduino recebem valores de tensão 0 a 5V, e mapeia
valores inteiros de 0 a 1023. Isso quer dizer que:



&nbsp;





Agora basta associarmos os
valores obtidos da primeira operação com os da segunda:





Onde:


250mV = Tensão de saída do Sensor;

5 V = Tensão máxima suportada pela porta analógica

0,0049V = Tensão por unidade da porta analógica;










100 = Conversão de milivolts (mV) para Graus Celsius.



Observando que existe uma pequena
diferença entre os resultados, porém essa diferença está dentro da margem de
erro que é de mais ou menos 0,5 °C.




Depois de conseguir esses dados,
fica fácil escrever o programa para o Arduino:&nbsp;





/*Sensor
de temperatura - LM35

Computadores
Fazem Arte

Computadoresfazemarte-odilon.blogspot.com.br
*/



int
pinoSensor = 0; //Pino A0 do Arduino conectado ao LM35

int
valorLido = 0; //Variável que armazena o valor lido pelo Sensor

float
temperatura = 0;//Ponto flutuante, armazena a temperatura

void
setup() {

&nbsp; 

&nbsp; Serial.begin(9600); //Inicia comunincação
Serial

}

void
loop() {

&nbsp; valorLido = analogRead(pinoSensor); //Linha
de código que iguala a leitura analógica do pinoSensor com o valorLido

&nbsp; temperatura = valorLido * 0.0049;&nbsp; // X/5 * 0.0049 , onde X representa valor
lido

&nbsp; temperatura = temperatura * 100;&nbsp;&nbsp; // Conversão de milivolts para Celcius&nbsp; 

&nbsp; Serial.print("Temperatura Atual =
"); // Escreve no serial o resultado.

&nbsp; Serial.print(temperatura);

&nbsp;&nbsp;Serial.print(" Graus Celsius");

&nbsp; delay(2000); //Aguarda 2 segundo para efetuar
nova leitura 






































}







Depois de
programar o Arduino basta montar o hardware.

Necessitaremos de:






Um Arduino (modelo de sua
preferência);



Um sensor de temperatura LM35;



Protoboard;












Jumpers.



O esquema de montagem é simples:







*Sempre que for montar algo, dê uma revisada no datasheet de todos os componentes para que não reste dúvida sobre o funcionamento de cada um.



Proposta de montagem na protoboard:







Depois de montar e conferir se todas as ligações estão corretas, basta ligar o Arduino e testar:

Tela serial, indicando o valor de temperatura obtido:











Você pode incrementar o projeto, de várias maneiras, por
exemplo, adicionando um LED para sinalizar a temperatura muita alta, muito
baixa ou os dois, adicinar dispositivos para acionar outras cargas, como relés,
utilizar um display para mostrar o valor de temperatura, etc. 




Em fim, basta usar a criatividade e aproveitar as
infinitas possibilidades que o Arduino pode oferecer.



Até.





Fontes de pesquisa:Arduino.cc

Blog.webtronico.com

blog.novaeletronica.com.br






<!--[if gte vml 1]><v:rect id="_x0000_s1026" style='position:absolute;
 margin-left:.45pt;margin-top:.45pt;width:117pt;height:140.1pt;z-index:251658240'
 fillcolor="#f2f2f2 [3052]">
 
  <![if !mso]>
  

    <![endif]>
    
    <p class=MsoNormal style='margin-top:0cm;margin-right:0cm;margin-bottom:
    0cm;margin-left:9.0pt;margin-bottom:.0001pt'>
<span style='font-family:
    "Agency FB","sans-serif";color:red'>1 °C<span style='font-family:
    "Agency FB","sans-serif";color:red'>       
    =       10mv <span
    style='mso-spacerun:yes'> <span style='font-family:"Cambria","serif";
    mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;
    color:red'>             <span
    style='font-family:"Agency FB","sans-serif";color:red'><span
    style='mso-spacerun:yes'>                 X<span
    style='mso-spacerun:yes'>                     250mV
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
    text-indent:9.0pt'>
<span style='font-family:"Agency FB","sans-serif";
    color:red'>&nbsp;
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
    text-indent:9.0pt'>
<span style='font-family:"Agency FB","sans-serif";
    color:red'>250 = 10X
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
    text-indent:9.0pt'>
<span style='font-family:"Agency FB","sans-serif";
    color:red'>&nbsp;
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
    text-indent:9.0pt'>
<span style='font-family:"Agency FB","sans-serif";
    color:red'>X = 250
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
    text-indent:9.0pt'>
<span style='font-family:"Agency FB","sans-serif";
    color:red'>       10
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
    text-indent:9.0pt'>
<span style='font-family:"Agency FB","sans-serif";
    color:red'>&nbsp;
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
    text-indent:9.0pt'>
<span style='font-family:"Agency FB","sans-serif";
    color:red'>X = 25 °C

&nbsp;

<![if !mso]>
   

<![endif]>
<![endif]--><!--[if !vml]--><!--[endif]-->