Básico - Projeto 09

Sensor de temperatura LM35

Objetivo

Fazer a leitura do sensor de temperatura LM35 em graus Celsius (ºC)  com auxílio da porta serial e monitor serial.

Aplicação

Para fins didáticos. Simula processos industriais onde as temperaturas devem ser controladas.

Componentes necessários

Referência

Componente

 Quantidade

Imagem

Observação

Protoboard Protoboard 830 pontos

Comprar

1 Resultado de imagem para protoboard 830v No mínimo utilizar protoboard com 830 pontos
Jumpers Kit cabos ligação macho / macho

Comprar

1  
Sensor de Temperatura LM35 Sensor de Temperatura LM35

Comprar

1 Utilizamos um sensor, segundo o datasheet do fabricante, com faixa de temperatura de -55ºC até +150ºC e incremento de
10mV/ºC, ou seja, cada vez que a temperatura ambiente aumenta 1ºC, o sensor aumenta em 10mV a tensão no pino de saída.
Arduino UNO R3

 

Arduino UNO Original

Comprar

 

Arduino UNO Similar

Comprar

1 Você poderá utilizar uma placa Arduino UNO original ou similar

Obs.: Todos componentes acima fazem parte do Kit Arduino Básico.

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito. Veja a simulação no link --> Projeto 09 - simulação online.

Atenção

1) Cuidado para não ligar o sensor de temperatura invertido. Ele deve ficar com a face reta virada para frente, conforme a imagem abaixo, e a face arredondada virada para trás, de forma que o positivo fique ao lado esquerdo do sensor e o negativo ao lado esquerdo do sensor.

2) A montagem abaixo foi realizada em um protoboard com linhas de alimentação não contínuas. Verifique se o seu protoboard possui linhas de alimentação contínuas ou separadas - saiba mais em protoboard

Código do Projeto (com leitura de dados e delay)

Digite o código abaixo no ambiente de desenvolvimento do Arduino. Faça a verificação e o upload.

/*******************************************
*
*    PROJETO 9 - SENSOR LM35
*   http://squids.com.br/arduino
*
*******************************************/
const int sensorLM35 = 0; // Entrada sensor no Arduino: A0 - Analógica
float temperatura = 0; // variável tipo float - inícia no 0
int ADClido = 0;

void setup(){
    Serial.begin(9600); // taxa comunicação da placa com o computador
    analogReference(INTERNAL);
//Se estiver usando Arduino Mega, use INTERNAL1V1
//se estiver usando Arduino Leonardo, remova esta linha pois o Leonardo não aceita este comando
}

void loop(){
    ADClido = analogRead(sensorLM35); //faz a leitura analógica A0
    temperatura = ADClido * 0.1075268817; //no Leonardo use 0.4887585532  (constante para cada 1ºC)
    Serial.print("Temperatura = "); // mostra valor na tela
    Serial.print(temperatura);
    Serial.println(" *C");
    delay(1000); // aguarda 1 segundo
}

Vídeo

Como o projeto deve funcionar

1. Quando você rodar o programa, o sensor de temperatura LM35 mede a temperatura ambiente onde está localizado, e o software irá mostrar os valores no monitor a cada 1 segundo.

2. Para visualizar a leitura das temperaturas, clique no ícone monitor serial, como mostra a figura abaixo:

3. Observe que o sensor LM35 faz a leitura da temperatura ambiente, que no nosso exemplo estava em torno de 24ºC.

4. Experimente encostar o dedo no sensor e observará um aumento imediato da temperatura (se a temperatura ambiente estiver menor que 36ºC). Retirando o dedo, o sensor voltará a medir a temperatura ambiente onde está localizado.

Explicando o Código do Projeto

1. Primeiro definimos a constante (LM35) e as variáveis (temperatura e ADClido).

const int sensorLM35 = 0; // Entrada sensor no Arduino: A0 - Analógica
float temperatura = 0; // variável tipo float - inícia no 0
int ADClido = 0;

 1.1. Observe que utilizamos a variável tipo "fload" para a variável temperatura. Veja na tabela abaixo as diferenças nos tipos de constantes e variáveis:

Tipo Valores Válidos para Variáveis e Constantes
char letras e símbolos: 'a', 'b', 'H', '^', '*','1','0'
int de -32767 até 32767 (apenas números inteiros)
float de -3.4 x 1038 até +3.4 x 10+38com até 6 dígitos de precisão (2 casas depois da vírgula)
double de -1.7 x 10308 até +1.7 x 10+308com até 10 dígitos de precisão

1.2. A constante LM35 se refere ao sensor de temperatura LM35 que deverá estar conectado no pino analógico A0.

1.3. A variável ADClido irá armazenar o valor lido diretamente pelo pino analógico depois da conversão feita pelo ADC (Analog to Digital Converter - conversor analógico para digital), sem tratamento nenhum. É do tipo inteiro, pois este valor vai de 0 a 1023. A variável ADClido começa valendo zero. 

2. Através da strutura void setup(), definimos:

