Escolar Documentos
Profissional Documentos
Cultura Documentos
EDSON SAITO
GLAUBER SHIGUEHARA SOLIGO
Curitiba
2016/2
EDSON SAITO
GLAUBER SHIGUEHARA SOLIGO
Curitiba
2016/2
RESUMO
This project includes the mechanical theoretical content, electronic and pro-
gramming for development of an AGV (Automated Guided Vehicle). This is an au-
tonomous vehicle for transporting medicines, provided with a self-guidance system
that has the ability to identify and track a demarcated path, by a color contrast range.
Whereas the steps of the robotic system preparation will be divided into 3 parts,
these being: mechanical structure, electronic control and operational programming,
for the best progress of the project, we conducted research on the AGV navigation
systems, metal forming processes, materials for the structure, sensors, microcon-
trollers, motors, batteries and programming language.
Ah Ampère hora
CA Corrente Alternada
CC Corrente Contínua
UHMW Ultra Hight Molecula Weight (Polietileno de Ultra alto Peso Molecular)
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1 PROBLEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2 HIPÓTESE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3 JUSTIFICATIVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 OBJETIVO GERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5 OBJETIVOS ESPECíFICOS . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 REFERENCIAL TEÓRICO . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1 VEíCULO GUIADO AUTOMATICAMENTE - AGV . . . . . . . . . . . . . . 16
2.1.1 Sistemas de navegação típicos para AGV . . . . . . . . . . . . . . 16
2.1.1.1 Sistema de navegação por fio enterrado com frequência . . . . . . . 17
2.1.1.2 Sistema de navegação por meio óptico . . . . . . . . . . . . . . . . . 17
2.1.1.3 Sistema de navegação por triangulação a laser . . . . . . . . . . . . 18
2.1.2 Sistemas de segurança para AGV . . . . . . . . . . . . . . . . . . 19
2.1.2.1 Sistema de segurança com laser scan . . . . . . . . . . . . . . . . . . 19
2.1.2.2 Sistema de segurança com Bumper (para-choque) . . . . . . . . . . 19
2.2 UTILIZAÇÃO DA TECNOLOGIA DE ROBÓTICA MÓVEL PARA ENTRE-
GAS EM AMBIENTE HOSPITALAR . . . . . . . . . . . . . . . . . . . . . . 20
2.3 MECÂNICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.1 Processos de Conformação Mecânica . . . . . . . . . . . . . . . . 22
2.3.1.1 Processo de Trefilação . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.1.2 Processo de Extrusão . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.1.3 Processo de Forjamento . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.1.4 Processo de Laminação . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.1.5 Processo de Estampagem . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.2 Materiais para construção mecânica . . . . . . . . . . . . . . . . . 25
2.3.2.1 Aços Carbono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.2.2 Alumínio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.2.3 Polietileno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.2.4 Policarbonato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4 ELETRÔNICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4.1 Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4.1.1 Microcontrolador Microchip PIC16F877A . . . . . . . . . . . . . . . . 28
2.4.2 Ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.3 Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4.3.1 Sensores Ópticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4.3.2 Infravermelho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.4.3.3 Sensor Ultrassônico (Sonar) . . . . . . . . . . . . . . . . . . . . . . . 36
2.4.3.4 Sensores Laser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.4.3.5 Chave fim de curso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4.3.6 Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.4.4 Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4.4.1 LCD (Liquid Crystal Display ) . . . . . . . . . . . . . . . . . . . . . . . 42
2.4.4.2 Diodos emissores de luz - LED (Light Emitting Diodes) . . . . . . . . 42
2.4.5 Bateria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.4.5.1 Baterias automotivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.4.5.2 Baterias estacionárias . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.4.6 Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.5 INFORMÁTICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.5.1 Linguagem de Programação . . . . . . . . . . . . . . . . . . . . . . 46
2.5.1.1 Linguagem Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.5.1.2 Linguagem C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3 DESENVOLVIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.1 MECÂNICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.1.1 Estrutura principal . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.1.2 Bumper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.1.3 Suporte do motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.1.4 Sistema de transmissão . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2 ELETRÔNICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2.1 Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.2.2 LCD (Liquid Crystal Display) . . . . . . . . . . . . . . . . . . . . . 55
3.2.3 Motores DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2.4 Chave fim de curso . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.2.5 Bateria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.2.5.1 Tomada para carregador de bateria . . . . . . . . . . . . . . . . . . . 60
3.2.6 Ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.2.6.1 Cooling Fan (Ventilador de resfriamento) . . . . . . . . . . . . . . . . 63
3.2.7 Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.2.7.1 Sensores Infravermelho . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.2.7.2 Sensores Sonar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.3 INFORMÁTICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.3.1 Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.3.2 Fluxograma da Programação . . . . . . . . . . . . . . . . . . . . . 68
4 CONSIDERAÇÕES FINAIS . . . . . . . . . . . . . . . . . . . . . . . . . 71
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
APÊNDICE A -- PONTE H . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
APÊNDICE B -- CONVERSOR DE TENSÃO . . . . . . . . . . . . . . . . . . 77
APÊNDICE C -- ESQUEMÁTICO PLACA DE CONTROLE . . . . . . . . . . 79
APÊNDICE D -- AGV AMBIENTE HOSPITALAR . . . . . . . . . . . . . . . 81
APÊNDICE E -- PROGRAMAÇÃO DO LCD . . . . . . . . . . . . . . . . . . 86
APÊNDICE F -- PROGRAMAÇÃO DO PWM . . . . . . . . . . . . . . . . . . 92
APÊNDICE G -- PROGRAMAÇÃO DO ULTRASSÔNICO . . . . . . . . . . . 94
APÊNDICE H -- ESTRUTURA . . . . . . . . . . . . . . . . . . . . . . . . . 97
APÊNDICE I -- ANEL BATENTE . . . . . . . . . . . . . . . . . . . . . . . . 99
APÊNDICE J -- EIXO DO BUMPER . . . . . . . . . . . . . . . . . . . . . . 101
APÊNDICE K -- CHAPA DO BUMPER . . . . . . . . . . . . . . . . . . . . . 103
APÊNDICE L -- CHAPA SUPORTE DO MOTOR . . . . . . . . . . . . . . . . 105
APÊNDICE M -- CANTONEIRA SUPORTE DO MOTOR . . . . . . . . . . . . 107
APÊNDICE N -- EIXO DA RODA . . . . . . . . . . . . . . . . . . . . . . . . 109
APÊNDICE O -- ENGRENAGEM DA RODA . . . . . . . . . . . . . . . . . . 111
APÊNDICE P -- RODA DE NYLON . . . . . . . . . . . . . . . . . . . . . . . 113
13
1 INTRODUÇÃO
1.1 PROBLEMA
1.2 HIPÓTESE
1.3 JUSTIFICATIVA
• Desenvolver a programação;
1.6 METODOLOGIA
2 REFERENCIAL TEÓRICO
Os AGV’s podem ser guiados por um fio indutivo no piso que transmite uma
corrente de determinada intensidade e frequência, por meio óptico, pelo qual o veí-
culo percorre uma linha no piso mediante um dispositivo óptico de detecção nele
instalado, e a laser, que varre o espaço em busca de referência para a movimenta-
ção do veículo (LOGWEB, 2007).
Uma fita colorida é aplicada ou uma linha é pintada no chão. Como mostrado
na figura 3, o veículo possui um conjunto de sensores ópticos na parte inferior, o
qual realiza a detecção do trajeto e a distância de deslocamento é calculada através
do encoder acoplado às rodas (SELETTRA, 2015).
18
O robô MKR (Muratec Keio Robot) (figura 8), trata-se de um robô autônomo
desenvolvido para aplicações de transporte no domínio hospitalar. Este robô têm
um sistema de quatro rodas de roletes multi-direcionais nas quatro rodas, o qual é
utilizado para melhorar a liberdade o movimento e a estabilidade do robô enquanto
está em movimento. Também é dotado de sensores laser, display para mensagens,
câmera esteroscópica e sensores ultrassônicos. O módulo de visão do robô é capaz
de reconhecer as pessoas ao seu redor, usando uma câmera colocada na cabeça.
O sistema é capaz de agarrar ambos os quadros da câmara direita e esquerda, e
processá-los ao mesmo tempo, a fim de calcular a informação sobre a distância
entre o robô e as pessoas e/ou obstáculos ao seu redor (TAKAHASHI, 2009).
2.3 MECÂNICA
2.3.2.2 Alumínio
2.3.2.3 Polietileno
2.3.2.4 Policarbonato
2.4 ELETRÔNICA
2.4.1 Microcontrolador
pleto, como: memória ROM, memória RAM, interface paralela, interface serial, tem-
porizador, contador de eventos, controlador de interrupções, entradas e saídas, en-
tre outros. A parte mais importante do microcontrolador é o microprocessador ou a
Unidade de Processamento Central (CPU - Central Processing Unit), cuja finalidade
é interpretar as instruções de programa (BOLTON, 2010; SOUZA, 2005).
Para funcionamento de um sistema mecatrônico, é utilizado um controlador
que pode ser designado como o cérebro desse sistema. Esses controladores são
computadores embutidos em um sistema, com o tamanho reduzido e funções es-
pecíficas e são conhecidos como microcontroladores. Os microcontroladores são
microprocessadores em forma de chip, os quais possuem memória e interfaces de
entrada e saída integradas em um mesmo elemento (BOLTON, 2010).
Nos microcontroladores pode ser utilizada a linguagem Assembly (linguagem
de nível baixo), a qual apresenta o mesmo conjunto de instruções do definido pelo
fabricante. A desvantagem dessa linguagem em relação à linguagem C, a Basic e
a PL/M (linguagens de nível alto) é a quantidade de detalhes que apresenta. Para
realizar a interface do programa elaborado na linguagem escolhida e o microcontro-
lador passando suas informações para o dispositivo, faz-se necessária a utilização
de um software para realizar a compilação dessas informações transformando em
código de máquina ou código binário (BOLTON, 2010; SOUZA, 2005).
2.4.2 Ponte H
1 1 1 1 Condição proibida
2.4.3 Sensores
tros para vários metros. Nas aplicações robóticas mais comuns, incluem a detecção
do chão, referências de navegação e para evitar colisões (EVERETT, 1995).
O desempenho real depende de vários fatores. Faixas eficazes são uma das
funções das características físicas (isto é, o tamanho, a forma, a refletividade, e
materiais) do objeto a ser detectado, a sua velocidade e direção do movimento,
o formato do sensor, a qualidade e a quantidade de energia irradiada ou rece-
bida. A repetibilidade na detecção baseia-se no tamanho do objeto alvo, mudanças
nas condições ambientais, variações na refletividade, características do material do
alvo, e a estabilidade do próprio circuito eletrônico. Características operacionais de
cada tipo de sensor em particular, pode muitas vezes ser exploradas para aper-
feiçoar o desempenho de acordo com as necessidades da aplicação (EVERETT,
1995).
2.4.3.2 Infravermelho
GRIN, 2015).
v.t
d= (2.1)
2
Estas chaves fim de curso (Limit Swich), possuem um ou mais pares de con-
tatos que fazem o seu acionamento mecânico. Podem ser chaves abertas, com o
acionamento fecham, ligam o circuito elétrico, ou o inverso, chaves fechadas que
ao acionar, desligam o circuito. Estas chaves são utilizadas para indicar os limites,
quando o objeto tem seu deslocamento, e essa chave é acionada, ela poderá limitar
a próxima ação (BOLTON, 2010).
A figura 22 mostra um exemplo de chave fim de curso comercial (SIEMENS,
2012).
A sua especificação está diretamente relacionada com os números de polos
e posições. A quantidade de circuitos separados que fazem parte da mesma ação
de comutação é denominada polo. As posições são os números de contatos indivi-
40
2.4.3.6 Encoder
É um tipo de sensor que gera pulsos, que pode transformar uma grandeza
física, posição linear ou velocidade angular, em um sinal elétrico mensurável (sinal
digital). Podem ser divididos em dois tipos: o encoder Incremental e o encoder
Absoluto (MAGRIN, 2015; STURM, 2004). Existem diversos tipos e modelos de
encoder no mercado, e um exemplo é a figura 23.
2.4.4 Display
Pode-se dizer que o sistema display utiliza indicadores luminosos, tanto para
mostrar um estado ligado ou desligado ou para mostrar caracteres alfanuméricos,
para cada aplicação. Vários são os tipos de display, como o display de cristal lí-
quido (LCD) e diodos emissores de luz (LED): como no display sete e dezesseis
segmentos, alfanumérico, formato matriz de ponto e barra de LED em vários forma-
tos (BOLTON, 2010).
3
Código Gray : inventado por Frank Gray, é caracterizada pelo fato de que na mudança de número,
apenas um bit é mudado por vez (EVERETT, 1995).
42
As siglas LCD, vem do inglês e significa Liquid Crystal Display (em portu-
guês, Display de Cristal Líquido). Módulos de LCD de caracteres alfanuméricos
são interfaces de comunicação visual muito útil e atraente (figura 26). Eles podem
ser encontrados em lugares como em aparelhos eletroeletrônicos, automóveis, ele-
trodomésticos, instrumentos de medição, etc. (figura 26). O LCD representa um
grande avanço tecnológico se for comparado com os primeiros display a LED de 7,
14 ou 16 segmentos. Os materiais de cristal líquido não emitem luz própria, neces-
sita de uma fonte de luz externa que é transmitida ou refletida. Ele é composto por
longas moléculas que tem o formato de barras, são inseridos entre duas folhas de
polímeros que possuem ranhuras microscópicas. As ranhuras destas folhas formam
um ângulo de 90◦ entre elas, isto é, se uma está possui ranhuras na vertical, a outra
terá ranhuras na posição horizontal. Quando não estão polarizadas estas molécu-
las ficam em paralelo com essas placas, e quando são polarizadas, elas fazem uma
suave rotação de 90◦ , permitindo com que a luz seja transmitida (BOLTON, 2010).
2.4.5 Bateria
suportam quantidade maior de ciclos de carga e descarga e sofrer até 80% de des-
carga, sem que sua vida útil seja prejudicada (FREEDOM, 2008).
As aplicações típicas de baterias estacionárias incluem sistemas no-breaks,
centrais telefônicas, alarmes, sistemas de som, energia solar e eólica, iluminação
de emergência ou qualquer outra aplicação que demande uma corrente moderada
por mais tempo (figura 29), ao invés de uma grande quantidade de corrente por
alguns segundos (FREEDOM, 2008).
2.4.6 Motor
Os motores CC, por sua vez, possuem dois grupos principais que podem
utilizar, ou não, escovas para estabelecer contato com um anel comutador do rotor,
de uma bobina a outra. O rotor é uma bobina de fio que gira no campo de um ímã
permanente ou de um eletroímã chamado de estator. Ao ser exposta a uma corrente
a bobina gira, mas para que ocorra continuidade nessa rotação há necessidade que
a corrente seja invertida. Os motores CC sem escovas possuem uma sequência de
bobinas no estator e um rotor de ímã permanente. Os motores CC com escova
possuem uma armadura composta por um cilindro de material magnético onde são
montadas em suas ranhuras as bobinas. Pode-se obter o controle de velocidade
através do controle de tensão aplicada na armadura. A obtenção desse controle é
feito através de uma fonte de tensão fixa, que por sua vez provém de uma tensão
variável obtida através de um circuito eletrônico (BOLTON, 2010).
2.5 INFORMÁTICA
2.5.1.2 Linguagem C
3 DESENVOLVIMENTO
3.1 MECÂNICA
3.1.2 Bumper
3.2 ELETRÔNICA
3.2.1 Microcontrolador
Para fazer o controle geral do robô seguidor de linha, foi utilizado o micro-
controlador modelo PIC 16F877A de 40 pinos da marca Microchip, pois apresenta
todas as funções necessárias para o funcionamento do robô, como as portas de en-
trada e saída (33 portas), gerador de pulsos PWM, fácil gravação através do sistema
de programação ICSP, contador, entrada analógica,interface serial, comparadores,
entre outros.
É o componente de maior importância para o circuito, pois é ele que fará
a comunicação com os demais componentes, receber e enviar informações para
o funcionamento do robô, o PIC 16F877A recebe informações dos três sensores
HC-SR04, dos três infravermelhos, dos dois botões (figura 39) e limit switch, onde
faz o processamento e envia os dados processados para a ponte H, que acionará
os motores e para o modulo LCD, que mostrará os dados. A placa com o circuito
montado é mostrado na figura 40.
E também por ser um componente que vem sendo estudado e utilizado no
decorrer do curso, nas disciplinas de sistemas dedicados e projeto integrador.
55
3.2.3 Motores DC
O motor equivalente é o modelo F 006 B20 092CC figura 44, de acordo com o
seu manual (BOSCH, 2016), apresenta as seguintes características: tensão nomi-
nais de 12 V, corrente nominal de 4,8 A, corrente máxima de 25 A, potência nominal
de 19 W, Torque nominal de 4,5 Nm. Para ligar o motor à roda será necessária mais
uma engrenagem que fará a transmissão e redução para a roda.
3.2.5 Bateria
Para este robô foi utilizado uma bateria de moto marca ERBS modelo 12 V
9BRD com tensão 12 V e corrente de 9 Ah, Comprimento 150 mm, Largura 87 mm
e Altura 106 mm conforme a figura 47.
3.2.6 Ponte H
3.2.7 Sensores
Para o robô de deslocar em cima da faixa e para detectar qual a posição que
ele se encontra, foi utilizado o sensor Infravermelho Reflexivo.
Seu funcionamento se baseia através de um sistema de reflexão infraver-
melho, no qual um LED emissor Infravermelho fica ao lado de um fototransistor, e
64
quando um obstáculo e/ou objeto passa no seu raio de ação, os sensores emitem
um sinal em nível lógico baixo para a saída que é ligada na porta do PIC.
Utiliza um controlador LM393(circuito integrado amplificador operacional), como
demonstra a figura 54, sua tensão de trabalho é d 3,3 V à 5 V, sua distância de acio-
namento pode variar de 2 cm à 30 cm (ajustável pelo trimpot), o ângulo da sua faixa
de detecção é de 35o , saída digital (1 ou 0).
Dessa forma, quando o robô se deslocar para algum dos lados e a luz emi-
tida pelo LED atingir a parte branca, ela aumenta a velocidade do motor do lado
que provocou o desalinhamento deixando apenas o outro motor com a velocidade
normal, o que corrige o movimento do robô em relação ao trajeto pré-definido pela
faixa figura (figura 58).
66
Para construir este projeto com um bom desempenho nas leituras, utilizaram-
se três sensores HC-SR04. Sendo que os três sensores estão posicionados na
parte frontal do robô, um ao lado do outro, conforme ilustrado na figura 60.
67
3.3 INFORMÁTICA
3.3.1 Programação
Para a maioria dos testes, foi realizado a simulação no software Proteus v8.0,
mas como este software não permite simulações do ultrassônico, estes foram feitos
testes diretamente na placa.
Os programas para testes e ajustes foram divididos em partes, para se ter
uma maior facilidade. Primeiramente foi elaborado um programa para o teste das
chaves (botões e fim de curso) e sensores infravermelhos, em seguida, a ponte H,
e por final os sensores ultrassônicos. Depois de testados e ajustados foi feita a
integração de todos os componentes e testado a programação final.
O seu funcionamento apresenta-se no apêndice D.
4 CONSIDERAÇÕES FINAIS
REFERÊNCIAS
APÊNDICE A -- Ponte H
A B C D E F G H J K
VMOTOR
C1
0 VDD
0
12V
100nf
VMOTOR
2 C2
1
D3
D5
100nf 9 4
1 1
1N4007
1N4007
5
MOTOR1_HORA IN1 VCC VS HORARIO_M1
7 2
MOTOR1_ANTI IN2 OUT1
5V 10
IN3 ANTI-HORARIO_M1
OUT 1
VDD
2 12 3
IN4 OUT2
1 6 1
PWM 1 ENA HORARIO_M1
11 13 2
2 ENB OUT3 ANTI-HORARIO_M1 2
1 14
SENSA OUT4
15
SENSB GND
L298
D2
D4
8
MOTOR_1_IN
3 3
2
1N4007
1N4007
MOTOR1_HORA
1
MOTOR1_ANTI
HORARIO_M1 ANTI-HORARIO_M1
MOTOR_2_IN
4 VMOTOR 4
2
MOTOR2_HORA
1 C4
MOTOR2_ANTI
HORARIO_M2 ANTI-HORARIO_M2
VDD
100nf
C5
5 PWM 5
2
D7
D9
PWM 1
1 100nf 9 4
PWM 2 OUT 2
1N4007
1N4007
5 1
MOTOR2_HORA IN1 VCC VS HORARIO_M2 ANTI-HORARIO_M2
7 2 2
MOTOR2_ANTI IN2 OUT1 HORARIO_M2
10
6 IN3 ANTI-HORARIO_M2 6
12 3
IN4 OUT2
6
PWM 2 ENA
11 13
ENB OUT3
1 14
SENSA OUT4
15
SENSB GND
7 7
L298
D6
D8
8
1N4007
1N4007
8 8
12/10/2016
DESIGN TITLE: Ponte H L298
PAGE:
9 PATH: F:\Ponte H L298.pdsprj 9
1 of 2
BY: Edson Saito REV: - TIME: 14:50:12
A B C D E F G H J K
77
0 0
1 1
2 2
5V OUT
2
VDD
1
3 3
VDD
LIGA / DESL D1
FUSIVEL 7805
R1
1 3
VI VO
4 4
270
GND
5A 1N4004
TOMADA PARA CARREGADOR
12V MOTOR 12V IN COOLER
1
BATERIA
2
2 1 1
100nf C1 D2
2 2
12V LED-GREEN
5 5
+88.8
kRPM
6 6
7 7
8 8
12/10/2016
DESIGN TITLE: Conversor de tensão
PAGE:
9 PATH: F:\Conversor de tensão.pdsprj 9
1 of 1
BY: Edson Saito REV: - TIME: 16:15:30
A B C D E F G H J K
79
SONAR_1 LED
IR1
1
VDD 1
0 2 IR_1 0
TRIG_1 2
3
ECHO_1 3
R10
R11
R12
R13
R14
R15
R16
LCD1
R5
R6
R7
R8
R9
4 VDD
330
330
330
330
330
330
330
330
330
330
330
330
SONAR_2 IR2
1 VDD 1
VDD
1 D1 D4 D7 D9 D10 D11 D13
VSS
VEE
D2 D3 D5 D6 D8 1
RW
VDD
RS
D0
D1
D2
D3
D4
D5
D6
D7
IR_2
E
2 2
TRIG_2
3 3
ECHO_2 VDD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
4
RV2
2 SONAR_3 2
IR3
LCD_E
LCD_RS
1 1
VDD 43%
2 IR_3
TRIG_3 2
3 3
ECHO_3
4 VDD
10k
LCD_D4
LCD_D5
LCD_D6
LCD_D7
3 3
VDD VPP
C3 J1
1
OSC1 2
15pF 3
13 33
4 OSC 1 OSC1/CLKIN RB0/INT LCD_D7 4 4
X1 OSC 2
14
OSC2/CLKOUT RB1
34
LCD_D6 5
35
C4 2
RB2
36
LCD_D5 6
8MHz RA0/AN0 RB3/PGM LCD_D4
OSC2 3 37
VDD RA1/AN1 RB4 LCD_RS
4 38
RA2/AN2/VREF-/CVREF RB5 LCD_E ICSP
15pF 5 39
RA3/AN3/VREF+ RB6/PGC
6 40
5 RV1 RA4/T0CKI/C1OUT RB7/PGD 5
7
MOTOR1_HORA RA5/AN4/SS/C2OUT VDD
15
RC0/T1OSO/T1CKI IR_3
8 16
MOTOR1_ANTI RE0/AN5/RD RC1/T1OSI/CCP2 PWM_MOTOR2
9 17 BUMPER
50%
A B C D E F G H J K
81
1
F:\AGV_Ambiente_Hospitalar.c
62:
63:
64:
65: if(!input(SW1) && input(SW2)) // PACIENTE 1
66: {
67: a=1;
68:
69: printf(lcd_putc, "\f PACIENTE");
70: printf(lcd_putc, "\n %u ", a);
71: delay_ms(100);
72: }
73:
74:
75: if(input(SW1) && !input(SW2)) // PACIENTE 2
76: {
77: a=2;
78:
79: printf(lcd_putc, "\f PACIENTE");
80: printf(lcd_putc, "\n %u ", a);
81: delay_ms(100);
82: }
83:
84:
85: if(!input(SW1)&& !input(SW2)) // POSIÇÃO INICIAL
86: {
87: a=3;
88:
89: printf(lcd_putc, "\f RETORNO A");
90: printf(lcd_putc, "\n ENFERMARIA");
91: delay_ms(100);
92: }
93:
94:
95: if(input (IR1)) // DETECTA O LOCAL DE PARADA
96: {
97: b=b+1;
98: }
99:
100:
101: if(b==3) // DETECTA A POSIÇÃO INICIAL E ZERA CONTADOR
102: {
103: b=0;
104: }
105:
106:
107: if(a==b && b>0) // CHEGOU AO DESTINO
108: {
109: output_low (MOTOR1_HORARIO);
110: output_low (MOTOR1_ANTIHORARIO);
111: output_low (MOTOR2_HORARIO);
112: output_low (MOTOR2_ANTIHORARIO);
113: velocidade1=0;
114: velocidade2=0;
115: a=0;
116:
117: printf(lcd_putc, "\fPACIENTE RETIRAR");
118: printf(lcd_putc, "\n O MEDICAMENTO");
119: delay_ms(500);
120:
121: printf(lcd_putc, "\f AGUARDANDO");
122: printf(lcd_putc, "\n INSTRUCAO");
2
F:\AGV_Ambiente_Hospitalar.c
123: delay_ms(500);
124: }
125:
126:
127: if(a==0 || (!input(IR2)&& !input(IR3))) // PARADO, SEM INSTRUÇÃO
128: {
129: output_low (MOTOR1_HORARIO);
130: output_low (MOTOR1_ANTIHORARIO);
131: output_low (MOTOR2_HORARIO);
132: output_low (MOTOR2_ANTIHORARIO);
133: velocidade1=00;
134: velocidade2=00;
135:
136: printf(lcd_putc, "\f AGUARDANDO");
137: printf(lcd_putc, "\n INSTRUCAO");
138: delay_ms(500);
139: }
140:
141:
142: if(input(IR2)&& input(IR3) && !input(BUMPER) && a>0 &&
143: distancia1>=30 && distancia2>=30 && distancia3>=30) // NA LINHA
144: {
145: output_high (MOTOR1_HORARIO);
146: output_low (MOTOR1_ANTIHORARIO);
147: output_high (MOTOR2_HORARIO);
148: output_low (MOTOR2_ANTIHORARIO);
149:
150: velocidade1=95;
151: velocidade2=80;
152: }
153:
154:
155: if(input(IR2) && !input(IR3) && !input(BUMPER) && a>0 &&
156: distancia1>=30 && distancia2>=30 && distancia3>=30)
157: // SAIU PARA ESQUERDA
158: {
159: output_high (MOTOR1_HORARIO);
160: output_low (MOTOR1_ANTIHORARIO);
161: output_high (MOTOR2_HORARIO);
162: output_low (MOTOR2_ANTIHORARIO);
163:
164: velocidade1=80;
165: velocidade2=100;
166: }
167:
168:
169: if(!input(IR2) && input(IR3) && !input(BUMPER) && a>0 &&
170: distancia1>=30 && distancia2>=30 && distancia3>=30)
171: // SAIU PARA DIREITA
172: {
173: output_high (MOTOR1_HORARIO);
174: output_low (MOTOR1_ANTIHORARIO);
175: output_high (MOTOR2_HORARIO);
176: output_low (MOTOR2_ANTIHORARIO);
177:
178: velocidade1=130;
179: velocidade2=80;
180: }
181:
182:
183: if(input(BUMPER) || (distancia1<30 && distancia2<30 && distancia3<30))
3
F:\AGV_Ambiente_Hospitalar.c
184: //PARADA EMERGÊNCIA
185: {
186: output_high (MOTOR1_HORARIO);
187: output_low (MOTOR1_ANTIHORARIO);
188: output_high (MOTOR2_HORARIO);
189: output_low (MOTOR2_ANTIHORARIO);
190: velocidade1=0;
191: velocidade2=0;
192: a=0;
193:
194: printf(lcd_putc, "\f PARADA DE");
195: printf(lcd_putc, "\n EMERGENCIA");
196: delay_ms(1000);
197: }
198:
199: }
200: }
201:
4
86
1
F:\flex_lcd420.c
62: // to a boolean (1 or 0).
63: output_bit(LCD_DB4, !!(nibble & 1));
64: output_bit(LCD_DB5, !!(nibble & 2));
65: output_bit(LCD_DB6, !!(nibble & 4));
66: output_bit(LCD_DB7, !!(nibble & 8));
67:
68: delay_cycles(1);
69: output_high(LCD_E);
70: delay_us(2);
71: output_low(LCD_E);
72: }
73:
74: //-----------------------------------
75: // This sub-routine is only called by lcd_read_byte().
76: // It's not a stand-alone routine. For example, the
77: // R/W signal is set high by lcd_read_byte() before
78: // this routine is called.
79:
80: #ifdef USE_RW_PIN
81: int8 lcd_read_nibble(void)
82: {
83: int8 retval;
84: // Create bit variables so that we can easily set
85: // individual bits in the retval variable.
86: #bit retval_0 = retval.0
87: #bit retval_1 = retval.1
88: #bit retval_2 = retval.2
89: #bit retval_3 = retval.3
90:
91: retval = 0;
92:
93: output_high(LCD_E);
94: delay_us(1);
95:
96: retval_0 = input(LCD_DB4);
97: retval_1 = input(LCD_DB5);
98: retval_2 = input(LCD_DB6);
99: retval_3 = input(LCD_DB7);
100:
101: output_low(LCD_E);
102: delay_us(1);
103:
104: return(retval);
105: }
106: #endif
107:
108: //---------------------------------------
109: // Read a byte from the LCD and return it.
110:
111: #ifdef USE_RW_PIN
112: int8 lcd_read_byte(void)
113: {
114: int8 low;
115: int8 high;
116:
117: output_high(LCD_RW);
118: delay_cycles(1);
119:
120: high = lcd_read_nibble();
121:
122: low = lcd_read_nibble();
2
F:\flex_lcd420.c
123:
124: return( (high<<4) | low);
125: }
126: #endif
127:
128: //----------------------------------------
129: // Send a byte to the LCD.
130: void lcd_send_byte(int8 address, int8 n)
131: {
132: output_low(LCD_RS);
133:
134: #ifdef USE_RW_PIN
135: while(bit_test(lcd_read_byte(),7)) ;
136: #else
137: delay_us(60);
138: #endif
139:
140: if(address)
141: output_high(LCD_RS);
142: else
143: output_low(LCD_RS);
144:
145: delay_cycles(1);
146:
147: #ifdef USE_RW_PIN
148: output_low(LCD_RW);
149: delay_cycles(1);
150: #endif
151:
152: output_low(LCD_E);
153:
154: lcd_send_nibble(n >> 4);
155: lcd_send_nibble(n & 0xf);
156: }
157: //----------------------------
158:
159: void lcd_init(void)
160: {
161: int8 i;
162:
163: lcd_line = 1;
164:
165: output_low(LCD_RS);
166:
167: #ifdef USE_RW_PIN
168: output_low(LCD_RW);
169: #endif
170:
171: output_low(LCD_E);
172:
173: // Some LCDs require 15 ms minimum delay after
174: // power-up. Others require 30 ms. I'm going
175: // to set it to 35 ms, so it should work with
176: // all of them.
177: delay_ms(35);
178:
179: for(i=0 ;i < 3; i++)
180: {
181: lcd_send_nibble(0x03);
182: delay_ms(5);
183: }
3
F:\flex_lcd420.c
184:
185: lcd_send_nibble(0x02);
186:
187: for(i=0; i < sizeof(LCD_INIT_STRING); i++)
188: {
189: lcd_send_byte(0, LCD_INIT_STRING[i]);
190:
191: // If the R/W signal is not used, then
192: // the busy bit can't be polled. One of
193: // the init commands takes longer than
194: // the hard-coded delay of 50 us, so in
195: // that case, lets just do a 5 ms delay
196: // after all four of them.
197: #ifndef USE_RW_PIN
198: delay_ms(5);
199: #endif
200: }
201:
202: }
203:
204: //----------------------------
205:
206: void lcd_gotoxy(int8 x, int8 y)
207: {
208: int8 address;
209:
210:
211: switch(y)
212: {
213: case 1:
214: address = LCD_LINE_1_ADDRESS;
215: break;
216:
217: case 2:
218: address = LCD_LINE_2_ADDRESS;
219: break;
220:
221: case 3:
222: address = LCD_LINE_3_ADDRESS;
223: break;
224:
225: case 4:
226: address = LCD_LINE_4_ADDRESS;
227: break;
228:
229: default:
230: address = LCD_LINE_1_ADDRESS;
231: break;
232:
233: }
234:
235: address += x-1;
236: lcd_send_byte(0, 0x80 | address);
237: }
238:
239: //-----------------------------
240: void lcd_putc(char c)
241: {
242: switch(c)
243: {
244: case '\f':
4
F:\flex_lcd420.c
245: lcd_send_byte(0,1);
246: lcd_line = 1;
247: delay_ms(2);
248: break;
249:
250: case '\n':
251: lcd_gotoxy(1, ++lcd_line);
252: break;
253:
254: case '\b':
255: lcd_send_byte(0,0x10);
256: break;
257:
258: default:
259: lcd_send_byte(1,c);
260: break;
261: }
262: }
263:
264: //------------------------------
265: #ifdef USE_RW_PIN
266: char lcd_getc(int8 x, int8 y)
267: {
268: char value;
269:
270: lcd_gotoxy(x,y);
271:
272: // Wait until busy flag is low.
273: while(bit_test(lcd_read_byte(),7));
274:
275: output_high(LCD_RS);
276: value = lcd_read_byte();
277: output_low(LCD_RS);
278:
279: return(value);
280: }
281: #endif
5
92
1
94
1
F:\SONAR_BIOMEDICA.c
62:
63: while(!input(ECHO2)); //aguarda nível alto do echo para zerar
64: //timer1
65:
66: set_timer1(0); //zera valor do timer1
67:
68: while(input(ECHO2)); //aguarda nível baixo do echo para
69: //leitura do timer1
70:
71: tempo2=get_timer1(); //leitura do timer1 interno
72:
73: distancia2=tempo2*CALIB_SONAR;//calculo de distancia, utilizando
74: //constante de calibração
75: }
76:
77:
78: void leitura_sonar_3()
79: {
80: delay_ms(DELAY_SONARES); //sonar 3
81:
82: //setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //configura o timer
83: //interno
84:
85: output_high(TRIG3); //aciona rotina de inicialização do trigger
86: delay_us(10); //aguarda 10us para o trigger
87: output_low(TRIG3);//finaliza rotina de inicialização do trigger
88:
89: while(!input(ECHO3)); //aguarda nível alto do echo para zerar
90: //timer1
91:
92: set_timer1(0); //zera valor do timer1
93:
94: while(input(ECHO3)); //aguarda nível baixo do echo para
95: //leitura do timer1
96:
97: tempo3=get_timer1(); //leitura do timer1 interno
98:
99: distancia3=tempo3*CALIB_SONAR;//calculo de distancia, utilizando
100: //constante de calibração
101: }
2
97
APÊNDICE H -- Estrutura
1 2 3 4 5 6
218
6
A
20 A
200
100
400
B B
300
C C
VERIF.
D
APROV.
MANUF.
Desenho estrutura A4
QUALID MATERIAL:
DES. Nº
A A
15
10
8
M4
B B
C C
VERIF.
D
APROV.
MANUF.
Anel batente
QUALID MATERIAL:
A4
DES. Nº
A 100 A
6
M
8
7
B B
C C
VERIF.
D
APROV.
MANUF.
Eixo Bumper
QUALID MATERIAL:
A4
DES. Nº
300
A A
10
30
1
B B
0
R1
C C
VERIF.
D
APROV.
MANUF.
Chapa Bumper
QUALID MATERIAL:
A4
DES. Nº
82
10
7,50
A A
13
4.1
15 3 x4
0
R1
12
31,50
60
7,50
18
B B
4
7,50 15 6,60 36,37 11,31
11
C C
6,60
120
NOME ASSINATURA DATA TÍTULO:
DES.
VERIF.
D
APROV.
MANUF.
Chapa Motor
QUALID MATERIAL:
A4
DES. Nº
18,20 6
A A
30
R3
B 4 B
0
6,6
4,60
15,40
C C
38,20
VERIF.
D
APROV.
MANUF.
QUALID MATERIAL:
A4
DES. Nº
A A
120
8
B B
C C
VERIF.
D
APROV.
MANUF.
Eixo Roda
QUALID MATERIAL:
A4
DES. Nº
M2 8
A A
0
R1
16
16
B B
13
8
C C
VERIF.
D
APROV.
MANUF.
Engrenagem roda A4
QUALID MATERIAL:
DES. Nº
22
0
10
A A
26
7
8
0.
4x
M
B B
C C
VERIF.
D
APROV.
MANUF.
Roda nylon
QUALID MATERIAL:
A4
DES. Nº