Logo Pisciotta

PISCIOTTA

Soluções Inteligentes

PROFESSOR

Listar
Artigos, curiosidades e muitas dicas.

Aproveite, curta, compartilhe.

Sensor de Temperatura LM35



ARDUINO

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