Você está na página 1de 83

UNIVERSIDADE POSITIVO

NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS

CURSO DE ENGENHARIA DA COMPUTAÇÃO

GABRIEL AMARO DA LUZ E JULIANA LISBOA DOS SANTOS

Sistema de Automação de Estoque

Trabalho de Conclusão de Curso.

Prof. M. Sc. Marcelo Mikosz Gonçalves Orientador

Curitiba, dezembro de 2011


UNIVERSIDADE POSITIVO

Reitor: José Pio Martins

Pró-Reitora Acadêmica: Prof. Marcia Sebastiani

Coordenador do Curso de Engenharia da Computação: Prof. Leandro


Henrique de Souza
TERMO DE APROVAÇÃO

Gabriel Amaro da Luz e Juliana Lisboa dos Santos

Sistema de Automação de Estoque

Monografia aprovada como requisito parcial a conclusão do curso


Engenharia da Computação da Universidade Positivo, pela seguinte banca
examinadora:

Prof. Marcelo Mikosz Gonçalves (Orientador)

Prof. Alessandro Brawerman (Membro)

Prof. Mauricio Perretto (Membro)

Prof. Giancarlo de França Aguiar (Membro)

Curitiba, dezembro de 2011

i
AGRADECIMENTOS

Juliana Lisboa dos Santos

Primeiramente gostaria de agradecer a Deus, pois sem ele nada disso seria
possível. Agradeço e dedico este projeto a minha mãe que esteve ao meu lado
incondicionalmente em todos os momentos. Agradeço aos meus colegas de classe
que sempre me ajudaram e contribuíram de alguma forma para a realização desse
projeto. Agradeço a todos os professores, pois com seus ensinamentos foi possível
realizar esse projeto. Agradeço em especial o professor Marcelo Mikosz, por todo o
suporte prestado durante o desenvolvimento desse projeto, por ter sido
compreensivo e nos ajudar a concluir mais uma etapa importante em nossas vidas.

Gabriel Amaro da Luz

Gostaria de agradecer primeiramente a minha namorada, que me apoiou e


me aturou enquanto todo o projeto era desenvolvido e ela era deixada em segundo
plano. Aos meus pais que me apoiaram durante todo o curso e toda a trajetória da
minha vida. A todos os colegas e amigos que de alguma forma ajudaram no
desenvolvimento desse projeto. Agradeço ao professor Marcelo Mikosz, nosso
orientador, pela grande ideia que foi esse projeto e pelo apoio que tive dele durante
o projeto. Obrigado a todos que de alguma forma sujaram a mão com as nossas
roldanas e motores sujos.

Agradecimentos gerais:

Gostaríamos de agradecer o Sr. Ricardo Fontanari de Carvalho, por toda


ajuda prestada na confecção da parte mecânica do projeto, pois sem ele nada disso
seria possível, agradecemos também nosso amigo Henrique que por várias vezes
nos ajudou a corrigir erros do software, sua ajuda foi imprescindível. Agradecemos
também o Jagher que nos ajudou a confeccionar as primeiras placas do projeto.

ii
SUMÁRIO

1. INTRODUÇÃO .................................................................................................................................. 1
2. FUNDAMENTAÇÃO TEÓRICA ........................................................................................................... 3
2.1 Motor ...................................................................................................................................... 3
2.1.1 Motor Corrente Contínua.................................................................................................... 3
2.2 Microntrolador ........................................................................................................................ 5
2.3 Microcontrolador PIC16F877A ................................................................................................ 8
2.4 Chaves de Fim de Curso ........................................................................................................ 10
2.5 Optoacoplador ...................................................................................................................... 11
2.6 Encoder .................................................................................................................................. 12
3. TRABALHOS RELACIONADOS ......................................................................................................... 14
3.1 Estoque Automatizado Via Comando De Voz ....................................................................... 14
3.2 Estacionamento Automatizado ............................................................................................. 14
4. ANÁLISE DE REQUISITOS ............................................................................................................... 15
4.1 Funcionalidade ...................................................................................................................... 15
4.2 Confiabilidade ....................................................................................................................... 15
4.3 Eficiência ............................................................................................................................... 16
4.4 Usabilidade ............................................................................................................................ 16
4.5 Mantenibilidade .................................................................................................................... 16
5. ESPECIFICAÇÃO E REALIZAÇÃO DOS CASOS DE USO ..................................................................... 18
5.1 UC01 – Fornecedor................................................................................................................ 18
5.1.1 Cadastrar Fornecedor........................................................................................................ 20
5.1.2 Procurar Fornecedor ......................................................................................................... 21
5.1.3 Excluir Fornecedor............................................................................................................. 22
5.1.4 Alterar Fornecedor ............................................................................................................ 23
5.2 UC02 – Autenticar no Sistema .............................................................................................. 25
5.2.1 Autenticar no Sistema ....................................................................................................... 26
5.3 UC02 – Entrada / Saída Estoque............................................................................................ 26
5.3.1 Retirar Item ....................................................................................................................... 27
5.3.2 Entrada Item ...................................................................................................................... 28

iii
5.4 UC01 – Usuário ...................................................................................................................... 29
5.4.1 Cadastrar Usuário .............................................................................................................. 30
5.4.2 Excluir Usuário ................................................................................................................... 31
5.4.3 Alterar Usuário .................................................................................................................. 32
5.4.4 Pesquisar Usuário .............................................................................................................. 33
5.5 Diagrama de Casos de Uso Geral do Sistema........................................................................ 35
6. ESPECIFICAÇÃO DO PROJETO ........................................................................................................ 36
6.1 Visão Geral do Projeto .......................................................................................................... 36
6.2 Propriedades do Hardware ................................................................................................... 37
6.2.1 Interface com o Computador ............................................................................................ 37
6.2.2 Optoacopladores ............................................................................................................... 38
6.2.3 Chaves de Fim de Curso .................................................................................................... 40
6.2.4 Conversor de Nível MAX232 ............................................................................................. 40
6.2.5 Encoder .............................................................................................................................. 42
6.2.6 Circuito Driver dos Motores .............................................................................................. 42
6.3 Propriedades do Software..................................................................................................... 45
6.3.1 Software de Interface com o Usuário ............................................................................... 47
6.4 Propriedades do Firmware .................................................................................................... 48
7. VALIDAÇÃO E RESULTADOS........................................................................................................... 50
7.1 Testes de Hardware .............................................................................................................. 50
7.2 Testes de Software ................................................................................................................ 53
CONCLUSÃO .......................................................................................................................................... 58
REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................................................. 60
ANEXO A – CODIGO DO FIRMWARE...................................................................................................... 62

iv
LISTA DE ABREVIATURAS E SIGLAS

PC Personal Computer

USB Universal Serial Bus

UP Universidade Positivo

GND Ground

PIC Peripheral Integrated Controller

LED Light-emitting diode

MHz Megahertz

I/O Input/Output

DC Direct Current

CC Corrente Continua

A Ampere

V Volts

W Watts

A/D Analógico para Digital

RPM Rotações por minuto

CPU Central Process Unit

R/W Read/Write

CTC Counter Terrorist Unit

RS232 Recommended Standard 232

TTL Transistor-Transistor Logic

MAX232 Circuito integrado conversor de sinais

r11ok Comando enviado pelo software para o PIC(retirar posição x1y1


ok)

v
d11ok Comando enviado pelo software para o PIC(devolver posição
x1y1 ok)

CI Circuito Integrado

NA Normalmente Aberto

NF Normalmente Fechado

vi
LISTA DE FIGURAS

Figura 1 - Funcionamento do motor CC .................................................................................................. 4


Figura 2 - Motor CC com caixa de redução ............................................................................................. 5
Figura 3 - Esquema de um microcontrolador com os seus elementos básicos e ligações internas ....... 7
Figura 4 - Pinagem do microcontrolador PIC16F877A ............................................................................ 9
Figura 5 – Chave de fim de curso .......................................................................................................... 10
Figura 6 - Estrutura interna de uma chave de fim de curso .................................................................. 11
Figura 7 - Diagrama interno do optoacoplador 4N25 ........................................................................... 12
Figura 8 - Estrutura do enconder .......................................................................................................... 13
Figura 9 – Caso de uso fornecedor ........................................................................................................ 18
Figura 10 – Autenticação do usuário no sistema .................................................................................. 25
Figura 11 – Entrada e saída do estoque ................................................................................................ 26
Figura 12 – Diagrama do usuário .......................................................................................................... 29
Figura 13 – Diagrama de casos de uso geral ......................................................................................... 35
Figura 14 - Representação gráfica do projeto ....................................................................................... 37
Figura 15 - Circuito completo do sistema ............................................................................................. 38
Figura 16 - Esquemático entre optoacopladores 4N25 e PIC16F877 ................................................... 39
Figura 17 - Conexão das chaves de fim de curso com o PIC ................................................................. 40
Figura 18 - Conversor de nível Max232................................................................................................. 41
Figura 19 - Esquemático encoder e PIC ................................................................................................. 42
Figura 20 - Circuito de acionamento dos motores ................................................................................ 44
Figura 21 - Diagrama em blocos dos softwares e firmwares contidos no projeto ............................... 46
Figura 22 - Modelo entidade relacionamento ...................................................................................... 47
Figura 23 – Fluxograma firmware ......................................................................................................... 49
Figura 24 – Placas de relés e prateleira MDF ........................................................................................ 52
Figura 25 – Montagem das placas, cabos e fonte ................................................................................. 52
Figura 26 – Produto final ....................................................................................................................... 53
Figura 27 – Tela de login ....................................................................................................................... 54
Figura 28 – Cadastro de usuários .......................................................................................................... 55
Figura 29 – Cadastro de fornecedores .................................................................................................. 55
Figura 30 – Cadastro de produtos ......................................................................................................... 56
Figura 31 – Gerador de relatórios ......................................................................................................... 56
Figura 32 – Entrada de produtos........................................................................................................... 57
Figura 33 – Saída de produtos............................................................................................................... 57

