Logo Pisciotta

PISCIOTTA

Soluções Inteligentes

PROFESSOR

Listar
Artigos, curiosidades e muitas dicas.

Aproveite, curta, compartilhe.

Sensor de Temperatura LM35



ARDUINO

566 Views - 10 Curtidas




Utilizar o LM35 para fazer um termômetro é muito simples. Esse componente possui uma precisão de 0.5ºC e já vem calibrado de fábrica.

O componente é comumente encontrado em encapsulamento TO-92, idêntico aos transistores comuns, com 3 terminais, sendo dois terminais de alimentação e o central para a saída analógica. Também existem em encapsulamentos SMD ou TO-220.

O componente apresenta uma tensão de saída proporcional à temperatura centígrada, sendo 10mV a cada grau centígrado, com uma capacidade máxima de corrente de 10mA. Recomenda-se a sua utilização em circuitos com máximo de 2mA de dreno.



Vout = 0,01 x T [V]


Onde a temperatura é em graus Célsius.

Seu consumo de energia é muito baixo (60uA), por isso existe pouca interferência da dissipação de potência na medição realizada [ele esquenta pouco]. O componente aceita alimentação entre 4 e 30V.

É capaz de medir temperaturas entre -55ºC e 150ºC (LM35, LM35A) ou de -40ºC e 110ºC (LM35C, LM35CA) ou ainda entre 0 e 100ºC (LM35D).

LM35, LM35A -55 A 150ºC
LM35C, LM35CA -40 A 110ºC
LM35D 0 A 100ºC

Pode trabalhar com fonte de alimentação simples ou simétrica. Quando alimentado com fonte de tensão simples, é capaz de medir temperaturas de 2ºC a 150ºC, enquanto que utilizando uma fonte simétrica ele pode realizar medições de -55ºC a 150ºC, mas para isso é necessário utilizar um resistor entre a saída e o terminal negativo da fonte (-Vs), como pode ser observado no datasheet do componente.

Faça o download do datasheet da Texas Instruments para verificar suas características e consultar circuitos de referência clicando no ícone.

Termômetro usando LM35 e Arduino

Podemos utilizar um Arduino para construir um medidor de temperatura, conforme abaixo.

Nota: A entrada analógica do Arduino é um conversor ADC (Analog-Digital Converter -- Conversor Analógico-Digital) de 10 bits por aproximações sucessivas, e possui um valor de referência chamado AREF (Analog Reference). Esse valor AREF corresponde à máxima tensão a ser lida pelas entradas analógicas, e não pode ser superior a 5% da tensão de alimentação do microcontrolador, mas pode ser mais baixa. Assim, caso tenhamos um sensor com saída analógica que forneça tensões máximas de, por exemplo, 3V, podemos inserir 3V no pino AREF e com uma instrução no programa, habilitar o microcontrolador para utilizar a referência externa (os 3V aplicados ao pino), aumentando a resolução do meu valor lido.

Caso você monte sua própria placa, a página 313 do datasheet do ATMEGA328P mostra uma sugestão de ligação do pino AREF com filtro indutivo e capacitivo, para que oscilações na alimentação não causem leituras incorretas dos valores das entradas analógicas. Mas se você está utilizando uma placa Arduino, não se preocupe: tudo deve estar preparado para você utilizar os benefícios da entrada analógica.

Montagem do Circuito

A montagem do circuito eletrônico é muito simples. Basta alimentar o CI LM35 com o positivo e o negativo através dos pinos 5V e GND do Arduino e então ligar o pino central do LM35 à uma das entradas analógicas do Arduino. Aqui neste exemplo, vamos ligar no pino A0.

Software

Abra a IDE do Arduino e cole o seguinte código:


//Termômetro com LM35
float Temperatura;
void setup() {
  Serial.begin(9600); //Inicializa a Serial
  Serial.println("TERMOMETRO"); //Escreve mensagem inicial
  pinMode(A0, INPUT); //Declara o pino A0 como entrada
}

void loop() {
  Temperatura = (float(analogRead(A0)) * 5 / 1023) / 0.01;
  Serial.print(Temperatura);
  Serial.println("ºC");
  delay(2000);
}

Clique no ícone para gravar no Arduino e abra a ferramenta Serial Monitoring para poder realizar a leitura da informação. A primeira linha da rotina LOOP() faz a leitura da entrada analógica A0, transformando-a em um número de ponto flutuante, que é multiplicado por 5 (pois a máxima tensão é 5V) e dividido por 1023 (pois é o máximo valor possível na entrada). O resultado é dividido por 0,01 referente aos 10mV por grau Celsius.


Temperatura atualizada a cada 2 segundos no Serial Monitoring.

Os valores lidos pela entrada analógica do Arduino são convertidos pela fórmula do programa, e o valor numérico é enviado para a porta USB (emulador da porta Serial), aparecendo na tela do Serial Monitoring da IDE Arduino. Caso a leitura da temperatura esteja errada, você pode verificar se o seu Arduino realmente está trabalhando com 5V de alimentação; pode acontecer com Arduino Mini ou Nano de a tensão de operação ser 3,3V. Isso pode ser verificado ao se medir o pino RAW da placa.

Se quiser melhorar a resolução da leitura, basta inserir o comando para alterar o valor de referência para 1,1V conforme o código abaixo, analogReference(INTERNAL) e o fator de multiplicação da fórmula para 1,1 em lugar do antigo 5. Assim, o conversor analógico considera 1,1V sendo a máxima tensão lida. Importante salientar que todas as portas analógicas suportarão no máximo os 1,1V na entrada.


//Termômetro com LM35
float Temperatura;
void setup() {
  Serial.begin(9600); //Inicializa a Serial
  Serial.println("TERMOMETRO");
  pinMode(A0, INPUT);
  analogReference(INTERNAL);
}

void loop() {
  Temperatura = (float(analogRead(A0)) * 1.1 / 1023) / 0.01; //Onde 1.1 é a máxima tensão esperada pelo Arduino
  Serial.print(Temperatura);
  Serial.println("ºC");
  delay(2000);
}

Se você gostou, clique em Curtir. Isso me incentiva a realizar novos artigos.