Início
/
Projetos Arduino
/
Projetos Squids
/
Básico
/
Projeto 45 - Controle de um cooler com sensor de temperatura LM35
Projeto 45 - Controle de um cooler com sensor de temperatura LM35
Angelo Luis Ferreira | 20/10/2018
Acessos: 28.314
Básico - Projeto 45
Controle de cooler com sensor de temperatura LM35
Objetivo
Neste projeto vamos criar um circuito para controlar o acionamento de um cooler através da temperatura lida por um sensor LM35. Desta forma, o cooler será acionado quando a temperatura ambiente atingir o valor de controle determinado no programa, voltando a se desligar quando a temperatura ambiente ficar abaixo do valor de controle.
Obs1.: Este projeto não vai utilizar o recurso de programação analogReference(INTERNAL) que altera a tensão de referência das portas analógicas do Arduino de 5V para 1,1V (ver Projeto 39 - Display LCD como mostrador de temperatura).
Obs2.: Utilizar o sensor dessa maneira resulta em uma precisão um pouco menor em comparação ao uso da mudança da referência analógica. No entanto, para garantir maior precisão e suavizar variações abruptas no sistema, optamos por estabelecer uma média de 1000 leituras para cada valor exibido no display.
Aplicação
Para fins didáticos e projetos com sensores de temperatura para refrigeração e display de cristal líquido.
Componentes necessários
Referência
|
Componente
|
Quantidade
|
Imagem
|
Observação
|
Protoboard |
Protoboard 830 pontos |
1 |
|
No mínimo utilizar protoboard com 830 pontos
|
Jumpers |
Kit cabos ligação macho / macho |
1 |
|
|
Display LCD |
Display LCD 16X2 com pinos soldados
|
1 |
|
LCD que utilize o controlador HD44780 (veja na descrição ou datasheet do componente)
O display poderá ser de qualquer cor (fundo verde, azul ou vermelho)
|
Potenciômetro |
Potenciômetro 1OK
|
1 |
|
O valor do potenciômetro aumenta quando giramos o eixo do componente na direção do polo negativo para o polo positivo.
Obs.: Se não possuir potenciômetro de 10KΩ você poderá utilizar um de outro valor, de 1kΩ até 100kΩ.
|
Sensor de Temperatura LM35 |
Sensor de Temperatura LM35
|
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.
datasheet
|
Cooler |
Cooler 5V
|
1 |
|
Qualquer tipo de cooler 5V
(Obs.: Não utilizar cooler com tensão superior a 5V - lembramos que o Arduino tem saída máxima de 5v)
|
Arduino UNO R3 |
Arduino UNO |
1 |
|
Você poderá utilizar uma placa Arduino UNO original ou similar
|
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.
Atenção
1. Neste projeto vamos utilizar um display LCD 16x2 com controlador HD44780, que se adapta aos mais diversos projetos com vários modelos de placas e microcontroladores. Este display possui 16 colunas por 2 linhas com backlight (luz de fundo) verde, azul ou vermelha e tem 16 pinos para a conexão. Atenção: Utilize um display LCD com os pinos soldados.
2. Preste muita atenção na montagem do dsiplay LCD. Observe que utilizamos os 6 primeiros pinos do LCD, pulamos os 4 próximos e então utilizamos mais 6pinos. Veja a tabela abaixo:
3. Observe que nesse projeto o potenciômetro foi montado como um divisor de tensão, onde utilizamos os 3 terminais do componente:
Obs.: Ao girar o eixo do potenciômetro, o valor da tensão deverá aumentar do negativo para o positivo, ou seja, se a tensão do circuito for 5V, o potenciômetro irá variar de 0 a 5V.
3. No nosso exemplo, girando-se o eixo do potenciômetro no sentido horário, aumentamos a tensão na entrada do pino 3 do display e diminuímos o contraste dos caracteres com o back light (luz de fundo) até que não é mais possível visualizá-los. Fazendo o contrário, ou seja, diminuindo a tensão até o zero, teremos um contraste máximo entre os caracteres e a luz de fundo.
4. 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.
5. Cuidado para montar o cooler com os polos invertidos. Conecte o fio vermelho (positivo) do cooler no pino digital 13 do Arduino e o fio preto (negativo) no GND (terra). Veja abaixo a imagem do conexão:
5.1. Neste projeto utilizamos um cooler com 2 fios. Caso possua um cooler com 3 ou 4 fios, utilize apenas os fios vermelho e preto, desconsiderando os demais.
6. A montagem do nosso projeto foi realizada em um protoboard com linhas de alimentação não contínuas, onde acrescentamos jampers para a ligação. Verifique se o seu protoboard possui linhas de alimentação contínuas ou separadas.
Ligando o display LCD
Para visualizar o display funcionando, digite o código abaixo no ambiente de desenvolvimento IDE do Arduino. Faça a verificação e o upload:
/*******************************************************************************
*
* Testando o Display LC 16 X 2
* http://squids.com.br/arduino
*
*******************************************************************************/
//Carrega a biblioteca LiquidCrystal
#include <LiquidCrystal.h>
//Define os pinos que serão utilizados para ligação ao display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
//Define LCD 16 colunas por 2 linhas
lcd.begin(16, 2);
//Posiciona o cursor na coluna 0, linha 0;
lcd.setCursor(0,0);
//Envia o texto entre aspas para o LCD
lcd.print("Ola, meu nome e:");
//Posiciona o cursor na coluna 1, linha 1;
lcd.setCursor(1,1);
//Envia o texto entre aspas para o LCD
lcd.print("Squids Arduino");
}
void loop() {
}
ATENÇÃO: Se o display acender e não mostrar os caracteres provavelmente é em função do contraste. Gire o eixo do potenciômetro no sentido anti-horário para aumentar o contraste. Se mesmo assim o display não mostrar os caracteres, corrija a montagem do circuito e/ou o código.
Comandos do display LCD para a biblioteca LiquidCrystal
No projeto vamos utilizar alguns comandos de controle do display LCD através da biblioteca LiquidCrystal que já vem embutida na IDE do Arduino. Para conhecer todos os comandos desta biblioteca, acesse o link: Comandos display LCD para biblioteca LiquidCrystal e LiquidCrystal Library (Arduino Reference).
Obs.: Para acessarmos uma biblioteca embutida na IDE do arduino, assim como, para acessarmos um biblioteca local através de um header file, utilizaremos a diretiva #include.
Código do Projeto (Sketch)
1) Faça o dowload e abra o arquivo projeto45.ino no IDE do Arduino: DOWNLOAD - projeto45.ino
Ou se preferir, copie e cole o código abaixo no IDE do Arduino:
/*******************************************************************************
*
* Projeto 45 - Controle de cooler com sensor de temperatura LM35
* http://squids.com.br/arduino
*
*******************************************************************************/
#include <LiquidCrystal.h> //Carrega a biblioteca LiquidCrystal nativa na IDE
//Define os pinos que serão utilizados para ligação ao display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int pinFan = 13; // declara o pino digital 13 para acionar o cooler
const int pinSensor = 0; // declara o pino analígico A0 para ler o sensor
float temperature; // declara a variável temperature
void setup() {
lcd.begin(16, 2); // Define o display com 16 colunas e 2 linhas
lcd.clear(); // limpa a tela do display
pinMode(pinFan, OUTPUT);
pinMode(pinSensor, INPUT);
}
void loop() {
/*Para evitar as grandes variações de leitura do componente
LM35 são feitas 1000 leituras onde calculamos a média*/
for (int i=0;i<1000;i++) {
temperature = temperature + float(analogRead(pinSensor))*500/(1023);
}
temperature = temperature/1000; // calcula a média das leituras
if(temperature > 30) {// Indica condição para acionamento do cooler
// Define a coluna 0 e linha 1 do LCD onde será impresso a string
lcd.setCursor(0,1);
lcd.write("Fan ligado !"); // Imprime no LCD
digitalWrite(pinFan, HIGH); // Liga o cooler
} else {
lcd.setCursor(0,1);
lcd.write("Fan desligado !"); // Imprime no LCD
digitalWrite(pinFan, LOW); // Desliga o cooler
}
delay(1000); // aguarda 1 segundo
// Exibindo valor da leitura do sensor de temperatura no display LCD
lcd.clear(); // Limpa o display do LCD
lcd.print("Temp.: "); // Imprime a string no display do LCD
lcd.print(temperature);
lcd.write(B11011111); // Símbolo de graus Celsius
lcd.print("C");
}
Obs.: Você poderá utilizar qualquer valor de temperatura como valor de controle. No nosso exemplo utilizamos 30ºC como valor de controle. Veja a linha de código if(temperature > 30).
Vídeo
Como o projeto deve funcionar
1. Ao executar o programa, a temperatura ambiente em Celsius é exibida na primeira linha do display de LCD.
2. Se a temperatura ambiente estiver abaixo do valor de controle, que é de 30ºC no nosso projeto, o cooler não será acionado e aparecerá a frase "Fan desligado !" na linha inferior do display.
3. Caso a temperatura ambiente passe o valor de controle, o cooler é acionado e aparecerá a frase "Fan ligado !" no display.
4. Você pode simular esse aumento de temperatura colocando o dedo no sensor LM35.
Desafios
Com base neste projeto, resolva o seguinte desafio: Desafio 28
O anúncio abaixo ajuda a manter o Squids Arduino funcionando
Comentários