vii
RESUMO

O objetivo deste trabalho consiste no desenvolvimento de um sistema de


controle de estoque automatizado. O objetivo foi desenvolver um hardware
necessário para realizar a busca e a entrega dos produtos e um software
responsável por gerenciar os cadastros de produtos, cadastro de fornecedores,
controle de estoque e relatórios. O sistema possui um elevador controlado por um
microcontrolador PIC para a retirada e entrega de ferramentas. O usuário faz a
solicitação através de um microcomputador que envia o pedido ao elevador, o
mesmo se movimenta para buscar a ferramenta desejada. A retirada e a entrega são
realizadas com a ajuda de dois motores CC que fazem a movimentação do elevador
nas coordenadas x e y. Após retirar a ferramenta da prateleira, a mesma é
depositada em uma esteira. Depois da entrega do objeto na esteira, essa inicia seu
movimento para levar a ferramenta em direção ao usuário. A esteira é composta por
chaves de fim de curso em suas extremidades que controlam seu inicio e parada.

Palavras-Chave: PIC, microcontrolador, string.

viii
ABSTRACT

The objective of this work is to develop a system of automated inventory


control. The ultimate goal is to develop the hardware necessary to perform the
search and delivery of products and software responsible for managing the product
registrations, registration of suppliers, inventory control and reporting. The system
has an elevator controlled by a PIC microcontroller for pickup and delivery tools. The
user will make the request through a personal computer that sends the request to lift
the same moves to get the desired tool. The pickup and delivery are carried out with
the help of two DC motors that make the movement of the elevator in the coordinates
x and y. After removing the tool from the shelf it is placed on a treadmill. After
delivery of the object on the mat, it starts its movement to the tool toward the user.
The mat is composed of key limit on their ends that control the start and stop the
treadmill.

ix
1

1. INTRODUÇÃO

Com a crescente necessidade de se produzir mais, aumentar a eficiência e


melhorar as condições de trabalho das indústrias, os processos automatizados têm
crescido no mercado para facilitar o processo industrial. Dentro deste conceito, foi
desenvolvido este sistema para automatização de estoques, com a proposta de
minimizar o custo de recurso humano com funcionários e também diminuir erros
nesta atividade.

O sistema consiste em um elevador automatizado para a retirada e entrega


de produtos. O usuário faz a solicitação através de um microcomputador que envia o
pedido ao elevador que se movimenta para buscar o produto desejado. A retirada e
entrega são realizadas com a ajuda de motores de corrente continua que fazem a
movimentação do elevador nas coordenadas X e Y. O produto é então entregue a
uma esteira que leva a ferramenta até o usuário. A esteira é composta por um motor
de corrente continua que fará a sua movimentação, e duas chaves de fim de curso,
uma em cada extremidade, que fazem a parada da esteira.

Após a entrega do produto na esteira, essa inicia seu movimento para levar
o produto em direção ao usuário. A esteira então para com o produto ao lado do
usuário, quando atinge uma das chaves de fim de curso. Após a utilização do
produto, caso ele seja retornável, o usuário devolve o mesmo a esteira, que inicia o
movimento contrário, levando o produto até o elevador, para que o elevador
encaminhe o produto para a prateleira correspondente.

O desenvolvimento deste sistema tem como principais objetivos a redução


de perdas de produtos, a estocagem de produtos em locais errados e a segurança
que envolve todo o processo em que o usuário deve guardar ou buscar um produto
em um estoque.

Após um estudo de mercado em algumas empresas que fazem a estocagem


de produtos, varias ideias surgiram que aos poucos motivaram no desenvolvimento
de todo o sistema de automação de estoque. Dentre estas ideias, a otimização de
espaços para valorizar áreas de fabricação tem uma importância muito grande. Com
esta otimização de espaço a intenção é, ao se colocar vários produtos um ao lado
2

do outro ou um em cima do outro, não sobrem espaços entre os produtos para que
ao final da estocagem mais produtos não caibam nas prateleiras.

O controle de vendas, fluxo de caixa e o planejamento financeiro também


estão entre estas ideias. Um sistema que controla todo o financeiro de uma empresa
é extremamente importante para ter o controle dos valores e as informações de
resultados da empresa.
3

2. FUNDAMENTAÇÃO TEÓRICA

Nesse capítulo será apresentada a fundamentação teórica necessária para o


desenvolvimento do projeto. O objetivo deste capítulo é apresentar conceitos e
tecnologias importantes que irão facilitar o entendimento do projeto pelo leitor.

2.1 Motor

O motor elétrico é um equipamento que tem por objetivo transformar energia


elétrica em mecânica. Este tipo de motor é o mais utilizado devido a varias
vantagens, como, baixo custo, facilidade de configuração e simplicidade de
manuseio. Com essas vantagens, o motor elétrico é vastamente utilizado em
diversas áreas, dentre elas na Engenharia da Computação.

O motor elétrico funciona baseado nos princípios do eletromagnetismo, onde


condutores que estão em um campo magnético, quando estes condutores recebem
correntes elétricas, eles sofrem uma ação de uma força mecânica, chamada de
torque.

No desenvolvimento deste projeto foram utilizados três motores para o


controle e movimentação dos eixos. Com eles os produtos podem ser alcançados
em todas as posições da prateleira.

2.1.1 Motor Corrente Contínua

O motor de corrente contínua precisa de pelo menos de um eletroímã para


funcionar. Na grande maioria dos motores, este eletroímã está localizado no centro
do motor, que gira dentro dos ímãs permanentes. Para que o motor gire é
necessário um torque, que é produzido por forças desenvolvidas entre os polos
magnéticos do rotor e do estator.
4

Estas forças geradas entre estator e rotor, fazem com que os polos móveis
do rotor sejam puxados e empurrados, gerando o movimento e produzindo o torque.
Isto faz com que o rotor gire mais e mais rapidamente, até que o torque seja
reduzido até parar o motor. Após esse inicio de movimentação, o rotor passa a girar
com velocidade angular constante. Como dito antes, para que o torque apareça e o
motor comece a girar, é necessário que tanto o rotor como o estator do motor sejam
“magnéticos”, pois são as forças entre seus polos que produzem o torque necessário
para fazer o rotor girar.

O rotor é um “eletroímã” que gira entre os polos de ímãs permanentes


estacionários do motor. O rotor possui um núcleo de ferro, que torna o eletroímã
mais eficiente e fortemente magnetizado. Para inverter o sentido do motor utiliza-se
o comutador.

O comutador é composto por duas placas de cobre encurvadas e fixadas


isoladamente no eixo do rotor, os terminais do enrolamento da bobina são soldados
nessas placas. A corrente elétrica chega por uma das escovas (+), entra pela placa
do comutador, passa pela bobina do rotor, sai pela outra placa do comutador e
retorna á fonte pela outra escova (-).

Nessa etapa o rotor realiza sua primeira meia-volta, como mostra a Figura 1.

Figura 1 - Funcionamento do motor CC

Fonte: http://www.feiradeciencias.com.br/sala22/motor_teoria1.asp
5

Dessa forma, as placas do comutador trocam seus contatos com as escovas


e a corrente inverte seu sentido de percurso na bobina do rotor. E o motor CC
continua girando, sempre com o mesmo sentido de rotação.

Neste projeto foram utilizados motores de corrente contínua nos eixos x e y


e também no movimento da esteira, para aumentar o torque dos motores foram
utilizados caixas de redução. Caixas de redução são engrenagens utilizadas para
reduzir a velocidade do movimento de rotação dos motores transferindo assim para
os eixos de tração. As caixas de redução utilizadas possuem de 12 a 31 dentes,
para reduzir aproximadamente 2000 RPM. A Figura 2 mostra um motor com caixa
redução:

Figura 2 - Motor CC com caixa de redução

Fonte: http://www.pc-control.co.uk/motor_pack.htm

2.2 Microntrolador

Os microcontroladores são circuitos integrados, que são implementados em


um chip. Neste chip existe uma CPU, memória de dados, um sistema de clock,
portas de I/O e possui periférico, tais como, módulos de temporização e conversores
6

A/D. Os microcontroladores podem ser controlados através da programação dos


mesmos, tendo como referencia as entradas ou simplesmente um programa interno.
Assim como um computador, porém em menor escala, os microcontroladores
possuem:

1. Unidade Central de Processamento (CPU);

2. Sistema de clock para dar sequencia as atividades da CPU;

3. Memória para armazenamento de instruções e para manipulação


dedados;

4. Entradas para interiorizar na CPU informações do mundo externo;

5. Saídas para exteriorizar informações processadas pela CPU;

6. Programa (firmware) para definir um objetivo ao sistema;

A Figura 3 apresenta os elementos básicos da composição de um


microcontrolador e suas ligações internas, facilitando a compreensão do seu
funcionamento.
7

Figura 3 - Esquema de um microcontrolador com os seus elementos básicos e


ligações internas

Fonte: www2.mec.ua.pt

Existem diversos tipos de microcontroladores, o que os diferencia, são os


seguintes elementos:

1. Quantidade de memória interna.

2. Velocidade de processamento.

3. Quantidade de sinal de entrada e saída (I/O).


8

4. Alimentação.

5. Periféricos.

6. Arquitetura.

7. Set de instruções.

Os microcontroladores são utilizados principalmente em automação e


controle, pois possuem tais características:

1. Consumo pequeno.

2. Modo de espera.

3. Tamanho reduzido.

4. Baixo custo.

2.3 Microcontrolador PIC16F877A

Os microcontroladores PIC são uma vertente dos microcontroladores, que


processam dados de 8, de 16 e mais recentemente de 32 bits. O PIC possui uma
grande variedade de modelos, o que diferencia um modelo do outro é o numero de
linhas de I/O e pelo conteúdo do dispositivo. É possível se ter modelos de 8 pinos e
chegar a modelos com até 40 pinos.

