CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA

Transcrição

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA
CELSO SUCKOW DA FONSECA
DEPARTAMENTO DE ENSINO SUPERIOR
PROPELER – PROjeto de Pesquisa Educacional sobre ELEtrônica e
Robótica
Por:
Diego de Oliveira Ribeiro Osório
Fábio Guimarães da Silva
Mark Eirik Scortegagna Joselli
Murilo Cesar da Silva Furtado Junior
Data:21/12/05
Hora:18:00
Professor Orientador:
Alessandro Rosa Lopes Zachi
Rio de Janeiro
2005/2
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA
CELSO SUCKOW DA FONSECA
DEPARTAMENTO DE ENSINO SUPERIOR
PROPELER – PROjeto de Pesquisa Educacional sobre ELEtrônica e
Robótica
Monografia elaborada segundo
as exigências da disciplina
Projeto Final de Curso que
habilita a graduação em
Engenharia de Eletrônica.
Por:
Diego de Oliveira Ribeiro Osório
Fábio Guimarães da Silva
Mark Eirik Scortegagna Joselli
Murilo Cesar da Silva Furtado Junior
Professor Orientador:
Alessandro Rosa Lopes Zachi
Rio de Janeiro
2005/2
Dedicamos este projeto a nossos pais, que
desde o início de nossas vidas nos incentivaram
a nos tornar pessoas melhores e a todas as
pessoas que, de alguma forma, nos ajudaram
na dura caminhada para tornar-nos estas
pessoas.
ii
Agradecimentos
A Deus, que nunca nos abandonou, principalmente nestes últimos cinco anos,
quando mais precisamos dele.
Aos mestres e professores que se preocuparam em nos mostrar o caminho para
sermos grandes engenheiros.
Ao CEFET/RJ, pela oportunidade de provar nosso valor.
Aos amigos, que foram nosso apoio durante esta árdua caminhada.
Ao laboratório LACME (sala E211A) e ao amigo Carlos Pizzino, pelo apoio
técnico.
iii
RESUMO
Este trabalho descreve o projeto e a construção de um sistema de controle
de um robô móvel acionado pela porta paralela de um computador pessoal. O
robô é constituído de uma base metálica que seja capaz de suportar dois motores
de passo, uma placa de circuito impresso que movimentarão e controlarão o
movimento do mesmo e uma câmera.
Para a comunicação com o PC, desenvolve-se um circuito que faz a
comunicação remota por radio freqüência entre a porta paralela do computador
PC e o módulo robô. Os comandos para o robô são feitos pelo usuário, através de
um software desenvolvido em lingagem C++.
iv
Abstract
This work describes the design and the construction of a control system for
a mobile robot activated by the parallel port of a personal computer. The robot is
constituted by a metallic base that is capable of supporting two step-motors, a
circuit board that will put them in motion and will control their movement and a
camera.
For the communication with the PC, a circuit was developed that makes the
remote communication between the parallel door of a computer PC and the
module robot. The commands for the robot are performed by the user through a
software developed with the C++ language.
v
Sumário
1
2
3
INTRODUÇÃO
1
1.1
Introdução
1
1.2
Objetivos
2
1.3
Organização do trabalho
2
REVISÃO BIBLIOGRÁFICA
3
2.1
Apresentação
3
2.2
Histórico
4
2.3
Critérios de classificação na robótica móvel
7
2.4
Desafios atuais da robótica
8
2.5
Comentários finais
8
DESCRIÇÃO DO PROTÓTIPO
9
3.1
Diagrama de blocos do sistema PROPELER
9
3.2
O computador
10
3.3
O robô
10
3.3.1 Motores de passo
10
3.3.2 Estrutura do veículo
15
Comentários finais
18
3.4
4
5
6
DESENVOLVIMENTO DO HARDWARE
19
4.1
Circuito de alimentação
19
4.2
Porta paralela de um PC
19
4.2.1 Endereçamento da porta paralela
20
4.2.2 O conector DB25
21
4.2.3 Conector Centronics
22
4.3
Circuito de acionamento e driver de potência
24
4.4
Comentários finais.
29
LINK DE RÁDIOFREQÜÊNCIA
30
5.1
Circuitos de transmissão e recepção
30
5.2
Comentários finais.
33
SOFTWARE DO PROJETO
34
6.1
A linguagem C
34
6.2
Microsoft DirectShow
36
6.3
Código do Software
36
vi
7
CONCLUSÃO
40
7.1
Comentários gerais
40
7.2
Fechamento
40
7.3
Sugestões para trabalhos futuros
41
REFERÊNCIAS BIBLIOGRÁFICAS
42
Datasheet do CI LM555
43
Datasheet do CI MC145026 e MC145027
44
Datasheet do CI 74LS244
45
Datasheet do CI MC74HC04A
46
Datasheet do CI 74HC
47
Datasheet do CI 74LS244P
48
Datasheet do CI CD2027D
49
Datasheet do CI HEF4070B
50
Datasheet do CI BC337
51
Datasheet do CI BC558
52
Datasheet do CI CD4017
53
Datasheet do CI RR3
54
Datasheet do CI RT4
55
Datasheet do CI TIP31
56
Datasheet do CI TIP41
57
Datasheet do CI ULN2803
58
Datasheet do CI ULN2803
59
vii
Lista de Figuras
2.1
Robô UNIMATE
5
2.2
Robô móvel Shakey
6
2.3
Robô Sojorner da NASA
6
3.1
Diagrama de blocos do projeto
9
3.2
Funcionamento do motor de passo unipolar de passo inteiro
11
3.3
Funcionamento do motor de passo unipolar em meio-passo
12
3.4
Funcionamento do motor de passo bipolar em passo inteiro
12
3.5
Funcionamento do motor de passo bipolar em meio-passo
13
3.6
Interno do motor de passo
13
3.7
Vista de frontal do robô
15
3.8
Vista de perfil do robô
16
3.9
Vista inferior do robô
16
3.10
Vista lateral do robô
17
3.11
Robô acomodando a placa de circuito impresso
17
4.1
Diagrama das fontes dos circuitos
19
4.2
Conector DB25 fêmea da porta paralela
21
4.3
Conector Macho do Cabo Paralelo
22
4.4
Foto do conector DB25 macho do cabo Paralelo
22
4.5
Esquema de funcionamento do DB25 no modo SPP
23
4.6
Conector Centronics
23
4.7
CI ULN2003
27
4.8
Projeto inicial de driver de potência
25
4.9
Circuito de acionamento do motor direito
26
4.10
LM555 ligado como multivibrador astável (gerador de clock)
27
4.11
Onda gerada pelo LM555
27
4.12
Forma para calcular a freqüência do LM555
28
4.13
Circuito driver de potência
29
5.1
CIs de codificação e decodificação do dado digital
30
5.2
Esquema de transmissão de dados entre os CIs
31
5.3
Esquema do circuito transmissor
32
viii
5.4
Esquema do circuito receptor
32
6.2
Lay-out da interface
37
6.3
Fluxograma básico do programa
39
ix
1
Capítulo 1
INTRODUÇÃO
1.1 Introdução
Os homens, como todos os seres vivos, têm limitações para se adaptarem
em determinados locais, principalmente onde não são encontrados elementos
básicos para a manutenção de suas funções vitais, como, por exemplo,
o
oxigênio. Além disto, o ser humano resiste apenas a uma estreita faixa de
variação de temperatura e pressão, não sobrevive na presença de gases tóxicos e
é incapaz de se manter por muito tempo em ambientes sem a presença de luz e
água. Entretanto apresenta um grande poder de adaptação ao meio, o que
justifica o domínio que tem sobre o planeta, pois sobrevive tanto no mais quente
deserto africano como na mais fria geleira antártica. Naturalmente, existem meios
que tornam esta sobrevivência possível sem, no entanto, excluir as limitações
descritas anteriormente. (TOURINO, 2002)
A veia exploradora no ser humano sempre teve um forte apelo, o que pode
ser percebido desde a infância, quando desejamos sempre conhecer coisas
novas, tocando, vendo, ou mesmo escutando. Os sentidos são os nossos
principais aliados nestas descobertas, traduzindo para o cérebro o que se observa
no ambiente.
No entanto, estes sentidos são limitados; a partir de uma certa distância não
podemos tocar ou mesmo enxergar. O desejo de ultrapassar esses limites
certamente foi um fator preponderante na criação de sistemas de telepresença,
abrindo espaço para a extensão dos sentidos humanos, seja a audição, a visão
ou o tato.
O sistema de telepresença tratado neste trabalho tem o objetivo de fazer
com que o usuário possa monitorar um ambiente remoto através da visão,
podendo ser futuramente adaptado a outros sentidos como a audição, olfato e
tato, por exemplo. Um robô deste pode trabalhar em ambientes hostis e tem
emprego em um sem número de operações, como, por exemplo, inspeção de
dutos de ar-condicionado e tubulações de alta pressão, na busca de
sobreviventes em desabamentos ou terremotos, em sistemas de segurança
2
patrimonial, no desarme de bombas e na exploração espacial, entre outros.
(TOURINO, 2002)
A utilização destes robôs em postos que anteriormente eram tomados por
humanos vem no sentido de preservar o patrimônio mais valioso que temos: a
vida.
1.2 Objetivos
O objetivo deste trabalho é projetar e construir um sistema de controle de um
robô móvel acionado pela porta paralela de um computador pessoal (Personal
Computer, PC). O robô é constituído de uma base metálica que seja capaz de
suportar dois motores de passo e uma placa de circuito impresso que
movimentarão e controlarão o movimento do robô, respectivamente.
Para a comunicação com o PC, será desenvolvido um circuito que faça a
comunicação remota entre a porta paralela de um computador PC e o módulo
robô. Finalmente, teremos um software controlador que seja capaz de interpretar
comandos fornecidos pelo usuário em uma linguagem de alto nível, e enviá-los ao
robô para a sua execução.
1.3 Organização do trabalho
Nos capítulos 2 e 4, apresenta-se uma revisão bibliográfica do tema,
apresentando o histórico, o cenário atual e perspectivas futuras, além de uma
breve descrição acerca do acionamento de dispositivos via porta paralela. No
capítulo 3 segue a descrição do protótipo e as partes que o compõem. Neste
capítulo, um enfoque maior é dado ao desenvolvimento dos circuitos de hardware.
O capítulo 5 versa sobre o circuito de comunicação por radiofreqüência (RF)
utilizado no protótipo para o acionamento remoto. A descrição do software de
controle em linguagem C segue no capítulo 6. O capítulo 7 apresenta as
conclusões do trabalho e é seguida pelos anexos com os datasheets dos
componentes mais relevantes no projeto e o código do programa em C.
3
Capítulo 2
REVISÃO BIBLIOGRÁFICA
Vive-se a era da automação onde produtividade, rapidez e eficiência estão
cada vez mais presentes. O avanço da tecnologia, em especial o da
microinformática, tem facilitado em muito a vida. Sistemas que há pouco tempo
habitavam apenas os filmes de ficção científica, tornam-se cada vez mais
comuns. Sendo assim, este capítulo apresenta brevemente trechos da história da
automação, descrevendo alguns pontos do cenário atual.
2.1 Apresentação
A confiabilidade que os sistemas automatizados adquiriram durante o
período de seu desenvolvimento aumenta cada vez mais a confiança nas
máquinas, fato que não se poderia imaginar até muito recentemente. Observa-se
isso ao se utilizar um caixa automático de banco. Ao lhe informar uma senha, que
é um código sigiloso, operam-se as transações financeiras desejadas por
intermédio de uma série de computadores conectados ao terminal utilizado. Se
não se acreditasse que a máquina cumprisse o seu papel, talvez os caixas
automáticos não seriam tão populares como hoje.
Mas a utilização das máquinas está além de fornecer dinheiro de contas
bancárias. Elas são, acima de tudo, escravas onde quer que as coloquem, e isto
deve ser sempre o ponto de maior relevância na relação entre homem e máquina.
Como escravas, elas efetuam as operações rotineiras, tediosas e insalubres que
outrora eram executadas por seres humanos, o que fica claro quando se fala de
robôs. (TOURINO, 2002)
Atualmente, os robôs são utilizados, por exemplo, para desarmar bombas,
limpar dutos de ar condicionado, montar placas de circuito impresso com alto
índice de integração ou participar da linha de montagem de automóveis. Por isso,
esses equipamentos tornaram-se indispensáveis em diversos setores produtivos
em todo o mundo.
Por força da visão romântica que envolve os robôs, algumas discussões
ainda giram ao redor do mito do robô totalmente autônomo inteligente e seu maior
4
desafio: expressar sentimentos. Isso marca a constante busca do homem em criar
vida artificial, “a sua imagem e semelhança”.
2.2 Histórico
A idéia de se criar máquinas que substituissem o trabalho humano já é bem
antiga, sendo datada desde a Grécia antiga com Ctesibus, em 270 A.C., que
desenvolveu figuras animadas movidas com a energia da água.
Em 1921 o termo "robô" foi primeiramente utilizado na peça teatral chamada
"Rossum's Universal Robots", do tcheco Karel Capek, que tratava da utilização de
máquinas como escravos. O termo robô origina-se do francês robot, que por sua
vez vem do tcheco robota, palavra criada pelo escritor tchecoeslovaco, que
significa "trabalho forçado". (TOURINO, 2002)
Os robôs surgiram como máquinas na década de 20 e eram cópias
morfológicas dos seres humanos. O Televox, criado em 1928 por J. Wensley, se
assemelhava a nós e apresentava movimentos básicos, de acordo com os
comandos de seu operador (POLONSKII, 1996).
Durante as duas décadas seguintes os robôs desenvolvidos apresentavam
sempre estas características básicas: a semelhança morfológica com os humanos
e a capacidade de repetir comandos dados por um operador. Foi somente em
1954, com a evolução da eletrônica, que surgiu o primeiro robô automático,
baseado nas idéias de J. K. Divol. Este projeto serviu de base para o Unimate e o
Wersatran, que foram os primeiros robôs digitais comerciais de uso industrial
(POLONSKII, 1996).
A robótica surgiu como um produto de utilização industrial somente no ano
de 1961, quando a fábrica da General Motors começou a utilizar o robô industrial
denominado UNIMATE. Este robô (figura 2.1) obedecia a comandos dados passoa-passo armazenados em um disco magnético, realizando a movimentação de
peças fundidas.
5
Figura 2.1: Robô UNIMATE .
Até
aquele momento, os robôs eram somente utilizados em sistemas
industriais e não se tinha ainda um robô móvel, ou seja, um robô cuja base não é
fixa ao solo.
A robótica móvel surgiu no ano de 1966, nos laboratórios do Instituto de
Pesquisas de Stanford, com o desenvolvimento do robô Shakey (figura 2.2).
Embora fosse pioneiro, o robô já possuia muitos dos recursos utilizados
atualmente na grande maioria dos robôs móveis, dentre eles: (ALMEIDA, 2002)
•
Câmera de TV;
•
Sensor por triangulação a laser;
•
Sensores de colisão por contato;
•
Conexão via rádio com computadores para controle e vídeo;
•
Programas para percepção do ambiente, modelagem e ação.
Atualmente os robôs móveis não estão apenas limitados ao ambiente
terrestre, mas encontra-se robôs para ambientes sub-aquáticos, robôs voadores,
veículos operados remotamente (ROV – Remotly Operated Vehicles), veículos
aéreos não-tripulados (UAV – Unmanned Aerial Vehicles) e, inclusive, robôs
interplanetários, como o Sojourner da Nasa (figura 2.3).
6
Figura 2.2: Robô móvel Shakey.
Figura 2.3: Robô Sojourner da NASA.
7
2.3 Critérios de Classificação na Robótica Móvel
Os robôs móveis podem ser classificados por diversos critérios, sendo que
cada um destes afeta aspectos-chave do sistema de controle dos mesmos
(TOURINO, 2002).
1.
2.
Tipo de Locomoção (contato com o ambiente)
o
Rodas, como veículos convencionais;
o
Pernas, como insetos;
Tipo de Direção (forma de manobras)
o Ackerman,
como automóveis;
o Holonômica,
3.
podendo mover-se em qualquer direção;
Flexibilidade Estrutural
o Rígido
de estrutura única;
o Rígido
de estrutura modular;
o Flexível;
4.
Forma Geométrica
o Simples,
como circular ou retangular;
o Complexa;
5.
Ambiente de Funcionamento
o Terrestre;
o Aquático;
o Aéreo;
o Tubulações;
o Submarino;
o Espaço;
6.
Nível de Autonomia
o Teleoperado,
o Totalmente
com supervisão humana remota;
autônomo, sem supervisão;
8
2.4 Desafios atuais da robótica móvel
A cada dia, a tecnologia associada a robótica avança mais. Cada vez mais,
os robôs assumem um maior grau de autonomia, capacidade de decisão e
atingem lugares nunca antes imaginados.
Um bom exemplo disso é a sonda SPIRIT da NASA (Agência espacial
americana) que pousou no planeta Marte, recolheu amostras de solo e atmosfera
e as enviou de volta a Terra para posterior análise pelos cientistas.(SMITH, 2004)
Outro exemplo de superação da robótica é o robô submarino SAUVIM,
desenvolvido por engenheiros e estudantes da universidade do Havaí. O robô tem
autonomia de 8 horas e chegou a atingir profundidades de 6,5 Km. Este módulo
está sendo desenvolvido para utilização em plataformas de petróleo. (SILVEIRA,
2005)
Por último, temos robôs controlados através da Internet, como o protótipo
XR4000, da universidade de Brasília, para a inspeção de dutos. (TOURINO, 2000)
2.5 Comentários finais
A preocupação deste capítulo foi apresentar a situação da área de
automação, com enfoque nos avanços da robótica móvel. O próximo capítulo
apresenta uma visão geral do sistema a ser construído e discute as diversas
partes que o compõem.
9
Capítulo 3
DESCRIÇÃO DO PROTÓTIPO
Neste capítulo serão descritas todas as partes que compõem o protótipo do
robô móvel Propeler. Inicialmente será dada uma visão geral do sistema,
ressaltando a sua funcionalidade. Em seguida, será dada atenção a estrutura
física do veículo.
O protótipo do robô consiste basicamente de dois módulos principais: o
Computador do tipo PC onde será a implementado o programa de controle do
robô e o robô, construído com um circuito de potência para alimentação dos
motores de passo.
3.1 Diagrama de blocos do sistema Propeler.
A figura 3.1 apresenta o diagrama em blocos do sistema Propeler:
imagem
Imagem RCA
Receptor
Câmera
Computador
dados
antena
Sistema Operacional Windows – Software
em C
Circuito de RF
Circuito Transmissor
dados
Porta Paralela
Sinal de controle dos motores
Circuito Receptor
imagem
Veículo
Acionamento de motores
Driver de potência
Motores de passo
Transmissão câmera
Circuito de RF
Figura 3.1: Diagrama de blocos do projeto
Inicialmente, informa-se por software a direção que deve seguir o veículorobô. O computador disponibilizará as informações através de um sinal na porta
paralela. Em seguida, o circuito link de RF enviará as informações dos pinos da
porta paralela ao circuito transmissor. O circuito receptor de RF fica embarcado no
10
veículo-robô e repassa as informações de controle ao driver de potência para o
acionamento adequado do motor de passo. As imagens captadas pela câmera
são processadas e transmitidas por circuito específico (do próprio fabricante) ao
computador, via conexão RCA. Finalmente, os motores de passo serão
alimentados e se deslocarão de acordo com o comando do computador.
3.2 O computador
Para o controle do veículo, pode ser utilizado qualquer tipo de computador
PC que possua uma porta paralela configurada no endereçõ LPT1, com um
sistema operacional que suporte um editor e compilador C. Para os testes deste
trabalho, utilizamos um Pentium 3 com o sistema operacional MS-Windows 98
instalado e o compilador Microsoft Visual C++ 6.0.
A velocidade da máquina e a quantidade de memória não são tão
relevantes, dado que os cálculos efetuados pelo computador são relativamente
simples e não exigem muita capacidade de processamento. Para a estação
controladora apresentada neste modelo, é indispensável que a máquina possua:
teclado, monitor e uma saída paralela padrão LPT1.
3.3 O robô
3.3.1 Motores de passo:
A crescente popularidade dos motores de passo se deve à total adaptação
desses dispositivos à lógica digital. Vários periféricos de computadores os usam
em inúmeras aplicações, como mesas gráficas, unidades de disco, “plotters” e etc.
Não só na Informática, mas também na Robótica esses motores estão sendo
cada vez mais usados, em sistemas de movimentação de braços mecânicos e
etc. Com o auxílio desses motores, pode-se criar interfaces entre a CPU e o
movimento mecânico, constituindo, em suma, a chave para a Robótica.
Os motores CC, giram em velocidade constante, pois possuem apenas dois
estágios de operação, ou seja, parados ou girando; enquanto os motores de
passo deslocam-se por pulsos ou passos discretos e exibem três estágios:
11
parados, ativados com rotor travado (bobinas energizadas) ou girando em etapas.
Este movimento pode ser brusco ou suave, dependendo da freqüência e
amplitude dos passos em relação a inércia em que ele se encontre.
Pertencendo à uma categoria separada, diferente dos motores CC, os
motores de passo têm aplicações específicas, ou seja, em rotações de eixos em
um ou vários passos, dependendo de sinais fornecidos pelos circuitos digitais de
comando. Podem ser usados em circuitos em malha aberta, ou seja, não há
realimentação sobre o movimento rotacional do eixo. E possuem a seguinte tabela
verdade:
Nº do
passo
B3 B2 B1 B0
Decimal
1--> 1 0 0 0
8
2--> 0 1 0 0
4
3--> 0 0 1 0
2
4--> 0 0 0 1
1
Tabela verdade do motor de passo.
No que se refere ao funcionamento, os motores de passo podem ser
comparados aos síncronos, ou seja, um campo rotativo (nesse caso gerados pela
eletrônica de controle) faz girar um rotor magnético. Tais motores foram
subdivididos de acordo com a forma em que é gerado o campo rotativo
(enrolamento unipolar ou bipolar no estator) e com o material empregado na
confecção do rotor. Os mais usados são os unipolares, geralmente com quatro
bobinas. Neles, cada fase consiste de um enrolamento com derivação central, ou
mesmo de dois enrolamentos separados, de forma que o campo magnético possa
ser invertido sem a necessidade de se inverter o sentido da corrente. Na figuras
3.3 e 3.4 o funcionamento do motor:
12
Figura 3.2: Funcionamento do motor de passo unipolar de passo inteiro
(LOBOSCO, 1997).
Figura 3.3: Funcionamento do motor de passo unipolar em meiopasso(LOBOSCO, 1997).
Os motores bipolares, como possuem muitas bobinas na mesma carcaça e
por isso essas têm fios mais finos ou menor número de espiras, desenvolvem
momentos inferiores aos dos unipolares, porém possuem uma resolução maior,
isso é, maior número de passos por volta completa. A máxima freqüência de
rotação é limitada pelo rotor magnetizado, que induz uma tensão no estator.
Desse
modo,
motores
com
velocidades
relativamente
elevadas
usam,
normalmente, rotores de ferro doce, unipolares e com menos pólos que o estator.
Os enrolamentos são ligados em seqüência, às vezes em grupos. Nas figuras 3.5
e 3.6 o funcionamento do motor:
13
Figura 3.4: Funcionamento do motor de passo bipolar em passo
inteiro(LOBOSCO, 1997).
Figura 3.5: Funcionamento do motor de passo bipolar em meiopasso(LOBOSCO, 1997).
A escolha de um motor de passo recai, em primeiro lugar, sobre os requisitos
mecânicos; as características elétricas que, por sua vez, determinam o projeto da
eletrônica de controle. Parâmetro de grande importância, a taxa de arranque é a
máxima aceleração permitida de operação, intimamente relacionada com o
momento de inércia do rotor. Na prática, deve-se ter em mente que o momento de
inércia aumenta com a inércia das partes girantes acopladas ao motor, reduzindo,
portanto, a taxa de arranque.
14
Figura 3.6: Interno do motor de passo.
Nos motores de passo unipolares o controle de rotação é facilmente
conseguido através de um transistor de potência apenas por enrolamento,
enquanto nos bipolares são necessários quatro transistores em ponte. É possível,
nesse segundo, utilizar-se apenas dois transistores por enrolamento, desde que a
fonte seja simétrica, o que complicaria um pouco o circuito. Mas, em ambos os
casos, uma lógica de controle é exigida para que o motor possa girar
corretamente.
Caso se pretenda controlar o motor de passo por computador, os estágios
excitadores poderão ser acoplados diretamente a um dos conectores de saída,
deixando para o software a tarefa de estabelecer os movimentos do motor, ou
seja, sentido de rotação (horário / anti-horário), em passos inteiros ou meio
passos e a variação dos tempos entre os passos, que definirá a precisa regulação
da velocidade. Pela contagem do número de passos, será possível seguir
continuamente a posição do objeto acionado pelo motor.
O uso de motores de passo exige o cumprimento de algumas regras básicas.
É preciso levar em consideração o caráter indutivo do estator, cuja corrente, ao
ser chaveada, gera uma tensão indutiva que chega a ser elevada o bastante para
destruir a eletrônica de controle. Isso pode ser evitado com a utilização de diodos
de proteção, nos enrolamentos unipolares, e varistores ou diodos zener ligados
em anti-série, no caso dos bipolares.
No protótipo em questão, serão empregados dois motores de passo para
gerar o movimento do veículo. O sistema de rodas é constituído de esteiras que
transferem o movimento das rodas traseiras às rodas dianteiras. Com isso
15
garantimos a boa movimentação do módulo, não havendo necessidade de rodaboba na frente ou mais motores para os movimentos de direita e esquerda. As
característica dos motores de passo usado neste projeto são: DC 5V , 1,0A e
1,8°/passo.
3.3.2. Estrutura do veículo
Procurou-se simplificar ao máximo a estrutura do robô, de forma que
acomodasse bem a placa de circuito impresso, as baterias e os motores de
passo, conforme mostrado abaixo:
Figura 3.7: Vista de frente do robo.
Para a composição da base de sustentação, utilizou-se um brinquedo bem
popular da década de oitenta, chamado Kit Spock. Este kit compõe-se de chapas
metálicas perfuradas de variadas formas e tamanhos, o que atendeu muito bem
às experiências realizadas, dada a sua versatilidade e adaptabilidade.
A seguir, são apresentadas mais fotos com outros ângulos do robô:
16
Figura 3.8: Vista de perfil.
Figura 3.9: Vista inferior do robô.
17
Figura 3.10: Vista lateral do robô.
Figura 3.11: vista superior do robô.
As rodas traseiras, que recebem toda o torque entregue pelo motor de
passo, estão ligados às rodas dianteiras, a fim de que estas não deslizem
lateralmente no início do movimento e para facilitar o carro a fazer curvas, já que
nenhuma das rodas apresenta estergamento.
18
Os motores de passo ficam acomodados abaixo da estrutura para
disponibilizar bastante espaço na parte superior do robô, de forma que a placa de
circuito impresso caiba sem problemas.
3.4 Comentários finais
A intenção deste capítulo foi apresentar uma visão geral do sistema Propeler
e uma breve descrição das partes que o compõem. Uma descrição mais
detalhada acerca de cada susbsitema será apresentada nos próximos capítulos.
19
Capítulo 4
DESENVOLVIMENTO DO HARDWARE
4.1 Circuito de alimentação
O protótipo apresenta duas fontes de alimentação: uma para o sistema de
bancada (computador + transmissor) e outra para o sistema embarcado (receptor
+ driver de potência).
O sistema de bancada é alimentado por uma fonte de tensão de laboratório e
a rede elétrica. O sistema embarcado é alimentado por uma bateria de 6V –
4,5Ah, conforme diagrama da figura:
Rede
110V/60H
z
Fonte do
laboratório
DC 5V
Circuito de
bancada
Fonte do
computador
Computador PC
Bateria
Câmera
DC 9V
Bateria
6V – 4,5Ah
Circuito de
acionamento
Figura 4.1: Diagrama das fontes do circuito
4.2 Porta Paralela de um PC
A porta paralela é uma interface de comunicação entre o computador e
um periférico. Quando a IBM criou seu primeiro PC, Personal Computer ou
Computador Pessoal, a idéia era conectar a essa porta uma impressora, mas,
hoje em dia, são vários os periféricos que utilizam-se desta porta para enviar e
receber dados para o computador.
Conhecendo uma linguagem de programação como: C, C++, C++Builder,
Pascal/Delphi ou mesmo o Visual Basic, pode-se desenvolver um programa que
controle um aparelho conectado à porta paralela, ou um programa de
transferência de arquivos entre dois computadores, utilizando um cabo paralelo
como meio de transmissão. (ZELENOVSKY, 2002)
A porta paralela pode transmitir com duas configurações diferentes:
20
Transmissão unidirecional: A porta paralela SPP (Standard Parallel Port)
pode chegar a uma taxa de transmissão de dados a 150KB/s. Comunica-se com a
CPU utilizando um barramento de dados de 8 bits.
Para a transmissão de dados entre periféricos são usado 4 bits por vez.
Transmissão bidirecional: A porta avançada, na configuração EPP
(Enhanced Parallel Port), chega a atingir uma taxa de transferência de 2 MB/s.
Para atingir essa velocidade, é necessário um cabo especial.
O circuito da porta paralela comunica-se com a CPU utilizando um BUS de dados
de 32 bits. Para a transmissão de dados entre periféricos são usado 8 bits por
vez. A porta avançada, na configuração ECP (Enhanced Capabilities Port), tem as
mesmas características que a EPP, porém, utiliza DMA (acesso direto à
memória), sem a necessidade do uso do processador, para a transferência de
dados. Utiliza também um buffer FIFO de 16 bytes (do inglês, first in – first out, ou
seja, a primeira informação que entra é a primeira que sai).
4.2.1 Endereçamento da porta paralela
O seu computador nomeia as portas paralelas, chamando-as de LPT1,
LPT2, LPT3, etc. Mas, normalmente, a porta física padrão de um PC é a LPT1, e
seus endereços são: 378h ( para enviar um byte de dados pela Porta), 378+1h
(para receber um valor através da Porta) e, 378+2h (para enviar dados). Às
vezes, pode está disponível a LPT2, e seus endereços são: 278h, 278+1h e
278+2h, com as mesmas funções dos endereços da porta LPT1 respectivamente.
Abaixo, uma tabela mostrando este endereçamento detalhadamente:
Nome
Registro de
Dados
Registro de
Status
Endereços
Endereços
LPT1
LPT2
378h
278h
379h
279h
Descrição
Envia um byte para a
impressora
Ler o Status da impressora
21
Registro de
Controle
37Ah
27Ah
Envia dados de controle para a
impressora
Tabela 4.1: Endereçamento da porta paralela
4.2.2 O conector DB25:
O DB25 é um conector que fica na parte de trás do gabinete do computador
e é através deste que o cabo paralelo se conecta ao computador para poder
enviar e receber dados.
No DB25, um pino está em nível lógico 0 quando a tensão elétrica no mesmo
está entre 0 à 0,4v. Um pino se encontra em nível lógico 1 quando a tensão
elétrica no mesmo está acima de 3.1 e até 5v.
As figuras 4.2 a 4.5 mostram o conector padrão DB25, com 25 pinos, onde
cada pino tem um nome que o identifica:
Figura 4.2: Conector DB25 fêmea da porta paralela.
Na figura 4.3 observa-se o conector macho do cabo paralelo:
22
Figura 4.3: Conector Macho do Cabo Paralelo.
A figura 4.3 exibe uma foto do conector:
Figura 4.4: Foto do conector DB25 macho do cabo Paralelo.
Na figura 4.5, apresenta-se um esquema de funcionamento do DB25 na
configuração SSP.
4.2.3 Conector Centronics
O conector macho Centronics 36 pinos faz parte do cabo da impressora, é
através deste cabo que a impressora é conectada ao computador.
A figura 4.6 mostra o conector Centronics 36 pinos e sua descrição:
23
Figura 4.5: Esquema de funcionamento do DB25 no modo SPP.
Figura 4.6: Conector Centronics
Abaixo, o significado de cada pino do conector Centronics (tabela 4.2):
Número
do Pino
1
2 ao 9
Descrição
Strob
Dados
(D0...D7)
10
Ack
11
Busy
12
Paper End
13
Select Out
14
Auto Feed
24
15 ao
Não
18
conectato
19 ao
30
GROUND
31
Init
32
Error
33
GROUND
34 a 35
36
Não
conectato
Select In
Tabela 4.2: Significado de cada pino do conector Centronics 36 pinos
4.3 Circuito de acionamento e Driver de potência
Inicialmente, acreditava-se que a porta paralela seria suficiente para
alimentar as bobinas dos motores de passo conforme o padrão discutido na seção
3.1.1. Experimentalmente, isto se mostrou impossível, já que o motor de passo
precisa de 1 ampér para energizar suas bobinas de campo.
Como primeira solução, tentou-se implementar o CI abaixo:
Figura 4.7: CI ULN2003
O ULN2003 é um CI que contém 7 amplificadores em cascata na
configuração Darlington.
Este até atendeu bem quanto a lógica e tempo de resposta, porém foi
limitado em corrente ( suporta somente 500mA). Ele não foi capaz de fornecer a
corrente necessária para alimentar a bobina de campo do motor utilizado.
A solução seguinte, foi proposta segundo o circuito abaixo:
25
Figura 4.8: Projeto inicial de driver de potência
Este é um circuito bem simples de amplificação de potência. O 4N25N é um
opto-acoplador para proteger a porta paralela do computador de qualquer corrente
que venha a retornar pelo circuito. Logo após, tem-se transistores ligados em
cascata para fornecer a corrente necessária à bobina de campo do motor.
Quando D1 está em nível alto, a base do BC337 fica polarizada de forma que o
transistor amplifica o sinal de entrada para a base do TIP41. Este dará mais um
ganho de corrente ao sinal para que ele tenha potência suficiente para alimentar a
bobina do motor de passo. Agora, quando a base do BC337 está em nível baixo,
o circuito não amplifica sinal nenhum, fazendo com que a bobina fique
desenergizada.
Um circuito desse seria ligado a cada saída da porta paralela de forma que
alimentasse cada uma das bobinas dos dois motores de passo do robô e estes
seriam alimentados por uma bateria comum embarcada no módulo.
O segundo circuito atenderia muito bem ao projeto, mas notou-se que o
circuito de link não comportaria a porta paralela gerando a freqüência de oscilação
dos motores. Daí, surgiu a necessidade de que os pulsos de rotação dos motores
fossem geradas na própria placa embarcada e a porta paralela somente
controlaria a direção destes motores.
Pensando neste novo empecílio ao projeto, foi desenvolvido o circuito de
acionamento da figura 4.9:
26
Figura 4.9: Circuito de acionamento do motor direito
No circuito acima, o CI 4070 é uma porta XOR (Exclusive OR) e os CIs 4017
são contadores década. Cada um é responsável por uma direção do motor, ou
seja, movimento para frente e para trás. Tudo o que acontece para um contador,
acontece para o outro, a única diferença entre os dois é a sequência (vide seção
3.3.1) em que estão ligadas as bobinas do motor, já que isso que vai definir seu
sentido de rotação.
A entrada do circuito trabalha com lógica inversa (nível alto=0, nível
baixo=1). Por isso, como o computador trabalha em lógica direta (nível alto=1,
nível baixo=0), inserimos portas inversoras (CI 7404) na entrada de cada circuito.
Quando o computador envia um bit nível alto para o circuito (fazer o robo
andar), a porta inversora faz com que este vire nível baixo. Ao entrar no pino 13
do CI 4017, faz com que o clock seja habilitado e que o contador inicie a
contagem. Cada número contado equivale a uma bobina do motor de passo, que
serão ativadas na ordem correspondente ao movimento.
Como são 4 bobinas, ao chegar na saída Q4, esta está ligada ao pino de
reset do contador e, com isto, faz com que o componente reinicie a contagem.
27
O clock é gerado pelo CI LM555, preparado para trabalhar como
multivibrador astável, segundo seu datasheet. Na figura 4.10 apresenta-se um
esquema das ligações deste componente:
Figura 4.10: LM555 ligado como multivibrador astável (gerador de clock).
Figura 4.11: Saída do clock do LM555.
A freqüência desejada para o funcionamento do LM555 é de 80Hz e para o
cálculo utilizou-se a formula como apresentada na figura 4.12.
No momento de parar o robô, ocorreu um problema: quando a porta paralela
enviava um bit de parada, sendo característica do CI manter o último estado,
sempre uma bobina permanecia ligada, fazendo com que o tempo de autonomia
do módulo diminuisse bastante. Para solucionar este problema, foi incorporada a
28
porta XOR, que faz com que este último estado não seja mantido, permitindo que
todas as bobinas fiquem desenergizadas.
Figura 4.12: Forma de calcular a freqüência do LM555.
Os diodos no circuito tem a função de proteger os semicondutores contra
sobretensão de chaveamento. Para cada motor, existe um circuito como o da
figura 4.8.
A cada saída deste circuito, será ligado um circuito driver de potência, como
o mostrado na figura 4.13.
O circuito mostrado é um circuito simples, com dois transistores ligados em
cascata funcionando como amplificador de corrente. Quando o sinal do circuito de
acionamento estiver em nível alto, o BC548 amplificará o sinal para o TIP31, que
amplificará ainda mais, fazendo com que a bobina do motor de passo receba a
corrente necessária para se energizar. Caso este sinal seja nível baixo, nenhuma
corrente será amplificada e as bobinas permanecerão desenergizadas.
Cada circuito deste será ligado a uma bobina de cada motor e, assim, será
entregue toda a potência necessária para movimentar o módulo.
29
Figura 4.13: Circuito driver de potência.
4.4 Comentários finais
Os circuitos mostrados neste capítulo foram projetados e construídos
segundo a lógica de acionamento encontrada na literatura (padrão). Haja vista a
ocorrência
de
dificuldades
práticas
reais,
soluções
alternativas
foram
apresentadas. A interligação dos circuitos e sinais gerados também foi abordado.
No capítulo seguinte, será feita uma breve descrição do circuito de
comunicação por radiofreqüência (RF).
30
Capítulo 5
Link de Radiofreqüência (RF)
Este capítulo fará uma breve descrição dos circuitos de transmissão e
recepção por radiofreqüência (RF) utilizados no desenvolvimento do protótipo
PROPELER. Ressalta-se aqui que, o capitulo não vai ater atenção ao projeto dos
circuitos discretos (antena, modulação, demodulação, etc.), haja visto que os
módulos de transmissão e recepção sejam adquiridos já prontos.
5.1 Os circuitos de transmissão e recepção
Como a intenção do projeto é o controle remoto do módulo robô, faz-se
necessária a criação de um meio de comunicação entre o computador PC e o
módulo. Esta comunicação será feita via ondas de rádio-freqüência (RF).
Para que se possa transmitir dados de forma digital e seguindo um
determinado padrão através da portadora dos módulos RF , pode-se utilizar os
CIs MC145026 (Encoder) e MC145027 (Decoder), fabricados pela Motorola, para
obter um boa solução (figura 5.1).
Figura 5.1: CIs de codificação e decodificação do dado digital
A figura 5.2 mostra a transmissão dos dados digitais entre os pares
MC145026/RT4 e RR3/MC145027. Veja que o encoder MC145026 envia os bits
de endereço/dados serialmente para o módulo transmissor assim que o pino TE
31
tenha sido levado a nível baixo (0v). Por sua vez, o módulo RT4 transmite os bits
modulados através da portadora de Rádio Freqüência. O módulo RR3 captura os
dados e repassa-os para o decoder MC145027 que faz uma comparação nos bits
do endereço recebido com os bits do endereço de sua própria configuração. Se os
endereços forem iguais, os bits de dados ficam disponíveis nos pinos (D6,D7,D8 e
D9) e o pino VT é levado a nível alto (1). O pino VT só permanece ativo por um
instante informando que um dado foi reconhecido e está disponível. Já os pinos
dos dados retém a última informação. Isso é possível porque estes pinos estão
ligados a um latch (um tipo de memória volátil elementar). Esses dados
permanecem no latch até que um novo dado seja enviado e aceito, ou a
alimentação da fonte seja interrompida.
Figura 5.2: Esquema de transmissão de dados entre os CIs.
Para que os CIs MC145026/27 trabalhem conforme o esperado, é importante
escolhermos
os
valores
dos
capacitores
e
resistores de
acordo
com
tabela elaborada pelo fabricante.
Com as figuras 5.3 e 5.4, podemos ter uma visão mais detalhada dos
circuitos de envio e recebimento de dados:
O CI 74LS244, funciona apenas como um Buffer de passagem para os sinais
vindos da porta paralela do PC. Os CI RT4 é o que faz a transmissão dos dados,
enquanto o RR3 faz a recepção, ambos trabalham na freqüência de 433,92MHz.
32
Figura 5.3: Esquema do circuito transmissor.
Figura 5.4: Esquema do circuito receptor.
Após ser recebido pelo módulo receptor e decodificado pelo decoder, o sinal
sai do circuito link de RF e será enviado ao circuito de acionamento e driver de
potência, já detalhado no capítulo anterior.
33
5.2 Comentários finais
Os módulos de transmissão (Tx) e recepção (Rx) apresentados neste
capítulo são de uso geral em automação e robótica (Revista Mecatrônica Fácil). O
objetivo de utilizá-los aqui foi o de promover uma maior autonomia para o veículo.
O próximo capítulo fará uma descrição do sistema do software de controle.
Neste serão abordados a linguagem de programação utilizada e a estrutura do
programa de controle.
34
Capítulo 6
Software do Projeto
Este capítulo tem por objetivo apresentar o software desenvolvido para o
controle do hardware discutido até aqui. A função do software é enviar sinais
necessários ao acionamento dos motores e funcionamento dos demais circuitos
do projeto. Ainda, tem a função de servir de interface gráfica entre usuário e
aplicação.
6.1 A linguagem C
A linguagem de programação C começou a ser elaborada no começo dos
anos 70 como uma linguagem de implementação de sistema para o nascente
sistema operacional Unix. Inicialmente, Denis Ritchie criou uma linguagem a partir
do BCPL, nos laboratórios da Bell Telephones, a qual deu o nome de Linguagem
B.
Em 1978, Brian Kerningham junta-se a Ritchie na tentativa de aprimorar a
nova linguagem. Desta tentativa, surge o C, que dadas suas características de
portabilidade e estruturação, já começa a se tornar popular entre os
programadores da época.
Por volta de 1980, como o C passara a ser uma linguagem popular e aberta,
existiam vários tipos de C. A partir daí, a American National Standard Institute cria
o ANSI C, na tentativa de unificar todos os usuários do C sob uma linguagem
comum. (Johnson, 1995)
Hoje em dia, o C é uma das linguagens mais utilizadas pelos programadores.
Indubitavelmente o sucesso do próprio Unix foi o mais importante fator de
sucesso; ele tornou a linguagem disponível para centenas de milhares de
pessoas. Reciprocamente, é claro, o uso da C pelo Unix e sua conseqüente
portabilidade para uma grande variedade de máquina foi importante no sucesso
do sistema. Mas a invasão da linguagem em outros ambientes sugere méritos
mais fundamentais.
Apesar de alguns aspectos misteriosos para o iniciante e ocasionalmente até
mesmo para o adepto, a linguagem C permanece uma simples e pequena
35
linguagem, traduzível com simples e pequenos compiladores. Seus tipos e
operações são bem fundamentados naquelas fornecidas por máquinas reais, e
para pessoas que usam o computador para trabalhar, aprender a linguagem para
gerar programas em tempo – e espaço – eficientes não é difícil. Ao mesmo tempo
a linguagem é suficientemente abstrata dos detalhes da máquina de modo que a
portabilidade de programa pode ser alcançada.
Mesmo com as mudanças que sofreu desde primeira publicação, a qual foi
admitidamente informal e incompleta, a linguagem C atual como visto por milhões
de usuários, usando muitos diferentes compiladores, permaneceu notavelmente
estável e unificada quando comparada àquelas de similar aceitação geral, por
exemplo, Pascal e Fortran. Há diferentes dialetos da C mais notórios, aqueles
descritos pelo velho K&R e o novo padrão C, mas na integra, a linguagem C
permanece mais livre de extensões proprietárias do que outras linguagens.
Na trajetória do C, linguagem C++ foi criada na primeira metade da década
de 1980. Portanto, seu desenvolvimento é posterior ao da linguagem C (a partir
de 1972). Como o próprio nome da linguagem indica, C++ é uma extensão do C,
pois aceita toda sintaxe desta e acrescenta novos conceitos que caracterizam
melhoramentos da sintaxe, ampliações no escopo de aplicações e a possibilidade
de desenvolver programas fundamentados no paradigma da Orientação a Objetos
(provavelmente principal motivação da maioria dos programadores ao estudar
C++).
Os
primeiros
programas
executáveis
em
C++
eram
gerados
não
propriamente em compiladores, e sim em "tradutores". Pode-se chamá-los de
tradutores pelo fato de que, para se gerar um programa executável em C++, o
código fonte C++ era tratado (traduzido) e produzida uma fonte em C++ que
deveria, então, ser introduzida em um Compilador C. Esta forma de trabalhar dos
primeiros tradutores C++ licenciados pela AT&T é a principal prova da
compatibilidade do C++ com os códigos gerados em C. As inovações que o C++
sofreu após esses tempos iniciais foram significativas, mas o processo da
tradução para o C tornou-se inviável. Porém, o inverso é mais comum atualmente,
ou seja, há compiladores C++ no mercado capazes de compilar também
programas puramente em C.
36
6.2 Microsoft DirectShow
O DirectShow, formalmente conhecido como ActiveMovie, é uma arquitetura
multimídia desenvolvida pela Microsoft. Compõe o Windows 98, ME, 2000, XP e
Internet Explorer, e também pode ser adquirido separadamente sem custo da
página da Microsoft (Como parte do DirectX). O DirectShow divide o
processamento das tarefas multimídia, assim como a reprodução de vídeo, em
uma série de passos chamados Filtros. Estes filtros tem um número de pinos de
entrada e saída que os conecta juntos. O desenho genérico do desenho do
mecanismo da conexão mostra que os filtros podem ser conectados de muitas
formas diferentes para executar as mais variadas tarefas, e os desenvolvedores
podem incluir seus próprios efeitos ou outros filtros em qualquer estágio do
gráfico. Os filtros gráficos do DirectShow são amplamente utilizados em
reprodução de vídeo (o qual os filtros executarão passos como análise do arquivo
de vídeo, demultiplexação de áudio e vídeo, descompressão e renderização),
assim como em gravação e edição de áudio e vídeo. Tarefas interativas, assim
como navegação em DVD, também são baseadas com sucesso no DirectShow.
A forma que o DirectShow funciona normalmente depende que se crie um
gráfico, adicione alguns filtros – possivelmente customizados – ao gráfico, e,
então, renderizar o arquivo, URL ou câmera. Durante o processo de renderização,
o filtro gráfico procura pelo Registro do Windows para filtros registrados e constrói
seu gráfico de filtros, baseado na localização dada. Após conectar todos os filtros,
o usuário pode controlar toda a aplicação multimídia.
6.3 Código do software
O software desenvolvido para o projeto, monta uma interface para que o
operador do robô possa controlá-lo através do PC. Vemos como apresenta-se
esta interface na figura 6.1:
-
Visualização instantânea da câmera: Mostra as imagens recebidas pela
câmera no momento em que elas acontecem.
37
-
Controle dos movimentos do robô: envia bits de comando para o circuito
de acionamento de forma que faça o módulo se movimentar de acordo
com o que manda o operador.
-
Sensor de movimento do ambiente: Indica toda vez que a imagem da
câmera sofre alguma alteração.
-
Captura de foto: Tira uma foto do momento desejado. Essas fotos são
armazenadas no diretório \rec\fotos em formato bmp.
-
Captura de vídeo: Grava toda a ação durante o período de tempo que o
operador desejar. Estes vídeos são armazenados no diretório \rec\videos
em formato avi.
-
Captura de áudio: Grava os sons capturados pela câmera durante o
período especificado pelo operador. Estes sons são armazenados no
diretório \rec\sons em formato wav.
Visualização
instantânea da
câmera.
Controle dos
movimentos do robô
Captura de foto.
Captura de vídeo
Captura de áudio
Sensor de
movimento no
ambiente.
Figura 6.1: Lay-out da interface
38
O programa foi desenvolvido na linguagem C++ e utilizou também o MFC
(Microsoft Foundation Classes). O MFC dá aos desenvolvedores de programas
um conjunto de componentes reutilizáveis escritos em C++ que encapsulam
(wrappers) as funcionalidades necessárias para o desenvolvimento de aplicações
para sistemas operacionais Windows. Por outras palavras, as MFC são
bibliotecas de objetos que encapsulam as rotinas Win32, a API nativa do
Windows.
Para que a execução do programa fosse facilitada, foram criados vários
Header Files ( arquivos .h). Cada um tem uma função específica que será
demonstrada a seguir:
-
Robo.h e robodlg.h – São criados a partir do MFC automaticamente. Tem
a função de criar a janela Windows de interface do programa.
-
Resource.h e robo.rc – Contém as figuras de rosto da janela. Também
criado de forma automática pelo MFC.
-
Stdafx.h – Faz includes do sistema para o MFC.
-
Cvrm_capture.h – Inicializa o DirectShow para captura de vídeo e faz a
utilização de outras classes para gravação de vídeo.
-
CbitmapEx.h – Objeto para captura de arquivos de bitmap. Recebe as
imagens em formato bruto e prepara para a gravação do tipo de arquivo.
-
WriteAVI.h – Objeto para gravação de vídeos avi. Recebe frames de
CVRM_Capture e molda no formato de gravação AVI.
-
Wave.h, WaveBuffer.h, WaveDevice.h e WaveIn.h – Fazem a captura,
baixam os devices do computador, preparam e gravam os sons em
formato wav.
-
Controle.h – Controla o envio de bits para a placa de Link de RF. Inclui
biblioteca INP32 e OUT32 que permitem o programa ser rodado em
Windows XP.
-
HoverButton.h – Permite a inclusão da botões animados na janela de
apresentação Windows.
Para cada arquivo .h incluído, existe um arquivo .cpp para a implementação
dos mesmos. Existe um arquivo principal, robô.cpp, que é o programa principal e
implementa e gerencia todos os outros.O funcionamento básico do programa
segue o fluxograma da figura 6.2.
39
DirectShow possui sistema multi-thread, ou seja, permite que outras tarefas
rodem em paralelo a aplicação. Um exemplo da praticidade deste recurso é que,
independente dos comandos de movimento do carro, a câmera continua sendo
exibida.
Alguns arquivos .dll se encontram dentro do diretório do programa do robô.
Este tipo de arquivo é de biblioteca do Windows. Eles são fornecidos pelo
compilador e permitem que o programa rode normalmente nesta plataforma.
Figura 6.2: fluxograma básico do programa.
40
Capítulo 7
Conclusão
7.1 Comentários gerais
O presente trabalho teve por objetivo o projeto e construção de um robô
móvel para fins didáticos. Os capítulos 1 e 2 serviram de base para a introdução
do tema. Nestes vários aspectos foram apresentados e discutidos acerca do
histórico e cenário atual.
Ao longo dos capítulos 3, 4 e 5, foram abordados tópicos referentes ao
projeto dos circuitos de hardware e montagem de estrutura mecânica para
interligação dos vários módulos do robô.
No capítulo 6, foram discutidas as características do sistema computacional
(sistema operacional, compiladores, software) e sua relação com o hardware a
controlar.
7.2 Fechamento
A realização deste projeto traduz uma ótima introdução ao mundo da
robótica e a convergência de ciências que ela representa (conhecimentos de
mecânica, eletrônica e telecomunicações). A integração destes conhecimentos é,
hoje, requisito de grande valor na formação de um engenheiro. Informações sobre
circuitos integrados e circuitos básicos podem ser encontrados na Internet. Cabe
aos projetistas adaptarem estes circuitos e informações às suas necessidades.
Vários testes foram necessários para que o projeto assumisse sua forma
final. Em cada teste, novos problemas eram detectados e novos desafios eram
postos para que novas soluções fossem desenvolvidas.
Ao final do projeto, conclui-se que este simboliza um grande “pontapé inicial”
que deixará várias portas abertas para sua otimização e evolução.
41
7.3 Sugestões para futura continuidade do projeto
Existem várias possibilidades de otimização do projeto, já que o mundo da
robótica é muito vasto e a melhoria contínua é uma realidade.
-
A primeira melhoria seria um controle de velocidade, já que este módulo
somente se movimenta em velocidade constante.
-
Outra possibilidade seria a introdução de mais tipos de sensores, além da
camera. Poderia-se monitorar a temperatura ambiente do local, a presença de
algum gás tóxico, sensores de presença para desvio ou parada automática na
presença de obstáculos no percurso.
-
A instalação de um braço mecânico, faria deste robô um módulo explorador,
podendo coletar amostras onde o homem não tem acesso.
-
Uma sugestão interessante seria a criação de rotas pré-definidas, que fariam
com que o módulo se deslocasse de forma totalmente automática, fazendo
com que se movimentasse por rotas conhecidas sem intervenção humana.
42
Referências Bibliográficas
[1] FGEDITORES. Robôs. 1. ed. Madrid: FG Editores, 2002.
[2] TOURINO, S. R. G. Sistema de Rastreamento para Robôs Móveis Utilizando
Visão Embarcada. Dissertação de Mestrado, Publicação DM-60, Departamento de
Engenharia Mecânica, Universidade de Brasília, Brasília, DF, 145 p, 2002.
[3] ALMEIDA, Aléxis R. Sistema de controle de robô baseado na plataforma Linux:
uma proposta. Dissertação de Pós-Graduação, Publicação DM-60, Departamento
de Ciências da Computação, Universidade de Lavras, Lavras, MG, 66 p, 2004.
[4] ZELENOVSKY, Ricardo PC: um guia prático de Hardware e Interfaceamento.
3. ed. Rio de Janeiro: MZ Editora Ltda, 2002.
[5] http://www.rogercom.com.br - site sobre comunicação por porta paralela e
motores de passo
[6] http://www.alldatasheet.com - site com a relação de vários datasheets de
componentes eletrônicos disponíveis no mercado.
[7] http://cm.bell-labs.com/cm/cs/who/dmr/chistPT.html - site com um histórico da
linguagem C.
[8] http://www.li.facens.br/~f98335/projeto4.html - site sobre controle de motor de
passo.
[9] http://www.ece.utexas.edu/handson/projects/ - site com projetos de robótica.
[10] http://www.iorobotics.com/projetos.htm - site com projetos de robótica.
[11] http://www.robotroom.com/Sweet.html - site com projetos de robótica.
[12] http://www.mrshp.hpg.ig.com.br/rob/m_passo.htm - site sobre motor de
passo.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

Documentos relacionados