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