Você está na página 1de 17

Universidade Regional Integrada do Alto Uruguai e das Missões

Curso de Engenharia Elétrica

Análise de Sinais II

RELATÓRIO TRABALHO PRÁTICO

Artur Spohr Ferst


Gustavo Kruger
Daniel Debatista
Guilherme Naujorks

Prof. Diego Morais

Santo Ângelo
2020

1
1. Introdução

O relatório a seguir tem como objetivo sintetizar teoricamente o projeto


realizado como parte parcial da nota 3 da disciplina de Análise de Sinais II.
O projeto citado consiste em um controlador com múltiplas entradas e
saídas para o controle de nível e temperatura de um certo volume d’água. Este
projeto serve como base para ser desenvolvido e utilizado em qualquer escala,
pois fornece mecanismos de medição e segurança que proporcionam uma
base sólida e confiável das variáveis nele inseridas. No modelo desenvolvido
como protótipo para este trabalho utilizamos uma escala pequena para reduzir
os custos totais.
As variáveis “temperatura” e “distância” foram definidas como as
entradas “brutas” para o sistema.
As variáveis “temperatura” e “volume” foram definidas como as variáveis
de saída. A variável “distância” serve apenas de parâmetro para indicar o nível
d’água presente no recipiente, e é convertida para uma unidade de volume em
tempo real durante a execução do código C, a ser demonstrado no tópico 3.3.2
do presente relatório.

2
2. Materiais e Componentes

Para uma efetiva redução nos custos do projeto o grupo utilizou uma
escala pequena para o desenvolvimento do protótipo, gerando reações
entrada/saída rápidas e confiáveis.
Lista de componentes utilizados e suas quantidades:
 Arduino Uno (1)
 Protoboard 830 pontos (1)
 Relé 5v 10 (2)
 Display LCD 16x2 Fundo Azul (1)
 Sensor de Temperatura NTC 10k (1)
 Sensor Ultrassônico de Distância HC-SR04 (1)
 Potenciômetro 10k (1)
 Mini botão para Protoboards (1)
 Resistor 10kΩ (2)
 Diversos Cabos e Jumpers para ligação dos componentes
 Fonte 12V
 Bomba D’água 12v
 Rabo Quente 220v

3. Desenvolvimento

Este protótipo consiste em diversos componentes para seu devido e


completo funcionamento. A programação utilizada foi desenvolvida na
linguagem C no IDE do Arduino, que pode ser encontrada em seu site oficial. O
código consiste de 375 linhas, incluindo comentários e divisórias comentadas
para uma melhor compreensão e desenvolvimento.
Duas bibliotecas foram utilizadas para a devida utilização dos
componentes, conforme a figura 1:
 Thermistor.h: Utilizada para a conversão de valores do sensor de
temperatura NTC 10k para graus celsius

 LiquidCrystal.h: Biblioteca nativa do Arduino, utilizada para


controlar o LCD
Figura 1 - Bibliotecas utilizadas

3
3.1 Diagrama de Blocos do Sistema

Na Figura 2 abaixo está representado o diagrama de blocos do sistema


do presente projeto.

Figura 2 - Diagrama de Blocos


3.2 Lógica de Funcionamento Entrada/Saída

Este sistema representado na Figura 2 acima representa o


funcionamento geral do sistema conforme suas entradas variam com o tempo.
A forma escolhida na montagem do circuito consiste na constante verificação
das saídas conforme as entradas escolhidas (malha fechada).

3.3 Funcionamento do Protótipo

Conforme brevemente comentado na introdução do presente relatório


(tópico 1), este projeto utilizará 2 entradas e 2 saídas para realizar o preciso e
confiável monitoramento de duas variáveis em um recipiente de água: a
temperatura e o nível d’água. Utilizando os sensores NTC 10k e HC-SR04,

4
será medido a quantidade de água presente no aquário e sua temperatura,
ambos em tempo real. A seguinte descrição de funcionamento não incluirá os
mecanismos de proteção e segurança adicionados no software programado ao
Arduino, os quais serão discutidos no tópico 3.4 desse relatório.

 Sensor de
Temperatura
NTC 10k:

Figura 3 - NTC 10k

Figura 3 - NTC 10k

 Sensor Ultrassônico HC-SR04:

Figura 4 - HC-SR04

5
Os sensores foram ligados às portas analógicas A1, A4 e A5 do Arduino,
respectivamente.

3.3.1 Temperatura D’água:

A temperatura de saída do recipiente é ajustada com um potenciômetro


