Início
/
Projetos Arduino
/
Projetos Squids
/
Básico
/
Projeto 09 - Como usar o sensor de temperatura LM35 com Arduino
Projeto 09 - Como usar o sensor de temperatura LM35 com Arduino
Angelo Luis Ferreira | 01/12/2016
Acessos: 16.941
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
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 25º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 sensor. Esta 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: Desafio 24
O anúncio abaixo ajuda a manter o Squids Arduino funcionando
Comentários