Você está na página 1de 93

CENTRO UNIVERSITRIO DE BRASLIA

FACULDADE DE TECNOLOGIA E CINCIAS SOCIAIS APLICADAS


CURSO DE ENGENHARIA DA COMPUTAO

FILLIPE RIBEIRO GALIZA

AUTOMAO DE ROTINAS DE ALIMENTAO E ILUMINAO DE AQURIOS


DOMSTICOS

Orientadora: Prof. M.C. Maria Marony Sousa Farias

BRASLIA

2 SEMESTRE DE 2012
FILLIPE RIBEIRO GALIZA

AUTOMAO DE ROTINAS DE ALIMENTAO E ILUMINAO DE AQURIOS


DOMSTICOS

Trabalho apresentada ao UniCEUB Centro


Universitrio de Braslia como pr-requisito pa-
ra obteno de Certificao de Concluso do
Curso de Engenharia de Computao.
Orientadora: Prof. M.C. Maria Marony Sousa
Farias Nascimento.

BRASLIA
2 SEMESTRE DE 2012
FILLIPE RIBEIRO GALIZA

AUTOMAO DE ROTINAS DE ALIMENTAO E ILUMINAO DE AQURIOS


DOMSTICOS

Trabalho apresentada ao UniCEUB Centro


Universitrio de Braslia como pr-requisito pa-
ra obteno de Certificao de Concluso do
Curso de Engenharia de Computao.
Orientadora: Prof. M.C. Maria Marony Sousa
Farias Nascimento.

Este Trabalho foi julgado adequado para a obteno do Ttulo de Engenheiro


de Computao, e aprovado em sua forma final pela Faculdade de Tecnologia
e Cincias Sociais Aplicadas - FATECS.

____________________________

Prof. Abiezer Amarlia Fernandez


Coordenador do Curso

Banca Examinadora:

____________________________________ ____________________________________

a
Prof . Maria Marony Sousa Farias, mestre Prof. Julim Bezerra Junior, Mestre em
em Engenharia Eltrica UFPB PB.
Engenharia Eltrica Instituto Militar de
Orientadora
Engenharia Rio de Janeiro -RJ

___________________________________
___________________________________
Prof. Irene de Azevedo Lima Joffily, Mestre
Prof. Flvio Antonio Klein, Mestre em Esta-
em Estruturas e Construo Civil - UNB
tstica - UNB
IV

Dedico este trabalho a todos que me


deram foras e suportaram comigo por
todos esses anos a loucura que se tor-
nar um engenheiro.
V

AGRADECIMENTOS

A minha famlia, por toda dedicao que tiveram em me educar e fazer


com que me tornasse a pessoa que sou hoje, me dando apoio por todos os momen-
tos da minha vida. Agradecimento em especial ao meu pai, Milton da Costa Galiza
Filho, por me ajudar diretamente na montagem do prottipo e por todo o apoio.

A minha namorada Gabrielle Velloso Portes, que por vrias vezes me


ajudou e me acompanhou noites adentro fazendo trabalhos, ouvindo reclamaes,
lamentos, suportou estresses e frustraes, mas que sempre esteve l para me co-
locar de volta no caminho certo, me dando todo o apoio que eu precisei para que
hoje pudesse chegar ao final deste caminho.

Aos amigos que dividiram o calor da batalha de todos os dias durante os


longos cinco anos, enfrentando trabalhos, provas dificlimas, e que sem o apoio de
todos como um grupo, nunca teramos conseguido conquistar mais este desafio. E
em especial aos amigos permitiram que este projeto fosse possvel: Paulo Henrique,
Jefferson Santos, Matheus Santana, Jos Carlos Cruz, Manuella Tereza, Vinicius
Monteiro Bezerra dentre outros.

Aos professores que me passaram ensinamentos diversos no s sobre


como a engenharia funciona e suas aplicabilidades, mas tambm preparaes para
a vida que teremos que seguir a partir de agora. Agradeo em especial professora
Maria Marony e o professor Francisco Javier por terem me orientado neste projeto
final.

E a todos que participaram direta e indiretamente para que eu conseguis-


se concluir meu projeto.
VI

For long youll live and high youll fly


And smiles youll give and tears youll cry
And all you touch and all you see
Is all your life will ever be.
PinkFloyd
7

RESUMO

Este trabalho apresenta um dispositivo de controle de alimentao e ilu-


minao de aqurios domsticos baseando-se nos intervalos necessrios entre cada
operao. O projeto integra um motor de passo, microcontrolador PIC16F877A, rel
para acionar a iluminao, e um grupo de botes utilizados para a programao e
personalizao do sistema pelo usurio. Controlado atravs de linguagem de pro-
gramao C, o dispositivo permite a configurao dos intervalos entre as rotinas de
alimentao e iluminao utilizando-se do timer nativo do microcontrolador para rea-
lizar a contagem entre as operaes e uma mquina de estados criada para a
mudana entre os modos de configurao. A alimentao ser feita a partir de um
compartimento contendo o alimento sendo girado pelo motor de passo, e a ilumina-
o acionada por meio de um rel, ambos ocorrendo ao estouro do timer. O
prottipo composto por uma lmpada para a iluminao, uma caixa contendo a
placa e um compartimento de alimentao que ser ligado a um pequeno aqurio
para simular uma situao real.

Palavras chave: Aqurio, microcontrolador, automao, motor de passo,


timer, alimentao e iluminao.
8

ABSTRACT

This paper presents a power control device and lighting for home aquariums
based on the required intervals between each operation. The project integrates a
stepper motor, a PIC16F877A microcontroller, a relay to trigger lighting, and a group
of buttons used for programming and user customization of the system. Controlled by
programming language C, the device allows the configuration of the intervals be-
tween the feeding routines and illumination using native timer the microcontroller to
perform the count between operations and a state machine designed for switching
between configuration modes. The feeding is done from a compartment containing
the food being rotated by the stepper motor and lighting systems activated by a relay,
both occurring at the overflow of the timer. The prototype consists of a lamp for illu-
mination, a box containing the card slot and a supply that is connected to a small
tank to simulate a real situation.

Keywords: Aquarium, microcontroller, automation, stepper motor, timer, feed-


ing and lighting.
9

SUMRIO

AGRADECIMENTOS ................................................................................................. V

RESUMO .................................................................................................................... 7

ABSTRACT ................................................................................................................ 8

LISTA DE ABREVIATURAS E SIGLAS ................................................................... 15

CAPTULO 1 - INTRODUO ................................................................................. 16

1.1 Introduo ao Tema Proposto....................................................... 16

1.2 Motivao ........................................................................................ 16

1.3 Objetivos ......................................................................................... 17

1.4 Estrutura da Monografia ................................................................ 17

CAPTULO 2 APRESENTAO DO PROBLEMA ............................................... 19

2.1 Aquarismo e suas Dificuldades .................................................... 19

2.1.1 Alimentao ................................................................................... 20

2.1.2 Iluminao .................................................................................... 21

2.2 Comodidade da Automao .......................................................... 21

2.3 Solues Existentes ...................................................................... 23

2.4 Benefcios do Dispositivo Proposto e Suas Restries ............. 24

CAPTULO 3 REFERENCIAL TERICO .............................................................. 25

3.1 Aquarismo....................................................................................... 25

3.2 Automao ...................................................................................... 28


10

3.2.1 Automao Residencial ............................................................... 29


3.3 Microcontroladores ........................................................................ 30

3.3.1 PIC .................................................................................................. 32


3.4 Motor Eltrico ................................................................................. 33
3.4.1 Motor de Passo ........................................................................... 34
3.5 Linguagem de Programao .......................................................... 35
3.5.1 Linguagem C ............................................................................... 35
3.6 Mquina de Estados Finitos .......................................................... 36

CAPTULO 4 DESCRIO DO HARDWARE E SOFTWARE .............................. 39

4.1 Microcontrolador PIC 16F877A ..................................................... 39


4.1.1 Especificaes............................................................................. 39
4.1.2 Pinagem do PIC 16F877A ........................................................... 40
4.2 PIC C Compiler .............................................................................. 43
4.3 Kit de Gravao PICkit 2................................................................ 43
4.3.1 Utilizao do Kit de Gravao PICkit 2 ........................................ 43

4.4 Mdulo LCD .................................................................................... 44

4.5 Motor de Passo............................................................................... 45

4.5.1 Funcionamento ............................................................................. 45

4.6 Rel .................................................................................................. 45

4.5.1 Funcionamento ............................................................................. 46

CAPTULO 5 IMPLEMENTAO ......................................................................... 47

5.1 Modelagem do Sistema ................................................................. 47


5.1.1 Fluxograma Geral do Sistema .................................................. 48

5.2 Elaborao dos Circuitos .............................................................. 49


5.2.1 Proteus ISIS 7 Professional ......................................................... 49

5.3 Elaborao do Cdigo Fonte para o Microcontrolador PIC........ 51


11

5.3.1 Escrita do Cdigo Fonte .............................................................. 52


5.3.2 Compilao e Gravao do Cdigo Fonte ................................... 56

5.4 Montagem dos Circuitos nas Placas ............................................ 57

5.4.1 Proteus ARES ................................................................................ 57

5.4.3 Criao da Placa ........................................................................... 58

5.5 Montagem do Prottipo ................................................................. 60

5.5.1 Dispositivo de Alimentao ......................................................... 60

6.1 Simulaes ..................................................................................... 62


6.1.1 Configurao da Alimentao e Iluminao ........................... 62
6.1.2 Teste do Dispositivo de Alimentao ...................................... 67
6.1.3 Teste da Iluminao .................................................................. 68

6.2 Problemas Encontrados ............................................................... 69

CAPTULO 7 CONSIDERAES FINAIS ............................................................. 70

7.1 Concluses ..................................................................................... 70

7.2 Propostas para Trabalhos Futuros ............................................... 70

REFERNCIAS BIBLIOGRFICAS ......................................................................... 72

APNDICE A - CDIGO FONTE DO DISPOSITIVO ............................................... 75


12

LISTA DE FIGURAS
Figura 2.1 Automao Residencial Exemplos ................................................... 23
Figura 3.1 Aqurio Domstico Sculo XVIII ....................................................... 26
Figura 3.2 Equipamentos de um Aqurio ........................................................... 28
Figura 3.3 Casa Automatizada ............................................................................ 30
Figura 3.4 Microcontrolador Utilizado no Projeto ............................................. 31
Figura 3.5 Esquemtico de um Microcontrolador ............................................. 32
Figura 3.6 Motor Eltrico ..................................................................................... 33
Figura 3.7 Motor de Passo ................................................................................... 34
Figura 4.1 Pinagem do PIC 16F877A .................................................................. 40
Figura 4.2 Pinagem Utilizada no Projeto ............................................................ 42
Figura 4.3 LCD Utilizado no Projeto ................................................................... 44
Figura 5.1 Fluxograma do Sistema ..................................................................... 48
Figura 5.2 Biblioteca de Componentes ISIS....................................................... 49
Figura 5.3 Esquemtico do Circuito ISIS............................................................ 50
Figura 5.4 Gravao do PIC ISIS ......................................................................... 51
Figura 5.5 Diretivas Pr-Compilao .................................................................. 52
Figura 5.6 Habilitando as Interrupes .............................................................. 53
Figura 5.7 Funo do Clock................................................................................. 55
Figura 5.8 Tela de Compilao ISIS .................................................................... 56
Figura 5.9 Esquemtico ARES ............................................................................ 58
Figura 5.10 Impresso ARES e Placa Impressa .............................................. 57
Figura 5.11 Placa Mergulhada no Percloreto ..................................................... 59
Figura 5.12 Placa Pronta e Soldada ................................................................... 59
Figura 5.13 Aqurio, Iluminao e Circuito ........................................................ 60
Figura 5.14 Dispositivo de Alimentao ............................................................. 61
Figura 6.1 Tela Aguardando Configurao ........................................................ 63
Figura 6.2 Tela Configurao do Intervalo Alimentao ................................... 63
Figura 6.3 Confirmao do Intervalo Alimentao ............................................ 64
13

Figura 6.4 Tela Alimentao Imediata................................................................. 64


Figura 6.5 Tela Configurao do Intervalo Iluminao ..................................... 65
Figura 6.6 Confirmao do Intervalo Iluminao ............................................... 65
Figura 6.7 Tela Iluminar Imediatamente ............................................................. 66
Figura 6.8 Tela de Contagem Regressiva........................................................... 66
Figura 6.9 Teste Realizado com a Rao ........................................................... 68
14

LISTA DE QUADROS
Quadro 3.1 Trabalho Humano x Trabalho Maquinrio ...................................... 29
Quadro 4.1 Pinos PIC16F877A ............................................................................ 41
Quadro 4.2 Pinos do LCD .................................................................................... 42
Quadro 5.1 Diretivas do Cdigo Fonte ............................................................... 52
Quadro 5.2 Mquina de Estados do Projeto ...................................................... 54
15

LISTA DE ABREVIATURAS E SIGLAS

A/D Analgico / Digital


CPU Central Processing Unit
EEPROM Erasable Electronically Programmable Read Only Memory
I/O Input/Output
ICSP In Circuit Serial Programming
LCD Liquid Cristal Display
LED Light-Emitting Diode
PH Potencial Hidrogeninico
PIC Programmable Interface Controller
RAM Random Access Memory
ROM Read-Only Memory
SPI Serial Peripheral Interface
USART Universal Synchronous Asynchronous Receiver Transmitter
16

CAPTULO 1 - INTRODUO

1.1 Introduo ao Tema Proposto

Programar tarefas dirias rotineiras de uma forma automtica o novo


conceito que est em ascenso no mercado de tecnologia mundial. A automao
residencial um ramo com grandes quantias de investimento, despertando a curio-
sidade de muitos e oferecendo solues para os mais diversos tipos de questes.

Grande parte do espao conquistado pela automao provm da facilida-


de fornecida. Tarefas rotineiras e cansativas se tornam simples operaes e
instrues quando controlados por mquinas e aparatos especficos, possibilitando
para o seu usurio maior conforto e comodidade. Segurana domstica, controle de
iluminao, janelas automatizadas, e inclusive cuidados com seus animais de esti-
mao, tema abordado neste trabalho, so algumas opes de servios que podem
ser automatizados.

As possibilidades da automao so inmeras, logo, o crescimento desse


tipo de tecnologia e o interesse para com o mesmo so inevitveis. Assim, cada vez
mais processos e servios sero automatizados, desde empregados domsticos ro-
botizados at maior conforto ao gerenciar aplicativos eletrnicos e aparelhos dentro
de casa.

1.2 Motivao

Animais dos mais sensveis para serem criados, peixes so altamente


dependentes do habitat que criamos para eles. Mudanas na ambientao, no PH
da gua, nvel de bactrias, oxigenao do aqurio, iluminao, quantidade de ali-
mento, so fatores que alteram a adaptao do peixe e devem ser constantemente
verificados por seus donos. Ateno e cuidado so essenciais, pois descuidos po-
dem ocasionar leses, doenas e at a morte do animal.

Visando a todas essas pequenas rotinas que a criao de peixes re-