Neste projeto foi utilizado o microcontrolador PIC16F877A, pois o mesmo


possui uma quantidade de portas suficientes para todas as aplicações do projeto,
simplicidade de aplicação, memórias RAM e flash suficientemente dimensionadas
para armazenar o código do projeto, este microcontrolador pertence a família 16F de
microcontroladores PIC.
9

Este modelo de microcontrolador possui memória flash de programa de 14


bits, memória RAM com 368 bytes e memória EEPROM com 256 bytes. Sua
frequência de operação (clock), vai até 20MHz. Funciona com alimentação de 2V a
5,5V.

A Figura 4 mostra toda a pinagem do PIC16F877A, utilizado no projeto.

Figura 4 - Pinagem do microcontrolador PIC16F877A

Fonte: www.microcontrollerboard.com
10

2.4 Chaves de Fim de Curso

Chaves de fim de curso também conhecidas como microswitch, são


dispositivos eletromecânicos, que quando acionados abrem ou fecham um circuito
elétrico. O acionamento de uma chave de fim de curso ocorre através do contato
mecânico da haste da chave com um objeto, a haste aciona mecanicamente um
contato elétrico, utilizado num circuito de controle. A Figura 5 mostra uma chave de
fim de curso:

Figura 5 – Chave de fim de curso

Fonte: http://www.rosseletronica.com/chavediv.htm

As chaves de fim de curso podem trabalhar com os contatos normalmente


aberto (NA) ou normalmente fechado (NF).

Neste projeto foram utilizados chaves de fim de curso, para posicionamento


do garfo e do eixo x na posicao0, em cada extremidade da esteira também foram
utilizadas chaves de fim de curso para parar o motor. A Figura 6 mostra a estrutura
interna de uma chave de fim de curso:
11

Figura 6 - Estrutura interna de uma chave de fim de curso

Fonte: http://automacao2010.blogspot.com/2010/03/sensores-digitais-limites-e-
indutivos.html

2.5 Optoacoplador

Os optoacopladores são componentes eletrônicos, também conhecidos


como: OPTICO-ACOPLADORES, OPTICO-ISOLADORES ou FOTO-
ACOPLADORES, sua finalidade é o isolamento total dos sinais de entrada e saída,
quando o terra de entrada não é o mesmo que o terra da saída.

O optoacoplador é constituído por um LED e um fototransistor. Sem nenhum


contato elétrico entre dois circuitos, a informação é transferida através de luz,
funcionando da seguinte forma: ao aplicar uma tensão nos pinos do LED, o mesmo
acende, e a luz polariza a base do fototransistor interno, ou seja, a resistência entre
seus terminais diminui, assim o fototransistor conduz, fazendo a corrente circular
ativando ou controlando outro circuito.

Com o objetivo de isolar o circuito de controle dos motores e proteger o


microcontrolador PIC, fez-se uso de oito optoacopladores 4N25 neste projeto. Os
optoacopladores 4N25 foram ligados na saída do microcontrolador, separando assim
a saída do microcontrolador do circuito de acionamento dos motores. O sinal do
microcontrolador é enviado ao circuito de acionamento dos motores de forma
12

segura, evitando eventuais queimas do microcontrolador. A Figura 7 abaixo mostra o


diagrama interno do optoacoplador 4N25.

Figura 7 - Diagrama interno do optoacoplador 4N25

Fonte: www.arnerobotics.com.br

2.6 Encoder

O encoder é um equipamento que conta ou reproduz pulsos


eletromagnéticos a partir do movimento rotacional de seu eixo. Eles são
equipamentos eletromecânicos, utilizados para conversão de movimentos rotativos
ou deslocamentos lineares, que geram uma quantidade exata de pulsos por volta em
uma distribuição dos pulsos ao longo dos 360 graus de giro do eixo. Os encoders
por fornecerem medidas e controles precisos em velocidades de rotação,
velocidades lineares, posicionamentos angulares entre outros, podem ser utilizados
em aplicações com contadores, tacômetros e controladores lógicos programáveis.

Os encoders possuem internamente um ou mais discos perfurado, que


permite, ou não, a passagem de um feixe de luz infravermelha, gerado por um
13

emissor que se encontra de um dos lados do disco e captado por um receptor que
se encontra do outro lado do disco, este, com o apoio de um circuito eletrônico gera
um pulso. Dessa forma a velocidade ou posicionamento é registrado contando-se o
número de pulsos gerados. A Figura 8 mostra a estrutura de um encoder.

Figura 8 - Estrutura do enconder

Fonte: http://www.bogan.ca/astro/telescopes/digtcrcl.html

A quantidade de pulsos em uma volta, nos encoders rotativos, demonstra a


relação impulso/volta do mesmo. Quanto maior for esta relação maior a precisão
obtida. Por exemplo, um encoder que gera 50 pulsos por volta teria a seguinte
relação angular: 360°/50 pulsos = 1 pulso a cada 7,2°. Pode-se determinar o sentido
da rotação utilizando duas fileiras de furos uma defasada em 90° em relação à
outra, sendo assim em um sentido a fileira mais próxima do centro estará adiantada
em relação à outra e vice-versa.
14

3. TRABALHOS RELACIONADOS

Este capítulo apresentara alguns trabalhos que se relacionam de alguma


forma com o desenvolvimento deste projeto.

3.1 Estoque Automatizado Via Comando De Voz

O trabalho de graduação “Estoque Automatizado via Comando de Voz”


realizado no ano de 2009 na Universidade Paulista em Sorocaba teve como objetivo
a utilização da voz para o controle de retirada e armazenamento de matérias do
estoque. Uma prateleira de 9 posições foi simulada para o protótipo.

3.2 Estacionamento Automatizado

O Trabalho ”Estacionamento Automatizado” realizado no ano de 2010 na


Pontifícia Universidade Católica do Paraná (PUC) teve como objetivo resolver os
problemas que afetam a maioria das metrópoles mundiais, a falta de vagas para
carros. Sistema totalmente automatizado, o usuário não perde mais tempo buscando
uma vaga livre e a sua organização permitirá que em um curto espaço físico sejam
criadas várias vagas.

O software para o gerenciamento foi desenvolvido em C++, Uma vaga é


solicitada no estacionamento e uma senha deve ser digitada, os comandos são
enviados pela porta USB ao Arduino que é o responsável pela comunicação com os
motores. O motor do eixo y busca o automóvel na primeira vaga do estacionamento
e logo em seguida o motor do eixo x percorre o espaço solicitado até chegar à vaga.
Quando o usuário solicita a retirada do automóvel o software realiza o mesmo
processo descrito anteriormente e calcula o valor que deve ser pago na saída.
15

4. ANÁLISE DE REQUISITOS

Nessa seção serão apresentadas algumas restrições do uso do projeto e


também toda a sua parte de funcionalidade, eficiência, usabilidade e
mantenibilidade.

4.1 Funcionalidade

Os componentes de hardware utilizados neste projeto, como sensores,


chaves de fim de curso, microcontrolador entre outros, tem por objetivo, aumentar a
confiabilidade na obtenção dos dados. Quanto à velocidade do sistema, para busca
e entrega dos materiais é relativamente lento, o motor leva 14 segundos para se
deslocar da posição 0 até a última posição da prateleira, porém não se teve como
foco no projeto a busca e entrega de matérias rápidos e sim a automatização de
uma atividade realizada por humanos. Houve uma preocupação quanto a
interferência eletromagnética do sistema, o circuito do PIC foi colocado em uma
caixa com alumínio, os motores foram aterrados, os cabos que ligavam sensores e
chaves de fim de curso ao PIC são cabos de microfone blindados, o sistema é todo
protegido quanto a interferências eletromagnéticas.

4.2 Confiabilidade

O protótipo desenvolvido possui algumas restrições, tais como: o sistema


gerencia apenas uma prateleira contendo 25 posições, claro que a prateleira pode
ser menor, mas neste caso, nunca poderá ser maior, para tal ajuste seria
necessário, customizar hardware, firmware e software. O sistema transporta no
palete a caixa com os produtos desejado, não há como saber quantos produtos o
usuário retirou, pois não foi implementado nenhum tipo de leitor de barras ou
sensores para tal verificação, isso fica na responsabilidade do usuário, o mesmo
deve retirar das caixas a quantidade de produtos declarado no software. O sistema
16

não pode ser exposto a chuvas, não é aconselhável expor o sistema a campos
eletromagnéticos, pois isso pode afetar os dados recebidos pelos sensores e até
mesmo queimar o circuito. A parte de tolerância a falhas não é tratada nesse projeto,
portanto caso haja pane no sistema, todos os softwares e hardwares devem ser
desligados, após esse procedimento, deve – se ligar o sistema novamente e reiniciar
o PIC, apertando o botão de reset que ele possui.

4.3 Eficiência

O sistema se mostrou eficiente quanto a entrega e busca dos produtos, foi


verificado que algumas vezes os encoders da posição X e Y estavam alinhados, isso
faz com o que o sensor se perca nas contas de cada pulso, ou seja, o sistema
executa o acionamento dos motores, porém não consegue parar o garfo na posição
correta, movimentando o garfo ao longo do eixo X. Neste caso basta reiniciar o PIC
que o sistema voltará para posição inicial.

4.4 Usabilidade

O sistema foi projetado da forma mais simples possível para que qualquer
pessoa, com conhecimentos básicos de informática possa opera-lo.

4.5 Mantenibilidade

Várias melhorias podem ser realizadas neste projeto, tanto na parte de


hardware quanto na parte de software. O software pode ser preparado para
trabalhar com várias prateleiras, como tamanhos definidos pelo próprio usuário, o
hardware pode conter novos sensores, para controle individual das peças retiradas
pelo usuário, a velocidade do sistema pode ser aumentada, efetuando a troca do
17

