Você está na página 1de 6

UNIVERSIDADE FEDERAL DO PARÁ - UFPA

CAMPUS UNIVERSITÁRIO DE CASTANHAL


ENGENHARIA DE COMPUTAÇÃO – 2016.4

Elizeu Oeiras Dias


Eylon Martins Tóda
Felipe Feitosa Souza de Jesus
Matheus Almeida Pereira

PROJETO – ARDUINO: MINI-REFRIGERADOR AUTOMATIZADO


Relatório técnico apresentado como requisito parcial para avaliação na disciplina Projetos de
Engenharia I, no curso de Engenharia de Computação.
Professor Dr. Marcelino Silva

Castanhal, 31 de março de 2017


1. Introdução
O presente relatório é elaborado no âmbito da disciplina Projetos de Engenharia I, com
propósito avaliativo, referente à conclusão do projeto requerido. O problema abordado neste
projeto é a necessidade de implementação de dispositivos automatizados, a fim de diminuir o
custo e otimizar o aproveitamento. A plataforma eletrônica Arduino é uma peça essencial para
simular um controlador.
O ar-condicionado é um dispositivo que necessita extremamente da automação em seu
funcionamento, portanto, utiliza-se um mini refrigerador, para simular o dispositivo citado, com
o intuito de automatizar o controle de temperatura, otimizando o equipamento e melhorando o
aproveitamento do ar-condicionado.
2. Objetivo
Em vários campos da tecnologia, a automatização evolui conforme a sua necessidade.
No âmbito industrial, essa evolução é cada vez mais perceptível, já que as grandes indústrias
buscam melhorar o custo-benefício na produção de suas mercadorias. No âmbito doméstico, as
pessoas buscam por produtos melhores e mais tecnológicos, por exemplo, televisores com
sensores de movimento, panelas elétricas, micro-ondas, etc.
Dentre os produtos de uso pessoal, alguns dispositivos precisam, essencialmente, ter a
sua funcionalidade automática para uma performance aceitável. Em função disto, o objetivo do
projeto gira em torno de solucionar esse problema. O produto a ser usado como exemplo é um
refrigerador, em que é simulado um sistema de controle de temperatura, afim de economizar o
custo de funcionamento desse equipamento.
O Arduino tem como função principal ser o controlador do sistema.
3. Materiais Necessários

Os materiais necessários para construção do projeto são:

 02 Botões;
 01 Caixa de isopor de 3 Litros;
 01 Cooler FAN de 12V;
 01 Display LCD 16x2;
 29 Fios jumpers;
 01 Fios de cobre (6m);
 01 Fontes de alimentação de 9V;
 01 Fonte de alimentação de 12V;
 02 LED’s, um vermelho e um verde;
 01 Placa Arduino UNO R3;
 01 Potenciômetro de 10KΩ;
 01 Protoboard;
 01 Relé de 5V;
 02 Resistores de 300Ω;
 03 Resistores de 10KΩ;
 01 Sensor de Temperatura NTC;
OBS: A alimentação externa do Arduino é opcional (pode ser alimentado por um cabo
USB) e a montagem da caixa de isopor é irrelevante em relação ao objetivo do projeto.
4. Circuito do Projeto
Usa-se a Protoboard como base para facilitar a conexão entre as peças, os seguintes
passos descrevem o modo em que o circuito deve ser montado:
 Pino 01 do LCD ligado ao GND do Arduino;
 Pino 02 do LCD ligado ao 5V do Arduino;
 Pino 03 do LCD ligado ao pino central do Potenciômetro (controle de contraste);
 Pino 04 do LCD ligado ao pino digital 5 do Arduino;
 Pino 05 do LCD ligado ao GND do Arduino;
 Pino 06 do LCD ligado ao pino digital 4 do Arduino;
 Pino 11 do LCD ligado ao pino digital 3 do Arduino;
 Pino 12 do LCD ligado ao pino digital 2 do Arduino;
 Pino 13 do LCD ligado ao pino digital 1 do Arduino;
 Pino 14 do LCD ligado ao pino digital 0 do Arduino;
 Pino 16 do LCD ligado ao GND do Arduino;
 Sensor NTC ligado ao pino analógico 0 do Arduino;
 LED (Vermelho) ligado ao pino digital 12 do Arduino;
 LED (Verde) ligado ao pino digital 11 do Arduino;
 Botão (Diminuir) ligado ao pino digital 7 do Arduino;
 Botão (Aumentar) ligado ao pino digital 6 do Arduino;
 Relé de 5V ligado ao pino digital 13 do Arduino;
 GND do cooler 12V ligado ao GND da fonte 12V;
 Vcc do cooler 12V ligado à saída do relé 5V;
 Entrada do relé 5V ligada ao Vcc da fonte 12V;
 Arduino é alimentado pela fonte de 9V.

