Sensor de temperatura LM35 – Medindo temperatura com Arduino

Em diversas aplicações temos que fazer a leitura de variáveis físicas, tais como a temperatura, distancia, entre diversas outras. Nesse tutorial iremos aprender como fazer a leitura de temperatura usando o sensor de temperatura LM35, um sensor barato e de ótima precisão com uma placa Arduino.

[toc]

Sistemas autônomos

Quando pensamos em um sistema autônomo, pensamos em um sistema que faça a tarefa designada por conta própria, sem a necessidade de interferência do homem. Para isso, é fundamental que o seu sistema autônomo enxergue as variáveis físicas que serão importantes para o desempenho da atividade.

Pense em uma geladeira ou num ar condicionado. Neles devemos definir o valor de temperatura desejado e a partir desse valor o equipamento deve controlar essa variável. Para que ele tenha capacidade de controlar a temperatura, é fundamental que o sistema possa ler a variável. É ai que entram os sensores.

Sensores

Da famosa enciclopédia online Wikipédia, temos que:

 “Um sensor é um dispositivo que responde a um estímulo físico/químico de maneira específica e mensurável analogicamente.”

Ou seja, sensores são dispositivos capazes de ler variáveis físicas ou químicas do ambiente e transformá-las em informação.

Qualquer processo automático possui sensores. Em industrias, onde há processos de produção automatizados, temos muitos tipos de sensores medindo as mais diversas variáveis do processo: temperatura, pressão, peso, pH, dentre muitos outros. Devido a importância da leitura dessas variáveis, existe uma área responsável por instrumentos de medição, a Instrumentação Industrial.

Nós, seres humanos, também somos feitos de vários sensores que nos ajudam a desenvolver nossas tarefas. Os nossos cinco sentidos: Olfato, audição, paladar, tato e visão, nada mais são do que conjuntos de sensores que colhem informações do ambiente para que o cérebro possa tomar decisões adequadas em cada situação.

Usando sensores

Tão importante quanto medir uma variável física é  transformá-la em uma informação legível pelo cérebro do sistema autônomo, nosso Arduino, por exemplo. Pensando em eletrônica, essa informação pode ser digital ou analógica (Veja o tutorial Grandezas Digitais e Analógicas e PWM)

  • Digital: Quando a informação é passada através de valores lógicos Altos(1) ou valores lógicos baixos(0).
  • Analógico: Quando a informação pode assumir qualquer valor dentro de um máximo e um mínimo. Quando trabalhamos com eletrônica, geralmente essa informação é dada por um valor de corrente ou tensão.

LM35 – Sensor de temperatura

O sensor LM35 é um sensor de precisão que apresenta uma saída de tensão linear proporcional à temperatura em que ele se encontrar no momento, tendo em sua saída um sinal de 10mV para cada Grau Célsius de temperatura.

sensor de temperatura LM35
sensor de temperatura LM35

Esse sensor não necessita de qualquer calibração externa para fornecer com exatidão, valores temperatura com variações de ¼ºC ou até mesmo ¾ºC dentro da faixa de temperatura entre –55ºC e 150ºC.

Ele pode ser usado de duas formas, com alimentação simples ou simétrica, dependendo do que se desejar como sinal de saída, mas independentemente disso, a saída continuará sendo de 10mV/ºC.

Em cada uma dessas duas formas de alimentação, o range de temperatura, ou seja, a temperatura máxima e mínima medida com exatidão, é diferente.

LM35 Modo escala completa - (-55ºC a 150ºC)
Modo escala completa – (-55ºC a 150ºC)
LM35 Modo básico - (2ºC a 150ºC)
Modo básico – (2ºC a 150ºC)

Uma vantagem é o fato desse sensor drenar apenas 60μA para estas alimentações. Dessa forma, seu auto-aquecimento é de aproximadamente 0.1ºC ao ar livre e possui um consumo muito baixo.Sensor de temperatura LM 35

O sensor LM35 é apresentado com vários tipos de encapsulamentos, sendo o mais comum o TO-92, que mais se parece com um transistor, e oferece ótima relação custo benefício, por ser o encapsulamento mais barato sem diferenças em seu uso ou exatidão.

Veja a folha de dados dele clicando aqui.


Mãos à obra – Medindo temperatura

Componentes necessários:

Montando o projeto

Agora vamos conectar os componentes do projeto. Para isso, desligue o cabo USB de seu Arduino e monte seu circuito conforme a figura a seguir.

Esquema de montagem no Arduino Uno do sensor de temperatura LM35
Esquema de montagem no Arduino Uno

Veja como ficou o nosso:

Montagem na pratica do sensor de temperatura LM35 com Arduino Uno
Montagem na pratica do sensor de temperatura LM35 com Arduino Uno

Conectando o Arduino ao computador

Conecte seu Arduino ao computador e abra a IDE Arduino.

Antes de carregar um programa, você precisa selecionar qual porta você deseja usar para fazer carregar o programa no Arduino (upload). Dentro do Arduino IDE, clique no menu Ferramentas (tools) e abra o submenu Porta(Port). Clique na porta que seu Arduino está conectado, tal como COM3 ou COM4. Geralmente aparece o nome da placa Arduino : “COM3 (Arduino/Genuino Uno)”.