fuso do eixo x. O projeto está estável, tanto o hardware como o software funcionam
corretamente, desde que as especificações mínimas sejam cumpridas.
18

5. ESPECIFICAÇÃO E REALIZAÇÃO DOS CASOS DE USO

Neste capítulo serão apresentadas as especificações e realizações dos casos de


uso do sistema.

5.1 UC01 – Fornecedor

A Figura 9 mostra o caso de uso de fornecedor no sistema desenvolvido.

Figura 9 – Caso de uso fornecedor

ESCOPO

Esta funcionalidade permite o cadastro, exclusão, busca e alteração de


fornecedores no sistema.

DESCRIÇÃO

Além das funcionalidades de exclusão, alteração, busca e cadastro o sistema


permite associar um fornecedor a um produto.

ATORES

Usuário

PRÉ-CONDIÇÕES

É necessário que o usuário esteja autenticado no sistema.

PÓS – CONDIÇÕES

Após realizar o cadastro o fornecedor estará disponível no sistema.


19
20

5.1.1 Cadastrar Fornecedor

ESCOPO

Esta funcionalidade permite o cadastro de fornecedores no sistema.

DESCRIÇÃO

O usuário pode realizar o cadastro de fornecedores, após o cadastro o


mesmo estará disponível para ser utilizado no sistema.

ATORES

Usuário

PRÉ-CONDIÇÕES

É necessário que o usuário esteja autenticado no sistema;

É obrigatória a existência de um fornecedor;

É necessária a existência de um produto em caso de associação ao


fornecedor.

PÓS-CONDIÇÕES

Ao efetuar o cadastro o Fornecedor estará disponível no sistema.

Deve se selecionar a opção de CADASTRO DE FORNECEDOR;

O sistema retorna a tela de cadastro, para preenchimento dos dados do


fornecedor (A01);

O Sistema retorna mensagem: “Fornecedor Cadastrado com Sucesso”;

O Fornecedor encontra-se disponível no sistema;

Fim do caso de uso.

FLUXOS ALTERNATIVOS

A01 - CADASTRO DE FORNECEDOR

O sistema verifica se os campos obrigatórios para cadastro do fornecedor


foram preenchidos. (E01);

Para excluir ou alterar um fornecedor é necessário procura-lo primeiro. (E02).


21

EXCEÇÕES

E01 – Caso os campos obrigatórios para cadastro do fornecedor não estejam


preenchidos o sistema retorna o seguinte erro: “Campo (nome do campo) não foi
preenchido”.

E02 – Caso os botões EXCLUIR e ALTERAR sejam clicados sem ter sido
realizado a busca do fornecedor o sistema retorna o seguinte erro: “Deve - se
selecionar um fornecedor”.

CENÁRIOS

Cenário 1: O usuário cadastra o fornecedor com sucesso;

Cenário 2: O usuário associa um fornecedor a um produto;

Cenário 3: O usuário não preenche todos os dados.

5.1.2 Procurar Fornecedor

ESCOPO

Esta funcionalidade permite a busca de fornecedores no sistema.

DESCRIÇÃO

A busca de fornecedores no sistema pode ser utilizada para uma simples consulta
ou em casos de alteração e exclusão.

ATORES

Usuário

PRÉ-CONDIÇÕES

É necessário que o usuário esteja autenticado no sistema;

É obrigatória a existência de um fornecedor cadastrado no sistema.

PÓS – CONDIÇÕES

Ao efetuar a busca do Fornecedor o mesmo será exibido no sistema.

1) Deve-se selecionar a opção de BUSCA DE FORNECEDOR;


22

2) O sistema retorna a tela de busca de fornecedor;


3) O usuário realiza a busca;
4) O sistema retorna a o fornecedor caso esteja cadastrado;
5) O sistema retorna mensagem de erro: “O Fornecedor não foi encontrado”
caso não esteja cadastrado;
6) Fim do caso de uso.

FLUXOS ALTERNATIVOS

A01 - PROCURAR FORNECEDOR

1. Para buscar um fornecedor pode-se digitar o nome ou não digitar nada.


(E01).

EXCEÇÕES

E01 – Se o fornecedor não estiver cadastrado o sistema retorna a seguinte


mensagem de erro: “Este fornecedor não foi encontrado”.

CENÁRIOS

Cenário 1: O usuário digita o nome do fornecedor;

Cenário 2: O usuário não digita nada;

Cenário 3: O sistema não encontra o fornecedor.

5.1.3 Excluir Fornecedor

ESCOPO

Esta funcionalidade permite a exclusão de fornecedores no sistema.

DESCRIÇÃO

Podem-se excluir os fornecedores do sistema quando desejado.

ATORES

Usuário

PRÉ-CONDIÇÕES

É necessário que o usuário esteja autenticado no sistema;


23

É obrigatória a existência de um fornecedor no sistema.

PÓS – CONDIÇÕES

Ao efetuar a exclusão do Fornecedor o mesmo não estará disponível no sistema.

1)Deve selecionar a opção de EXCLUSÃO DE FORNECEDOR;

2)Sistema retorna a tela de busca de fornecedor;( A01)

3)O sistema retorna a o fornecedor;

4)O fornecedor selecionado é excluído;

5)O sistema retorna mensagem: “Fornecedor excluído com sucesso”;

6)Fim do caso de uso.

FLUXOS ALTERNATIVOS

A01 - EXCLUIR FORNECEDOR

1. Para excluir ou alterar um fornecedor é necessário procura-lo primeiro. (E01).

EXCEÇÕES

E01 – Caso o botão EXCLUIR seja clicado sem ter sido realizado a busca do
fornecedor o sistema retorna o seguinte erro: “Deve - se selecionar um fornecedor”.

CENÁRIOS

Cenário 1: O usuário seleciona o fornecedor a ser excluído;

Cenário 2: O fornecedor é excluído com sucesso;

Cenário 3: O fornecedor não selecionado corretamente pelo usuário.

5.1.4 Alterar Fornecedor

ESCOPO

Esta funcionalidade permite a alteração de qualquer dado do fornecedor.


24

DESCRIÇÃO

O usuário pode alterar dados do fornecedor caso necessário.

ATORES

Usuário

PRÉ-CONDIÇÕES

É necessário que o usuário esteja autenticado no sistema;

É obrigatória a existência de um fornecedor no sistema.

PÓS – CONDIÇÕES

Ao efetuar a exclusão do Fornecedor o mesmo não estará disponível no sistema.

1) Deve se selecionar a opção de ALTERAR FORNECEDOR;


2) O usuário busca o fornecedor a se alterado;( A01)
3) Os dados do fornecedor são alterados pelo usuário;
4) As alterações são salvas pelo usuário;
5) O sistema retorna mensagem: “Fornecedor alterado com sucesso”;
6) Fim do Caso de Uso.

FLUXOS ALTERNATIVOS

A01 - ALTERAR FORNECEDOR

1. Para alterar um fornecedor é necessário procura-lo primeiro. (E01).

EXCEÇÕES

E01 – Caso o botão ALTERAR seja clicado sem ter sido realizado a busca do
fornecedor o sistema retorna o seguinte erro: “Deve - se selecionar um fornecedor”.

CENÁRIOS

Cenário 1: O usuário seleciona o fornecedor a ser alterado;

Cenário 2: O fornecedor é alterado com sucesso;

Cenário 3: O sistema não encontra o fornecedor a ser alterado.


25

5.2 UC02 – Autenticar no Sistema

Nesta seção será mostrada como é realizada a autenticação do sistema. A Figura 10


mostra ama visão macro da autenticação do usuário no sistema.

Figura 10 – Autenticação do usuário no sistema

ESCOPO
Nesta seção demonstra como o usuário deve realizar a autenticação no sistema.

DESCRIÇÃO
Essa autenticação será realizada toda vez que o usuário desejar utilizar o
sistema.

ATORES
Usuário

PRÉ-CONDIÇÕES

O usuário deve estar cadastrado no sistema.

PÓS – CONDIÇÕES

Ao final da autenticação o usuário terá acesso a todas as funcionalidades do


sistema.

FLUXO PRINCIPAL
Este caso de uso se inicia com o usuário acessando a tela de login.
26

5.2.1 Autenticar no Sistema

1) O usuário acessa a página de login do sistema;


2) A tela de login é composta pelos campos:
 Nome
 Senha
3) A tela de login possui as seguintes opções:
 Logar
 Sair
4) Usuário preenche os campos;
5) Usuário clica na opção Logar; (A01);
6) Usuário é direcionado a página inicial do sistema;
7) Fim do Caso de Uso.

FLUXOS ALTERNATIVOS

A01 – Ao logar no Sistema


1. Sistema valida usuário e senha na base de dados; (E01).

EXCEÇÕES

E01 – Ao inserir usuário ou senha inválidos o sistema retorna o seguinte erro:


“Senha ou Usuário Incorretos!! Favor tente Novamente” e retorna para a tela
de login.

CENÁRIOS

Cenário 1: O usuário autentica no sistema com sucesso;


Cenário 2: O usuário informa dados inválidos.

5.3 UC02 – Entrada / Saída Estoque

Nesta seção será mostrada a entrada e saída de estoque do sistema. A Figura 11


mostra esta entrada e saída do estoque.

Figura 11 – Entrada e saída do estoque


27

ESCOPO

Esta funcionalidade descreve com o usuário deve realizar as entradas e saídas de


matérias no estoque.

DESCRIÇÃO

O usuário executa essa funcionalidade toda vez que um material entra ou sai do
estoque.

ATORES

Usuário

PRÉ-CONDIÇÕES

É necessário que o usuário esteja autenticado no sistema;

É obrigatória a existência do produto no sistema;

É obrigatório possuir quantidades no estoque para realizar a saída.

PÓS – CONDIÇÕES