conectado ao pino analógico A0, a qual varia entre 20 e 70ºC (definido por
código pela função “map”). Se a temperatura selecionada for maior que a
temperatura atual da água, o relé de acionamento do rabo quente se ativa,
ativando este dispositivo. A temperatura da água é monitorada pelo sensor, e,
ao atingir a temperatura selecionada com o
potenciômetro (termostato), o sistema
desliga o relé, e consequentemente o
rabo quente.
 Rabo Quente 220v:

 Figura 5 – Rabo Quente Potenciômetro 10k:

Figura 6 - Potenciômetro
6
A programação realizada no Arduino está representada na imagem:

As variáveis representadas acima são:


 temperatura: Mostra a temperatura d’água medida pelo sensor
NTC 10k inserido
Figura 7 –no recipiente.
Código no Arduino (Temperatura)
 poten: Indica a temperatura a ser atingida escolhida pelo usuário
no potenciômetro (chamado de termostato).
 lock_distancia_safe: Bloqueia a ativação do rabo quente para
aquecimento d’água caso o volume do recipiente seja igual
inferior a 0,67 L.
A forma de ligação do relé ocasionou a inversão dos estados lógicos, os
quais foram corrigidos por código, devidamente comentados na Figura 7 acima.
A variável “poten” varia conforme a função map (explicado seu
funcionamento no tópico 3.3.2)

Figura 8 – Função “map” para “poten”

7
3.3.2 Nível D’água:

O nível d’água é calculado pela fórmula B∗b∗h, onde “B” e “b” são as
bases do recipiente, e “h” é a altura da água medida em centímetros pelo
sensor.

Figuras 9 e 10 - Recipiente D'água

O recipiente utilizado está representado na imagem a seguir:


 Recipiente D’água utilizado:

Os lados da base do recipiente não são regulares, modificando a fórmula


utilizada para cálculo do volume:
b∗b
( ( ))
( B∗B )−
2
∗h

Utilizando as medidas do recipiente e substituindo na fórmula acima


temos: ¿

Resolvendo e convertendo de c m3 para d m 3 ou L, concluímos que a


fórmula para calcular o volume d’água a ser inserida no código é:

111,125 h∗0,001=0,111125 h, sendo “h” a altura do nível d’água em cm.

Este cálculo é realizado pelo Arduino de acordo com o valor percebido


pelo sensor ultrassônico. Como o sensor fica situado acima da água, conforme

8
o seu nível aumenta a distância entre o sensor e a linha d’água diminui,
criando a necessidade de utilizar uma função no código, chamada “map”.

Essa função registra um alcance de valores e converte-os para outro


alcance, conforme inserido na Figura 11 abaixo:
Figura 11 - Função “map”

Conforme a Figura acima, o sensor recebe valores de 11 (distância do


solo do aquário) a 2 (distância quando aquário cheio), e os converte para o
intervalo 0 a 9 para o devido cálculo do volume do recipiente.
O sensor ultrassônico utilizado possui a limitação de perceber mudanças
de distância na ordem de centímetros inteiros, por isso o cálculo realizado
dentro do código no Arduino limita o volume
calculado em intervalos de 0,11 L.

A Bomba D’água é acionada até o volume do


recipiente ser de 1 L.

9
Figura 12 - Bomba D'água

Algumas das variáveis representadas são (ignorando os mecanismos de


segurança):
 distancia: Mostra a distância real medida pelo sensor
ultrassônico.
 pinBomba: Indica em qual pino do Arduino a bomba d’água está
conectada.

Figura 13 – Código no Arduino (Bomba d’água)

3.4 Mecanismos Antifalha e de Segurança

Este projeto foi desenvolvido com diversos mecanismos extras de


proteção para evitar alguns acidentes comuns, os quais estão listados a seguir:
 Mecanismos para proteger uma possível rápida
ativação/desativação da bomba d’água.
 Bloqueio da ativação do rabo quente quando o volume d’água
está abaixo de 0,67 L.

 Aviso de vazamento quando a bomba d’água permanece ligada


por mais de 10 s.
 Botão para bloqueio da temperatura definida no termostato.

10
Considerando o sistema do presente projeto como sendo de malha
fechada, as entradas do sistema passam pelo código inserido no Arduino para
então receberem a saída mais adequada possível, inclusive passando pelos
mecanismos acima citados.
Um dos mecanismos de segurança adicionados impedem a bomba
d’água de ativar/desativar rapidamente caso a água fique turbulenta ou haja
uma variação brusca de volume percebida pelo sensor ultrassônico. O código
responsável por este bloco está representado abaixo, na Figura 14:

As variáveis apresentadas representam:


 contBomba_baixo: Impede a bomba d’água de ligar
imediatamente após o sistema perceber um nível d’água abaixo
de 0,78 L. Opera junto com o delay geral estabelecido no sistema
(300 ms), ativando a bomba após o sistema perceber uma
estabilidade na medição da distância de pelo menos 1,8 s.
 contBomba: Impede a bomba d’água de desligar imediatamente
após o sistema perceber um nível d’água acima de 1 L. Opera
junto com o delay geral do sistema (300 ms) e espera 1,5 s para
desligar o relé da bomba d’água.
 vazamento_safe: Variável responsável por verificar um possível
vazamento no container d’água. O sistema verifica se a bomba
d’água está ligada por mais de 10 s e mostra a mensagem “V!” no
visor utilizado para feedback. Após desligar a bomba o sistema
reinicia a variável em 0 e retira o indicador de vazamento do LCD.

Figura 14 – Código no Arduino (Sistema da Bomba d’água) 11


Figura 15 – Display LCD do Circuito com o aviso de vazamento ativo

O terceiro mecanismo de proteção adicionado impede o relé do rabo


quente de ser ativado caso o volume esteja abaixo de 0,67 L. O sistema mostra
o indicador
no LCD que o
relé não irá ser
ativado

enquanto nível d’água não for normalizado. Abaixo a representação do


indicador no painel e o código responsável pelo bloqueio do relé:

Figura 17 - Código no Arduino (Variável lock_distancia_safe)

Figura 16 – Código no Arduino (Variável lock_distancia_safe) 12


Figura 18 - Display LCD do Circuito com o aviso de bloqueio do relé do rabo quente ativo

13
O quarto mecanismo de segurança citado consiste em um botão inserido
na protoboard do circuito, conectado à porta 12 do Arduino. Junto com o código
para a correta leitura do pressionamento do botão, o mesmo ativa o
mecanismo de bloqueio da temperatura definida pelo termostato
Figura 19 - Display LCD do Circuito com o aviso de bloqueio do termostato ativo

(potenciômetro), evitando possíveis alterações indesejadas na temperatura.

3.5 Funcionamento Geral do Display LCD e Legendas Visuais

Figura 21 – Código no Arduino (BotaoRaboLock)

14
Figura 20 - Display LCD do Circuito com o aviso de bloqueio do termostato inativo
O display pode apresentar alguns símbolos indicativos de feedback
durante seu funcionamento, e presume que o usuário saiba o que significam.
Para isso, durante a inicialização do sistema o usuário pode optar por receber
um “manual” de operação com as legendas de todos os possíveis símbolos.
Caso o usuário já esteja familiarizado com seu funcionamento, o botão inserido
na protoboard pode ser pressionado para pular esta etapa e inicializar o
sistema.
As Figuras abaixo demonstram a inicialização do Display LCD:

4. Conclusão

Concluímos neste relatório que,


Figuras 22-28 – Legendas de Inicialização do
para Display LCD
fazer
um
bom

sistema a prova de falhas, é necessário


incluir diversos mecanismos que impedem

15
diversos tipos de erros ou falhas de ocorrem durante a execução. Optamos por
realizar tal controle de segurança via software (por meio da programação
inserida no Arduino), por apresentar um nível de falhas baixo.
O projeto foi concluído em 2 semanas, incluindo o tempo de
planejamento e compra dos materiais para o protótipo. A parte mais complexa
superada durante o desenvolvimento foi a interação entre todo o hardware e
software escolhido. Para ajustar os valores dos sensores de distância e
temperatura na programação foi necessário o uso de variáveis extra, que
somente são utilizadas no “back-end”, não sendo exibidas para o usuário final.
Estas variáveis foram utilizadas também para o debugging na fase de
testes do código, durante o acoplamento inicial dos sensores e para a inclusão
de todos os mecanismos de segurança, e apenas eram exibidas na saída do
“monitor serial” do Arduino, como exemplificado na figura abaixo:

Figura 29 – Output do “Serial Monitor” do Arduino

5. Referências

Universidade Federal de Santa Catarina. Fundamentos de Controle


Clássico: Parte I, Controle Contínuo. Disponível em:
<https://www.studocu.com/pt-br/document/universidade-federal-de-ouro-

16
preto/entenharia-de-controle-e-automacao/outro/cap1-teoria-de-controle-
1/5681817/view>

17

Você também pode gostar