quer, a automatizao se torna bvia, do ponto de vista da facilidade de no haver a
17

preocupao com fatores pequenos como esses, porm importantes, deixando o


dono livre para simplesmente poder apreciar a beleza ornamentria do aqurio.

O projeto abrange alguns desses detalhes, controle das rotinas de ali-


mentao e iluminao, tornando possvel a ausncia do dono por um curto perodo
de tempo sem que este tenha que se preocupar em estar arriscando a vida de seu
animal de estimao.

1.3 Objetivos

O projeto tem como objetivo geral criar um ambiente automatizado atra-


vs de um dispositivo para efetuar o controle da alimentao e iluminao de um
aqurio domstico por meio da programao de seus intervalos. O usurio poder
programar por meio de um display, as configuraes definindo os horrios em que o
peixe receber a comida e iluminao. O compartimento de alimento ser ajustvel,
permitindo maior controle da quantidade que ser despejada no aqurio, adequan-
do-se para todos os tipos de rao.

O objetivo especfico deste trabalho apresentar um prottipo de um


aqurio automatizado, que, por meio de um microcontrolador, possa facilitar a inte-
rao do usurio com o aqurio, retirando algumas rotinas repetitivas que os
cuidados com o animal exigem. Um motor de passo cuidar da rotao do dispositi-
vo de alimento, e um display tornar possvel a interao mquina-usurio,
possibilitando a programao dos intervalos entre o funcionamento do motor e dos
comandos de acionar ou desligar a iluminao.

1.4 Estrutura da Monografia

Esta monografia est dividida entre sete captulos, incluindo a INTRODU-


O, que tratar da introduo do tema proposto, motivaes e objetivos do projeto,
metodologias de elaborao e pesquisa. Esta seo descrever a estrutura em que
sero dispostos os captulos, e uma breve descrio de seu contedo, assim como
uma introduo sobre o tema abordado.
18

No segundo captulo, APRESENTAO DO PROBLEMA, contextuali-


zada a problemtica que o projeto se prope a resolver. Descreve melhor as
motivaes, explica o problema a ser resolvido e mostra as solues j presentes no
mercado. Por fim, os benefcios que o projeto apresenta, sua proposta e escopo.

No terceiro captulo, REFERENCIAL TERICO, trata dos conhecimentos


bsicos necessrios para um melhor entendimento conceitual do projeto. So discu-
tidos assuntos como automao, microcontroladores e aquarismo. apresentada
tambm uma viso geral do projeto.

No quarto captulo, DESCRIO DO HARDWARE E SOFTWARE, deta-


lha as especificaes dos recursos utilizados no projeto tanto na parte de hardware
como de software. observado o funcionamento de cada aparato, suas qualidades
tcnicas visando um entendimento completo de como o projeto ser feito e a esco-
lha de cada componente. um captulo complementar ao terceiro captulo,
precedendo a IMPLEMENTAO.

No quinto captulo, IMPLEMENTAO, so apresentadas as etapas ne-


cessrias para compreenso geral da implementao do projeto.

No sexto captulo, RESULTADOS OBTIDOS, abordado o resultado dos


experimentos, testes e implementao do projeto. As simulaes feitas e as funcio-
nalidades do projeto e seus resultados.

No stimo captulo, CONSIDERAES FINAIS, so apresentadas a con-


cluso e as sugestes para trabalhos futuros.
19

CAPTULO 2 APRESENTAO DO PROBLEMA

Este captulo tem como finalidade detalhar as motivaes do trabalho e


apresentar de forma mais contextualizada o problema a ser resolvido pelo projeto
proposto. parte complementar do tpico Motivao presente no captulo ante-
rior.

Sero exploradas as dificuldades do aquarismo, a comodidade que ge-


rada pela automao e solues j presentes no mercado que so utilizadas para os
problemas em questo. E por fim, apresentada a proposta do projeto com seus
benefcios e restries.

2.1 Aquarismo e suas Dificuldades

como se eles fossem um quadro vivo, uma pea decorativa do ambiente.


Trabalhamos com esse conceito, explica o aquarista Yuri Frota. Buscamos
a qualidade de vida do animal, fazendo as pessoas entenderem que ele no
est ali porque quer, mas nem por isso um objeto tem sentimentos,
precisa curtir e descansar, completa Andr Bicalho, h 18 anos no comr-
cio da aquariofilia. Com essa conscincia, os aquaristas afirmam ser
possvel mudar a ideia de que criar peixes chato.(CORREIOWEB, 2011,
grifo meu).

O pargrafo acima mostra a realidade do aquarismo nos dias de hoje.


muito comum ouvirmos falar dos benefcios e vantagens de criar cachorros e gatos,
mas a criao de peixes sempre foi deixada de lado. Grande parte dessa excluso
pelo fato de ser um hobby que exige muitos cuidados de seu dono e uma ateno
diria que no permite negligncias.

A criao de peixes necessita inicialmente da construo de um ambiente


artificial que simule o habitat do animal. Esse ambiente necessita de cuidados tanto
quanto qualquer ser vivo presente nele, pois pequenas alteraes no ecossistema
podem desencadear doenas e at a morte do aqurio como um todo. Os cuidados
incluem a checagem de diversos itens para garantir a qualidade de vida do peixe
como podemos observar abaixo:
20

Alimentar os peixes 2 a 3 vezes por dia.

Fornecer raes com mais de 40% de protenas.

Iluminar o aqurio de 8 a 12 horas por dia.

No utilizar cascalho ou pedras com pontas ou cortantes, pois podem ferir os pei-
xes

Respeitar a temperatura da gua conforme o tipo de peixe.

Trocar sempre a alimentao dos peixes para evitar doenas nutricionais.

Nunca bater no vidro

Lavar as mos e braos antes de mexer no aqurio

Trocar 1/4 da gua por semana.

Distribuir a iluminao uniformemente por todo tanque.

Alimenta os peixes antes de desligar a luz, diminuindo o risco dos peixes maiores
se alimentarem dos menores.