Ao final desse caso de uso a quantidade em estoque deverá aumentar ou diminuir


de acordo com a ação tomada pelo usuário.

FLUXO PRINCIPAL

O usuário inicia na tela de entrada ou saída de estoque.

5.3.1 Retirar Item

1) O usuário clica em Estoque -> Saída de Produto;

2) O usuário busca o produto a ser retirado do estoque;

3) O usuário seleciona a posição da prateleira e insere a quantidade a ser


retirada;

4) O sistema apresenta as seguinte opções:

 Gravar
 Cancelar

5) O usuário grava a solicitação de retirada no sistema (A01);


28

1) O sistema retorna a seguinte mensagem: “Saída do estoque com sucesso”;


2) Fim do Caso de Uso.

FLUXOS ALTERNATIVOS

A01 – Saída do Estoque


1. O sistema verifica se o produto foi selecionado (E01)
2. O sistema valida se o produto tem quantidade em estoque (E02)

EXCEÇÕES

E01 - O sistema valida se o produto foi selecionado para retirada do


estoque;
E02 - O sistema valida se o produto selecionado tem quantidade em
estoque.

CENÁRIOS

Cenário 1: O usuário realiza saída de estoque com sucesso;

Cenário 2: O produto não possui quantidade suficientes no estoque;

Cenário 3: O usuário não seleciona o produto.

5.3.2 Entrada Item

1) O usuário clica em Estoque -> Entrada de Produto;

2) O usuário busca o produto a ser inserido no estoque;

3) O usuário informa a quantidade a ser inserida no estoque.

4) O usuário cancela a ação;

5) O usuário grava a solicitação de entrada no sistema (A01);

6)O sistema retorna a seguinte mensagem: “Entrada do estoque com


sucesso”;

7)Fim do Caso de Uso.


29

FLUXOS ALTERNATIVOS

A01 – Entrada do Estoque

1. O sistema verifica se o produto foi selecionado (E01).

EXCEÇÕES

E01 - O sistema valida se o produto foi selecionado para entrada no


estoque.

CENÁRIOS

Cenário 1: O usuário realiza entrada no estoque com sucesso;

Cenário 2: O usuário não seleciona o produto;

Cenário 3: O usuário cancela a ação.

5.4 UC01 – Usuário

Nesta secao serao demonstrados os casos de uso do usuario. A Figura 12 mostra o


diagrama de usuarios.

Figura 12 – Diagrama do usuário

ESCOPO
30

Esta funcionalidade permite ao OPERADOR cadastrar, excluir, procurar e alterar um


usuário.

DESCRIÇÃO

Os usuários cadastrados no sistema serão os responsáveis pela movimentação de


entrada / saída de estoque, cadastro de produtos e fornecedores.

ATORES

Usuário

PRÉ-CONDIÇÕES

É necessário que o USUÁRIO esteja cadastrado no sistema.

PÓS – CONDIÇÕES

Após cadastro o usuário acessa todas as funcionalidades do sistema

5.4.1 Cadastrar Usuário

ESCOPO

Esta funcionalidade permite o cadastro de usuários no sistema.

DESCRIÇÃO

Os usuários são responsáveis por todas as ações tomadas no sistema.

ATORES

Usuário

PRÉ-CONDIÇÕES

É necessário que o usuário esteja autenticado no sistema;

É obrigatória a existência de um usuário;

PÓS – CONDIÇÕES

Ao efetuar o cadastro, o usuário estará disponível no sistema.

1)O usuário seleciona a opção de CADASTRO DE USUÁRIO;

2)Sistema retorna a tela de cadastro para preenchimento dos dados do usuário;


31

3)Sistema retorna mensagem: “Usuário Cadastrado com Sucesso”;

4)Usuário esta disponível no sistema;

5)Fim do caso de uso.

FLUXOS ALTERNATIVOS

A01 - CADASTRO DE FORNECEDOR

1. O sistema verifica se os campos obrigatórios para cadastro do usuário foram


preenchidos. (E01);
2. O sistema não permite os usuários duplicados. (E02).

EXCEÇÕES

E01 - Caso os campos obrigatórios para cadastro do usuário não estejam


preenchidos o sistema retorna o seguinte erro: “Campo (nome do campo) não foi
preenchido”.

E02 - Caso o usuário já exista na base de dados o sistema não permite o cadastro e
retorna a seguinte mensagem de erro: ”Usuário já cadastrado no sistema”.

CENÁRIOS

Cenário 1: Cadastro de Usuário;

Cenário 2: Cadastro de usuário como mesmo nome;

Cenário 3: Campos da tela de cadastro não preenchido.

5.4.2 Excluir Usuário

ESCOPO

Esta funcionalidade permite excluir usuários do sistema.

DESCRIÇÃO

É possível excluir um ou mais usuários do sistema.

ATORES

Usuário
32

PRÉ-CONDIÇÕES

É necessário que o usuário esteja autenticado no sistema;

É obrigatória a existência de um usuário cadastrado no sistema.

PÓS – CONDIÇÕES

Ao efetuar a exclusão do usuário o mesmo não estará disponível no sistema.

7) O usuário seleciona a opção de EXCLUSÃO DE USUÁRIO;


8) Sistema retorna a tela de busca de usuário (E01).
9) O sistema retorna a o usuário;
10) O usuário é exclui do sistema;
11) O sistema retorna mensagem: “Usuário excluído com sucesso”
12) Fim do caso de uso.

FLUXOS ALTERNATIVOS

A01 - EXCLUIR USUÁRIO

1. Para excluir usuário é necessário procura-lo primeiro. (E01).

EXCEÇÕES

E01 – Caso o botão EXCLUIR seja clicado sem ter sido realizado a busca do usuário
o sistema retorna o seguinte erro: “Deve - se selecionar um usuário”.

CENÁRIOS

Cenário 1: O usuário a ser excluído é selecionado;

Cenário 2: O usuário é com sucesso;

Cenário 3: O usuário a ser excluído não foi selecionado.

5.4.3 Alterar Usuário

ESCOPO

Esta funcionalidade permite alterar usuários cadastrados no sistema.

DESCRIÇÃO
33

Quando necessário os usuários poderão ter seus dados alterados.

ATORES

Usuário

PRÉ-CONDIÇÕES

É necessário estar autenticado no sistema;

É obrigatória a existência de um usuário no sistema.

PÓS – CONDIÇÕES

Ao efetuar a alteração do usuário o mesmo estará disponível no sistema com os


novos dados.

1) A opção de ALTERAR USUÁRIO deve ser selecionada;


2) Deve se buscar o usuário a ser alterado;
3) Realizar as alterações necessárias;
4) As alterações devem ser salvas;
5) O sistema retorna mensagem: “Usuário alterado com sucesso”;
6) Fim do Caso de Uso.

FLUXOS ALTERNATIVOS

A01 – ALTERAR USUÁRIO

2. Para alterar um usuário é necessário procura-lo primeiro. (E01).

EXCEÇÕES

E01 - Caso o botão ALTERAR seja clicado sem ter sido realizado a busca do
usuário o sistema retorna o seguinte erro: “Deve - se selecionar um usuário”.

CENÁRIOS

Cenário 1: Busca do usuário a ser alterado;

Cenário 2: Alteração do usuário na base de dados;

Cenário 3: Busca incorreta do usuário a ser alterado.

5.4.4 Pesquisar Usuário

ESCOPO
34

Esta funcionalidade permite a busca de usuários no sistema.

DESCRIÇÃO

A busca de usuários no sistema pode ser utilizada para uma simples consulta ou em
casos de alteração e exclusão.

ATORES

Usuário

PRÉ-CONDIÇÕES

É necessário que o usuário esteja autenticado no sistema;

É obrigatória a existência de um usuário cadastrado no sistema.

PÓS – CONDIÇÕES

Ao efetuar a busca do usuário o mesmo será exibido no sistema.

1)Deve se selecionar a opção de PESQUISA DE USUÁRIO;

2)O sistema retorna a tela de busca de usuário;

3)O usuário realiza a busca;

4)O sistema retorna o usuário caso esteja cadastrado;

5)O sistema retorna mensagem de erro: “O usuário não foi encontrado” caso
não esteja cadastrado;

6)Fim do caso de uso.

FLUXOS ALTERNATIVOS

A01 - PESQUISAR USUÁRIO

1. Para buscar um usuário pode-se digitar o nome ou não digitar nada. (E01).

EXCEÇÕES

E01 - Caso o usuário não esteja cadastrado o sistema retorna a seguinte mensagem
de erro: “Este fornecedor não foi encontrado”.

CENÁRIOS

Cenário 1: Pesquisa o usuário desejado;


35

Cenário 3: O sistema não encontra o fornecedor.

5.5 Diagrama de Casos de Uso Geral do Sistema

A Figura 13 mostra o diagrama de casos de uso geral do sistema.

Figura 13 – Diagrama de casos de uso geral


36

6. ESPECIFICAÇÃO DO PROJETO

Nessa seção será apresentada uma visão geral do projeto, assim como, as
especificações de hardware e software.

6.1 Visão Geral do Projeto

O projeto consiste no desenvolvimento de um “elevador" capaz de retirar e


guardar produtos em uma prateleira e uma esteira responsável pelo transporte do
produto até o requisitante, controlado por um microcomputador (PC) via
comunicação serial. Para que o “elevador" guarde ou retire produtos da prateleira, os
mesmos devem estar previamente cadastrados, ao cadastrar um produto, o software
verifica qual posição da prateleira está vazia e insere o produto na mesma, sempre
de forma sequencial. Ao retirar ou guardar um produto, o sistema sempre irá
verificar, se o “elevador", a esteira e o garfo, estão na posição zero.

O garfo faz parte do elevador, ele é responsável por retirar e entregar os


produtos na esteira ou na prateleira. Para o ajuste da posição zero, foram utilizadas
chaves de fim de curso, após a verificação, o sistema irá efetuar a ação desejada.