Selecionando porta de comunicação na IDE Arduino
Selecionando porta de comunicação na IDE Arduino

Você também precisa garantir que o tipo de placa apropriado está selecionado em Ferramentas(Tools) no submenu Placa (Board).

Selecionando o modelo de placa Arduino usada
Selecionando o modelo de placa Arduino usada

Programando

Crie um programa (Sketch) e salve com o nome de “programa_sensor_de_temperatura”.

Com o seu programa salvo, escreva nele o código conforme escrito abaixo.

//Sensor de temperatura usando o LM35
 
const int LM35 = A0; // Define o pino que lera a saída do LM35
float temperatura; // Variável que armazenará a temperatura medida
 
//Função que será executada uma vez quando ligar ou resetar o Arduino
void setup() {
Serial.begin(9600); // inicializa a comunicação serial
}
 
//Função que será executada continuamente
void loop() {
temperatura = (float(analogRead(LM35))*5/(1023))/0.01;
Serial.print("Temperatura: ");
Serial.println(temperatura);
delay(2000);
}

Após escrever o código, clique em Carregar (Upload) para que o programa seja transferido para seu Arduino.

Colocando para funcionar

Caso tenha ocorrido tudo conforme esperado, poderemos fazer a leitura da temperatura através do monitor serial. Abra o monitor serial para verificar o que está sendo lido na entrada A0.

O resultado será algo semelhante à imagem a seguir:


Entendendo a fundo

Entendendo o Software

Lendo o valor de temperatura

Primeiramente, em nosso programa usamos o comando de leitura analógica, já estudado no tutorial Entradas e Saídas Analógicas, para fazer a leitura do valor em A0. Além disso, usamos a comunicação serial, também discutida em outro tutorial, Comunicação Serial Arduino . É importante que o leitor entenda como eles funcionam. Experimente ler nossos tutoriais anteriores.

Em resumo, nosso programa lerá qual é o valor do sinal no pino A0, que varia de 0 a 1023, onde 0 corresponde a 0Volts e 1023 corresponde a 5Volts. Como sabemos, 1ºC é igual a 10mV. Sendo assim, temos:

Tensão em A0 = (Valor lido em A0)*(5/1023)

Temperatura = Tensão em A0/10mV

Logo:

Temperatura =  [(Valor lido em A0)*(5/1023)]/10mV

Em linguagem de programação, ficará:

temperatura = (float(analogRead(LM35))*5/(1023))/0.01;

Transformando o tipo da variável

Perceba que colocamos o comando de leitura do valor analógico, analogRead, dentro de float(). Você saberia me dizer o motivo?

Quando o Arduino faz uma leitura analógica, ele converte o valor lido, que pode ser um valor de tensão entre 0V e 5V, em um número entre 0 e 1023. Ou seja, o Arduino divide 5Volts, que é o maior valor que ele é capaz de ler, em 1023 partes iguais e lhe informa quantas partes tem o valor que ele está medindo.

diferença entre sinal digital e analógico

Pense que temos uma rampa que vai de 0 à 5V e dividimos essa rampa em 1024 degraus. Então, quando estamos no degrau 0, estamos no que equivale a 0V, quando subimos o primeiro degrau vamos para o que equivale a 5V/1023 (5 Volts dividido pelos 1023 degraus restantes), que é aproximadamente igual à 0,00487V.

O número que o Arduino nos informa é do tipo inteiro, contudo, o valor de temperatura é um numero racional, que pode assumir valores decimais. Por conta disso, no nosso programa, declaramos a temperatura como uma float.

Em programação, quando multiplicamos uma variável inteira por uma variável racional, o programa considera que o resultado deve ser inteiro, eliminando a parte decimal da variável. Dessa forma, para que tenhamos um resultado racional, devemos transformar o número inteiro em um número racional.

Em virtude disso, em nosso código foi necessário colocar o comando de leitura do valor analógico, analogRead, dentro de float().

numeroracional = float(numero);
temperatura = (float(analogRead(LM35))*5/(1023))/0.01;

Sempre que for necessário fazer um calculo com o valor analógico, precisamos convertê-lo para uma variável do tipo float.

Em alguns casos, precisamos transformar uma variável qualquer para o tipo inteiro. O procedimento é o mesmo, ou seja, basta colocar o valor ou variável dentro dos parenteses de int();

numerointeiro= int(numero);
temperatura = int((float(analogRead(LM35))*5/(1023))/0.01);

Se usamos o int() no calculo de temperatura, tal como mostrado acima, teremos um resultado sem os números decimais. Faça o teste.


Desafios

  1. Tente retirar o comando float() do calculo de temperatura e veja o resultado. Provavelmente você terá o valor de temperatura igual a zero, descubra o motivo.
  2. Crie um alarme usando um buzzer e um LM35, explicado em nosso ultimo tutorial Usando buzzer com Arduino, Quando a temperatura estiver muito alta, o alarme deve disparar.
  3. Usando 3 ou mais LED’s e um LM35, faça um programa que aumente o numero de LED’s acesos conforme a temperatura seja maior.

Fechamento

Esperamos que tenham gostado, deixe seu comentário com duvidas, sugestões ou com a foto ou vídeo de seu projeto!! Compartilhe à vontade.

Apostila Arduino Básico

 

Privacy Preference Center