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

Você está preparado?

Imagem 1

Squids Arduino News

CB05 - Circuitos eletrônicos básicos Temporizador com CI 555 (modo monoestável) Objetivo Criar um circuito para ser utilizado como um temporizador para componentes eletrônicos, onde utilizamos ...

Desafio 38 - Projeto 52 Relógio Digital RTC com ajuste de horas do alarme Com base no projeto 52 resolva os seguintes desafios: 1. Acrescente mais um botão (push button) para ligar e desliga...

Básico - Projeto 52 Relógio Digital com despertador - LCD + I2C + RTC DS3231 Objetivo Neste projeto mostraremos como utilizar o o módulo RTC DS3231 para criar um relógio digital  com monitorame...

Desafio 37 - Projeto 51 Relógio Digital RTC com botão seletor Com base no projeto 50 resolva os seguintes desafios: 1. Acrescente um botão (push button) para que quando pressionado exiba a d...

Básico - Projeto 51 Relógio Digital com Temperatura - LCD + I2C + RTC DS3231 Objetivo Neste projeto vamos mostrar como utilizar o sensor de temperatura do módulo RTC DS3231 e criar um relógio d...

Desafio 36 - Projeto 50 Relógio Digital RTC com ajuste de horas Com base no projeto 50 resolva os seguintes desafios: 1. Acrescente um botão (push button) para ligar e desligar a luz de fund...

Básico - Projeto 50 Relógio Digital com display LCD + adaptador I2C + RTC DS3231 Objetivo Neste projeto vamos criar um relógio digital Arduino utilizando um display LCD, um módulo I2C e um módu...

Desafio 35 - Projeto 49 Relógio Digital com saudação Com base no projeto 49 resolva os seguintes desafios: 1. Altere o scketch do projeto, acrescentando as seguintes saudações: Entre 5h:0...

Coletânea de bibliotecas para módulos

Coletânea de bibliotecas para módulos Arduino Criamos abaixo uma tabela com as principais bibliotecas para módulos utilizadas em nossos projetos para Arduino. Para instalar as bibliotecas diretamente...

Básico - Projeto 49 Relógio Digital com display LCD + I2C Objetivo Neste projeto vamos criar um relógio digital Arduino utilizando apenas um display LCD, um módulo I2C e 2 botões para controle ...

Outros artigos

Mais: Circuitos básicos Desafios Projetos Básicos Bibliotecas Jogos

Topo