A esteira ao receber um produto, é responsável pela entrega do produto ao


solicitante ou a entrega do produto até o garfo, no caso do solicitante, ele tem 5
segundos para retirar ou colocar um produto na esteira, no caso do garfo, retira o
produto da esteira e o coloca novamente na prateleira.

Para saber a posição de cada produto foi utilizado um encoder incremental de


um bit, o cálculo de cada posição da prateleira é dado pela seguinte fórmula:
(distância da prateleira / pelo passo do fuso) * resolução do encoder. Na Figura 14
pode-se observar a representação gráfica do projeto.
37

Figura 14 - Representação gráfica do projeto

6.2 Propriedades do Hardware

Nessa seção são apresentadas todas as características de hardware


presentes no projeto.

6.2.1 Interface com o Computador

Para a unidade de processamento do sistema, foi utilizado o PIC16F877,


que é um microcontrolador da família de 8 bits e núcleo de 14 bits fabricado pela
Microchip Technology. O circuito do PIC16F877 é alimentado com a tensão que é
38

disponibilizada pela porta USB do computador, 5 volts, já o circuito de potência dos


motores foram alimentados com uma fonte externa de 12 volts. Foram conectados
ao circuito de processamento do sistema, optoacopladores, conversor de nível
MAX232, encoders e chaves de fim de curso. A Figura 15 mostra a conexão de
todos os componentes utilizados no sistema.

Figura 15 - Circuito completo do sistema

6.2.2 Optoacopladores

Neste projeto foi utilizado um optoacoplador 4N25. O Objetivo foi isolar o


PIC16F877 do driver de controle dos motores, mantendo apenas um contato lógico
entre eles. A Figura 16 mostra o esquemático entre os optoacopladores 4N25 e o
PIC16F877.
39

Figura 16 - Esquemático entre optoacopladores 4N25 e PIC16F877

Para cada motor foram utilizados 2 relés e para cada relé foi utilizado 1
optoacoplador 4N25, totalizando 8 optoacopladores, sendo eles ligados no port A e
C do PIC16F877.
40

6.2.3 Chaves de Fim de Curso

Neste projeto foram utilizadas chaves de fim de curso. O objetivo foi


posicionar com precisão as posições X e Y, ou seja, garantir que o “elevador" e
“garfo" retirem ou guardem um produto sem colidir com a prateleira. Foram utilizadas
duas chaves de fim curso na esteira, uma chave para cada extremidade da esteira, o
que indica que o produto já chegou ao seu destino, portanto o motor deve parar. A
Figura 17 mostra a conexão entre as chaves de fim de curso e o PIC, utilizados no
projeto.

Figura 17 - Conexão das chaves de fim de curso com o PIC

6.2.4 Conversor de Nível MAX232

Foi utilizado o conversor de nível MAX232, que é responsável pela


comunicação entre o microcontrolador PIC e computador. O CI MAX232 converte o
41

sinal RS232 para TTL, o circuito inversor gerado pelos quatro capacitores converte
tensões altas de 12 volts para 5 ou até 3.3 volts, essa interface é necessária uma
vez que os níveis de tensões e corrente da porta serial do PIC não são compatíveis
com os níveis de tensão e corrente da porta do computador. Figura 18 mostra o
circuito com o MAX232 e o PIC.

Figura 18 - Conversor de nível Max232


42

6.2.5 Encoder

Neste projeto foi utilizado um encoder incremental, a cada pulso do encoder


acontece uma interrupção, somando 1 no contador. Foram utilizados dois encoders,
um no eixo X e outro no eixo Y, sua função é posicionar os motores correspondentes
as suas coordenadas. A Figura 19 mostra a conexão dos encoders com o PIC.

Figura 19 - Esquemático encoder e PIC

6.2.6 Circuito Driver dos Motores

Neste projeto foram utilizados três motores de corrente contínua, dois


motores para a movimentação do elevador, eixos X e Y e um motor para movimentar
a esteira. O comando é enviado do microcomputador via comunicação serial para o
microcontrolador PIC16F877A. O firmware do PIC16F877A processa os dados
recebidos e em seguida aciona os motores AK555PL12-4500C com caixa de
redução.

Os motores utilizados no projeto possuem caixas de redução, pois, foi


necessário diminuir a velocidade desses motores para que os produtos
43

transportados fossem entregues ao seu destino, sem correr o risco de cair do garfo,
por isso optou-se por utilizar motores com RPM baixa.

O motor CC (corrente continua) AK555PL12-4500C é distribuído pela


Akiyama Soluções Tecnológicas. Sua caixa de redução possui 20 dentes, reduzindo
assim, aproximadamente 2000 rotações por minuto. A tensão de operação varia de
6V a 15V, a tensão nominal é de 12V. Ele gira a 4.500 RPM, sua corrente
trabalhando em máximo rendimento atinge 0,95A, o torque produzido e de 198g/cm,
a potência dissipada e de 8.04W, para acionar a sua partida é necessária uma
corrente de 4,4A ocasionando um torque de partida de 917.14g/cm.

A lógica de acionamento dos motores foi realizada em hardware, utilizando


para isto relés. Foram utilizados no projeto relés miniatura distribuídos pela empresa
Metaltex. O modelo utilizado foi o AX1RC2 de 12VDC tendo como principais
características: corrente de comutação e de condução máxima de 15 A, vida
mecânica de operações 10^5 operações, tempo de operação 8ms, tempo de
desoperação 8ms, com resistência de contato inicial máxima de 50mΩ e corrente
nominal de 30mA. Este componente foi escolhido pela simplicidade de operação e
pelo baixo consumo de corrente.

O transistor do optoacoplador 4N25 está ligando a base do transistor do relé


e aos 12 volts de alimentação, quando o PIC envia um sinal alto, aciona o LED
interno do optoacoplador 4N25.
44

Na base do transistor do relé está ligado o optoacoplador 4N25, o transistor


interno conduz, e assim satura o transistor do relé, que fica ligado até a porta
correspondente do PIC ir a um sinal 0. A figura 20 mostra a ligação entre relés e
optoacoplador 4N25.

Figura 20 - Circuito de acionamento dos motores

O acionamento dos motores ocorre da seguinte forma: quando os relés


estão desligados, os dois polos do motor ficam ligados entre si e também estão
ligados ao polo positivo da alimentação, ao ligar um dos relés, o polo do motor ligado
fica negativo, isso faz com que o motor gire num sentido, ao desligar o motor
novamente os polos do motor voltam a entrar em curto, isso cria o freio
eletrodinâmico que faz com que o motor pare no ponto exato. Ao ligar o outro relé, o
outro polo do motor fica negativo, e isso faz com que o motor seja acionado no
sentido inverso.
45

6.3 Propriedades do Software

Neste projeto foi desenvolvido um software e um firmware. O software tem


por objetivo receber e armazenar as informações do usuário, e também enviar os
dados contendo os comandos para a movimentação do elevador e da esteira.

O firmware contido no microcontrolador PIC16F877A recebe uma string


enviada do software, com a seguinte característica: r11ok ou d11ok. A string enviada
ao firmware é minúscula, a primeira letra indica se o produto será devolvido à
prateleira (letra d) ou se o produto será retirado da prateleira (letra r).

Os números a seguir indicam quais são as coordenadas, assim o firmware


sabe qual posição ele deve ir para retirar ou devolver o produto, a string “ok” no final
apenas indica que os dados foram transmitidos com sucesso, portanto o firmware do
microcontrolador PIC16F877A, é responsável por receber os dados, interpreta-los e
em seguida acionar os motores.

Pode-se observar na Figura 19 que o software recebe os dados informados


pelo usuário. A comunicação com o firmware contido no microcontrolador
PIC16F877A, é serial, o qual tem a função de realizar o acionamento dos motores
da esteira e do elevador.
46

A Figura 21 apresenta uma visão geral do funcionamento do software e


firmware contidos no projeto.

Figura 21 - Diagrama em blocos dos softwares e firmwares contidos no projeto


47

6.3.1 Software de Interface com o Usuário

O software de interface com o usuário foi desenvolvido na IDE Visual Studio


2010, em linguagem de programação C#. O software é responsável pelo
gerenciamento de todos os produtos, estoque e fornecedores. Ao cadastrar um
produto, o software possui uma função que verifica qual posição da prateleira está
vazia, cadastrando assim o produto para esta posição de forma sequencial.

Todo envio de dados é realizado pela comunicação serial entre o


microcomputador e o microcontrolador PIC16F877A, o usuário deve acessar a tela
corresponde a ação desejada. Ao escolher o produto, basta clicar no botão
responsável pelo envio dos dados. Ao receber as informações o microcontrolador irá
realizar as ações solicitadas pelo usuário.

O Banco de Dados foi desenvolvido na IDE Microsoft SQL Server 2008 R2, o
software utilizado para modelar o Banco de Dados e estabelecer os seus
relacionamentos é o DBDESIGNER 4. A Figura 22 mostra o Modelo Entidade
Relacionamento do projeto.

Figura 22 - Modelo entidade relacionamento


48

Na Figura 22 é possível visualizar os relacionamentos entre as tabelas, as


chaves primárias (PK), as chaves estrangeiras (FK) e a cardinalidade de cada
tabela.

6.4 Propriedades do Firmware

O firmware deste projeto contido no microcontrolador PIC16F877A, foi


desenvolvido na IDE Mikro Basic Pro for PIC, em linguagem de programação BASIC.
O firmware é composto por uma função principal e várias sub-rotinas que são
chamadas conforme comando enviado pelo software. Na função principal do
firmware são setadas algumas configurações, tais como:

1. Portas analógicas desabilitadas;

2. Inicialização dos ports A e C com zero;

3. Configuração da velocidade de comunicação para 9600bps;

4. Configuração do port B como entrada;