O esquema da figura simula o layout do circuito.


5. Código Fonte
Além das bibliotecas padrões, são usadas duas bibliotecas em especial, a
“LiquidCrystal”, que permite controlar telas LCD compatíveis, e a “Limits”, que limita os
valores de vários tipos variáveis. Os comandos do código são simples, após a declaração de
variáveis, é declarado os pinos de entrada da tela LCD.
Na função “void setup”, são declaradas três saídas: as variáves “motor”, “ledverde” e
“ledvermelho”, e duas entradas: as variáveis “botaomais” e “botaomenos”. Além de configurar
o LCD.
Na função “void loop”, as partes principais são:
 Conversão e seleção dos valores do sensor.

for(int i=1; i<=3; i++){


valorsensortemp = analogRead(sensortemp);
valorsensortemp = valorsensortemp * 0.0509;
if(valorsensortemp < valortemp){
valortemp = valorsensortemp;
}
}
Nesse laço FOR, é convertido os valores de entrada do sensor em graus célsius
aproximados e logo em seguida, usando um IF, é comparado os três valores lidos no laço FOR
e imprimido o menor deles.
 Leitura dos botões.

if(estadobotaomais == HIGH){
valor = valor + 1;
}
if(estadobotaomenos == HIGH){
valor = valor - 1;
}
delay(300);
Nesse trecho do código, são usados dois IF’s para aumentar e diminuir o valor de
temperatura desejado, com um tempo de leitura de 300 milissegundos.

 Ativando o cooler.

if(valortemp >= valor){ else{


lcd.setCursor(0,1); lcd.setCursor(0,1);
lcd.write("Cooler ativo!"); lcd.write("Cooler inativo!");
digitalWrite(motor, HIGH); digitalWrite(motor, LOW);
digitalWrite(ledverde, HIGH); digitalWrite(ledverde, LOW);
digitalWrite(ledvermelho,LOW); digitalWrite(ledvermelho,HIGH);
} }
Nesse trecho do código, é usado uma estrutura de decisão completa (IF – ELSE) que
determina as condições de acionamento do cooler, além de acender os LED’s correspondentes.
Apêndice
#include <LiquidCrystal.h>
#include <Limits.h>

int sensortemp = 0;
int motor = 13;
int tempPin = 0;
int valorsensortemp = 0;
int valortemp = INT_MAX;
int botaomais = 6;
int botaomenos = 7;
int estadobotaomais = 0;
int estadobotaomenos = 0;
int valor = 29;
int ledverde = 11;
int ledvermelho = 12;

LiquidCrystal lcd(5, 4, 3, 2, 1, 0);

void setup(){
pinMode(motor, OUTPUT);
pinMode(ledverde, OUTPUT);
pinMode(ledvermelho, OUTPUT);
pinMode(botaomais, INPUT);
pinMode(botaomenos, INPUT);
lcd.begin(16, 2);
}
void loop(){
valortemp = INT_MAX;
for(int i=1; i<=3; i++){
valorsensortemp = analogRead(sensortemp);
valorsensortemp = valorsensortemp * 0.0509;
if(valorsensortemp < valortemp){
valortemp = valorsensortemp;
}
}
estadobotaomais = digitalRead(botaomais);
estadobotaomenos = digitalRead(botaomenos);
if(estadobotaomais == HIGH){
valor = valor + 1;
}
if(estadobotaomenos == HIGH){
valor = valor - 1;
}
delay(300);
if(valortemp >= valor){
lcd.setCursor(0,1);
lcd.write("Cooler ativo!");
digitalWrite(motor, HIGH);
digitalWrite(ledverde, HIGH);
digitalWrite(ledvermelho,LOW);
}
else{
lcd.setCursor(0,1);
lcd.write("Cooler inativo!");
digitalWrite(motor, LOW);
digitalWrite(ledverde, LOW);
digitalWrite(ledvermelho,HIGH);
}
lcd.clear();
lcd.print("Val:");
lcd.print(valor);
lcd.print(" Temp:");
lcd.print(valortemp);
lcd.write(B11011111);
lcd.print("C");
}

Você também pode gostar