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 e a face arredondada virada para trás.

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 (sem delay e leitura)

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.

Você está preparado?

JSN Epic template designed by JoomlaShine.com