Medir a temperatura de um ambiente, de um líquido ou um objeto é uma coisa bem útil. E, uma forma de se fazer isto é utilizando o sensor LM35. Ele é um sensor bem simples e, neste post, nós veremos como utilizá-lo.

Informações importantes

O que é

O LM35 é um sensor de temperatura que pode vir em diferentes tipos de encapsulamento. O mais comum é o TO-92, que é um encapsulamento de plástico ou epóxi (mesmo encapsulamento de muitos transistores simples).

Independente do tipo do encapsulamento, este sensor é bem pequeno (~0,5×0,5cm). Veja o LM35 com o encapsulamento TO-92 na imagem abaixo.

LM35 sensor de temperatura

Mesmo com os diferentes tipos de encapsulamentos e as diferentes empresas que produzem o sensor, o funcionamento de todos é o mesmo. De acordo com a temperatura medida, o sensor produz um sinal de tensão que varia 10mV para cada ºC.

Além disso, ele é capaz de trabalhar em uma escala de -55ºC até 150ºC. E a acurácia do sinal produzido pode variar de +-0.4ºC até +-1,5ºC, sendo ela dependente da temperatura que está sendo medida. Para mais detalhes, veja o datasheet.

Existem outras versões desse sensor, que são: LM35A, LM35C, LM35CA e LM35D. Elas terão os parâmetros diferentes do LM35. Portanto, consulte o datasheet para saber os parâmetros corretos caso o seu sensor seja uma destas outras versões.

Detalhes adicionais

O LM35 consome uma corrente de 60μA, o que gera um pequeno acréscimo de temperatura ao sensor de cerca de 0.1ºC. Para aplicações em que a acurácia é importante, essa variação deve ser levada em conta.

Este sensor é indicado para medir a temperatura na superfície de objetos. E há uma garantia de que a temperatura dele seja no máximo 0.01°C diferente da temperatura da superfície a qual ele está fixado.

Para garantir que a temperatura medida seja próxima à temperatura da superfície, é recomendável recobrir os pinos de conexão com epóxi. Assim, a troca de temperatura entre os pinos e o ambiente é minimizada (eles geram uma pequena influência na temperatura medida).

Como utilizar

As posições dos pinos do LM35 variam dependendo do encapsulamento.

A imagem abaixo mostra os pinos para o encapsulamento TO-92. Os demais podem ser vistos na página 3 do datasheet.

Fonte: Wikipedia

Usando a imagem acima como referência:

  1. Vs: Pino de alimentação positiva. Suporta de 4 a 20V.
  2. Vout: Pino com tensão de saída proporcional à temperatura medida.
  3. GND: Terra

Antes de entrar nas ligações, é importante deixar claro que existem diversas formas de ligar o LM35, mas mostrarei apenas duas, que considero as mais importantes para aplicações em geral.

Se quiser consultar quais são as demais ligações, veja as páginas 16, 17 e 18 do datasheet.

Ligação padrão

Neste tipo de ligação, não é necessário nenhum componente adicional. Entretanto, a escala de medição vai de 2ºC até 150ºC. Ou seja, não é possível medir temperaturas negativas.

Se na sua aplicação não for necessário medir tensões negativas, esta ligação é ideial. Veja a imagem abaixo mostrando como é a ligação.

LM35 ligação simples

Fonte: Pág 15 do datasheet

Não tem nenhum mistério, basta ligar o pino Vs na alimentação (4-20V) e o pino GND no terra. Por fim, é só medir a tensão do pino de saída.

Cada acréscimo de 10mV no pino de saída corresponderá à 1ºC. Portanto, basta ler a tensão do pino e dividir por 10mV.

Elevando a tensão

Antes de falar sobre a próxima ligação, vamos entender um ponto: quando um resistor é ligado no pino de saída, o sensor é capaz de informar temperaturas negativas. O problema é que elas são indicadas com tensões negativas.

Como muitos dispositivos não são capazes de trabalhar com tensões negativas, principalmente os conversores AD de um microcontrolador, então esta tensão precisa ser transformada em tensão positiva.

Isso é feito elevando a tensão do terminal negativo do sensor. E, para elevar a tensão do terminal GND, basta conectar um ou mais diodos em série entre o terminal negativo do sensor e o barramento de terra. Desta forma, a tensão entre o terminal negativo do sensor e o terra será a queda de tensão entre os diodos.