5. Configuração dos ports A e C como saída.

Para cada movimento do elevador, do garfo e da esteira o firmware possui


sub-rotinas. O firmware possui uma variável denominada ‘t’, essa variável é
incrementada a cada pulso do encoder ótico incremental. No firmware possui a
quantidade de pulsos necessários para atingir cada posição da prateleira, portanto,
para ir ao local desejado basta comparar a variável ‘t’ com o valor previamente
calculado de cada posição. A Figura 23 mostra um fluxograma do funcionamento do
firmware utilizado no projeto. O código pode ser visto no Anexo A.
49

Figura 23 – Fluxograma firmware


50

7. VALIDAÇÃO E RESULTADOS

Nesta seção serão abordados os testes e validações realizados no projeto.

7.1 Testes de Hardware

Todos os circuitos foram desenvolvidos no software EXPRESSPCB. O


funcionamento dos motores CC foram testados em protoboard, os testes foram
realizados em etapas:

1. Teste de acionamento dos motores;

2. Controlando a esteira por botões;

3. Enviando os dados do PC para o PIC;

4. Aumentando a velocidade do fuso;

5. Parando os motores com chaves de fim de curso.

Primeiramente, testou-se o circuito para acionar os motores em sentido


horário e sentindo anti-horário este teste foi apenas para verificar se o circuito
desenvolvido estava correto.

Com o circuito para acionamento dos motores funcionando corretamente,


foram adicionados botões a este mesmo circuito, e colocados na esteira. Neste
momento a esteira já possuía chaves de fim curso, responsáveis pela parada do
motor em cada extremidade da esteira, o objetivo foi testar as chaves de fim de
curso.

Foi detectada a necessidade de aumentar a velocidade do eixo x, portanto o


fuso que era de 1 mm foi substituído por um fuso de 1,5 mm, o sistema ficou 6
segundos mais rápido, porém, foi observado que com essa nova velocidade os
paletes caiam do garfo do elevador.
51

As chaves de fim curso foram essências, toda vez que era necessário parar
os motores, na primeira versão do protótipo não havia essas chaves, então a
posição do elevador e do garfo eram ajustadas manualmente, isso não era próprio,
pois como não havia precisão do ajuste, o garfo sempre batia na prateleira, não
atingindo o seu objetivo final. Com a inserção das chaves de fim de curso, esse
problema foi solucionado. O elevador e a esteira partem das chaves de fim de curso
e voltam para elas, fazendo que o motor pare sempre na posição certa.

A prateleira possui um suporte para colocar o palete, durante os testes, foi


verificado que o garfo, não seria capaz de apanhar um palete da esteira, pois o
palete é menor que a esteira e o garfo acabavam por empurrar ao invés de pega-lo,
o mesmo ocorre na prateleira, por isso, atrás de cada palete foi colocado uma
espécie de barreira, caso o garfo empurrasse o palete para traz o mesmo iria bater
nessa barreira e o grafo iria avançar e pegar o palete sem problema algum.

No decorrer dos testes, o PIC16F877A queimou, pois o campo


eletromagnético que os motores geraram induzido pelos cabos até o PIC resultou na
queima dos componentes, foi neste momento que o sistema sofreu uma
modificação. A partir daí, o circuito do PIC não tinha mais ligação direta com o
circuito driver dos motores, para resolver esse problema optou-se por utilizar o
optoacoplador 4N25 mantendo apenas uma ligação lógica entre esses dois circuitos,
outra mudança foi com os cabos que faziam a ligação PIC e a placa driver, os cabos
foram trocados por cabos de microfones blindados, os motores foram enrolados em
alumínio e aterrados, a placa do PIC foi colocada em uma caixa de plástico com
alumínio, para proteger de interferências eletromagnéticas.
52

A Figura 24 mostra a primeira montagem das placas com os relés e a


prateleira MDF.

Figura 24 – Placas de relés e prateleira MDF

A Figura 25 mostra a montagem de todas as placas com a fonte e o cabeamento


devidamente instalado para o funcionamento do sistema.

Figura 25 – Montagem das placas, cabos e fonte


53

A Figura 26 mostra o produto final completamente montado e pronto para o


funcionamento.

Figura 26 – Produto final

7.2 Testes de Software

O software foi desenvolvido em linguagem C#. Várias vezes tivemos que


mudar o banco, conforme o software ia sendo implementado.

Testes de cadastros, exclusões e busca no software foram realizadas, as


telas do sistema também foram modificadas várias vezes no decorrer do
desenvolvimento do sistema. O objetivo era que o software fosse o mais intuitivo
possível, para que qualquer pessoa pudesse opera-lo.

Nesta parte do projeto não tivemos tantos problemas. Para o envio dos
dados ao microcontrolador PIC16F877A, após o termino da função responsável pela
montagem da string, foi realizado um teste para o envio da mesma, não tivemos
problemas, a string foi enviada corretamente e a prova disso era um OK que o PIC
retornava.
54

Abaixo seguem algumas figuras do software tiradas na realização dos


testes. A Figura 27 mostra a primeira tela depois que o software foi iniciado, onde
devem ser inseridos o usuário e senha para fazer o login no sistema.

Figura 27 – Tela de login


55

A Figura 28 mostra a tela de cadastro de usuários para acessar o sistema, que pode
ser acessada pela aba “Cadastro” no canto superior esquerdo do software. Nesta
tela devem ser informados o nome e senha para criação do usuário.

Figura 28 – Cadastro de usuários

Na Figura 29 pode-se ver a tela de cadastro de fornecedores. O cadastro dos


fornecedores deve ser feito antes do cadastro dos produtos, pois é necessário
informar um fornecedor quando se cadastra um produto.

Figura 29 – Cadastro de fornecedores


56

A Figura 30 mostra onde deve ser realizado o cadastro dos produtos que serão
colocados na prateleira.

Figura 30 – Cadastro de produtos

Clicando na aba “Relatórios” no canto superior esquerdo, conforme a Figura 31 pode


ser observar a tela de relatórios. Nela é possível gerar relatórios de todos os
produtos e de produtos individualmente.

Figura 31 – Gerador de relatórios


57

A tela principal, onde é feita a entrada dos produtos para a prateleira é mostrada na
Figura 32. Conforme o produto é selecionado ele aparece em verde na posição em
que vai ser colocado. Deve-se também colocar a quantidade desejada do produto
que será estocado.

Figura 32 – Entrada de produtos

Tão importante quanto a entrada de produtos, a Figura 33 mostra a saída de


produtos. Nela se faz o processo inverso a entrada, ou seja, quando esta tela é
utilizada, o usuário esta querendo pegar algo da prateleira.

Figura 33 – Saída de produtos


58

CONCLUSÃO

Neste projeto foi desenvolvido um protótipo de uma prateleira com um


elevador, que se movimenta nos eixos x e y, um garfo responsável por pegar os
produtos, uma esteira responsável pelo transporte do material até o requisitante e
um software para gerenciamento dos produtos. O software é a interface com o
usuário e comunica-se com o hardware utilizando comunicação serial.

Pode-se dizer que o resultado final do projeto é satisfatório, uma vez que o
objetivo inicial pode ser cumprido.

Mesmo com as várias limitações de velocidade, limitações do software e dos


sensores utilizados no projeto, foi possível realizar a busca e a entrega dos materiais
ao requisitante.

Durante seu desenvolvimento ocorreram alguns imprevistos como queima


de circuito, devido ao campo eletromagnético que os motores geravam. Vários
testes foram realizados ao longo do desenvolvimento do projeto, pode – se verificar
que o PIC16F778A cumpriu com as expectativas esperadas, claro que possuem
muitas melhorias a serem feiras, porém ainda sim, o sistema se mostrou muito
satisfatório, obtendo ótimos resultados, cumprindo com todas as especificações
propostas.

Para o desenvolvimento de um novo sistema, baseado neste, existe uma


grande necessidade de diversas melhorias que foram percebidas durante o
desenvolvimento deste. Entre estas melhorias esta o controle de varias prateleiras,
que não limitariam o tamanho do estoque. Para isso seria necessário alterar o
software, pois ele funciona apenas para 25 posições. Assim o controle teria mais
flexibilidade.

Outra melhoria importante deve ser citada. A utilização de sensores para


localizar o posicionamento de cada posição da prateleira, já que diversos problemas
foram percebidos devido ao atrito nas barras de fuso que levavam o garfo ate a
posição desejada. Com os sensores a busca fica muito mais precisa e eficiente.
59

Algumas recomendações para trabalhos futuros devem ser colocadas em


vista. Dentre elas esta o melhor controle e aumento de velocidade de todo o
sistema. Em um protótipo, isso pode não ser tão importante, porem levando para
uma escala real, a velocidade e controle, pode fazer muita diferença em questões
como uma maior produtividade em menor tempo.

Também é importante citar que caso haja a necessidade do aumento das


prateleiras e/ou do estoque, será necessário a criação de um novo software para o
tamanho desejado. Entra ai outra recomendação, que no caso seria a criação de um
software flexível ao tamanho das prateleiras, fazendo com que o usuário possa
alterar o tamanho da “matriz” de prateleiras.

Esse projeto tem grande aplicação no mercado, hoje muitas empresas estão
utilizando da automação para melhorar o seu trabalho, com isso há uma diminuição
da mão-de-obra e também contribui muito para a segurança no trabalho, uma vez
que, a pessoa não precisa mais se locomover, basta apenas apertar um botão.
60

REFERÊNCIAS BIBLIOGRÁFICAS

ALMEIDA, J. E. Motores elétricos: manutenção e testes. 3. ed. São Paulo:


Hemus, 1995, 190p.

Blog de Automação Industrial disponível em


http://automacao2010.blogspot.com/2010/03/sensores-digitais-limites-e-
indutivos.html Acessado em Maio de 2011.