void setup(){
    Serial.begin(9600); // taxa comunicação da placa com o computador
    analogReference(INTERNAL);
//Se estiver usando Arduino Mega, use INTERNAL1V1
//se estiver usando Arduino Leonardo, remova esta linha pois o Leonardo não aceita este comando
}

2.1. A função Serial.begin() serve para dizer ao Arduino que será coletado dados para o computador a partir da porta serial e o cabo USB. O número entre os parênteses significa qual é a taxa de dados que a placa vai se comunicar com o computador. Utilizaremos a taxa padrão de 9600bps (bits-per-second). 

2.2. O comando analogReference(INTERNAL) altera a tensão de referência das portas analógicas do Arduino, ou seja, podemos alterar a tensão máxima que pode entrar nas portas analógicas de 5V para 1,1V. Desta forma, conseguimos uma precisão maior no ADC (Analog to Digital Converter ou conversor analógico-digital) do Arduino, do que se utilizarmos a referência padrão de 5V.

Portanto, se a tensão máxima de leitura ficar definida como 1,1V, poderemos calibrar o nosso sensor de temperatura para ler no máximo 110ºC, ou seja, 1100mV, pois sabemos que o incremento do sensor utilizado no nosso projeto é de 10mV/ºC, conforme informações do fabricante - veja em observação na tabela de componentes do sensor de temperatura LM35. 

Obs: Utilize INTERNAL para Arduino UNO, INTERNAL1V1 para Ardino Mega. Não utilize o comando analogReference() para o Arduino Leonardo --> leia analogReference().

3. Através da estrutura void loop(), obtemos:

void loop(){
    ADClido = analogRead(sensorLM35); //faz a leitura analógica A0
    temperatura = ADClido * 0.1075268817; //no Leonardo use 0.4887585532  (constante para cada 1ºC)
    Serial.print("Temperatura = "); // mostra valor na tela
    Serial.print(temperatura);
    Serial.println(" *C");
    delay(1000); // aguarda 1 segundo
}

3.1. A variável ADClido através da função analogRead(sensorLM35) obtém os valores lidos diretamente pelo pino analógico do sensorEsta leitura é feita pelo ADC (Analog to Digital Converter, ou conversor analógico-digital). A variável definida como tipo inteiro, vai de 0 a 1023, ou seja, possui 210 = 1024 valores inteiros (referente à resolução de 10 bits do ADC para controladores Arduino UNO, Mega e Leonardo).

3.2. O valor da variável temperatura é calculado como: ADClido * índice de conversão. Para obtermos o índice de conversão, devemos entender a seguinte sequência: 110º C (valor máximo para 1,1V na porta analógica) equivale a 1023 (valor máximo de leitura do ADClido), logo pela regra de três, o valor da temperatura = ADClido * (110/1023). Portanto, temperatura = ADClido * 0.1075268817204301.

Observação: Para Arduino Leonardo, utilize o valor 0.4887585532 como índice de conversão. Como a variável temperatura é uma variável tipo float, podemos visualizar este valor no monitor serial com 2 casas decimais. 

3.3. Para escrevermos na porta serial a frase "Temperatura = ", utilizamos o comando Serial.print( "Temperatura = "). Depois escrevemos o valor lido no sensor através da função Serial.print(temperatura). Finalmente, colocamos o símbolo " *C" através do comando Serial.println(" *C"). O comando println diferentemente do comando print diz ao monitor que se deve pular uma linha após escrever o valor definido entre parêntesis.

3.4. Por último, definimos uma pausa através da função delay(1000), ou seja, uma espera de 1 segundo para o leitor fazer uma nova temperatura.

Desafios

Com base neste projeto, resolva o seguinte desafio:

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Compartilhe:

Doações

Contribua pra manter o site online :)

Inscreva-se no canal Squids

Squids Arduino News

CB09 : Dimmer para leds com CI 555 sem Arduino Objetivo Criar um circuito gerador de pulsos modulados (PWM - Pulse Width Modulation) para alterar a intensidade do brilho de um led. Para este pro...

Como usar temporizadores no Arduino

Funções de temporização na programação com Arduino Objetivo Nesta dica vamos mostrar utilizar as diversas funções de temporização disponíveis na programação com Arduino. As funções de Temporizaç...

Intermediário - Projeto 11 Contador de acessos utilizando leds infravermelhos e Arduino Objetivo O objetivo deste projeto é criar um sistema de contagem de visitantes que entram e saem de uma s...

Básico - Projeto 94 Simulando um botão na tela do display OLED Objetivo O objetivo deste projeto é simular um botão de controle no display OLED. O botão servirá para controlar a iluminação de u...

Básico - Projeto 93 Criando um relógio analógico com Oled SSD1306 Objetivo O objetivo deste projeto é exibir no display OLED um relógio com estilo analógico, ou seja, com ponteiros. Utilizaremo...

Outros artigos

Mais: Circuitos básicos Dicas de Software Projetos Intermediários Projetos Básicos Desafios Jogos

Você está preparado?

Topo