Veja a imagem do tópico a seguir para entender.

Ligação com terra elevado

LM35 ligação com terra elevado

Fonte: Pág 16 do datasheet

De acordo com a imagem acima, considerando dois diodos de silício (~0,7v de queda), a tensão no terminal negativo será 1,4V maior que a tensão do terra (0v). Portanto, a tensão gerada pelas temperaturas negativas são elevadas e se tornam positivas e podem ser lidas sem problema.

Para deixar mais claro, vamos considerar o limite mínimo do sensor (-55ºC): -55ºC*10mV/ºC = -0,55V. Como a tensão está sendo elevada 1,4V, o valor final lido pelo pino de saída será 0,85V <- [1,4 + (-0,55)]. Daria para usar apenas um diodo sem problemas e o valor mínimo seria 0,15V (0,7-0,55) e não 0,85V.

As leituras de tensão que informei neste tópico e no anterior são todas relativas ao terra. Logo, 0,85V será a tensão entre o pino de saída e o terra. A tensão em Vout (vide imagem acima) continuará sendo -0,55V para temperaturas negativas. Isso porque:

Vout = Vpinosaida – Vpinognd

Vout = 0,85 – 1,4 = -0,55V

Além dos diodos, é necessário ligar um resistor de 18kΩ entre o pino de saída do sensor e o terra.

O título deste tópico foi terra elevado, pois me referi ao terra do sensor e não ao terra do circuito.

Utilizando Arduino

Para exemplificar como fazer a leitura de tensão do LM35, vou mostrar como fazer isso com o Arduino.

Ligação simples

Para o caso da ligação simples, basta alimentar o sensor com 5V no pino Vs e GND no pino GND. Por último, o pino Vout do sensor é ligado no pino analógico A0 do Arduino. Use a imagem abaixo como referência

LM35 circuito com Arduino

Código para leitura

Após fazer a ligação, basta utilizar o código abaixo para obter o valor de temperatura. Leia os comentários para entender o código.

Para ler sobre como fazer a conversão AD no Arduino, recomendo a leitura deste post.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define sensor A0

void setup() {
  Serial.begin(9600); // Inicializa a comunicação serial
}

void loop() {
  // Lê o valor do sensor na porta analógica e converte para tensão
  float temp = analogRead(sensor)*5/1023.0;
 
  // Converte a tensão em ºC dividindo ela na escala do sensor
  temp = temp/0.010;
 
  // Mostra o valor da temperatura no monitor serial
  Serial.println(temp);  
 
  delay(1000); // Atraso de 1s
}

Ligação com terra elevado

Nesta configuração, a temperatura precisa ser lida pela tensão Vout (tensão entre o pino de saída e o terminal negativo do sensor). Porém, quando medimos a tensão do pino de saída do sensor na porta analógica do Arduino, estamos medindo na verdade a tensão entre ele e o terra.

Para contornar isto, devemos ligar o pino de saída na porta analógica A0 e o pino de alimentação negativa na porta A1. Com isto, basta subtrair a tensão encontrada em A0 da tensão encontrada em A1. O resultado deste procedimento nos dará justamente a tensão Vout (assim como foi visto no tópico sobre este tipo de ligação).

E, com a tensão Vout, basta aplicar o mesmo procedimento da ligação simples para descobrir a temperatura.

Alternativas

Conforme pode ser visto neste post, pode ser um pouco trabalhoso fazer leituras de temperaturas negativas com o LM35. Portanto, outros sensores podem ser utilizados no lugar dele.

A primeira alternativa é o sensor TMP36, que é praticamente igual ao LM35. A diferença é que ele é capaz de representar toda a faixa de temperatura dele (-40ºC a 125ºC) com tensões positivas. Então, não é necessário nenhum passo complicado para ler temperaturas negativas.

Por outro lado, a acurácia do TMP36 é pior que a do LM35 (+-2ºC).

Uma outra alternativa mais recomendada é o sensor DS18B20 que é digital. Isto é, o valor medido por ele é informado digitalmente (0s e 1s) e não por meio de um sinal de tensão/corrente. Portanto, dá para ler temperaturas negativas também sem nenhuma complicação.

A comunicação com o DS18B20 pode ser difícil de implementar, mas existem bibliotecas prontas que são simples de utilizar. E a diferença de preços entre o DS18B20 e o LM35 é relativamente pequena.

Termistor NTC com Arduino