DALLAZEN, G. A.; et al – Mapeamento de Ambientes Escuros Usando


Modulo Robótico Terrestre com Ultras-som. Curitiba, 2009. Monografia (Graduação).
Universidade Positivo

Datasheet MAX220-MAX249 disponível em http://www.maxim-


ic.com/datasheet/index.mvp/id/1798 Acessado em Julho de 2011.

Datasheet do Max 232 disponível em


http://www.datasheetcatalog.org/datasheet/texasinstruments/max232.pdf Acessado
em Abril de 2011.

Datasheet do microcontrolador PIC 16F877A disponível em

http://ww1.microchip.com/downloads/en/devicedoc/39582b.pdf Acessado em
Abril de 2011.

Departamento de Engenharia Mecânica da Universidade de Aveiro


disponível em http://www2.mec.ua.pt/ Acessado em Maio de 2011.

Encoder (automação industrial) disponível em


http://pt.wikipedia.org/wiki/Encoder_(Automa%C3%A7%C3%A3o_industrial)
Acessado em Abril de 2011.

Estacionamento Automatizado disponível em


http://www.afonsomiguel.com/content/estacionamento-automatizado Acessado em
Março de 2011.
61

Guia de motores de corrente continua disponível em


http://www.siemens.com.br/medias/FILES/2910_20060505141908.pdf Acessado em
Abril de 2011.

LEDERMAN, C. Introduçao a linguagem BASIC para micro-controladores. 2.


ed. Campinas, SP: Cartgraf, 1983, 297p.

MACHADO, F. N. R. Banco de dados: projeto e implementação. 2. ed. São


Paulo: Érica, 2008, 398p.

Microcontrolador PIC disponível em


http://amsfrancisco.planetaclix.pt/download/PICs/Micros_historia.pdf Acessado em
Abril de 2011.

Microcontroller Projects with PIC Microcontroller Board disponível em


http://www.microcontrollerboard.com/ Acessado em Junho de 2011.

Motores elétricos disponível em


http://www.feiradeciencias.com.br/sala22/motor_teoria1.asp Acessado em Abril de
2011.

NATALE, F. Automação industrial. São Paulo: Érica, 2000, 234p.

PEREIRA, F. Microcontroladores PIC: programação em C. 4. ed. São Paulo:


Érica, 2005, 358p.

Projetos desenvolvidos por Márcio José Soares disponível em


http://www.arnerobotics.com.br/ Acessado em Junho de 2011.

SHARP, J. Microsoft Visual C# 2008: passo a passo. Porto Alegre:


Bookman, 2008.

Starter pack for Motor Control direct from PC disponível em http://www.pc-


control.co.uk/motor_pack.htm Acessado em Abril de 2011.

Trabalho sobre Encoder disponível em


http://hermes.ucs.br/ccet/demc/vjbrusam/inst/enc1.pdf Acessado em Abril de 2011.
62

ANEXO A – CODIGO DO FIRMWARE

program elevador

'definições de constantes e variáveis

dim Ix, Iy, Op as byte

dim t, x, y as integer

dimfg as bit

dim temp as string[5]

'início das sub procedures

sub procedure interrupt 'incrementa variavel t a cada pulso no


encoderoptico (dois pulsos por rotação)

if INTCON.INTF = 1 then 'eixo x avança 0,75mm por


pulso(fuso M10x1,5), eixo y avança 0,5mm por pulso (fuso M6x1)

t=t+1 'em caso de mudança de estado na porta B.0,


incrementa contador de voltas.

INTCON.INTF = 0

end if

end sub

SUB PROCEDURE elevador_dir() 'movimenta torre do elevador à direita ate


número de voltas do fuso horizontal igualar a indexação estabelecida para
coordenada x (encoderoptico)

PORTC.1=1 'liga motor

whilefg=0
63

if t = x then 'compara número de voltas com índice da posição x (eixo


horizontal)

PORTC.1=0 'desliga motor

fg=1

end if

wend

t=0

fg=0

end sub

SUB PROCEDURE elevador_esq() 'retorna torre do elevador ate a posição


zero (chave fim de curso)

PORTC.0=1 'liga motor

whilefg=0

if Button(PORTD, 4, 1, 0) then 'fim de curso atuando como botão

PORTC.0 = 0 'desliga motor

fg=1

end if

wend

fg=0

end sub

SUB PROCEDURE elevador_up() 'movimenta elevador para cima ate


número de voltas do fuso vertical igualar a indexação estabelecida para coordenada
y (encoderoptico)

PORTC.3 = 1 'liga motor


64

whilefg=0

if t = y then 'compara número de voltas com índice da posição y (eixo


vertical)

PORTC.3=0 'desliga motor

fg=1

end if

wend

t=0

fg=0

end sub

SUB PROCEDURE elevador_dn() 'movimenta elevador para baixo,


recolocando-o na altura de origem (chave fim de curso)

PORTC.2 = 1 'liga motor invertendo sentido

whilefg=0

if Button(PORTD, 5, 1, 0) then 'fim de curso atuando como botão

PORTC.2 = 0 'desliga motor

fg=1

end if

wend

fg=0

end sub

SUB PROCEDURE garfo_up() 'eleva o garfo do elevador por 10mm, para


erguer o palete (encoderoptico)

PORTC.3 = 1 'liga motor


65

t=0

whilefg=0

if t=20 then

PORTC.3=0 'desliga motor

fg=1

end if

wend

t=0

fg=0

end sub

SUB PROCEDURE garfo_dn() 'desce o garfo do elevador por 10mm, para


pousar o palete (encoderoptico)

PORTC.2 = 1 'liga motor

whilefg=0

if t=20 then

PORTC.2=0 'desliga motor

fg=1

end if

wend

t=0

fg=0

end sub

sub procedure esteira_dir() 'posiciona esteira no extremo direito para receber


palete do garfo (chave fim de curso)
66

PORTA.1 = 1 'liga motor

whilefg=0

if Button(PORTD, 2, 1, 0) then 'fim de curso atuando como botão

PORTA.1 = 0 'desliga motor

fg=1

end if

wend

fg=0

end sub

sub procedure esteira_esq() 'posiciona esteira no extremo esquerdo para


receber palete do usuário (chave fim de curso)

PORTA.0 = 1 'liga motor

whilefg=0

if Button(PORTD, 3, 1, 0) then 'fim de curso atuando como botão

PORTA.0 = 0 'desliga motor

fg=1

end if

wend

fg=0

end sub

sub procedure garfo_av() 'extende o garfo do elevador para apanhar ou


entregar palete (chave fim de curso)

PORTA.3 = 1 'liga motor

whilefg=0
67

if Button(PORTD, 1, 1, 0) then 'fim de curso atuando como botão

PORTA.3 = 0 'desliga motor

fg=1

end if

wend

fg=0

end sub

sub procedure garfo_rc() 'recolhe o garfo do elevador para apanhar ou


entregar palete (chave fim de curso)

PORTA.2 = 1 'liga motor

whilefg=0

if Button(PORTD, 0, 1, 0) then 'fim de curso atuando como botão

PORTA.2 = 0 'desliga motor

fg=1

end if

wend

fg=0

end sub

'Fim das sub procedures

main:

ADCON0 = 0'desabilita

ADCON1 = 0'portas

CMCON = 7'analogicas
68

OPTION_REG=%00111111 'habilita pull-ups no port b, e seta flanco de


leitura de interrupção

INTCON = %11010000'configura interrupções e seta PORTB.0 como


interrupção externa

PORTA = 0 'inicializa PORTA em zero

TRISA = %00000000'seta PORTA como saída

TRISB = %11111111'seta PORTB como entrada

PORTC = 0 'inicializa PORTC em zero

TRISC = %00000000'seta PORTC como saída

'PORTD = 0 'inicializa PORTD em zero

TRISD = %00111111'seta PORTD(0..5) como entradas e PORTD(6..7) como


saídas

UART1_Init(9600) 'inicializa comunicação serial a 9600 bps

x=0

y=0

Op=""

Ix=""

Iy=""

t=0

garfo_rc

elevador_dn

elevador_esq

WHILE (TRUE)

if (UART1_Data_Ready() = 1) then
69

UART1_Read_Text(temp,"ok", 5)

Op=temp[0]

Ix=temp[1]

Iy=temp[2] - 1

delay_ms(100)

end if

select case Ix 'indexaçãocoordenadas x

case "1"

x=173

case "2"

x=327

case "3"

x=483

case "4"

x=636

case "5"

x=791

end select

select case Iy 'indexaçãocoordenadas y

case "1"

y=232

case "2"

y=466

case "3"
70

y=696

case "4"

y=926

end select

if Op="r" then

elevador_dir

delay_ms(500)

elevador_up

delay_ms(500)

garfo_av

delay_ms(500)

garfo_up

delay_ms(500)

garfo_rc

delay_ms(500)

elevador_dn

delay_ms(500)

elevador_esq

esteira_dir

delay_ms(500)

garfo_up

delay_ms(500)

garfo_av

delay_ms(500)

garfo_dn
71

delay_ms(500)

garfo_rc

delay_ms(500)

esteira_esq

delay_ms(500)

Op=""

Ix=""

Iy=""

t=0

x=0

y=0

UART1_WRITE_Text("ok")

else

if Op="d" then

esteira_esq

delay_ms(5000)

esteira_dir

delay_ms(500)

garfo_av

delay_ms(500)

garfo_up

delay_ms(500)

garfo_rc

delay_ms(500)

elevador_dir
72

delay_ms(500)

elevador_up

delay_ms(500)

garfo_av

delay_ms(500)

garfo_dn

delay_ms(500)

garfo_rc

delay_ms(500)

elevador_dn

delay_ms(500)

elevador_esq

Op=""

Ix=""

Iy=""

t=0

x=0

y=0

UART1_WRITE_Text("ok")

endif

endif

wend

end.

Você também pode gostar