Fonte: (http://www.clickinformacao.com.br)

Dentre estes diversos itens, sero aprofundados os dois itens pertinentes


ao projeto: Alimentao e Iluminao.

2.1.1 Alimentao

A alimentao fundamental para a vida do peixe. Apesar de parecer


simples, h diversos tipos de regras ao escolher, medir, e dar a rao ao animal.
Mesmo depois de escolhida a rao ideal, preciso manter uma regularidade quan-
to quantidade e horrio para que possa manter-se uma dieta balanceada.

Em aqurios com vrios tipos de peixe, a alimentao pode ser ainda


mais crtica, pois uma vez que fiquem sem alimento, os peixes maiores veem outros
peixes como presas, podendo at mat-los para se alimentar. Comida excessiva ou
diminuta pode tambm causar prejuzos sade do animal. possvel perceber a
21

necessidade de um maior controle e periodicidade na rotina de alimentao, poden-


do sanar esses tipos de ocorrncias. (aquarismobrasileiro.com.br).

2.1.2 Iluminao

A iluminao outro fator de grande importncia para quem quer ter


peixes. Atualmente as opes so muitas. A maior novidade, no entanto,
so as luzes LED. Com programao especfica, elas podem simular os ci-
clos naturais, tais como a intensidade dos raios solares, as fases da lua
para reproduo, e at mesmo as condies climticas. (CORREIOWEB,
2011, grifo meu).

possvel observar com base no texto acima, a importncia que a ilumi-


nao tem em um aqurio. Ela ajuda o peixe a se ambientar, sentir-se em seu
habitat natural, ajudar na reproduo dentre outros fatores. Em aqurios plantados
vemos ainda mais nitidamente essa necessidade de um controle mais detalhado da
iluminao. (WATSON, 2009)

Aqurios plantados exigem um cuidado mais intenso. Peixes e algas de-


vem coexistir dentro de um aqurio. Elas realizam fotossntese baseando-se na
quantidade de luz, e oxigenam a gua. Quando ocorre o excesso de luz, algas de
aqurio podem crescer desregulamente, prejudicando o habitat do peixe e a beleza
ornamentaria do aqurio. (WATSON, 2009)

2.2 Comodidade da Automao

A tecnologia trouxe diversos avanos na vida cotidiana. Pequenas doses


de facilidade foram introduzidas ao dia a dia, facilitando aos poucos tarefas que seri-
am mais complexas ou mais trabalhosas sem o apoio de aparatos modernos.
Detalhes quase imperceptveis como o acender de uma lmpada ou colocar roupas
para lavar na mquina mostram o quo essencial automao se tornou na vida do
ser humano.

Desde a Revoluo Industrial, a automao vem lentamente tomando


espao na rotina diria do homem. Comeando nas linhas de montagem, onde a
automao industrial se tornou essencial para a produo, percebe-se a grande van-
22

tagem ao mecanizar processos repetitivos. Desde ento, sempre que possvel, a


aplicao desse tipo de comodidade vem se tornando mais comum. (GROOVER,
2000)

Com a popularizao da tecnologia e maior acessibilidade s solues


mais sofisticadas para problemas simples, a automao deixa as indstrias para so-
lucionar problemas caseiros. A Domtica o termo que define a utilizao dessa
tecnologia para meios residenciais. Os exemplos so inmeros, sendo alguns cita-
dos abaixo:

Segurana automatizada (Sensores, Alarmes, Travas Eletrnicas,


Cmeras de Segurana)

Controle de iluminao de ambientes

Controle de temperatura

Cuidados com animais de estimao automatizados (Alimentao,


Iluminao dentre outras necessidades)

Jardim automatizado (irrigao e iluminao)

Dentre outras.

Fonte: (engenium.net)

A busca por comodidade algo sempre presente, e as facilidades que


so proporcionadas por esses dispositivos tornam a vida em si mais agradvel, di-
minuindo o stress e a preocupao de quem os possui. Isso impulsiona o
crescimento do mercado de servios de automao, visando garantir que essa tec-
nologia se expanda e possa abranger cada vez mais reas.

A Figura 2.1 Ilustra alguns exemplos comuns de solues de automao


residencial.
23

Figura 2.1 Automao Residencial Exemplos


Fonte: gdsautomacao.com.br

2.3 Solues Existentes

O aquarismo uma das reas que se beneficia da comodidade proporci-


onada pela automao. Por possuir diversas variveis a serem controladas
simultaneamente, ela facilmente aplicada, pois retira preocupaes que o usurio
pudesse ter, evitando possveis negligncias ao se distrair de algum desses deta-
lhes. Um aqurio, mesmo pequeno, exige diversos cuidados como citados no tpico
2.1 deste captulo, e a possibilidade de iseno da responsabilidade se torna agra-
dvel aos olhos de quem cultiva este hobby.

Existem no mercado aparelhos que facilitam a criao de peixes orna-


mentais e atravs dessas ferramentas diminuem a necessidade de manuteno to
peridica que um aqurio exige. Desde aparelhos rudimentares como bombas de ar
para oxigenar a gua e filtros, at controles de temperatura, PH, alimentao e ilu-
minao, so dos servios hoje fornecidos por diversas empresas de automao
domstica.
24

2.4 Benefcios do Dispositivo Proposto e Suas Restries

Esse projeto tem como finalidade apresentar um dispositivo de controle e


automao de iluminao e alimentao de aqurio, sendo utilizados equipamentos
computacionais simples e de baixo custo.

Por se tratar de um dispositivo automatizado que ser responsvel por


cuidar das rotinas dirias do aqurio, o benefcio principal seria a comodidade de
poder viajar, se ausentar, ou mesmo no se preocupar com estes detalhes mais fre-
quentes do aquarismo. Isso garante o bem estar do animal, por ser alimentado em
horrios precisos, e d liberdade ao usurio.

O projeto se restringe s rotinas de alimentao e iluminao do aqurio,


no contemplando outros tipos de manuteno necessrios para o bem estar do ha-
bitat do peixe como controle de PH, temperatura e etc. O alimentador deve ser
preenchido com comida para que funcione, sendo a nica preocupao do usurio,
a vistoria do nvel de comida existente no dispositivo. A iluminao ficar em cargo
de uma lmpada que ser ativada ou desativada de acordo com a programao de
intervalo.

A programao do projeto se restringe escolha do intervalo de tempo


entre as rotinas, sendo esse intervalo repetido at nova configurao ser feita. O
projeto prope a demonstrao de suas funcionalidades por meio de um ambiente
real de aqurio onde o projeto deva automatizar suas funes.
25

CAPTULO 3 REFERENCIAL TERICO

Neste captulo so abordados termos e conceitos tericos necessrios


para um melhor entendimento do projeto e suas funcionalidades. Alguns desses te-
mas, por serem extensos e visando o foco no projeto descrito neste trabalho, sero
apresentadas somente as caractersticas e conceitos pertinentes.

Ser apresentada tambm uma viso geral do projeto proposto. O enten-


dimento deste captulo essencial para um melhor aproveitamento do restante do
trabalho.

3.1 Aquarismo

No h dvida de que os aqurios de gua doce e marinha porttil podem


se tornar fonte de diverso e instruo infinitas, e ao mesmo tempo ser
construdos de forma a ornamentar as salas em que so colocados. [...] A
viso dos objetos em movimento, e das plantas aquticas verdes sobre a
superfcie da gua sem dvida confortante. [...] As travessuras de seus
pequenos habitantes, e o pouco cuidado necessrio para manter este mun-
do em miniatura em uma condio saudvel, vai tirar a ateno de muitas
horas de sofrimento e, inconscientemente, desenvolver um amor para as
criaturas de Deus. Para as crianas, manter um aqurio pode ser o meio de
imperceptivelmente ensinar os sentimentos de humanidade para com os
animais inferiores que at agora tm sido muito negligenciadas. (TAYLOR
1910, grifo e traduo Autor)

Desde antes de 1910, quando foi publicado o primeiro livro ocidental so-
bre o aquarismo, The Aquarium Its Inhabitants, Structure and Management (O
Aqurio, Seus Habitantes, Estrutura e Gerenciamento), j era possvel perceber os
benefcios que a atividade trazia. No s como a criao de um animal de estima-
o, ou como ornamentao para diversos tipos de ambientes, mas a soma desses
e outros fatores o tornaram um hobby muito procurado.

Na Figura 3.1 mostrado um exemplo de aqurio utilizado no sculo


XVIII.
26

Figura 3.1: Aqurio domstico sculo XVIII.


Fonte: victoriana.com

O aquarismo, ou aquariofilia, o ato de criar peixes, plantas e qualquer


organismo aqutico em aqurios de vidro, tanques naturais ou artificiais, com o obje-
tivo de ornamentao ou estudo dos mesmos. Foi de grande importncia para a
catalogao das espcies de organismos aquticos no sculo XVI e um hobby que
se integrou com os diversos tipos de criao animal em todo mundo.(BORGES JU-
NIOR, OLIVEIRA, 2009)

Para manter este tipo de atividade, essencial ter conhecimento das ne-
cessidades e dificuldades de manutenibilidade de um aqurio como comentado no
tpico 2.1, e dos equipamentos que so utilizados para manter um ambiente saud-
vel para o peixe. Abaixo temos alguns dos itens necessrios para a montagem de
um aqurio simples de gua doce:
27

Aquecedor: Esse aparelho tem a funo de aquecer a gua quando h


uma queda de temperatura, fazendo com que a gua fique sempre aque-
cida, mantendo-a na mesma temperatura.

Bombas de Circulao: Servem para fazer a movimentao da gua in-


ternamente, ficando submersas e funcionando 24h por dia, melhorando a
circulao de todo o aqurio e consequentemente dando a estabilidade
adequada.

Baldes e Canecas: So necessrios para transporte da gua, medio de


quantidade de gua para reposio, coleta de gua para testes e etc.

Chiller: Ao contrrio do aquecedor, este aparelho tem como funo res-


friar a gua visando a estabilidade de temperatura do aqurio

Densmetro: Este aparelho tem a funo de medir a densidade ou salini-


dade da gua, que o total da concentrao de slidos, gases e
substncias em suspeno dissolvidos na gua.

Filtro Biolgico de Fundo: Consiste de um sistema de placas perfuradas e


tubos ligados a uma bomba submersa ou pedra porosa, para que a gua
seja sugada atravs do cascalho de fundo.

Redes: Utilizadas para capturar e movimentar peixes e outros animais do


aqurio

Timmers: Tem a funo de automatizar o ligamento e desligamento de


alguns aparelhos do aqurio.

Skimmers: Fracionador de protenas um filtro que retira os poluentes da


gua, evitando a queda de qualidade da gua.

Termmetro: Funciona como medidor de temperatura do aqurio

Fonte: (aqualandia.com.br)

A Figura 3.2 so mostrados exemplos de equipamentos bsicos utilizados


em um aqurio domstico
28

Figura 3.2 Equipamentos de um aqurio


Fonte: aquarioland2000.tripod.com

3.2 Automao

Segundo Moraes, Castrucci e Plinio (2001), a automao engloba qual-


quer sistema, apoiado em computadores, que substitua o trabalho humano e que
vise a solues rpidas e econmicas para atingir os complexos objetivos das inds-
trias e dos servios (por exemplo, automao industrial, automao bancria)..

A automao o conceito de tornar atividades repetitivas em automti-


cas, utilizando equipamentos que efetuam coleta de dados e atuam nos processos,
diminuindo a necessidade da interferncia humana, resultando em maior velocidade
nas operaes, reduo de erros e fidelidade de informaes, que so elementos
cruciais para um gerenciamento mais eficaz. possvel resolver problemas como
menores custos de trabalho, menores perdas de materiais, maiores nveis de quali-
dade e controle das informaes relativas ao processo, maior qualidade das
informaes e um melhor planejamento e controle.(MORAES, CASTRUCCI, PLINIO,
2001)

Por ser um conceito abrangente, a automao aplicvel em diversas


reas. Comeou na indstria, resolvendo problemas de produtividade de fbricas e
29

linhas de montagem, at chegar automao de rotinas cotidianas, bem prximas


ao dia a dia moderno.

No Quadro 3.1, feita uma comparao das vantagens trazidas pelo tra-
balho humano em comparao ao trabalho mecnico.

Quadro 3.1 Trabalho Humano x Trabalho Maquinrio


Trabalho Humano Trabalho Maquinrio

Perceber estmulos externos inesperados Realizar tarefas repetitivas de modo


consistente

Desenvolver novas solues para problemas Armazenar grandes quantidades de dados

Resoluo de problemas abstratos Resgatar dados da memoria de modo


confivel

Adaptao mudanas Realizar vrias tarefas simultaneamente

Generalizar por observaes Aplicar grandes foras

Aprender por experincia Computar clculos simples rapidamente

Realizar decises complexas baseadas em Realizar decises rotineiras rapidamente


dados incompletos

Fonte: (GROOVER, 2000)

3.2.1 Automao Residencial

O objetivo da automao residencial integrar iluminao, entreteni-


mento, segurana, telecomunicaes, aquecimento, ar condicionado e
muito mais atravs de um sistema inteligente programvel e centralizado.
Como consequncia fornece praticidade, segurana, conforto e economia
para o dia a dia dos usurios. (ABREU, 2003).

A automao residencial um ramo que est em constante crescimento


juntamente ao avano tecnolgico e o aumento das possibilidades e diversas aplica-
es. Criada para aplicar os conceitos provenientes da automao industrial das
fbricas num ambiente mais cotidiano, responsvel por grande parte da comodi-
dade e conforto existentes no meio domstico.(HARPER, 2003)
30

Solues para segurana, entretenimento, eletrodomsticos, iluminao e


ambientao so alguns dos exemplos mais comuns de aplicao da automao
residencial como pode ser observado na Figura 3.3.

Figura 3.3 Casa automatizada


Fonte: controlled.com.br

A princpio, por possuir poucas pessoas com o conhecimento para criar


esse tipo de solues, o custo de implantao da automao domstica era elevado
e de pblico restrito. Hoje em dia pode-se observar que muito mais acessvel e
simples obter pequenos confortos automticos dentro de casa

3.3 Microcontroladores

O microcontrolador um dispositivo semicondutor em forma de circuito inte-


grado, que integra as partes bsicas de um microcomputador
microprocessador, memrias no-volteis e volteis e portas de entrada e
sada. Geralmente, limitado em termos de quantidade de memria, princi-
palmente no que diz respeito memria de dados, utilizada em aplicaes
especficas, ou seja, naquelas que no necessitam armazenar grandes
quantidades de dados, como automao residencial, automao predial, au-
tomao industrial e automao embarcada. (GIMENEZ, 2005, p. 4).

O microcontrolador um circuito nico integrado e programvel, contem-


plando um CPU, memria de dados e programa, sistema de clock, portas, alm de
31

outros perifricos como conversores A/D entre outros. Pode ser usado para controlar
uma grande quantidade de aparelhos, coordenando suas funes e aes. (JUCA,
2010)

Na figura 3.4 mostrado o microcontrolador utilizado no projeto.

Figura 3.4 Microcontrolador utilizado no projeto.


Fonte: Autor

Normalmente, so embarcados em algum outro aparelho, executando o


controle de aes e respostas. O programa registrado na memria ROM, fazendo
com que o programa no mude depois de gravado no PIC, dedicando o microcontro-
lador uma tarefa nica, rodando o programa especfico. Possui um dispositivo de
entrada dedicado e normalmente um display de LCD ou LED para sada, facilitando
a comunicao com o usurio e a sua aplicao no produto. (PEREIRA, 2003)

Alm de receber entradas do usurio, o microprocessador tambm recebe


informaes do prprio produto no qual est embarcado, e controla o aparelho man-
dando sinais para diversos componentes do mesmo. tambm, de certa forma,
resistente, podendo ser aplicado em condies mais extremas onde computadores
normais no conseguiriam. (GROOVER, 2001)

Na Figura 3.5 so ilustrados os componentes internos que compe o fun-


cionamento do microcontrolador.
32

Figura 3.5 Esquemtico de um Microcontrolador


Fonte: eletronicagratis.blogspot.com.br

Um bom exemplo do funcionamento do microcontrolador seria observan-


do um micro-ondas. Alm de receber informaes das teclas e exibi-las no display,
controla o rel que liga ou desliga o funcionamento do aparelho. Pode-se observar a
sua resilincia quando aplicado ao controle de motores de carros onde, dependendo
da localizao e clima, podem funcionar a temperaturas de -34C at 49C. Se for
considerado o calor gerado pelo prprio motor, as temperaturas podem subir at
80C, sem que o controlador pare de funcionar ou perca suas capacidades. (GRO-
OVER, 2001)

Podem ser fabricados por diversas marcas como Microchip, Intel, Atmel,
Texas dentre outras. O modelo presente neste projeto, e discutido no tpico a seguir
o PIC pertencente Microchip Technology Inc.

3.3.1 PIC

O PIC um circuito integrado produzido pela Microchip Technology Inc.,


categorizado como um microcontrolador por possuir todos os circuitos necessrios
para o funcionamento de um sistema digital programvel. Ele possui:

CPU: Para interpretar as instrues de programa

Memria EPROM: Para gravar permanentemente as instrues de pro-


grama
33

Memria RAM: Para o armazenamento de variveis utilizadas pelo cdigo

Barramentos de I/O: Para conexo de dispositivos externos, recepo de


pulsos, sinais alm de uma srie de dispositivos auxiliares.

(JUCA, 2010)

Outra importante parte de um microcontrolador seu clock ou circuito os-


cilador. Ele responsvel por ditar a velocidade em que as instrues sero
executadas. Por estarem todos esses dispositivos num s circuito integrado, h uma
maior facilidade e rapidez de aplicao poupando o custo e espao que todos esses
dispositivos trariam, vantagens de um sistema microcontrolado. (JUCA, 2010)

Os microcontroladores PIC se dividem em famlias de diversos modelos.


Detalhamentos do PIC16F877A, modelo escolhido, esto presentes no captulo 4.

3.4 Motor Eltrico

Motor eltrico a mquina destinada a transformar energia eltrica em


energia mecnica. O motor de induo o mais usado de todos os tipos de
motores, pois combina as vantagens da utilizao de energia eltrica - baixo
custo, facilidade de transporte, limpeza e simplicidade de comando com sua
construo simples, custo reduzido, grande versatilidade de adaptao s
cargas dos mais diversos tipos e melhores rendimentos. O tipo mais comum
de motor eltrico o Motor de Induo. (www.coe.ufrj.br)

Na Figura 3.6 mostrado um motor eltrico comum.

Figura 3.6 Motor Eltrico


Fonte: dee.feb.unesp.br
34

Motores eltricos esto presentes em grande parte dos aparatos tecnol-


gicos de hoje em dia. Eletrodomsticos, brinquedos, componentes para carros,
bombas de aqurio, computadores so exemplos de algumas de suas aplicaes
mais comuns. Como explicado no texto acima, transformam energia eltrica em me-
cnica e por sua versatilidade, possvel observar sua habilidade de se adaptar a
vrias utilizaes diferentes. (coe.ufrj.br)

3.4.1 Motor de Passo

O motor de passo um dispositivo eletro-mecnico que converte pulsos


eltricos em movimentos angulares controlados chamados de passos. Cada passo
consiste de pequenos incrementos na angulao do motor, motivo de sua preciso.
possvel controlar exatamente o ponto que o motor deve ser acionado ou desliga-
do, sua velocidade alterando a frequncia de pulsos recebidos e a sequncia de
impulsos eltricos dita a direo de rotao do motor. (BRITES, SANTOS, 2008)

O motor de passo um motor com uma preciso muito grande do seu mo-
vimento. So utilizados onde necessrio o controle do nmero de rotaes
muito importante, tais como em impressoras, drives de disquete e siste-
mas de automao industrial e robtica, pois, se no houvesse esse
controle, o movimento contnuo poderia estrag-los. (MAXWELL BOHR,
2006).

Na figura 3.7 podemos observar um motor de passo comum de 4 fios.

Figura 3.7 Motor de passo


Fonte: multilogica-shop.com
35

altamente empregado em automao, robtica dentre outras aplicaes


que requeiram o controle de variveis como ngulo de rotao, velocidade, posio
e sincronismo. No um motor de fora ou velocidade, mas sua principal caracters-
tica a ampla gama de possibilidades possveis com o seu funcionamento.
(BRITES, SANTOS, 2008)

Sero mostradas suas especificaes tcnicas e o seu funcionamento de-


talhado no captulo seguinte.

3.5 Linguagem de Programao

Uma linguagem de programao um meio de expressar informaes de


modo compreensvel tanto para o computador quanto para as pessoas. A sintaxe
especifica como uma combinao de frases (podendo ser comandos, declaraes,
expresses e etc.) pode formar um programa. (HARPER 2012)

Este tipo de comunicao entre computadores e programadores o que


resulta em diversos sistemas com diferentes finalidades, sejam eles sistemas opera-
cionais utilizados em computadores, ou mesmo programao de microcontroladores
visando aplicaes menores e mais pontuais.

No tpico a seguir ser feita a descrio da linguagem de programao


utilizada no projeto.

3.5.1 Linguagem C

Os primeiros dispositivos programveis eram escritos em cdigos chama-


dos cdigos de mquina, compostos por dgitos binrios (combinaes de 0 e 1)
inseridos por meio de um dispositivo de entrada de dados (teclado, leitora de car-
tes, fitas perfuradas ou discos magnticos) para serem executados pela mquina.
A programao Assembly foi criada para facilitar a programao, tornando-se mais
acessvel aos programadores, podendo executar operaes como MOVLW 0X8C ao
invs de longas linhas de cdigo binrio (PEREIRA, 2003).
36

Por ser uma linguagem de baixo nvel, o Assembly no possui comandos,


instrues ou funes alm dos predefinidos no conjunto de instrues do processa-
dor utilizado. O programador ento deve desenvolver rotinas e operaes para
contornar essas limitaes impostas. Isto leva a criao de programas muito mais
extensos e complexos com um fluxo muitas vezes difcil de ser seguido. (PEREIRA,
2003).

Visando a soluo destes problemas, as linguagens de alto nvel so cri-


adas para permitir a programao utilizando comandos de alto nvel que so
posteriormente traduzidos para linguagem de baixo nvel como ASSEMBLY ou dire-
tamente para o prprio cdigo de mquina do processador utilizado (PEREIRA,
2003).

Segundo Ritchie (1988, p. 8), C uma linguagem de propsito geral que


se baseia em economia de expresses, rica gama de operadores, e um controle
moderno de curso de dados e estruturas. Sua falta de restries, no sendo espe-
cializada em nenhuma rea de aplicao especfica, a torna muito mais conveniente
e efetiva para diversas tarefas do que em comparao com linguagens mais podero-
sas.

A escolha de C para programao em microcontroladores se torna bvia


ao observar a grande velocidade na criao de novos projetos devido s facilidades
de programao fornecidas pela linguagem, sua portabilidade que permite adaptar
programas de um sistema para o outro com um mnimo de esforo e sua proximida-
de linguagem de mquina, proporcionando extrema eficincia, o colocam como
linguagem de alto nvel mais eficiente atualmente disponvel (PEREIRA, 2003).

3.6 Mquina de Estados Finitos

Uma mquina de estado um modelo estrutural que representa o estado


de algum smbolo ou conjunto de smbolos que podem receber entrada (input) para
uma mudana que far a alterao do estado atual para um novo estado, dentro de
um determinado perodo de tempo. Um computador um exemplo de mquina de
37

estado, mas tambm possvel descrever e modelar interaes de sistemas. (DO-


VICCHI, 2007).

Uma mquina de estado possui:

Estado inicial descrito

Conjunto de eventos de entrada

Conjunto de eventos de sada

Conjunto de estados

E utiliza funes que mapeiam:

Estados e entradas para novos estados

Estados para sadas

Uma mquina de estados finitos aquela que possui um limite finito para
seu nmero de estados. Ela introduz o conceito de estado como uma informao do
seu histrico. Todos os estados sero uma representao de todas as situaes em
que a mquina possa se encontrar. Portanto, ela possui um tipo de memria do
que ocorreu para que chegasse naquele estado presente. Enquanto a aplicao ro-
da, o estado muda de tempo em tempo, e as entradas e sadas vo depender de
qual estado a mquina se encontra. (WAGNER, 2006).

Podemos dividir a mquina de estados em dois tipos bsicos de modelos


que diferem no modo em que expressam sua sada (output). O modelo de Mealy
baseia-se no estado atual assim como na entrada dos dados e o modelo de Moore
ser descrito a seguir.

3.7 Viso Geral do Projeto

O projeto proposto ser constitudo de um microcontrolador (PIC modelo


16F877A), um Motor de Passo, um rel de duas posies, um dispositivo de alimen-
tao artesanal, um display de LCD, trs botes para configuraes e demais
componentes eletrnicos, como resistores, capacitores, oscilador de cristal, dentre
outros.
38

Um melhor detalhamento sobre o hardware e software que este projeto


abrange e seu funcionamento ser descrito no captulo 4 Descrio de Hardware e
Software
39

CAPTULO 4 DESCRIO DO HARDWARE E SOFTWARE

Este captulo faz um detalhamento dos dispositivos utilizados neste proje-


to e seu funcionamento, abrangendo tanto a rea de hardware, parte fsica, ou
software, parte lgica.

4.1 Microcontrolador PIC 16F877A

O modelo de microcontrolador utilizado no projeto em questo o


16F877A de 40 pinos, que possibilita a montagem de diversos dispositivos de entra-
da e sada. Neste captulo, ser feita a descrio detalhada de seu funcionamento e
especificaes tcnicas.

4.1.1 Especificaes

Segundo o seu datasheet, o PIC16F877A que ser utilizado no projeto


tem as seguintes especificaes:

40 pinos

33 I/Os

8K x 14 bits de memria flash

256 bytes de memria EEPROM

368 bytes de memria RAM

Dois mdulos de Captura/Comparao/PWM (Controle por largura


de pulso)

8 canais de A/D de 10 bits

2 comparadores

3 timers (2x8 e 1x16 bits)

1 USART
40

Porta serial sncrona com SPI (master mode) e IC (master/slave);

Porta paralela com 8 bits de dados e sinais de controle externos


(leitura e escrita);

Timer/Counter programvel e um Watchdog Timer embutidos, com


seu prprio oscilador, para aplicaes de Tempo Real crticas.

14 fontes de interrupo (internas e externas)

Sua grande quantidade de portas de entrada e sada facilitou a constru-


o do projeto, tornando possvel a conexo dos componentes necessrios para o
seu funcionamento. Seu timer e conversor AD embutidos foram primordiais na ela-
borao deste dispositivo.

4.1.2 Pinagem do PIC 16F877A

Na Figura 4.1 mostrada a pinagem do PIC16F877A e o Quadro 4.1 o


significado das nomenclaturas utilizadas na identificao desses pinos.

Figura 4.1 Pinagem do PIC 16F877A


Fonte: sabereletronica.com.br
41

Quadro 4.1 Pinos do PIC16F877A.


N Pino Descrio

1 MCLR/Vpp Master Clear (reset). O microcontrolador funciona quando este pino


est em nvel alto.
2 RA0 Entrada e sada digital.
AN0 Entrada analgica.
3 RA1 Entrada e sada digital.
AN1 Entrada analgica.
4 RA2 Entrada e sada digital.
AN2 Entrada analgica.
VREF-/CVREF Tenso negativa de referncia analgica.
5 RA3 Entrada e sada digital.
AN3 Entrada analgica.
VREF+ Tenso positiva de referncia analgica.
6 RA4 Entrada e sada digital. Open-drain quando configurado como sada.
T0CKI Entrada externa do contador TMR0.
C1OUT Sada do comparador 1.
7 RA5 Entrada e sada digital.
AN4 Entrada analgica.
SS Slave para a comunicao SPI.
C2OUT Sada do comparador 2.
8 RE0 Entrada e sada digital.
RD Controle de leitura da comunicao paralela.
AN5 Entrada analgica.
9 RE1 Entrada e sada digital
WR Controle de escrita da comunicao paralela.
AN6 Entrada analgica.
10 RE2 Entrada e sada digital.
CS Habilitao externa para comunicao paralela.
AN7 Entrada analgica.
11/32 VDD Alimentao positiva.
12/31 VSS GND.
13 OSC1/CLKIN Oscilador cristal ou entrada de osciladores externos.
14 OSC2/CLKOUT Sada para oscilador cristal.
15 RC0 Entrada e sada digital.
T1OSO Sada do oscilador externo para TMR1.
T1CKI Entrada de incremento para TMR1.
16 RC1 Entrada e sada digital.
T1OSI Entrada do oscilador externo para TMR1.
CCP2 Entrada do Capture2 ou Sada para Compare2/PWM2.
17 RC2 Entrada e sada digital.
CCP1 Entrada do Capture1 ou Sada para Compare1/PWM1.
18 RC3 Entrada e sada digital.
SCK Entrada/Sada do clock para comunicao SPI.
SCL Entrada/Sada do clock para comunicao I2C.
19 RD0 Entrada e sada digital.
PSP0 Comunicao paralela.
20 RD1 Entrada e sada digital.
PSP1 Comunicao paralela.
21 RD2 Entrada e sada digital.
PSP2 Comunicao paralela.
22 RD3 Entrada e sada digital.
PSP3 Comunicao paralela.
23 RC4 Entrada e sada digital.
SDI Entrada de dados para comunicao SPI.
DAS Entrada/Sada de dados para comunicao I2C.
24 RC5 Entrada e sada digital.
42

SDO Sada de dados para comunicao SPI.


25 RC6 Entrada e sada digital.
TX Transmisso para comunicao assncrona USART.
CK Clock para comunicao sncrona USART.
26 RC7 Entrada e sada digital.
RX Recepo para comunicao assncrona USART.
DT Dados para comunicao sncrona USART.
27 RD4 Entrada e sada digital.
PSP4 Comunicao paralela.
28 RD5 Entrada e sada digital.
PSP5 Comunicao paralela.
29 RD6 Entrada e sada digital.
PSP6 Comunicao paralela.
30 RD7 Entrada e sada digital.
PSP7 Comunicao paralela.
33 RB0 Entrada e sada digital.
INT Interrupo externa.
34 RB1 Entrada e sada digital.
35 RB2 Entrada e sada digital.
36 RB3 Entrada e sada digital.
PGM Entrada para programao de baixa tenso.
37 RB4 Entrada e sada digital.
38 RB5 Entrada e sada digital.
39 RB6 Entrada e sada digital.
PGC Clock de programao serial ou pino de in-circuit debugger.
40 RB7 Entrada e sada digital.
PGD Dado de programao serial ou pino de in-circuit debugger.
Fonte: (SOUZA, 2005)

A pinagem escolhida no projeto pode ser observada na Figura 4.2. Essa


configurao atende s necessidades de cada componente utilizado no projeto

Figura 4.2 Pinagem utilizada no projeto


Fonte: Autor
43

4.2 PIC C Compiler

Este software foi utilizado para a programao e compilao do cdigo de


programao do microcontrolador PIC. Seu trabalho oferecer um ambiente amig-
vel para a redao do cdigo fonte, contendo bibliotecas especficas de eletrnica,
facilitando o processo de construo do mesmo. Detalhamentos sobre o cdigo es-
crito so feitos no captulo seguinte. (ccsinfo.com)

O PIC C Compiler tem a funo de auxiliar na criao e compilao do


cdigo em C para definir o funcionamento do microcontrolador. O software alm da
compilao faz a correo de erros de sinttica e semntica do cdigo, e previso
do uso da memria RAM e ROM do microcontrolador tornando mais intuitiva a pro-
gramao, correo e teste antes da compilao e fornecendo uma viso geral de
quanto o cdigo utilizar dos recursos disponveis pelo PIC. Ao compilar, so gera-
dos arquivos de extenso c, cof, err, hex, lst, pjt, sta, sym, tre. O arquivo
'HEX' gerado utilizado pelo PROTEUS para testes no circuito simulado, e para a
gravao do programa no dispositivo. (ccsinfo.com)

4.3 Kit de Gravao PICkit 2

O kit de gravao PICkit 2 uma ferramenta de desenvolvimento que


permite a comunicao direta entre o computador e o PIC. Com ele, possvel gra-
var e apagar programas da memria do microcontrolador, sendo uma ferramenta
indispensvel. Ele composto do conector ICSP para gravao em microcontrolado-
res PIC de 8, 14, 18, 20, 28 e 40 pinos. (microchip.com)

O kit contempla o gravador, o cabo USB, conector ICSP e um CD que


possui o software que far o reconhecimento do microcontrolador.

4.3.1 Utilizao do Kit de Gravao PICkit 2

Aps compilar o programa com o CCS C Compiler, ser utilizado o arqui-


vo de extenso HEX com o kit de gravao, e grav-lo no PIC16F877A. Alm da
gravao, o programa tambm permite apagar a memria do PIC para que sejam
feitas alteraes no programa ou para que seja inserido um programa diferente.
44

O programa mostra a mensagem Programming Successfull assim que


termina a gravao, e emite um sinal sonoro indicando seu trmino.

4.4 Mdulo LCD

O mdulo LCD escolhido para o projeto foi o LCD 16X2, ou seja


dezesseis caracteres divididos em duas linhas. Ele foi escolhido dentre os diversos
modelos por possuir um nmero de caracteres suficientes para exibir as informaes
necessrias para a configurao do automatizador. A Figura 4.3 ilustra o mdulo
LCD utilizado no projeto.

Figura 4.3 LCD utilizado no projeto


Fonte: Autor

Como se pode observar o mdulo possui 16 pinos, o Quadro 4.2 apresen-


ta a descrio dos pinos do mdulo LCD e o interfaceamento no projeto.

Quadro 4.1 Pinos do LCD


Pino Smbolo Funo Interfaceamento no Projeto
Quadro 4.22 Pinos do mdulo LCD
16 K Ctodo NO UTILIZADO
15 A Anodo NO UTILIZADO
1 VSS Terra Aterrado
2 VDD 5V Fonte de Alimentao
3 VO Ajuste de contraste Potencimetro
4 R/S Seleo de registro Pino 27 do PIC16F877A
5 R/W Leitura / Escrita Aterrado
6 E Inicia ciclo Leitura / Escrita Pino 28 do PIC16F877A
7 DB0 Dado NO UTILIZADO
8 DB1 Dado NO UTILIZADO
9 DB2 Dado NO UTILIZADO
10 DB3 Dado NO UTILIZADO
45

11 DB4 Dado Pino 21 do PIC16F877A


12 DB5 Dado Pino 22 do PIC16F877A
13 DB6 Dado Pino 23 do PIC16F877A
14 DB7 Dado Pino 24 do PIC16F877A
FONTE: (ZANCO, 2010), Adaptada

4.5 Motor de Passo

O motor de passo visto no captulo anterior um dispositivo


eletromecnico que converte pulsos eltricos em movimentos angulares controlados
chamados de passos. O modelo utilizado no projeto de 6 fios bipolar, que tem a
funo de rotacionar o dispositivo que conter a rao que alimentar o aqurio.

4.5.1 Funcionamento

O movimento bsico dado pelo uso de solenoides alinhados que quan-


do recebem carga, se polarizam atraindo o rotor e fazendo-o se alinhar em seu eixo
variando sua angulao, o chamado passo. O nmero de passos vai ser definido
pela quantidade de alinhamentos possveis entre o rotor e as bobinas, sendo que
quanto mais bobinas, mais polos no rotor e consequentemente mais pas-
sos.(BRITES, SANTOS, 2008)

Se energizados uma bobina por vez, cada uma desloca o rotor leve-
mente em seu eixo. As bobinas criam um campo magntico quando energizadas e
juntamente com o magnetismo do rotor, foram o alinhamento entre os dois, cau-
sando o deslocamento. Com a polarizao adequada das bobinas, pode-se
movimentar o rotor entre elas (meio passo ou half-step) ou alinha-lo com as mes-
mas (passo completo ou full-step). Seu funcionamento bem simples, quando uma
corrente circula pela bobina, esta cria um campo magntico que atrai o contato fe-
chando ou abrindo circuito. Ao cessar a corrente da bobina o campo magntico
tambm cessa e o contato volta a sua posio original. (BRITES, SANTOS, 2008)

4.6 Rel

Os rels so dispositivos eletromecnicos que controlam circuitos por


meio de pequenas correntes ou tenses, funcionando como um interruptor
46

liga/desliga, fechando ou abrindo conexes. Ao receber corrente, a bobina cria um


campo magntico que atrai o contato fechando ou abrindo o circuito e alternando de
volta para o estado inicial quando esse campo cessado.

4.5.1 Funcionamento

So amplamente utilizados em automao predial, sistemas de gerao,


transmisso e distribuio de energia eltrica e em mquinas e equipamentos em
geral. So compostos por um eletrom em forma de bobina; uma armadura
metlica, que possa ser atrada pelo campo magntico criado pelo eletrom; uma
mola e um conjunto de contatos eltricos que sero abertos e fechados ou
comutados conforme a configurao e o sinal recebido pelo circuito.
(osetoreletrico.com.br)

Quando a corrente eltrica percorre a bobina e gera o campo magntico,


a armadura atrada por essa fora e alterna a posio dos contatos dependendo
da posio inicial do rel. Se a corrente interrompida, o campo se anula e a mola
faz com que o s contatos voltem posio inicial. (osetoreletrico.com.br)
47

CAPTULO 5 IMPLEMENTAO

Este o captulo principal do projeto, pois descreve como o mesmo foi fei-
to, suas etapas para que fosse concludo; foi dividido em cinco tpicos para facilitar
o entendimento:

Modelagem do sistema;

Elaborao dos circuitos;

Elaborao do cdigo fonte para o microcontrolador PIC;

Montagem dos circuitos nas placas;

Montagem do prottipo;

5.1 Modelagem do Sistema

A primeira etapa na implementao do projeto, foi a realizao de um


esboo do sistema definitivo, ou seja, a disposio em que se encontrariam os
componentes em um ambiente real e que pudesse ser escolhida a melhor forma
para dispor os componentes visando maior conforto ao usurio e garantindo melhor
desempenho do projeto.

Para isso, foi pensado em como o resultado final seria acoplado a um


aqurio domstico e como seria seu funcionamento. Esta etapa auxiliou na
visualizao do projeto como um todo, e fazer as alteraes necessrias na ideia
inicial para que pudesse se adequar melhor s necessidades do usurio. O projeto
consiste de uma caixa de madeira contendo a placa do circuito, o compartimento de
alimentao onde ser acoplado o motor de passo e posicionado no aqurio por
meio de um encaixe na borda do mesmo e uma lmpada que tambm ser acoplada
na borda do aqurio, para melhor iluminao do ambiente.

Para montagem do prottipo, foi utilizado a maior quantidade de material


reutilizvel e reciclvel possvel, visando um melhor aproveitamento dos recursos j
obtidos. A caixa de madeira que comporta a placa de aproximadamente 10 por 20
centimetros; o dispositivo de alimentao para a demonstrao foi feito com um tubo
48

de mini Cds vazio e a iluminao foi utilizado um iluminador prprio de aqurio


adaptado.

5.1.1 Fluxograma Geral do Sistema

Aps definio da disposio dos componentes, foi elaborado o fluxogra-


ma geral do sistema, conforme mostra a Figura 5.1. Este fluxograma foi fundamental
na elaborao do cdigo fonte, facilitando a observao de como seria a interao
do usurio com o dispositivo.

Figura 5.1 Fluxograma do sistema


Fonte: Autor
49

5.2 Elaborao dos Circuitos

Aps definido o funcionamento do sistema, como mostrado no fluxograma


do tpico acima, o prximo passo foi a elaborao dos circuitos. Para isso, foi utili-
zado o programa Proteus ISIS 7 Profissional, qual, neste primeiro momento, foi
possvel definir quais seriam os componentes utilizados, e as quais pinos do micro-
controlador PIC eles seriam interligados.

5.2.1 Proteus ISIS 7 Professional

O Proteus ISIS um simulador de circuitos eletrnicos, que torna possvel


a simulao em tempo real do cdigo programado junto ao hardware esquematizado
com a ferramenta. O programa possui um banco de dados com uma srie de mode-
los de componentes para serem adicionados como microcontroladores, resistores,
displays, dentre outros, facilitando na hora da implementao e criao de um prot-
tipo do projeto fsico com complexidades diversas.

A primeira etapa para a criao da placa realizar um estudo para decidir


quais materiais sero necessrios para que seja possvel o funcionamento da placa
como desejado. Para isso, utilizado o software PROTEUS ISIS, onde possvel
escolher componentes includos em uma grande biblioteca do programa, sendo pos-
svel fazer a busca pelo tipo de componente, material, e at fabricante.

A biblioteca de componentes do software pode ser observada na Figura


5.2

Figura 5.2 Biblioteca de componentes ISIS


Fonte: Autor
50

Foi selecionado o microcontrolador PIC16F877A, um grupo de botes pa-


ra que fosse possvel fazer a configurao do sistema, um display LCD para retornar
informaes para o usurio, um motor de passo que girasse o dispositivo de alimen-
tao e um LED de cor azul para que fosse feita a simulao do funcionamento do
rel. Para que a criao do esquemtico da placa seja feita, necessrio pensar
tambm em todos os resistores, capacitores, cristal, fontes de energia e aterramen-
tos que sero essenciais para o funcionamento correto do circuito.

Na Figura 5.3 mostrado o esquema do circuito, utilizado como base pa-


ra criao da placa.

Figura 5.3 Esquemtica do circuito no ISIS


Fonte: Autor

Aps a criao do modelo do circuito, o programa permite a gravao si-


mulada do cdigo fonte no microcontrolador PIC para que sejam feitos testes de
funcionalidade do sistema. necessrio o arquivo HEX gerado pelo CCS C Com-
piller ao compilar o cdigo fonte para que seja possvel abri-lo com o
microcontrolador. Depois de carregado o cdigo, o circuito j poder receber as ins-
trues exatas e operar de acordo com o programado, possibilitando os testes.

A Figura 5.4 ilustra a tela de gravao do PIC, utilizada para realizar os


testes no ambiente virtual.
51

Figura 5.4 Gravao do PIC ISIS


Fonte: Autor

Os testes so essenciais para observar quais componentes esto corre-


tamente conectados, se o funcionamento deles corresponde ao desejado. No
projeto, a escolha das portas de conexo no PIC foi feita com base na proximidade e
facilidade de ligao, salvo a conexo dos botes que foi feita nas portas RB5, RB6
e RB7 por serem portas que permitem interrupo essencial para o funcionamento
do projeto.

Mesmo o Proteus ISIS possibilitando testes em ambiente simulado,


aconselhado que testes sejam refeitos em ambiente fsico para que seja possvel
garantir o nvel de preciso desejado. Com isso, foi necessrio a elaborao dos
circuitos em um sistema fsico para realizao de novos testes

Aps serem feitos os testes e decididos os componentes definitivamente,


possvel passar os dados contidos no PROTEUS ISIS para que seja feito o dese-
nho da placa utilizando o PROTEUS ARES.

5.3 Elaborao do Cdigo Fonte para o Microcontrolador PIC

Com a modelagem da ideia do sistema e a elaborao do circuito, a pr-


xima etapa a elaborao do cdigo fonte e testes utilizando o PROTEUS ISIS e
gravao no microcontrolador. Para escrita das linhas de comando e compilao do
cdigo foi utilizado o programa PIC C Compiler e para gravao do cdigo a ferra-
52

menta utilizada foi o kit de gravao PICkit 2 da Robtica Simples, que composto
por dispositivo e programa.

5.3.1 Escrita do Cdigo Fonte

O cdigo fonte foi escrito utilizando a linguagem C, por sua facilidade e al-
to nvel de programao, vantagens sobre a programao em ASSEMBLY. A
linguagem foi escolhida tambm pela grande biblioteca de exemplos e informaes
disponveis em livros e sites pela internet.

... a utilizao de uma linguagem de alto nvel como C permite que o pro-
gramador preocupe-se mais com a programao da aplicao em si, j que
o compilador assume para si tarefas como o controle e localizao das vari-
veis, verificao de bancos de memria, etc. (PEREIRA, 2007, p.18).

Tomando como base o fluxograma geral do sistema, e o modelo do circui-


to feito no PROTEUS ISIS contendo os componentes necessrios para o
funcionamento do projeto, o primeiro passo definir as diretivas de pr-compilao,
definies estas que so de extrema importncia para a correta compilao do cdi-
go.
Na Figura 5.5 so apresentadas as diretivas utilizadas na programao do
cdigo fonte do projeto e a frente de cada linha de comando, aps duas barras con-
juntas, um comentrio explicando sua funcionalidade.

Figura 5.5 Diretivas Pr-Compilao


1

Fonte: Autor
53

O Quadro 5.1 apresenta a descrio de cada comando utilizado.

Quadro 5.1 Diretivas do cdigo fonte.


Comando Descrio
#include Insere um arquivo texto externo a partir da posio atual.
#use delay Informa ao compilador a velocidade de clock do sistema de destino.
#use rs232 Ativa o suporte comunicao serial. Especificam: velocidade, pinos TX e RX.
#fuses Programa as opes da palavra de configurao (configuration word) do PIC.
#device Define o nome do processador utilizado.
#define Substitui o identificador pelo texto especificado imediatamente depois dele.
FONTE: PEREIRA, 2007.

Aps a definio de todas as diretivas necessrias para que o programa


possa ser compilado, so definidas as variveis utilizadas pelas funes. Para uma
melhor manipulao dos eventos e possibilidades do programa, foram criadas vari-
veis separadas para a Alimentao e Iluminao do aqurio, assim como
diferenciao entre hora, dezena dos minutos e unidade dos minutos, para que fi-
casse mais- fcil a interao do usurio ao configurar o intervalo desejado e tambm
para ajudar no entendimento da programao. O cdigo em questo trabalha com
variveis inteiras.

O projeto baseia-se nas interrupes que o sistema recebe tanto para


configurao do usurio por meio dos trs botes (mais, menos e configurao)
quanto por meio do timer. As interrupes so habilitadas por meio da instruo
mostrada na figura 5.6.

Figura 5.6 Habilitando as interrupes


Fonte: Autor

Para a criao da interrupo via botes, foi criada uma mquina de esta-
dos para que fosse mais fcil a transio entre cada um dos estados e definir cada
conjunto de funcionalidades disponveis para cada boto dependendo de qual esta-
do o sistema se encontrar. Foram criados doze modos para este projeto, cada modo
sendo uma tela diferente do programa.

No Quadro 5.2 mostrada a mquina de estados do projeto, com todas


as telas exibidas e o funcionamento dos botes em cada modo.
54

Quadro 5.2 Mquina de estados do projeto


AO

Estado Display Boto Modo Boto Mais Boto Menos

0 Aguardando Con- Estado se- Nada Nada


figurao guinte

1 Alimentao Estado se- Soma hora Subtrai hora


_ : 00 guinte

2 Alimentao Estado se- Soma minuto dezena Subtrai minuto dezena


0:_0 guinte

3 Alimentao Estado se- Soma minuto unidade Subtrai minuto unidade


0:0_ guinte

4 Confirmar Nada Confirma configurao Nega configurao e


X:YZ volta para o modo 1
S/N?

5 Alimentar Nada Executa a alimentao e Estado seguinte


Agora? S/N passa para o modo seguinte

6 Iluminao Estado se- Soma hora Subtrai hora


_: 00 guinte

7 Iluminao Estado se- Soma minuto dezena Subtrai minuto dezena


0:_0 guinte

8 Iluminao Estado se- Soma minuto unidade Subtrai minuto unidade


0:0_ guinte

9 Confirmar Nada Confirma configurao Nega configurao e


X:YZ volta para o modo 6
S/N?

10 Iluminar Agora? Nada Executa a iluminao e pas- Estado seguinte


S/N sa para o modo seguinte

11 Alim: x:xx Retorna ao Nada Nada


Ilum y:yy estado 1.

Fonte: Autor
55

Para a programao da interrupo do timmer, foi utilizado o prprio tim-


mer presente no PIC16F877A. Parte da funo do clock mostrada na Figura 5.7.

Figura 5.7 Funo do clock


Fonte: Autor

O cristal escolhido para o projeto foi o de 4MGHZ, o que influencia no clock


geral do microcontrolador. Utilizando-se de um prescaler de 64 bits para que seja
dividido o sinal, temos uma frequncia de entrada no timer 0 de 15625 Hz. Dividindo
este sinal por 125, temos exatamente 125 Hz, e para que o programa divida o sinal
por 125 para obtermos uma interrupo por segundo, basta iniciar a contagem com
o valor 131 (256-125). Esse clculo necessrio para calibrar exatamente o timer do
microcontrolador para que funcione o mais precisamente possvel. O projeto foi feito
para interrupes a cada 30 segundos para facilitar a utilizao da funo de tempo
esgotado caso no haja interao com o sistema durante esses 30 segundos.

A interrupo por meio do timer funciona para que ocorra a contagem re-
gressiva e o usurio possa ter noo de quanto tempo falta para a execuo da
prxima operao. Assim que o contador mostrado no display chega a zero, indica
que ocorreu o estouro do clock, acionando a interrupo e executando as funes
programadas.
56

H tambm uma interrupo por meio de um timmer, que foi criada com o
objetivo de prever ocasional descuido do usurio ao apertar o boto de configurao
sem a real inteno de configurar o dispositivo. Funciona para definir o tempo que o
sistema pode ficar ocioso, ou seja, se deixado de lado por 30 segundos sem que
nenhum boto seja apertado, o timer grava as configuraes que tiverem sido con-
firmadas e volta para a tela da contagem regressiva.

O programa completo e comentado pode ser encontrado no ANEXO A.

5.3.2 Compilao e Gravao do Cdigo Fonte

Com o cdigo fonte escrito, o prximo passo a sua compilao, com a


utilizao do PIC C Compiler, para que sejam gerados os arquivos necessrios para
a simulao e a gravao no PIC.

Na Figura 5.8 mostrada a tela de compilao com sucesso, exibindo os


arquivos gerados e a quantidade de memria utilizada pelo microcontrolador.

Figura 5.8 - Tela de compilao ISIS


Fonte: Autor

Pressionando o boto para compilar (F9), o compilador comea uma srie


de verificaes de sinttica, semntica e lgica no cdigo, verificando possveis er-
ros que precisem ser corrigidos antes da compilao de fato. Caso haja algum
problema, o programa indica o tipo de erro ocorrido assim como a linha em que esse
57

erro possivelmente ocorreu. Se no houve nenhum erro, o compilador gera oito ar-
quivos com extenses diversas, sendo uma delas HEX que ser utilizada tanto
para a simulao quanto para a gravao no PIC.

A gravao no microcontrolador PIC feita com auxlio do kit de gravao


PICkit, as etapas de gravao seguem as descritas na seo Utilizao do Kit de
Gravao PICkit - do captulo anterior.

5.4 Montagem dos Circuitos nas Placas

As placas de circuito deste projeto foram feitas em placa de fenolite co-


breada de face nica. Neste tpico, ser feita a descrio detalhada dos passos
necessrios para a sua confeco. Para a criao do layout da placa, utilizado o
software Proteus ISIS 7 Professional e Proteus ARES 7 Professional.

5.4.1 Proteus ARES

O programa Proteus ARES tem a finalidade de fazer o desenho esquem-


tico que ser impresso na placa, para que se possa utiliz-lo tanto como guia ao
conectar os componentes, quanto ao queimar a placa com o Percloreto criando as
trilhas de cobre.

O design do programa e seu funcionamento se assemelham ao ISIS, on-


de h uma tela onde sero dispostos os componentes que devem ser escolhidos
atravs de uma lista contendo vrios modelos e tipos para melhor se adequar ao
projeto. importante que todos sejam cuidadosamente escolhidos e posicionados
pois a partir deste modelo que ser feita a placa do circuito.

O objetivo do projeto foi fazer com que a placa fosse a menor possvel, vi-
sando um melhor acabamento final. Para isso preciso se atentar ao cruzamento
das trilhas que ligam os dispositivos, pois nenhuma das trilhas de cobre pode se
cruzar. Caso ocorra a necessidade, utilizado um jumper que faz o papel de ponte,
passando por cima da trilha.
58

Na Figura 5.9 mostrado o esquema criado, mostrando o posicionamento


de cada componente na placa e suas devidas conexes.

Figura 5.9 Esquemtico ARES


Fonte: Autor

5.4.3 Criao da Placa

A placa de fenolite comprada para o projeto cobreada de face nica, ou


seja, ela possui uma de suas faces completamente coberta em cobre. Para que des-
ta placa sejam feitas as trilhas dos circuitos, foi utilizado o resultado do programa
ARES impresso em uma folha de papel couche para ser pressionado contra a placa
e aquecido com ferro quente para que pudesse ser transferido o desenho impresso
para a superfcie da placa como mostra a Figura 5.10

Figura 5.10 Impresso ARES e placa Impressa


Fonte: Autor
59

A tinta marca a placa por meio do calor, e vai definir as reas onde ficaro
as trilhas de cobre. As imperfeies provenientes da impresso foram corrigidas uti-
lizando caneta preta de CD. Impressa, a placa precisa ser mergulhada numa
soluo de Percloreto de Ferro que queimar o cobre da placa salvo os locais mar-
cados para a trilha. A Figura 5.11 ilustra este processo em andamento.

Figura 5.11 Placa mergulhada no Percloreto


Fonte: Autor

Como resultado, as trilhas ficam bem definidas, prontas para conduzir energia
entre os componentes da placa. O prximo passo furar o local onde eles sero
posicionados e sold-los em seus respectivos lugares, soldando tambm a trilha pa-
ra evitar oxidao do cobre. Na Figura 5.12 possvel observar a placa com as
trilhas e componentes soldados.

Figura 5.12 Placa pronta e soldada


Fonte: Autor
60

5.5 Montagem do Prottipo

A maquete construda para a demonstrao do projeto consiste de um


aqurio plantado de 40 cm x 20 cm x 30 cm no qual ser acoplado o alimentador, e
a iluminao ser ligada diretamente na placa do projeto para que seja efetuado o
seu controle.

Na Figura 5.13 mostrada a placa e conexes do circuito, a iluminao e


o aqurio utilizado para testes e demonstrao do projeto.

Figura 5.13 Aqurio, iluminao e circuito


Fonte: Autor

A descrio de como foi feita a confeco do dispositivo de alimentao


ser feita a seguir.

5.5.1 Dispositivo de Alimentao

O dispositivo de alimentao consiste de um tudo de mini CDs usado para


conter a rao para peixes contendo furos em locais espaados para que o alimento
seja despejado quando o motor girar o dispositivo. O tubo contm trs grupos de
furos, para um melhor ajuste da quantidade que ser despejada no aqurio e pe-
quenos adesivos que sero utilizados para tampar alguns dos buracos para que a
dosagem seja mais precisa e de acordo com a necessidade do usurio.

O motor ser acoplado ao tubo de CDs e ser preso a uma haste de me-
tal semi-flexvel para que seja possvel dobrar o dispositivo em direo ao centro do
61

aqurio. A haste presa a uma pea de metal em formato de U que ser a forma
que o dispositivo ficar preso ao aqurio como mostra a Figura 5.14.

Figura 5.14 Dispositivo de alimentao


Fonte: Autor
62

CAPTULO 6 RESULTADOS OBTIDOS

Neste captulo so apresentados os resultados obtidos para efetivamente


solucionar o problema apresentado no Captulo 2 Apresentao do Problema
atravs da realizao de simulaes. So apresentados tambm alguns problemas
encontrados.

6.1 Simulaes

Esta fase do trabalho tem como objetivo o teste e comprovao do funci-


onamento do projeto. As simulaes testaro todas as possibilidades de
configurao e funcionalidades que o projeto possui para atender as necessidades
do usurio. As metas dos testes so:

Configurao da Alimentao e Iluminao;

Teste do Dispositivo de Alimentao;

Teste do Acionamento da Iluminao

Para iniciar os testes, primeiramente o prottipo e a iluminao foram li-


gados na tomada para ser realizada a configurao.

6.1.1 Configurao da Alimentao e Iluminao

Esta simulao tem como finalidade observar o funcionamento do disposi-


tivo ao ser ligado, passando por todas as telas de configurao. Este teste foi
executado em torno de 20 vezes, de forma a comprovar que o dispositivo est reali-
zando todas as etapTas laborais do sistema. Os passos desta simulao foram:
63

Ligar o interruptor do dispositivo e da Iluminao. Ser mostrada


uma mensagem no LCD, indicando que est ligado e aguardando
configurao, conforme mostrado na figura 6.1;

Figura 6.1 Tela aguardando configurao


Fonte: Autor

Ao pressionar a tecla de configurao (vermelha) ser mostrada a


tela de configurao do intervalo de alimentao, permitindo o ajus-
te da hora, dezena dos minutos e unidade dos minutos do intervalo
pressionando a tecla de configurao para passar entre os campos
de configurao como mostra a figura 6.2. Caso seja fornecido o
horrio 0:00, ser considerado que o usurio no quer que o con-
trole da alimentao seja executado;

Figura 6.2 Tela configurao do intervalo


Fonte: Autor
64

Feita a configurao, ser mostrada uma tela de confirmao, caso


tenha sido feita alguma configurao errada, pressiona-se a tecla
Menos/No para voltar ao modo anterior e realizar ajustes, caso
contrrio, aceitando as configuraes com o boto Mais/Sim levar
prxima tela. Na Figura 6.3 mostrada a tela de configurao;

Figura 6.3 Confirmao do intervalo de alimentao


Fonte: Autor

exibida uma tela de alimentao, perguntando se o usurio dese-


ja que ela seja feita imediatamente ou somente aps o intervalo
programado como mostrado na figura 6.4 caso a resposta seja
Sim, ou somente aps o intervalo configurado caso contrrio;

Figura 6.4 Tela alimentao imediata


Fonte: Autor
65

Comea a configurao da Iluminao, como mostra a figura 6.5,


que funcionar de modo idntico alimentao, iniciando-se com a
configurao do intervalo de iluminao. Caso seja fornecido o ho-
rrio 0:00, ser considerado que o usurio no quer que o controle
da iluminao seja executado.

Figura 6.5 Tela configurao do intervalo de iluminao


Fonte: Autor

Tela de confirmao da configurao da iluminao previamente


feita, com o mesmo funcionamento para reconfigurao apertando
a tecla Menos/No e confirmao apertando a tecla Mais/Sim como
mostra a Figura 6.6.

Figura 6.6 Confirmao do intervalo de iluminao


Fonte: Autor
66

A Figura 6.7 ilustra a ultima tela de configurao, pergunta se de-


seja alternar o estado da lmpada imediatamente ou somente aps
o intervalo escolhido.

Figura 6.7 Tela Iluminar imediatamente


Fonte: Autor

Na Figura 6.8, mostrada a tela de contagem regressiva, que fica-


r no display exibindo o tempo restante para que seja executada
cada operao.

Figura 6.8 Tela de contagem regressiva


Fonte: Autor
67

O usurio pode pressionar novamente o boto de configurao ca-


so queira fazer as alteraes, iniciando novamente os passos
descritos acima.

Se o usurio apertar o boto de configurao sem querer, ou confi-


gurar parte do sistema e no desejar configurar o resto, o sistema
voltar para a tela de contagem regressiva automaticamente em 30
segundos caso no seja apertado nenhum boto, ou para a tela de
configurao, caso no tenha sido feito nenhuma.

Os resultados obtidos nesta primeira etapa do dispositivo demonstraram


um funcionamento satisfatrio. Este teste foi indispensvel para ajustes finos como o
que seria escrito em cada tela e o ajuste de delay nos botes. No ocorreram erros
no sistema, mostrando-se ser de fcil configurao e intuitivo para o usurio.

6.1.2 Teste do Dispositivo de Alimentao

O teste do dispositivo de alimentao tem como objetivo observar o seu


funcionamento utilizando a rao de peixe e observar se a quantidade despejada
desejvel, visando as alteraes na quantidade de furos que o compartimento preci-
sa possuir e ajustar essas variveis velocidade do giro do motor de passo que
estar controlando o sistema. Para isso foram realizados cerca de 20 testes utilizan-
do rao para peixes em gros e observando a quantidade que seria despejada com
cada quantidade de furos contidos no dispositivo.

Todos os testes se mostram consistentes com o esperado, pois foi poss-


vel a comprovao que o alimento do peixe cai em quantidade satisfatria podendo
ser regulado dependendo da quantidade e tamanho dos peixes contidos no aqurio.
O adesivo escolhido para vedar os demais orifcios do dispositivo suficiente para
que no se desprendam com facilidade, e ainda permitem que sejam tirados e reco-
locados sem que a aderncia seja perdida.

A alimentao foi testada com rao em gros para peixe beta, por ser o
tipo de rao mais comum e a mais aplicvel no projeto pelo seu tamanho e seu pe-
so leve evitando sobrecargas no motor de passo.
68

Na Figura 6.9 ilustrado o teste do dispositivo de alimentao feito com a


rao de peixe em gros

Figura 6.9 Teste realizado com a rao


Fonte: Autor

6.1.3 Teste da Iluminao

O teste da iluminao do projeto foi feito ligando um abajur especfico


com uma lmpada fluorescente que no afetasse a temperatura do aqurio com o
calor gerado. A ligao da lmpada foi conectada a um dos bornes, sendo a ligao
do outro borne diretamente na tomada para energia. O projeto segue perfeitamente
o fluxograma mostrado na figura, sendo configurado e correspondendo s informa-
es fornecidas ao sistema.

O sistema foi testado como um todo, utilizando-se simultaneamente a ilu-


minao e a alimentao, comprovando os testes feitos no PROTEUS ISIS.
69

Primeiramente executada a alimentao do aqurio, em seguida acionando o rel,


alternando a iluminao. O projeto foi utilizado em situao real em um aqurio plan-
tado com a iluminao sendo alternada a cada 12 horas durante trs dias.

6.2 Problemas Encontrados

Pode ser observado que os testes de funcionamento realizados no PRO-


TEUS ISIS mostraram que o sistema funcionaria perfeitamente de acordo com o
programado, mas houve algumas dificuldades de adaptao que uma simulao em
software no capaz de prever.

O funcionamento do motor de passo utilizado no projeto realizado de


forma diferente do modelo disposto no software. Tiveram de ser feitos diversos tes-
tes para que fosse descoberto o real funcionamento e como as informaes
deveriam ser mandadas para que fosse possvel realizar o giro de 360 necessrio
no projeto.

Outro problema no previsto foi na construo da placa. Ao preparar as


entradas na placa para driver de funcionamento do motor de passo, no foi conside-
rado o espao entre os furos na placa, o que tornou impossvel a sua conexo. Para
isso foi feita uma nova placa separada, que pudesse comportar o driver melhor.

Pequenos erros ao soldar o circuito, ao fazer os cabos necessrios, pe-


quenos ajustes na programao, queima de equipamentos por descuidos, tambm
fizeram parte na construo deste projeto ajudando para que o mesmo chegasse em
sua forma final.

O motor de passo utilizado no projeto, por ser um motor reciclado, no


suporta grande quantidade de peso no alimentador, limitando a quantidade de comi-
da que pode ser contida no dispositivo.
70

CAPTULO 7 CONSIDERAES FINAIS

7.1 Concluses

Neste trabalho foi desenvolvido um prottipo de aqurio automatizado. O


projeto aplica-se em aqurios de pequeno porte, executando rotinas bsicas de ali-
mentao e iluminao. Para a resoluo do problema proposto, foram necessrios
conhecimentos aplicados de microprocessadores, programao e circuitos eltricos.

O objetivo geral a automao programvel de rotinas cotidianas de um


aqurio. A correria da vida cotidiana traz uma constante falta de tempo e disposio
para realizar tarefas bsicas como cuidar como cuidar de um aqurio com o cuidado
que ele precisa. A exigncia da obrigao acaba sendo um estorvo para o dono, e
exatamente este o problema que o trabalho se prope a solucionar. A automao
aplicada visando maior conforto e liberdade para o dono e um cuidado mais atencio-
so s necessidades bsicas do animal.

Para a sua concretizao, foi necessrio o desenvolvimento de duas pla-


cas: a placa principal e a placa contendo o driver e os pinos de entrada do motor de
passo. Foi utilizado o PIC16F877A para controle dos componentes, um LCD para
fornecer informaes ao usurio, um motor de passo para girar o compartimento de
alimentao e um rel para o acionamento da lmpada.

Apesar dos problemas que surgiram ao longo do processo de elaborao


deste projeto, o objetivo do trabalho foi alcanado. O dispositivo realiza com eficcia
o controle e automao das rotinas de alimentao e iluminao do aqurio, sendo
de fcil configurao.

possvel concluir que os resultados obtidos cumpriram com as propos-


tas e os objetivos planejados para este trabalho e o prottipo encontra-se em
funcionamento e operando de acordo com a programao pretendida.

7.2 Propostas para Trabalhos Futuros

Aquarismo uma rea excelente para a automao, devido a necessida-


de de cuidado constante de todo um meio ambiente complexo e suas inmeras
71

variveis que tem que ser observadas e controladas como PH da gua, alimentao,
iluminao, temperatura e etc. O projeto atentou-se forma mais simples de cuidado
de um aqurio, restando ainda diversas outras oportunidades em que a automao
pode ser implementada para que o aqurio se torne completamente independente.
Algumas sugestes so:

Automao do controle de PH do aqurio;

Controle de Temperatura;

Tornar o projeto maior para se adequar s necessidades de aqu-


rios de maior porte;

Aplicar um novo motor de passo, que tenha potencia para movi-


mentar uma quantidade maior de rao no dispositivo de
alimentao.
72

REFERNCIAS BIBLIOGRFICAS

ABREU, R. S. Automao Residencial: um pouco de histria. Disponvel em:


http://www.aureside.org.br/publicacoes/download/automacao_residencial.zip. Acesso
em: 29 de setembro, 2012.

AQUALANDIA. Equipamentos (para Aqurio). Disponvel em:


http://www.aqualandia.com.br/site/aqualandia_equipamentos.html. Acesso em: 17 de
outubro, 2012.

AQUARISMO BRASILEIRO. Como cuidar do meu aqurio - Iniciantes. Disponvel


em: http://aquarismobrasileiro.com.br/art_anteriores/iniciantes.htm. Acesso em: 10
de outubro, 2012.

BORGES J, Hamilton J. OLIVEIRA, Renato A.B. Aqurio de gua Doce. Disponvel


em:
http://www.forumamordepeixe.com.br/download/aquariodeaguadocehistoricoeaulas.
pdf. Acesso em: 15 de outubro, 2012.

BRAGA, N. C. Tudo sobre rels. Revista Saber Eletrnica. Disponvel em:


http://www.metaltex.com.br/tudosobrereles/tudo1.asp. Acesso em: 16 de novembro,
2012.

BRITES Felipe G. SANTOS, Vinicius P. A. Motor de Passo. Disponvel em:


http://www.telecom.uff.br/pet/petws/downloads/tutoriais/stepmotor/stepmotor2k81119
.pdf. Acesso em: 10 de Novembro, 2012

CLICKINFORMAO. Cuidados Com Aqurio. Disponvel em:


http://www.clickinformacao.com.br/animais/cuidados-com-aquario-montar-
aquario.html Acesso em: 10 de Outubro, 2012.

COSTA, Helder. Domtica Edifcios Inteligentes. Disponvel em:


http://www.engenium.net/344/domotica-edificios-
inteligentes.html#78RPMj83XrfhdyE3.99. Acesso em: 15 de outubro, 2012.
73

COZZO,Reinaldo. Rels e Contratores. Disponvel em:


http://www.osetoreletrico.com.br/web/a-revista/edicoes/169-reles-e-contatores.html
Acesso em: 13 de Novembro, 2012

DOVICCHI, Joo. Estrutura de Dados: http://www.inf.ufsc.br/~dovicchi/pos-


ed/ebook/e-book_estrut_dados_dovicchi.pdf. Acesso em: 10 de Novembro 2012

FROTA, Yuri. Quadro Vivo. Disponvel em:


http://www.correiobraziliense.com.br/app/noticia/revista/2011/10/30/i275925/quadro-
vivo.html. Acesso em: 09 de outubro, 2012.

GROOVER, Mikell P. Automation, Production Systems and Computer Integrated


Manufacturing Systems. 2 Ed. Prentice Hall, 2000.

MICROCHIP TECHNOLOGY INC. PIC16F87XA. DataSheet: 28/40/44-Pin Enhanced


Flash Microcontrollers. 2003. Disponvel em: http://ww1.microchip.com/downloads/
en/devicedoc/39582b.pdf. Acesso em: 09 de setembro, 2012.

MICROCHIP TECHNOLOGY INC.. PICkit 2 Programmer/Debugger, Users Guide.


2008. LOCAL FALTANDO

PEREIRA, F. Microcontroladores PIC: Programao em C. 7. Ed. So Paulo: ri-


ca, 2007.

SOUZA, D. J. de; LAVINIA, N. C. Conectando o PIC 16F877A: Recursos Avana-


dos. 2. Ed. So Paulo: rica, 2005.

ZANCO, W. da S. Microcontroladores PIC com Base no PIC16F877A: Tcnicas


de Software e Hardware para Projetos de Circuitos Eletrnicos. 2. Ed. So Paulo:
rica, 2010.

HARPER, Richard. Inside the Smart Home. Springer Verlag, Bristol, 2003.

JUC, Sandro. Apostila de Microcontroladores PIC e Perifricos. Disponvel em


http://www.ebah.com.br/content/ABAAAAmX0AH/apostila-microcontroladores-pic-
perifericos.html. Acesso em: 20 de outubro, 2012.
74

MORAES, Ccero. CASTRUCCI, Plinio. Engenharia de Automao Industrial. 2


Ed. Editora LTC: FALTANDO LOCAL ,2007.

OLIVEIRA FILHO, Joo. A Iluminao do Aqurio. Disponvel em:


http://pt.scribd.com/doc/22707747/Aquariofilia-A-Iluminacao-Do-Aquario. Acesso em:
10 de outubro, 2012.

PATSKO, Luiz F. Tutorial Controle de Motor de Passo. Disponvel em:


http://www.maxwellbohr.com.br/downloads/robotica/mec1000_kdr5000/tutorial_eletro
nica_-_motor_de_passo.pdf. Acesso em: 10 de Novembro 2012

TAYLOR, J.E. The Aquarium: Its Inhabitants, Structure, and Management. 1


Edio. Edinburgh, 1910.

WEG. Motores eltricos. Disponvel em:


http://www.coe.ufrj.br/~richard/Acionamentos/Catalogo%20de%20Motores.pdf.
Acesso em: 10 de Novembro, 2012.
75

APNDICE A - CDIGO FONTE DO DISPOSITIVO

/*===========================================================================
PROJETO FINAL - Engenharia da Computao - UniCEUB
2o. Semestre de 2012

FILLIPE RIBEIRO GALIZA


RA: 2081731/9

AUTOMAO DE ROTINAS DE ALIMENTAO E ILUMINAO DE AQURIO DOMSTICO


===========================================================================*/

/*==========================================================================
DIRETIVAS DE PR-COMPILAO
==========================================================================*/
#include <16f877A.h> //Diretivas do PIC16F877A
#use delay(clock=4000000) //Cristal oscilador 4Mhz.
#fuses hs, nowdt, put //Fusveis
#fuses nobrownout, nolvp, noprotect
#fuses nocpd, nodebug
#use rs232(baud=9600, xmit=PIN_C6) //Transmisso a 9600 bps
//Sem paridade, 8 bits de dados
//Pino TX RC6.

#use fast_io(b) //D controle do I/O ao programador


#byte portb=0x06 //Enderea o portB
#bit btnModo=portb.7 //Define o boto modo no port B7
#bit btnMais=portb.6 //Define o boto mais no port B6
#bit btnMenos=portb.5 //Define o boto mais no port B5
#define MOT1 PIN_B1 //Define MOT1 como o pino B1 do motor
#define MOT2 PIN_B2 //Define MOT2 como o pino B2 do motor
#define MOT3 PIN_B3 //Define MOT3 como o pino B2 do motor
#define MOT4 PIN_B4 //Define MOT4 como o pino B2 do motor
#define LAMP PIN_D7 //Define LAMP como o pino D7 do Rel
#define INI_TMR0 131 //Define o TMR0 com valor inicial 131
#include <lcd-v2.0.h> //Biblioteca p/ o mdulo LCD
/*=========================================================================
VARIVEIS
=========================================================================*/

int horaIluminacaoDefinitivo=0;
int minutoDezenaIluminacaoDefinitivo=0;
int minutoUnidadeIluminacaoDefinitivo=0;
int horaAlimentacaoDefinitivo=0;
int minutoDezenaAlimentacaoDefinitivo=0;
int minutoUnidadeAlimentacaoDefinitivo=0;
int passo=0;
int passovalor=0;
int modo=0;
76

int horaAlimentacao=0;
int minutoDezenaAlimentacao=0;
int minutoUnidadeAlimentacao=0;
int horaIluminacao=0;
int minutoDezenaIluminacao=0;
int minutoUnidadeIluminacao=0;
int botaomais=0;
int botaomenos=0;
long contador=0;
signed int horaIluminacaoRestante=0;
signed int minutoDezenaIluminacaoRestante=0;
signed int minutoUnidadeIluminacaoRestante=0;
signed int horaAlimentacaoRestante=0;
signed int minutoDezenaAlimentacaoRestante=0;
signed int minutoUnidadeAlimentacaoRestante=0;

/*=========================================================================
CHAMADA INICIAL DAS FUNES BSICAS
=========================================================================*/

void botaoModoApertado(); //Controla os acontecimentos


//ao pressionar o boto configurao

void botaoMaisApertado(); //Controla os acontecimentos


//ao pressionar o boto de MAIS/SIM

void botaoMenosApertado(); //Controla os acontecimentos


//ao pressionar o boto de MENOS/NAO

void somaHoraAlimentacao(); //Soma a hora de 0 a 12 da Alimentao

void somaMinutoDezenaAlimentacao(); //Soma dezenas no minuto da Alimentao


void somaMinutoUnidadeAlimentacao(); //Soma unidades no minuto da Alimentao
void somaHoraIluminacao(); //Soma a hora de 0 a 12 da Iluminao
void somaMinutoDezenaIluminacao(); //Soma dezenas no minuto da Iluminao
void somaMinutoUnidadeIluminacao(); //Soma unidades no minuto da iluminao
void subHoraAlimentacao(); //Subtrai a hora de 0 a 12 da Alimentao
void subMinutoDezenaAlimentacao(); //Subtrai dezena no minuto da Alimentao
void subMinutoUnidadeAlimentacao(); //Subtrai unidade no minuto da Alimentao
void subHoraIluminacao(); //Subtrai a hora de 0 a 12 da Iluminao
void subMinutoDezenaIluminacao(); //Subtrai dezena no minuto da Iluminao
void subMinutoUnidadeIluminacao(); //Subtrai unidade do minuto da Iluminao
void exibeAlimentacaoHora(); //Exibe a tela de configurao da hora
//do intervalo de Alimentao

void exibeAlimentacaoDezena(); //Exibe a tela de configurao da dezena


//dos minutos do intervalo de Alimentao

void exibeAlimentacaoUnidade(); //Exibe a tela de configurao da unidade


//dos minutos do intervalo de Alimentao
77

void exibeAlimentacaoConfirmar(); //Exibe a tela confirmao Alimentao


void exibeAlimentacaoAgora(); //Exibe a tela de alimentao imediata
void confirmaAlimentacao(); //Confirma alimentao e salva variaveis
void alimentaAgora(); //Chama a funo girarMotor
void alimentarDepois(); //No executa alimentao e
//aguarda estouro do timer

void cancelaConfigAlimentacao(); //Retorna p/ configurao da alimentao


void timerAlimentacao(); //Contagem regressiva para alimentao
void setaTempoAlimRestante(); //Guarda as variveis definitivas de
//alimentao

void exibeIluminacaoHora(); //Exibe a tela de configurao da hora


//do intervalo de Iluminao

void exibeIluminacaoDezena(); //Exibe a tela de configurao da dezena


//dos minutos do intervalo de Iluminao

void exibeIluminacaoUnidade(); //Exibe a tela de configurao da unidade


//dos minutos do intervalo de Iluminao

void exibeIluminacaoConfirmar(); //Exibe a tela confirmao da Iluminao


void exibeIluminacaoAgora(); //Exibe a tela iluminao imediata
void iluminarAgora(); //Chama funo acionarLampada
void iluminarDepois(); //No executa iluminao e
//aguarda estouro do timer

void cancelaConfigIluminacao(); //Retorna p/ configurao da iluminao


void confirmaIluminacao(); //Confirma iluminao e salva variveis
void timerIluminacao(); //Contagem regressiva para alimentao
void setaTempoIlumRestante(); //Guarda as variveis definitivas de
//iluminao

void acionarLampada(); //Aciona o rel


void girarMotor(); //Aciona o motor de passo
void inicializar(); //Rotina de inicializao do dispositivo
void mostrarTempoRestante(); //Mostra o tempo restante para prxima
//operao

void theFinalCountDown(); //Zera o contador do modo e


//chama funo mostratemporestante

#int_RB //Interrupo pelos botes

void RB_isr(void){

if(!btnModo){ //Caso qualquer um dos botes seja


delay_ms(200);
botaoModoApertado(); //pressionado, chamar a funo
}else if(!btnMais){ //correspondente
delay_ms(200);
botaoMaisApertado();
78

}else if(!btnMenos){
delay_ms(200);
botaoMenosApertado();
}

int minuto = 0; //Flag que define se o contador


//contou 1 minuto ou 30 segundos

/*Funo que controla o TMR0 do PIC com o contador configurado para acionar a
interrupo a cada 1 minuto*/

#int_RTCC //Funo que controla o TMR0


//e aciona interrupo a cada 1 minuto

void clock_isr(void){

contador++; //incrementao da varivel contador


/*caso a varivel atinja o valor de 3750, o equivalente a 1 segundo executa
a instruo abaixo*/

if(contador >= 3750){ // 125 = 1s => 30s = 3750.


//a cada 30 segundos
contador = 0; //zera contador de interrupes.
if(minuto){
//a cada minuto
if (modo == 11){ //Caso nenhum boto seja pressionado
timerAlimentacao(); //em 30 segundos, volta para a tela
timerIluminacao(); //de contagem regressiva
mostrarTempoRestante();
}
minuto = 0;
}else{
minuto = 1;
}
//a cada 30 segundos
//sair do modo de configurao

if(modo!= 11){ //Caso modo seja diferente de 11,


//e no tenha sido feita configurao,
//volta para tela inicial

if(horaAlimentacaoDefinitivo == 0
&& minutoDezenaAlimentacaoDefinitivo == 0
&& minutoUnidadeAlimentacaoDefinitivo == 0
&& horaIluminacaoDefinitivo == 0
&& minutoDezenaIluminacaoDefinitivo == 0
&& minutoUnidadeIluminacaoDefinitivo == 0){

modo = 0;
printf(lcd_escreve, "\fAGUARDANDO\nCONFIGURACAO");
}else{ //fim if definitivos = 0
79

theFinalCountDown();

} //fim else modo = 11


}
}//fim if(contador >= 3750)
//a cada interrupo
set_timer0(131 - get_timer0()); //Subtrai 131 do valor atual do tmr0
//e reescreve no tmr0

/*=========================================================================
FUNO PRINCIPAL
=========================================================================*/

void main() {

inicializar();

while(true){

/*=========================================================================
FUNES
=========================================================================*/
/*=========================================================================
FUNO DE INICIALIZAO
=========================================================================*/

void inicializar(){
output_b(0x00);
set_tris_b(0b11100000); //Seta os pinos da porta B como entrada
lcd_ini(); //Rotina de inicializao do display
set_timer0(131); //Inicia o TMR0 com 131
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_64); //Configuraes TMR0 e prescaler
setup_timer_1(T1_DISABLED); //Desabilita timers 1 e 2
setup_timer_2(T2_DISABLED,0,1);
setup_vref(FALSE);

//habilitao das interrupes usadas

enable_interrupts(INT_RTCC); //Timer
enable_interrupts(INT_RB); //Interrupo na portB
enable_interrupts(GLOBAL); //Interrupes globais
80

lcd_escreve("\f");
printf(lcd_escreve, "\fAGUARDANDO\nCONFIGURACAO");
}
/*=========================================================================
FUNES DOS BOTES
=========================================================================*/

//Funo que controla os acontecimentos ao pressionar o boto de configurao

void botaoModoApertado(){
minuto = 0;
contador = 0;

switch(modo){

case 0: //No configurado ou


case 11: //contagem regressiva
exibeAlimentacaoHora(); //Avana para configurao hora
break;
case 1: //Configurao hora
exibeAlimentacaoDezena(); //Avana para config min (Dezena)
break;
case 2: //Config min (Dezena)
exibeAlimentacaoUnidade(); //Avana para config min (Unidade)
break;
case 3: //Config min (Unidade)
exibeAlimentacaoConfirmar(); //Avana para confirmar alimentao
break;
case 4: //Aguardando confirmao ajuste hora
break;
case 5: //Aguardando confirmao alimentao agora
break;
case 6: //Configurao hora Iluminao
exibeIluminacaoDezena(); //Avana para config min (Dezena)
break;
case 7: //Config minuto (Dezena)
exibeIluminacaoUnidade(); //Avana para config minuto (Unidade)
break;
case 8: //Config minuto (Unidade)
exibeIluminacaoConfirmar(); //Avana para confirmar iluminao
break;
case 9: //Aguardando confirmao ajuste hora
break;
case 10: //Aguardando confirmao iluminar agora
break;

}
}

//Funo que controla os acontecimentos ao apertar o boto Mais

void botaoMaisApertado(){
81

minuto = 0;
contador = 0;

switch(modo){

case 1:
somaHoraAlimentacao(); //Soma uma unidade na hora alimentao
break;
case 2:
somaMinutoDezenaAlimentacao(); //Soma uma unidade na dezena do minuto da
break; //alimentao
case 3:
somaMinutoUnidadeAlimentacao(); //Soma uma unidade no minuto da
break; //alimentao
case 4:
confirmaAlimentacao(); //Confirma configurao da alimentao
break;
case 5:
alimentaAgora(); //Chama funo giraMotor
break;
case 6:
somaHoraIluminacao(); //Soma uma unidade na hora alimentao
break;
case 7:
somaMinutoDezenaIluminacao(); //Soma uma unidade na dezena do minuto da
break; //alimentao
case 8:
somaMinutoUnidadeIluminacao(); //Soma uma unidade no minuto da
break; //Alimentao
case 9:
confirmaIluminacao(); //Confirma configurao da iluminao
break;
case 10:
iluminarAgora(); //Chama funo acionarLampada
break;

}
}

//Funo que controla os acontecimentos ao apertar o boto Menos

void botaoMenosApertado(){

minuto = 0;
contador = 0;

switch(modo){

case 1:
subHoraAlimentacao(); //Subtrai uma unidade na hora alimentao
break;
case 2:
82

subMinutoDezenaAlimentacao(); //Subtrai uma unidade na dezena do minuto


break; //da alimentao
case 3:
subMinutoUnidadeAlimentacao(); //Subtrai uma unidade no minuto da
break; //alimentao
case 4:
cancelaConfigAlimentacao(); //Cancela configurao e volta para a
break; //configurao da hora da alimentao
case 5:
alimentarDepois(); //Cancela alimentao imediata
break;
case 6:
subHoraIluminacao(); //Subtrai uma unidade na hora iluminao
break;
case 7:
subMinutoDezenaIluminacao(); //Subtrai uma unidade na dezena do minuto
break; //da iluminao
case 8:
subMinutoUnidadeIluminacao(); //Subtrai uma unidade no minuto da
break; //iluminao
case 9:
cancelaConfigIluminacao(); //Cancela configurao e volta para a
break; //configurao da hora da iluminao
case 10:
iluminarDepois(); //Cancela iluminao imediata
break;

}
}

/*=========================================================================
FUNES DO BOTO CONFIGURAO
=========================================================================*/

void exibeAlimentacaoHora(){
printf(lcd_escreve, "\fALIMENTAR\n%2d:%d%d",horaAlimentacao,
minutoDezenaAlimentacao, minutoUnidadeAlimentacao);
lcd_pos_xy(2,2); //Posiciona o cursor na posio da hora
modo = 1; //Passa para o modo seguinte
}

void exibeAlimentacaoDezena(){
printf(lcd_escreve, "\fALIMENTAR\n%2d:%d%d",horaAlimentacao,
minutoDezenaAlimentacao, minutoUnidadeAlimentacao);
lcd_pos_xy(4,2); //Posiciona o cursor na posio da dezena do minuto
modo = 2; //Passa para o modo seguinte
}
83

void exibeAlimentacaoUnidade(){
printf(lcd_escreve, "\fALIMENTAR\n%2d:%d%d",horaAlimentacao,
minutoDezenaAlimentacao, minutoUnidadeAlimentacao);
lcd_pos_xy(5,2); //Posiciona o cursor na posio da unidade do minuto
modo = 3; //Passa para o modo seguinte
}

void exibeAlimentacaoConfirmar(){
printf(lcd_escreve, "\fALIMENTAR %2d:%d%d\nConfirma? S/N",
horaAlimentacao, minutoDezenaAlimentacao, minutoUnidadeAlimentacao);
modo = 4; //Passa para o modo 4, anulando o boto modo
//at que seja respondida a pergunta
}
void exibeAlimentacaoAgora(){
printf(lcd_escreve, "\fALIMENTAR AGORA?\n S/N");
modo = 5; //Passa para o modo 5, anulando o boto modo
//at que seja respondida a pergunta
}

void exibeIluminacaoHora(){
printf(lcd_escreve, "\fILUMINAR\n%2d:%d%d",horaIluminacao,
minutoDezenaIluminacao, minutoUnidadeIluminacao);
lcd_pos_xy(2,2); //Posiciona o cursor na posio da hora
modo = 6;
}

void exibeIluminacaoDezena(){
printf(lcd_escreve, "\fILUMINAR\n%2d:%d%d",horaIluminacao,
minutoDezenaIluminacao, minutoUnidadeIluminacao);
lcd_pos_xy(4,2); //Posiciona o cursor na posio da dezena do minuto
modo = 7; //Passa para o modo seguinte
}

void exibeIluminacaoUnidade(){
printf(lcd_escreve, "\fILUMINAR\n%2d:%d%d",horaIluminacao,
minutoDezenaIluminacao, minutoUnidadeIluminacao);
lcd_pos_xy(5,2); //Posiciona o cursor do LCD na posio da unidade
//do minuto
modo = 8; //Passa para o modo seguinte
}

void exibeIluminacaoConfirmar(){
printf(lcd_escreve, "\fILUMINAR %2d:%d%d\nConfirma? S/N",
horaIluminacao, minutoDezenaIluminacao, minutoUnidadeIluminacao);
modo = 9; //Passa para o modo 9, anulando o boto modo
//at que seja respondida a pergunta
}

void exibeIluminacaoAgora(){
printf(lcd_escreve, "\fILUMINAR AGORA?\n S/N");
modo = 10; //Passa para o modo 10, anulando o boto modo
84

//at que seja respondida a pergunta


}

void theFinalCountDown(){
//contagem regressiva
mostrarTempoRestante(); //Passa para o modo 11 e exibe
modo=11; //a contagem regressiva
contador = 0;
}

void mostrarTempoRestante(){ //Exibe o tempo restante para a prxima operao


printf(lcd_escreve, "\fALIM - %2d:%d%d", horaAlimentacaoRestante,
minutoDezenaAlimentacaoRestante, minutoUnidadeAlimentacaoRestante);
printf(lcd_escreve, "\nILUM - %2d:%d%d", horaIluminacaoRestante,
minutoDezenaIluminacaoRestante, minutoUnidadeIluminacaoRestante);
}

/*=========================================================================
FUNES DO BOTO MAIS
=========================================================================*/

void somaHoraAlimentacao(){

if (horaAlimentacao == 12)
horaAlimentacao = 0;
else
horaAlimentacao++; //Soma uma unidade na hora na alimentao

printf(lcd_escreve, "\fALIMENTAR\n%2d:%d%d",horaAlimentacao,
minutoDezenaAlimentacao, minutoUnidadeAlimentacao);
lcd_pos_xy(2,2); //Posiciona o cursor na posio da hora
}

void somaMinutoDezenaAlimentacao(){

if (minutoDezenaAlimentacao == 5)
minutoDezenaAlimentacao = 0;
else
minutoDezenaAlimentacao++; //Soma uma unidade na dezena do minuto
//da alimentao
printf(lcd_escreve, "\fALIMENTAR\n%2d:%d%d",horaAlimentacao,
minutoDezenaAlimentacao, minutoUnidadeAlimentacao);
lcd_pos_xy(4,2); //Posiciona o cursor na posio da dezena
//do minuto
}

void somaMinutoUnidadeAlimentacao(){
85

if (minutoUnidadeAlimentacao == 9)
minutoUnidadeAlimentacao = 0;
else
minutoUnidadeAlimentacao++; //Soma uma unidade do minuto da alimentao

printf(lcd_escreve, "\fALIMENTAR\n%2d:%d%d",horaAlimentacao,
minutoDezenaAlimentacao, minutoUnidadeAlimentacao);
lcd_pos_xy(5,2); //Posiciona o cursor na posio da unidade
//do minuto
}

void somaHoraIluminacao(){

if (horaIluminacao == 12)
horaIluminacao = 0;
else
horaIluminacao++; //Soma uma unidade na hora da iluminao

printf(lcd_escreve, "\fILUMINAR\n%2d:%d%d",horaIluminacao,
minutoDezenaIluminacao, minutoUnidadeIluminacao);
lcd_pos_xy(2,2); //Posiciona o cursor na posio da hora

void somaMinutoDezenaIluminacao(){

if (minutoDezenaIluminacao == 5)
minutoDezenaIluminacao = 0;
else
minutoDezenaIluminacao++; //Soma uma unidade na dezena do minuto
//da iluminao
printf(lcd_escreve, "\fILUMINAR\n%2d:%d%d",horaIluminacao,
minutoDezenaIluminacao, minutoUnidadeIluminacao);
lcd_pos_xy(4,2); //Posiciona o cursor na posio da dezena
//do minuto
}

void somaMinutoUnidadeIluminacao(){

if (minutoUnidadeIluminacao == 9)
minutoUnidadeIluminacao = 0;
else
minutoUnidadeIluminacao++; //Soma uma unidade do minuto da iluminao

printf(lcd_escreve, "\fILUMINAR\n%2d:%d%d",horaIluminacao,
minutoDezenaIluminacao, minutoUnidadeIluminacao);
lcd_pos_xy(5,2); //Posiciona o cursor na posio da unidade
//do minuto
}

void confirmaAlimentacao(){
horaAlimentacaoDefinitivo = horaAlimentacao;
86

minutoDezenaAlimentacaoDefinitivo = minutoDezenaAlimentacao;
minutoUnidadeAlimentacaoDefinitivo = minutoUnidadeAlimentacao;
setaTempoAlimRestante();

exibeAlimentacaoAgora(); //Salva as variveis provisrias para as


clock_isr(); //definitivas e aciona o clock

void setaTempoAlimRestante(){ //Salva os valores para as variveis a serem


//decrementadas
horaAlimentacaoRestante=horaAlimentacaoDefinitivo;
minutoDezenaAlimentacaoRestante=minutoDezenaAlimentacaoDefinitivo;
minutoUnidadeAlimentacaoRestante=minutoUnidadeAlimentacaoDefinitivo;
}

void alimentaAgora(){
printf(lcd_escreve, "\fALIMENTANDO\nAguarde...");
girarMotor(); //Aciona o motor de passo
exibeIluminacaoHora();

void confirmaIluminacao(){
horaIluminacaoDefinitivo = horaIluminacao;
minutoDezenaIluminacaoDefinitivo = minutoDezenaIluminacao;
minutoUnidadeIluminacaoDefinitivo = minutoUnidadeIluminacao;
setaTempoIlumRestante();
exibeIluminacaoAgora(); //Salva as variveis provisrias para as
clock_isr(); //Definitivas e aciona o clock

void setaTempoIlumRestante(){ //Salva os valores para as variveis a serem


//decrementadas
horaIluminacaoRestante=horaIluminacaoDefinitivo;
minutoDezenaIluminacaoRestante=minutoDezenaIluminacaoDefinitivo;
minutoUnidadeIluminacaoRestante=minutoUnidadeIluminacaoDefinitivo;
}

void iluminarAgora(){ //Aciona a lmpada e exibe a


//contagem regressiva

acionarLampada();
theFinalCountDown();

}
87

/*=========================================================================
FUNES DO BOTO MENOS
=========================================================================*/

void subHoraAlimentacao(){

if (horaAlimentacao == 0)
horaAlimentacao = 12;
else
horaAlimentacao--; //Soma uma unidade na hora na alimentao

printf(lcd_escreve, "\fALIMENTAR\n%2d:%d%d",horaAlimentacao,
minutoDezenaAlimentacao, minutoUnidadeAlimentacao);
lcd_pos_xy(2,2); //Posiciona o cursor na posio da hora

void subMinutoDezenaAlimentacao(){

if (minutoDezenaAlimentacao == 0)
minutoDezenaAlimentacao = 5;
else
minutoDezenaAlimentacao--; //Soma uma unidade na dezena do minuto
//na alimentao
printf(lcd_escreve, "\fALIMENTAR\n%2d:%d%d",horaAlimentacao,
minutoDezenaAlimentacao, minutoUnidadeAlimentacao);
lcd_pos_xy(4,2); //Posiciona o cursor na posio da dezena
//do minuto

void subMinutoUnidadeAlimentacao(){

if (minutoUnidadeAlimentacao == 0)
minutoUnidadeAlimentacao = 9;
else
minutoUnidadeAlimentacao--; //Subtrai uma unidade no minuto
//da alimentao

printf(lcd_escreve, "\fALIMENTAR\n%2d:%d%d",horaAlimentacao,
minutoDezenaAlimentacao, minutoUnidadeAlimentacao);
lcd_pos_xy(5,2); //Posiciona o cursor na posio da unidade
//do minuto
}
88

void subHoraIluminacao(){

if (horaIluminacao == 0)
horaIluminacao = 12;
else
horaIluminacao--; //Soma uma unidade na hora na iluminao

printf(lcd_escreve, "\fILUMINAR\n%2d:%d%d",horaIluminacao,
minutoDezenaIluminacao, minutoUnidadeIluminacao);
lcd_pos_xy(2,2); //Posiciona o cursor na posio da hora

void subMinutoDezenaIluminacao(){

if (minutoDezenaIluminacao == 0)
minutoDezenaIluminacao = 5;
else
minutoDezenaIluminacao--; //Soma uma unidade na dezena do minuto
//na iluminao

printf(lcd_escreve, "\fILUMINAR\n%2d:%d%d",horaIluminacao,
minutoDezenaIluminacao, minutoUnidadeIluminacao);
lcd_pos_xy(4,2); //Posiciona o cursor na posio da dezena
//do minuto

void subMinutoUnidadeIluminacao(){

if (minutoUnidadeIluminacao == 0)
minutoUnidadeIluminacao = 9;
else
minutoUnidadeIluminacao--; //Soma uma unidade na unidade do minuto
//na alimentao

printf(lcd_escreve, "\fILUMINAR\n%2d:%d%d",horaIluminacao,
minutoDezenaIluminacao, minutoUnidadeIluminacao);
lcd_pos_xy(5,2); //Posiciona o cursor na posio da unidade
//do minuto
}

void cancelaConfigAlimentacao(){
exibeAlimentacaoHora(); //Cancela a configurao da alimentao
//e retorna ao modo de configurao da hora
//da alimentao
}

void cancelaConfigIluminacao(){
exibeIluminacaoHora(); //Cancela a configurao da alimentao
89

//e retorna ao modo de configurao da hora


//da iluminao
}

void alimentarDepois(){ //Cancela alimentao imediata e passa


//para a configurao da iluminao
exibeIluminacaoHora();

void iluminarDepois(){

theFinalCountDown(); //Cancela a iluminao imediata e passa


//para a contagem regressiva para a prxima
} //operao

/*=========================================================================
FUNES DE OPERAO
=========================================================================*/

void girarMotor(){ //Gira o motor de passo 360

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
output_low(MOT2);
90

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2);
91

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2);

delay_ms(500);
output_high(MOT3);
output_low(MOT4);
output_low(MOT1);
92

output_low(MOT2);

delay_ms(500);
output_low(MOT3);
output_high(MOT4);
output_low(MOT1);
output_low(MOT2); passo++;

void acionarLampada(){

output_toggle(LAMP); //Aciona o pino que o rel est ligado

/*=========================================================================
FUNES TIMER
=========================================================================*/

void timerAlimentacao(){ //Decrementador do tempo de Alimentao

if(horaAlimentacaoRestante == 0
&& minutoDezenaAlimentacaoRestante == 0
&& minutoUnidadeAlimentacaoRestante == 0){

}
else{

minutoUnidadeAlimentacaoRestante--;
if (minutoUnidadeAlimentacaoRestante < 0){
minutoUnidadeAlimentacaoRestante = 9;
minutoDezenaAlimentacaoRestante--;
}
if (minutoDezenaAlimentacaoRestante < 0){
minutoDezenaAlimentacaoRestante = 5;
horaAlimentacaoRestante--;
}
if (horaAlimentacaoRestante == 0
&& minutoDezenaAlimentacaoRestante == 0
&& minutoUnidadeAlimentacaoRestante == 0){
printf(lcd_escreve, "\fALIMENTANDO\nAguarde...");
girarMotor();
setaTempoAlimRestante();
}
}
}
93

void timerIluminacao(){ //Decrementador do tempo de iluminao

if (horaIluminacaoRestante == 0
&& minutoDezenaIluminacaoRestante == 0
&& minutoUnidadeIluminacaoRestante == 0){
}

else
{

minutoUnidadeIluminacaoRestante --;

if (minutoUnidadeIluminacaoRestante < 0){


minutoUnidadeIluminacaoRestante = 9;
minutoDezenaIluminacaoRestante --;
}
if (minutoDezenaIluminacaoRestante < 0){
minutoDezenaIluminacaoRestante = 5;
horaIluminacaoRestante --;
}
if (horaIluminacaoRestante == 0
&& minutoDezenaIluminacaoRestante == 0
&& minutoUnidadeIluminacaoRestante == 0){

acionarLampada();
setaTempoIlumRestante();
}
}
}

Você também pode gostar