Neste post vamos mostrar como usar o sensor de temperatura LM35 com Arduino. O LM35 é um sensor de temperatura fabricado pela National Semiconductor. Varia a tensão de saída (pino Vout) de acordo com a temperatura medida na superfície do sensor.

No Arduino, usamos uma das entradas analógicas para ler esta tensão do LM35 e calcular a temperatura.

sensor de temperatura LM35

Conexão do sensor de temperatura LM35 com Arduino

No circuito abaixo, podemos ver a ligação do LM35 com Arduino Uno, assim como os 3 leds na protoboard, que acendem de acordo com a variação da temperatura. Os leds estão conectados nas portas digitais 11, 12 e 13, e o sensor na porta analógica A0 do Arduino:

Circuito sensor de temperatura LM35 com Arduino

Ao executar o programa, o LM35 vai enviar informações pela entrada analógica do Arduino, que por sua vez vai tratar essas informações, converter a tensão do sensor para graus celsius e fahrenheit, armazenar os valores máximo e mínimo, e enviar essas informações pela serial, além de acender os leds.

Após compilar e transferir o programa para o Arduino, abra o Monitor Serial da IDE do Arduino e você verá uma tela parecida com essa, com a temperatura sendo exibida tanto em celsius como em fahrenheit, e as indicações de máxima e mínima:

LM35 - Serial monitor

Existem outros sensores de temperatura mais modernos, como o DS18B20, que é um sensor digital, possui bibliotecas próprias, possibilidade de ligar mais de um sensor na mesma porta do Arduino, e várias outras vantagens. Vou testar este sensor posteriormente e farei um post específico.

E já que falamos em datasheet no post anterior, abaixo os links para os datasheets tanto do LM35 como do DS18B20:

Datasheet LM35

Datasheet DS18B20

Abaixo, o programa relativo ao circuito apresentado nesse post:

//Programa: Sensor de temperatura LM35
//Arduino e Cia

int pin = 0; //Pino analogico para ligacao do LM35

//Variaveis que armazenam a temperatura em Celsius e Fahrenheit
int tempc = 0,tempf=0; 
int samples[8]; // Array para precisão na medição

//Variáveis que guardam a temperatura máxima e mínima
int maxtemp = -100,mintemp = 100; 
int i;

void setup()
{
  Serial.begin(9600);     //Inicializa comunicação serial
  pinMode(13, OUTPUT);    //Define pino 13 como saída (led verde)
  pinMode(12, OUTPUT);    //Define pino 12 como saída (led vermelho)
  pinMode(11, OUTPUT);    //Define pino 11 como saída (led amarelo)
}

void loop()
{
  for(i = 0;i<=7;i++){ //Loop que faz a leitura da temperatura 8 vezes
    samples[i] = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;
    //A cada leitura, incrementa o valor da variavel tempc
    tempc = tempc + samples[i]; 
  delay(100);
}

//Divide a variavel tempc por 8, para obter precisão na medição
tempc = tempc/8.0; 
//Converte a temperatura em Fahrenheit e armazena na variável tempf
tempf = (tempc * 9)/ 5 + 32; 
//Armazena a temperatura máxima na variável maxtemp
if(tempc > maxtemp) {maxtemp = tempc;} 
//Armazena a temperatura máxima na vari[avel mintemp
if(tempc < mintemp) {mintemp = tempc;} 

//Se a temperatura estiver abaixo de 25, acende o led verde
if(tempc < 25) 
  {
    digitalWrite(13, HIGH);
    digitalWrite(12, LOW);
    digitalWrite(11, LOW);
  }

//Se a temperatura estiver acima de 28, acende o led vermelho
if(tempc > 28) 
  {
    digitalWrite(12, HIGH);
    digitalWrite(13, LOW);
    digitalWrite(11, LOW);
  }

//Se a temperatura estiver acima de 25 e abaixo de 28, acende o led amarelo
if((tempc > 25) && (tempc < 28)) 
  {
    digitalWrite(11, HIGH);
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
  }

//As linhas abaixo enviam para o monitor serial a temperatura em 
//Celsius e Fahrenheit,
//e também as temperaturas máxima e mínima registradas

Serial.print(tempc,DEC);
Serial.print(" Cels., ");
Serial.print(tempf,DEC);
Serial.print(" Fahr. -> ");
Serial.print(" Min : ");
Serial.print(mintemp,DEC);
Serial.print("  Max: ");
Serial.println(maxtemp,DEC);

tempc = 0;
delay(1000); //Aguarda 1 segundo e reinicia o processo
}

Confira no vídeo abaixo o projeto em funcionamento:

Veja também o post Sensor de temperatura LM35 com display LCD 16×2, aqui mesmo no Arduino e Cia!

4/5 - (1 vote)