1
UNIVERSIDADE SÃO JUDAS TADEU
Curso de Pós-Graduação
Mecânica Fina
RICARDO CORREIA DE ARAUJO
DETECÇÃO DE OBJETOS NO PLANO VIA
SISTEMA DE VISÃO
São Paulo, 2005
2
UNIVERSIDADE SÃO JUDAS TADEU
Curso de Pós-Graduação
Mecânica Fina
RICARDO CORREIA DE ARAUJO
DETECÇÃO DE OBJETOS NO PLANO VIA
SISTEMA DE VISÃO
Monografia apresentada ao Curso de PósGraduação - Lato Senso da Universidade
São Judas Tadeu, como requisito parcial
para conclusão do curso de Especialização
em Mecânica Fina.
Orientador: Prof. Dr. Mario Cesar Ricci
São Paulo, 2005
3
UNIVERSIDADE SÃO JUDAS TADEU
Curso de Pós-Graduação
Mecânica Fina
RICARDO CORREIA DE ARAUJO
DETECÇÃO DE OBJETOS NO PLANO VIA
SISTEMA DE VISÃO
Monografia apresentada ao Curso de PósGraduação - Lato Senso da Universidade
São Judas Tadeu, como requisito parcial
para conclusão do curso de Especialização
em Mecânica Fina.
Aprovado em 25 Agosto de 2005
__________________________
Orientador: Prof. Dr. Mario Cesar Ricci
São Paulo, 2005
4
Dedico este trabalho a minha amada
esposa Íris, minha filha Júlia e aos meus
queridos pais Manoel e Rosa que com
muita
perseverança
e
paciência,
vivenciaram mais está caminhada ao meu
lado.
5
AGRADECIMENTOS
Primeiramente, agradeço a Deus por permitir nossa existência e a todos os familiares
pela compreensão e paciência durante todo transcorrer do projeto. Aos amigos que direta e
indiretamente contribuíram para a realização deste trabalho.
A minha irmã Ana Lúcia e meu cunhado, ou melhor, irmão Renato que muito me
apoiaram.
Ao meu amigo Kitani, cujo entusiasmo me incentivou a participar do projeto.
Ao Prof. Dr. Ricci, meu orientador, que muito me ajudou passando toda sua
experiência de vida, compartilhando conosco todo seu conhecimento ao nos instruir.
6
“A Ciência ensina ao homem o amor e o respeito
pela verdade, a idéia de dever e a necessidade do
trabalho, não como um castigo, mas como o mais
elevado meio de empregar sua atividade”
Berthelot
7
RESUMO
ARAUJO, Ricardo Correia De. Detecção de Objetos no Plano Via Sistema de Visão.
Monografia. Curso de Pós-Graduação Lato Sensu, da Universidade São Judas Tadeu. São
Paulo. p. , 2005.
Os pesquisadores de inteligência artificial propuseram há uma década atrás um torneio
de futebol de robôs com o objetivo de criar um ambiente de colaboração entre os vários
centros de pesquisas mundiais, afim de acelerar os resultados práticos no campo da robótica,
inteligência artificial e a todas as áreas associadas. Este trabalho descreve o projeto e
implementação de um conjunto mecatrônico que simulará a função de um goleiro em uma
mesa de pebolim. O conjunto foi baseado em três domínios principais, formados por um
sistema de mecânico que movimentará o goleiro em toda a extensão da região do gol, de um
conjunto com motor elétrico, que fornecerá a dinâmica ao conjunto mecânico e de um sistema
de visão artificial que informará ao conjunto do motor, as coordenadas preditivas da bola. O
domínio do futebol de robôs tem sido muito utilizado em pesquisas na de Inteligência
Artificial, dada a sua enorme dinâmica, complexidade, imprevisibilidade e variadas
estratégias, fornecendo um vasto domínio para a pesquisa e implementação de sistemas
autônomos.
Palavras-chaves: inteligência artificial, visão artificial, robótica, futebol de robôs.
8
ABSTRACT
The researchers in artificial intelligence purposed ten decades ago a robots soccer
tournament with the goal of create a collaborative enviroment between several research center
around the world, in order to ncrease the practical results in robotics, artificial intelligence and
all associate areas. The purposes of this work are design and implement a set of mecatronic
device that will emulate the function of a goalkeeper in a saloon game board. The set will be
based on three main domains, a mechanical systen whom will move the goalkeeper along the
goal extension region, a set of electric motor that will supply the entire dynamic to the
mechanical system and an artificial vision system that will send to electric motor, all predict
coordinate of the ball. The robot soccer game domain has been used in several research of
Arficial Intelligence due to the enormous dynamic, complexily, unpredictability and a
variation of strategies, giving a large field for research and implemetation in autonomous
system.
Key-words: artificial inteligence, artificial vision, robotics, robot soccer.
9
LISTA DE FIGURAS
FIGURA 1 – Arquitetura do microcontrolador 8051.......................................................... 16
FIGURA 2 – Pinos do microcontrolador 8051................................................................... 17
FIGURA 3 - Esquema para controle de motor de passo utilizando o UCN 5804............. 18
FIGURA 4 - Modelos de motores de passo....................................................................... 19
FIGURA 5 - Passo completo 1 - Full-step - sentido de giro horário.................................. 21
FIGURA 6 - Passo completo 2 - Full-step - sentido de giro horário.................................. 21
FIGURA 7 - Meio passo – Half-step - sentido de giro horário.......................................... 22
FIGURA 8 - Passo completo direto.................................................................................. 23
FIGURA 9 - Passo completo reverso................................................................................ 23
FIGURA 10 – Mecanismo.................................................................................................. 25
FIGURA 11 – Fixação do goleiro e chave fim de curso.................................................... 26
FIGURA 12 – Chave fim de curso e correia dentada.......................................................... 26
FIGURA 13 - Circuito de controle..................................................................................... 27
FIGURA 14 - Sinais de saída para o motor de passo......................................................... 28
FIGURA 15- Circuito de potência..................................................................................... 29
FIGURA 16 – Teste do circuito de potência....................................................................... 29
FIGURA 17 - Lay out do circuito impresso....................................................................... 30
FIGURA 18 – Módulo de controle alojado......................................................................... 31
FIGURA 19 – Dissipadores para o circuito de potência.................................................... 32
10
SUMÁRIO
LISTA DE FIGURAS
1 - INTRODUÇÃO............................................................................................................ 11
2 - OBJETIVOS
2.1 - Objetivos e motivação geral....................................................................................... 13
2.2 - Objetivos específicos.................................................................................................. 14
3 - REVISÃO DA LITERATIJRA
3.1 - Microcontrolador 8051............................................................................................... 15
3.2 - Driver de Potência ..................................................................................................... 17
3.3 - Linguagem C ............................................................................................................. 18
3.4 - Motor de Passo............................................................................................................ 19
3.4.1 - Funcionamento......................................................................................................... 20
3.4.2 - Modos de operação.................................................................................................. 20
3.4.3 - Características.......................................................................................................... 22
3.4.4 - Velocidade............................................................................................................... 23
3.4.5 - Sentido de rotação.................................................................................................... 23
3.4.6 – Precisão................................................................................................................... 23
3.5 - Comunicação Serial RS 232....................................................................................... 24
4 - METODOLOGIA
4.1 - Mecanismo utilizado................................................................................................... 25
4.2 - Circuito de controle.................................................................................................... 27
4.3 - Circuito de potência.................................................................................................... 28
4.4 - Lay out da placa.......................................................................................................... 30
4.5 - Programa em linguagem C......................................................................................... 32
4.6 - Programa compilado.................................................................................................. 44
5 - RESULTADOS E DISCUSSÃO ................................................................................ 46
6 - CONCLUSÃO OU CONSIDERAÇÕES FINAIS..................................................... 47
7 - REFERÊNCIAS BIBLIOGRÁFICAS...................................................................... 48
11
1. INTRODUÇÃO
O domínio do futebol de robôs abriu um novo desafio para as áreas de pesquisa em
engenharia e inteligência artificial, forçando as pesquisas a tentar solucionar uma série de
novos problemas apresentados neste novo domínio. Até há pouco tempo atrás, as pesquisas
em IA (Inteligência Artificial) estavam focados em jogos de xadrez ou em outros jogos de
tabuleiro, mas com a criação do Deep Blue, que venceu Gary Kasparov, a soberania humana
no jogo foi superada, o que exigiu a busca de novos desafios.
Pertence à natureza humana a quebra de barreiras, e mesmo que essas barreiras
pareçam impossíveis, elas têm sido o motor do desenvolvimento. Um desses grandes desafios
foi proposto por presidente americano John F. Kennedy, quando mostrou a necessidade dos
americanos em colocar um homem na lua e depois retorná-lo em segurança (ROBOCUP
PROCEDURE, 2005). O novo desafio que foi lançado é o de construir um time de robôs
humanóides que possa jogar e se possível vencer o time da seleção campeã mundial da
metade do século XXI.
A escolha da pesquisa sobre futebol de robôs foi proposta porque o domínio do futebol
é extremamente dinâmico, complexo, imprevisível, ocorre em tempo real, e as informações
são muitas vezes incompletas, gerando situações ainda não solucionáveis, e exigindo muita
pesquisa, conforme (KITANO, 1993). O estado da arte em tecnologia, tanto computacional
quanto mecânica e eletrônica ainda não permite estabelecer um conjunto de soluções, e este
será o novo marco das pesquisas.
Na área mecânica, têm sido importantes as pesquisas em novos materiais, que sejam
mais leves e resistentes, que reduzam atritos; na área eletrônica a busca pela construção de
computadores cada vez mais potentes e rápidos, que consumam menos energia e sejam mais
resistentes, na área de robótica, que integra todas as grandes áreas, busca-se construir robôs
12
que consigam se aproximar da capacidade física humana em todos os aspectos, ou seja, os
modelos antropomórficos são as metas na robótica, e finalmente na área da computação, a
busca pelo domínio da IA, de modo a criar um sistema completamente autônomo e
colaborativo, é a base das pesquisas. Somente com a junção de todas áreas do conhecimento
poderemos pensar em se aproximar da meta proposta pela ROBOCUP.
Um outro marco que se deseja atingir é a capacitação dos sistemas de visão artificial,
que fornecem ricas informações sobre o mundo, e provavelmente é o melhor sistema de
sensoreamento existente. Com um sistema de visão funcional poderemos obter uma
representação de mundo extremamente fiel, colhendo informações geométricas (3D) e
cromáticas, o qual não seria possível com nenhum outro sensor isoladamente. Existem
inúmeros problemas associados à visão artificial que não foram resolvidas, e que serão muito
úteis no futuro.
Apenas para se ter a dimensão dos trabalhos nesta área, o proposta feita pela
comunidade científica mundial começou em 1993 e mesmo com os esforços para a
organização, o primeiro torneio só ocorreu em 1997 no Japão, durante a conferencia de AI
em Nagoya.
Naquele primeiro evento, participaram quarenta times em três categorias: simulação,
pequenos robôs e médios robôs. A partir daquele ano, torneios anuais foram propostos ao
redor do mundo, e no torneio de 2003 na Itália, estavam inscritos quatrocentos times.
É a ciência se aproximando da comunidade e aumentando a sua penetração,
permitindo que se faça ciência desde cedo (MORAVEC, 2003).
13
2. OBJETIVOS
2.1 Objetivos e motivação geral
Este trabalho não tem a pretensão de criar um time de robôs, mas apenas tentar
substituir o goleiro de um jogo de futebol de mesa denominado pebolim, construindo um
conjunto mecânico de movimentação linear e um sistema de visão artificial que possa
identificar e prever as possíveis trajetórias da bola e enviá-las ao motor que controla o goleiro
via um canal serial, impedindo que a bola entre no gol.
Mas somente neste pequeno enfoque abre-se um campo enorme de pesquisa e
principalmente a integração de diversas áreas do conhecimento. Esta multidisciplinaridade é a
meta das pesquisas no campo da robótica, porque une áreas que eram extremamente distintas
no passado, e que com a união, podem propor soluções realmente inovadoras e úteis em um
curto espaço de tempo.
Este trabalho propõe a construção de um dispositivo mecânico que faz a
transformação do movimento rotativo de um motor de passo em um movimento linear através
de uma correia dentada.
O sistema captará imagens de um plano α previamente definido e aguardará pela
presença de um objeto móvel, que nesta aplicação será uma bola branca com diâmetro de
30mm. O movimento da bola será rastreado e sua trajetória no plano acompanhado até que
ocorra a interceptação pelo goleiro.
As principais motivações foram a possibilidade de se projetar e construir um sistema
mecatrônico, onde todo o controle será executado por um microcontrolador 8051, porém este
controle está apenas relacionado com o posicionamento do goleiro no eixo X, já que as
coordenadas serão enviadas através de uma porta serial por um microcomputador PC. O PC se
14
encarregará de coletar e analisar a imagem, e fazer o rastreio da bola ao longo dos quadros
capturados.
2.2 Objetivos específicos
Projetar e construir um conjunto mecatrônico, conforme descrito na introdução, e toda
a parte do hardware eletrônico para o controle do conjunto mecatrônico, e também de uma
mesa, de dimensão 1.0m x 0.8m, que servirá de plataforma de apoio e aplicação do projeto. O
software de controle será dividido em duas partes distintas, a primeira executará todo o
controle do conjunto mecatrônico através de um micro controlador da família 8051, e o
programa fonte será desenvolvido em C através de um compilador AVOCET C para a família
dos microcontroladores.
Será responsabilidade deste módulo, o controle de direção e geração dos pulsos de
excitação do circuito de ponte transistorizada que alimentará o motor de passo. Este módulo
receberá as coordenadas de posição através de uma entrada serial, cujo protocolo será
definido em modo ASCII e será detalhado mais a frente.
O outro módulo de software será implementado em um computador IBM PC
compatível sobre a plataforma Windows 98/ME/XP e será responsável para aquisição, análise
e geração de coordenadas de movimento do motor, enviando-as em seguida para a interface
de controle via canal serial. O software de interface homem/máquina, bem como o de
tratamento de imagens, será escrito em LabView 6.1 juntamente com drive Imaq Vision, para
aquisição e tratamento da imagem. O LabView é um software compilador da National
Instruments que deriva do C++.
Veremos nos próximos tópicos, um breve histórico de cada módulo de controle e a
revisão bibliográfica.
15
3. REVISÃO DA LITERATURA
3.1 Microcontrolador 8051
O 8051 é um microcontrolador com clock típico de 12Mhz, sendo que existem versões
de até 30Mhz, podendo trabalhar com até 64Kbytes de memória de programa e mais
64Kbytes de memória de dados isoladamente, além de sua RAM interna.
Suas características de hardware incluem capacidade de expansão da memória de
programa (inicialmente 4Kbytes internamente) para até 64Kbytes totais, colocando mais
60Kbytes externos, ou então utilizar 64Kbytes de memória externa de programa, com a versão
8031. Permite-nos também expandir a memória RAM dos 128bytes internos para mais
64Kbytes externos.
Possui quatro portas de I/O de 8 Bits cada uma , Bits estes individualmente
endereçáveis (caso a memória de programa externa seja utilizada, duas destas portas ficarão
comprometidas); interrupção com estrutura nesting com 5 fontes mascaráveis e dois níveis de
prioridade que podem ser alteradas a qualquer momento pelo Software; dois temporizadores /
contadores de 16 Bits; oscilador de clock interno , bastando 1 cristal e 2 capacitores; e
também um canal de comunicação serial do tipo UART full – duplex, que permite também a
expansão de I/O. Isto significa para o usuário que o sistema pode receber e transmitir
informações simultaneamente (SILVA, 1998).
A (fig. 1) mostra a arquitetura interna do 8051 e os pinos do microcontrolador estão
demonstrados na (fig. 2).
16
Figura 1 – Arquitetura do microcontrolador 8051
17
Figura 2 – Pinos do Microcontrolador 8051
3.2 Driver de Potência
Utilizamos o circuito integrado UCN5804 que é um driver para motores de passo
unipolares de duas fases, podendo suportar corrente máxima de 1,25 A por fase e tensão de 35
V. Para acionarmos o motor, precisamos de um hardware especifico, chamado de driver de
potência, que receberá os pulsos nível TTL do microcontrolador 8051 consumindo uma
corrente de 5mA, e alimentará o motor sendo capaz de fornecer uma corrente de 1,25 A
(ALEGRO, 1993).
Conforme Alegro (1993) o circuito abaixo da (fig. 3) ilustra o exemplo da aplicação.
Os diodos de proteção em série recomendados são do tipo Schottky para a corrente prevista e
os resistores em série são de baixo valor. Em alguns casos eles não são usados.
18
Figura 3 - Esquema para controle de motor de passo utilizando o UCN 5804
3.3
Linguagem C
A linguagem de programação C é uma linguagem de alto nível, ou seja, próxima a
linguagem do homem, com a funcionalidade da linguagem assembly de baixo nível, pois
permite a manipulação de bits, bytes e endereços ficando próxima a linguagem de máquina.
A linguagem C é uma linguagem estruturada, pois permite a compartimentalização do
código e dos dados, já que podem ser feitas sub-rotinas que empregam variáveis locais. Com
o uso de variáveis locais é possível escrever sub-rotinas de forma que os eventos que ocorrem
dentro delas não causem nenhum efeito inesperado nas outras partes do programa. Essa
linguagem estruturada suporta, diretamente, diversas construções de laços (loops), como
“While”, “Do-While” e “For” (SCHILDT, 1996).
Um código escrito em linguagem C é portátil, pois após a compilação do programa o
compilador gera um executável (arquivo.EXE) que pode rodar em qualquer máquina.
19
A escolha da linguagem C para programar o microcontrolador 8051, foi influenciada
pelas vantagens acima descritas e pela familiaridade que técnicos e engenheiros têm com essa
linguagem.
Além da utilização da Linguagem C para programar a memória interna do
microcontrolador 8051, foi utilizado a Linguagem LABVIEW para executar a aquisição da
imagem (KITANI,2005).
3.4
Motor de Passo
Motores de passo são dispositivos eletromecânicos que podem ser controlados
digitalmente através de um hardware específico. São encontrados em aparelhos onde a
precisão é um fator muito importante. São usados em larga escala em impressoras, plotters,
drivers de computador e muitos outros aparelhos.
Existem vários modelos de motores de passos disponíveis no mercado que podem ser
utilizados para diversos propósitos que vão desde mover robôs, câmeras de vídeo, brinquedos
e diversas aplicações industriais.
Figura 4 – Modelos de motores de passo
20
3.4.1 Funcionamento
Os motores de passo possuem três estados básicos que são:
•
Desligado
Não há alimentação suprindo o motor. Nesse caso não existe consumo de energia, e
todas as bobinas estão desligadas. Na maioria dos circuitos este estado ocorre quando a fonte
de alimentação é desligada.
•
Parado
Pelo menos uma das bobinas fica energizada e o motor permanece estático num
determinado sentido. Nesse caso há consumo de energia, mas em compensação o motor
mantém-se alinhado numa posição fixa.
•
Movimento
As bobinas são energizadas em intervalos de tempos determinados, impulsionando o
motor a girar numa direção.
3.4.2 Modos de operação
A forma com que o motor irá operar dependerá bastante do que se deseja controlar.
Existem situações em que o torque é o fator mais importante, outras a precisão ou mesmo a
velocidade. Entretanto os modos de operação de um motor de passos são (passo completo
com apenas uma bobina energizada a cada passo; passo completo com duas bobinas
energizadas a cada passo e por último o meio passo que é a combinação dos dois modos
anteriores).
•
Passo completo 1 (Full –step)
Somente uma bobina é energizada a cada passo e sua característica é: Menor torque;
Pouco consumo de energia e Maior velocidade.
21
A (fig. 5) mostra a tabela de excitação das bobinas do motor de passo para a operação
em full – step 1.
Figura 5 - Passo completo 1 - Full-step - sentido de giro horário
•
Passo completo 2 (Full –step)
Duas bobinas são energizadas a cada passo e sua característica é: Maior torque;
Consome mais energia que o passo completo anterior e também possui maior velocidade.
A (fig. 6) mostra a tabela de excitação das bobinas do motor de passo para a operação
em full – step 2.
Figura 6 - Passo completo 2 - Full-step - sentido de giro horário
•
Meio Passo (Half–step)
22
É a combinação do passo completo 1 com o passo completo 2 gerando um efeito de
meio passo, sua característica é: Consome mais energia que os passos anteriores; É muito
mais preciso que os passos anteriores; O torque é próximo ao do passo completo 2; A
velocidade é menor que as dos passos anteriores.
A (fig. 7) mostra a tabela de excitação das bobinas do motor de passo para a operação
half - step.
Figura 7 - Meio passo – Half-step - sentido de giro horário
3.4.3 Características
Ao trabalhar com motores de passo, precisamos saber algumas características de
funcionamento como a tensão de alimentação, a máxima corrente elétrica suportada nas
bobinas, o grau por passo (precisão) e o torque.
23
3.4.4 Velocidade
Para se controlar a velocidade de um motor de passo envia-se uma seqüência de pulsos
digitais num determinado intervalo de tempo. Quanto menor esse intervalo, maior será a
velocidade em que o motor irá girar.
3.4.5 Sentido de rotação
O sentido de rotação do motor de passo direto ou reverso, é obtido simplesmente
invertendo a seqüência de acionamento das bobinas.
A (fig. 8) e a (fig. 9) mostra a tabela de excitação das bobinas do motor de passo para
os sentidos direto e reverso.
Figura 8 - Passo completo direto
Figura 9 - Passo completo reverso
3.4.6 Precisão
Para calcularmos quantos passos são necessários para que o motor dê um giro de 360°,
basta realizarmos a relação entre 360° e o passo especificado no motor. Em nosso projeto
utilizamos um motor de passo com uma resolução de 1.8° / Passo, no modo de operação
passo completo com duas bobinas energizadas. Segue o exemplo para o calculo:
24
n = α.
2
µ
Onde:
n = números de passos
α = quantidade de graus
µ = valor de graus por passo
Passos por volta = (360° / 1,8) * 2
Passos por volta = 400
3.5 Comunicação Serial RS 232
A comunicação RS 232 nasceu da necessidade de se criar um padrão para a
comunicação serial, através da definição de níveis de tensão e de impedância para a
transmissão de dados, permitindo que equipamentos incompatíveis entre si pudessem ser
interligados (CAMPBELL, 1996).
Os níveis de tensão do padrão RS 232C (é o mais difundido atualmente) vão de –15
até +15 Volts, divididos da seguinte forma:
Nível lógico 0 +5 a +15 Volts
Nível lógico 1 -5 a – 15 Volts
A região entre –5 e +5 Volts é conhecida como região de transição, e não é
reconhecida pelo sistema.
Deve ser notado que houve uma inversão do sinal, pois o nível 1 tem níveis RS
negativos, e o nível 0 tem níveis RS positivos.
25
4.
METODOLOGIA
4.1 Mecanismo utilizado
Adquirimos através do laboratório da empresa Lua Nova (Panco), uma estrutura de
impressora Epson, que estava inutilizado devido problemas elétricos e reaproveitamos seu
mecanismo linear. Esse conjunto e composto de um carro de impressão, guias lineares, correia
dentanda, engrenagens e um motor de passo de 24Vdc 1Nm. Substituímos o carro de
impressão, por um goleiro de pebolim, fazendo os suportes necessários para sua fixação (fig.
10, fig. 11).
Figura 10 – Mecanismo
26
Figura 11 – Fixação do goleiro e chave de fim de curso
No eixo do motor de passo, existe um conjunto de engrenagens acopladas num sistema
de redução, que traciona a correia dentada, que por sua vez movimenta o goleiro. A cada volta
do motor de passo, o eixo linear se movimenta por 100mm.
Fixamos nas extremidades do eixo, chaves fim de curso garantindo a proteção do
mecanismo. (Fig 12).
Figura 12 – Chaves fim de curso e correia dentada
27
4.2 Circuito de controle
Após os ajustes mecânicos, projetou-se um circuito de controle, conforme (fig. 13),
baseado no microcontrolador 8051, que recebe comandos através da porta serial RS232
transmitidas por um PC, e produz os sinais de habilitação, sentido e passo do motor, além de
monitorar os sensores fim de curso que estão interligados ao 8051 através de acopladores
ópticos TLP 521.
Figura 13 – Circuito de controle
28
4.3 Circuito de potência
Os sinais de controle para o motor são enviados para o UCN5804 que recebe uma
forma de onda quadrada e simétrica na entrada de step-in, produzindo na saída os sinais
defasados para o motor de passo, conforme (fig. 14). Esses sinais são enviados para o driver
de corrente, par casado de transistores TIP31 e TIP32, que fornece a potência necessária para
os motores, conforme (fig. 15).
Figura 14 – Sinais de saída para o motor de passo
29
Figura 15 – Circuito de potência
Figura 16 – Testando o Circuito de potência
30
4.4 Lay out da placa
Uma vez definido o esquema elétrico, passaremos a construção da placa onde será
montados o microcontrolador e outros componentes, que irão fazer com que o motor de passo
possa ser controlado.
A placa foi primeiramente desenhado em cima de um software próprio para desenhos
eletrônico chamado P-CAD (fig. 17), que uma vez dispostos os componentes a serem
utilizados, faz o roteamento automático das trilhas executando as conexões entre os
componentes.
Figura 17 – Lay out do circuito impresso
31
Feito o layout em PCB (formato de arquivo na qual é feita a maioria dos lay-out),
gravamos e inserimos em uma máquina de furação e fresamento de trilhas chamado QUICK
CIRCUIT. Neste equipamento colocamos uma placa virgem de fibra de vidro (utilizamos este
material por que o fenolite, que é um material mais barato, é mais susceptível a umidades,
podendo comprometer o bom funcionamento).Uma vez fixada, colocamos fresas na máquina
de acordo com a espessura das trilhas que se deseja fazer e em seguida inserimos o arquivo
em PCB da placa através de uma porta serial acoplada a um computador. Depois de terminada
as furações e o roteamento das trilhas, aplicam uma camada fina de verniz para que as trilhas
de cobre fiquem protegidas contra oxidações, e só então passaremos à montagem das placas.
Após a montagem da placa, construímos uma caixa de alumínio alojar o controle e
melhor dissipar o circuito de potência. O modulo e visto na (fig. 18 e fig. 19).
Figura 18 – Alojamento para o circuito.
32
Figura 19 – Dissipadores para o circuito de potência
4.5 Programa linguagem C
Após o desenvolvimento do hardware, foi elaborado para o 8051 um programa em
linguagem C, mostrado logo abaixo. Este programa lê o canal serial do microcontrolador
8051, converte os dados recebidos em ASCII para numero inteiro e chaveia o motor de passo
para que o mesmo se desloque até a posição desejada.
/*======================================================== */
/*
/*
*/
INTERCEPTADOR DE OBJETOS NO PLANO
*/
33
/*
*/
/*========================================================*/
/*
*/
/*
*/
/*
RICARDO CORREIA DE ARAUJO
R.A.200480217
*/
/*
*/
/*
*/
/*=====================================================
*/
/*
*/
/*
ORIENTADOR - PROF. DR. MARIO CESAR RICCI
/*
*/
*/
/*========================================================*/
/*
*/
/*
INICIO EM 26/04/2005
*/
/*
REVISAO 02
*/
/*
*/
/*=========================================================*/
/*INCLUINDO AS BIBLIOTECAS*/
/*========================*/
#include <8051.h>
#include <portab.h>
#include <avocet.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
34
#include <conio.h>
#include <intrpt.h>
/*======================================================== */
/*DEFINICOES INICIAIS*/
/*===================*/
#define HOMEX
P0_BITS.B0
/*sensor de home do eixo X */
#define FC_XP
P0_BITS.B1
/*fim de curso do eixo +X */
#define FC_XN
P0_BITS.B2
/*fim de curso do eixo -X */
#define HOMEY
P0_BITS.B3
/*sensor de home do eixo Y */
#define FC_YP
P0_BITS.B4
/*fim de curso do eixo +Y */
#define FC_YN
P0_BITS.B5
/*fim de curso do eixo -Y */
#define OUT_1 P0_BITS.B6
/*saida auxiliar 1
*/
#define OUT_2 P0_BITS.B7
/*saida auxiliar 2
*/
*/
#define OEX
P2_BITS.B0
/*habilita o motor X
#define DIRX
P2_BITS.B1
/*direcao do motor X
#define STEPX
P2_BITS.B2
#define HALFX P2_BITS.B3
#define DIRY
#define STEPY
P2_BITS.B4
P2_BITS.B5
/*pulsos para o motor X
*/
*/
/*half ou full do motor X */
/*direcao do motor Y
*/
/*pulsos para o motor Y */
35
#define HALFY P2_BITS.B6
#define OEY
P2_BITS.B7
/*half ou full do motor Y */
/*habilita o motor X
*/
/*===================================================*/
/*VARIAVEIS*/
/*=========*/
char libera;
char dado;
char contador;
char auxiliar1[4];
unsigned char cont1;
unsigned char desabilita_p;
unsigned char desabilita_n;
int auxiliar;
unsigned int distancia;
unsigned int setpoint;
/*======================================================*/
void main ()
{
36
set_vector(TIMER0, frequencia);
IE=0X82;
/*inicializacao da porta serial*/
IP=0X02;
TMOD=0X21;
TCON=0X45;
TL1=0XFD;
/*0XFD =9600 --> 11.0592 mhz
TH1=0XFD;
SCON=0X41;
TH0=0XF9; //f0
/*TH0=0XF9 TL0=0XF8 (100HZ)*/
TL0=0XF8; //f0
TR0=0;
if(FC_XP==0)
{
DIRX=1;
/*direcao do motor X horario*/
desabilita_p=1;
desabilita_n=0;
}
else
{
DIRX=0;
/*direcao do motor X anti - horario*/
desabilita_p=0;
desabilita_n=1;
}
putch('t');
/*Caracter de sistema energizado*/
37
HALFX=0;
/*eixo X em full step
OEX=0;
/*habilita o eixo X
while(FC_XP==1 || FC_XN==1)
*/
*/
/*Goleiro sair de cima dos sensores*/
{
saida();
/*oscilador para o motor de passo*/
}
while((FC_XP==0
&&
desabilita_p)
||
(FC_XN==0
/*inicializacao do goleiro*/
{
saida();
/*oscilador para o motor de passo*/
}
TR0=0;
if(DIRX==1)
/*testa o fim de curso +X
*/
{
OEX=1;
/*desabilita o eixo X
*/
DIRX=0;
/*direcao do motor X horario */
OEX=0;
/*habilita o eixo X
*/
}
else
/*testa o fim de curso -X */
{
&&
desabilita_n))
38
OEX=1;
/*desabilita o eixo X
*/
DIRX=1;
/*direcao do motor X antihor */
OEX=0;
/*habilita o eixo X
*/
}
setpoint=150;
/*100 pulsos por volta --> 150 = 1,5 voltas*/
conversao();
/*Subrotina de conversao de escala*/
distancia=0;
while(distancia != setpoint)
/*Aguardando goleiro no centro do gol*/
{
saida();
/*oscilador para o motor de passo*/
distancia++;
}
TR0=0;
putch('i');
/*envia o caracter i de fim da inicializacao*/
while(1)
{
OEX=1;
if(distancia != setpoint)
/*verifica se precisa movimentar o goleiro*/
{
if(setpoint>distancia)
/*verifica qual o sentido tera que movimentar*/
39
{
OEX=1;
DIRX=1;
/*sentido horario*/
OEX=0;
}
else
{
OEX=1;
DIRX=0;
/*sentido anti horario*/
OEX=0;
}
while(distancia != setpoint) /*movimenta o goleiro para a nova posicao*/
{
saida();
/*oscilador para o motor de passo*/
if(DIRX==1)
distancia++;
else
distancia--;
}
}
if(RI==1)
/*comunicacao com o canal serial*/
{
dado=getch();
if(dado=='x')
/*caracter inicio de transmissao*/
40
{
putch(dado);
/*echo de caracter ok*/
contador=0;
libera=1;
}
if(libera==1 && dado>='0' && dado<='9')
/* verifica se e caracter
numerico*/
{
switch(contador)
{
case 0:
{
auxiliar1[0]=dado;
/* primeiro caracter da distancia*/
putch(dado);
contador=1;
/*echo*/
break;
}
case 1:
{
auxiliar1[1]=dado;
putch(dado);
contador=2;
break;
}
case 2:
/*segundo caracter da distancia*/
/*echo*/
41
{
auxiliar1[2]=dado;
/*terceiro caracter da distancia*/
setpoint= atoi (auxiliar1);
putch(dado);
/*converte ascii para inteiro*/
/*echo*/
contador=0;
libera=0;
if(setpoint>300)
/*limite superior de movimento*/
setpoint=300;
if(setpoint<=0)
/*limite inferior de movimento*/
setpoint=0;
conversao();
/*rotina de conversao de escala*/
break;
}
}
}
RI=0;
}
}
/*while(1)*/
}
/*void main*/
void interrupt frequencia()
{
cont1++;
if(OUT_1==0)
OUT_1=1;
42
else
OUT_1=0;
TH0=0XF9;
TL0=0XF8;
}
saida()
/*oscilador para gerar a frequencia de saida para o motor de passo*/
{
TR0=1;
cont1=0;
while(cont1<5)
{
STEPX=0;
/*saida baixa do eixo X*/
}
cont1=0;
while(cont1<5)
{
STEPX=1;
/*saida alta do eixo X*/
}
}
conversao()
/*Conversao de escala 200 pulsos = 1 volta = 85mm*/
{
setpoint=setpoint*2;
setpoint=setpoint*100;
43
setpoint=setpoint/85;
}
/*****************************************************************/
/*
/*
*/
PROTOCOLO DE COMUNICACAO
/*
*/
*/
/* 1 - CONTROLADOR ENVIA AO PC CARACTER t AO ENERGIZAR.
*/
/* 2 - CONTROLADOR ENVIA AO PC CARACTER i AO FIM DA
INICIALIZACAO.
*/
/* 3 - PC ENVIA CARACTER x PARA INICIAR TRANSMISSAO DE NOVA
COORDENADA. */
/* 4 - CONTROLADOR REBATE O CARACTER x PARA O PC.
*/
/* 5 - PC ENVIA O PRIMEIRO CARACTER NUMERICO DE COORDENADA.
*/
/* 6 - CONTROLADOR REBATE O CARACTER RECEBIDO PARA O PC.
*/
/* 7 - PC ENVIA O SEGUNDO CARACTER NUMERICO DE COORDENADA.
*/
/* 8 - CONTROLADOR REBATE O CARACTER RECEBIDO PARA O PC.
*/
/* 9 - PC ENVIA O TERCEIRO CARACTER NUMERICO DE COORDENADA.
*/
44
/* 10- CONTROLADOR REBATE O CARACTER RECEBIDO PARA O PC.
*/
/*
*/
/************************************************************/
4.6 Programa Compilado
Após o programa ter sido escrito, foi compilado através do avcase51, para transformar
as instruções que estão em C, para a linguagem de máquina, resultando no seguinte código:
:0300000002000EED
:20000E0075D0007400701074249410400513758110800E7424942040057581242C
:20002E008003758120740060087820FA760008DA812FA760008DAFB740060BF
:20004E00087824FA760008DAFB7400600D900026A308DAF97400600D90001A
:20006E00007824FAE493F6A308DAF9780079000AE4F0A319B9FFF51880F20E
:06008E00120094020000C4
:03000B0002027975
:2000940075A88275B8027589BFD758AF8C28C3081030200B9D2A1751C0175F2
:2000B4001B000200C1C2A1751C00751B0C2A3C2A00200D012029730810302CF
:2000D40000CD3082030200CD0200E2120299EFE51C60030200DF30820302008B
:2000F400FCE51B60030200DFC28C20A1030202010FD2A0D2A1C2A0752000C9
:200114007521961202BCE4F51DF51E0201301201E6003020130051DE51EB52131
:20013400028003020122E51DB52002800C7D691202FB0201C1E520B51D028020
:2001540003020165E521B51E02800302016502171D2A0C2A1020175D2A0D2A5
:20017400A1C2A002019D12029720A103020191051EE51E600302019DE51E24B3
:20019400FFF51EE51D34FFF51DE51EB52102800302017AE51DB52000201D764
:2001B400851A14AD1A1202FB751901C298D2A0EEB5210280030201280033C
45
:2001D40002014E2098030201C11203208B1AAD1AB01F51202FB751900751FB7
:2001F40001AD1FBD010280030201BFE51A64802450400304802446500302011A
:20021400BFE51970030201B414700302022B147001BF851A15AD1A1202FB75A8
:2002340019020201BF851A167C007D1412035B1A1202FB751900751F00E52147
:2002540024D3E52034FE40030202657520017145206003020273E4F520F52112F2
:2002740002BC0201BFC0D0C0E0051830860302028CC286758CF9758AF8D0E085
:20029400D0D032D28C7518000202A1C2A2E02029F7518000202B2D2A2E518CE
:2002B40024FB40030202B022AC20AD21ED08D217C007D64AA20AB211205B9
:2002D4004F8A208B217C007D55AA20AB21120758920758BFD758DFDD28E03
:2002F40075985275230122E52370031202E9BD0A31520990302030AC2997599BE
:200314000D209903020315C2998D9922E5237003123020327C298AD99BD0D0278
:20033400800302033B800AAD99BD8D020A22E599547FFB22120320EBF9AD1F
:20035400011202FBAB0122C006C000198510838511821204DCB40902800302E5
:2003740003910511E5117002051085121204DCB42002800302036580E5E4FEFF17
:200394008E088510838511821204DCB4203AB050880118510838511821204DCBB
:2003B400B42B0280030203F80511E51177C007D0AAA06AB0712054F8510836C
:2003D4008511821204DCA3858310858211BFDEC3AFCED24D0FDEC34FFFC5B
:2003F400AE04AF058510838511821204DC90056E03C6E5086009E4C39FFBE470
:200414009EFA8004AA06AB07D007D00622E4F5F0EC4D701322EAC39C40136F
:200434007004EB9D400DEDC333FDEC33FC05F0EC40067007EB9D5003C38060
:2004540008C3EB9DFBEA9CFAD3E933F9E833F8ECC5F0DA8B058A0488028934
:200474000322C000C001120421D001D00022C000C001D0008C028D0322EA3015
:20049400E707E4C39BFBE49AFAEC30E707E4C39DFDE49EC6AC0E01204929D
:2004B4001204218C028D03800EC000C001EC60421D0E030E707E4C39BFBE4
:0804D400E49AFAD001D00022E5
46
:20056D00002020202020202020202828282828220202020202020202020202066
:20058D0020881010101010101010101010101010100404040404040410101010103E
:2005AD0010104141414141410101010101010101001010101010101011010101034
:2005CD00101042424242424202020202020202020020202020202020210101010FA
:2005ED00200000000000000000000000000000000000000000000000000000000CE
:20060D0000000000000000000000000000000000000000000000000000000000CD
:20062D00000000000000000000000000000000000000000000000000000000000AD
:20064D00000000000000000000000000000000000000000000000000000008D
:01066D00008C
:2004DC00E5836003E49322A882E64E4938003A882E6F822E5836004E4938003B4
:2004FC00A882E6F922E5836004E4E6FA22E5836004E4938003A882E6FB22E5EB
:20051C00836004E4938003A882E6004E4938003A882E6FD22E5836004E49380F8
:20053C0003A882E6FE22E58360046FF22C000C001ED8BF0A4F8A9F0ED8AE0
:11055C00F0A429F9EC8BF0A429FAE8FBD001D000220400000001FF
5.
RESULTADOS
O objetivo inicial do projeto foi alcançado, pois o goleiro está desenvolvendo
movimentos no eixo X capaz de interceptar objetos. Além disso, a comunicação serial entre o
hardware e o PC, e os movimentos dos motores de passo gerenciados pelo microcontrolador
8051 é muito eficiente, não apresentando nenhuma falha de comunicação entre o comando
enviado pelo jogo e a movimentação do motor de passo.
47
A precisão obtida durante o posicionamento do goleiro é menor que 2 mm, sendo
assim suficiente para a aplicação de interceptar um objeto no plano. Desta forma o grupo
preferiu não implementar um sistema de realimentação por malha fechada para esse caso,
visto que isso aumentaria a custo do projeto, porém se a aplicação necessitasse de alta
precisão deveria ser implementado um sistema de malha fechada.
6.
CONCLUSÕES
O microcontrolador 8051 mostrou ter uma excelente performance em aplicações para
o controle de motor de passo, pois a freqüência de trabalho com 12MHz atendeu as
necessidades do projeto chaveando o motor a uma freqüência de 200Hz, atingindo um
deslocamento do goleiro de 0.1 m/s, além disso, a memória interna de 4Kbytes do
microcontrolador foi suficientes para todo o programa desenvolvido em linguagem C, que até
o momento não superou 2Kbytes, conforme mostrado na figura X.
A utilização do circuito integrado UCN5804 facilitou o desenvolvimento do
software, pois o microcontrolador 8051 envia apenas uma forma de onda quadrada e
simétrica, ficando sobre a responsabilidade do UCN5804 a geração dos sinais a, a+, b, b+ que
após passarem pelo driver de potência TIP31 e TIP32 podem mover o motor de passo.
O projeto, que ainda está na fase de desenvolvimento, já apresenta os
resultados conforme esperado, atingindo o seu objetivo dentro do prazo previsto pelo
cronograma.
48
7.
REFERENCIAS BIBLIOGRÁFICAS
NATALE, Ferdinando; Automação Industrial, 3ª ed., São Paulo, Érica, 1998.
Lobosco, Orlando Silvio, Dias, José Luiz P. da Costa, Seleção e Aplicação de Motores
Elétricos, Makron.
TAUB, Hebert, Circuitos Digitais e Microprocessadores, Mc Graw-Hill, 1984.
BIANCHI, Reinaldo A. C., Visão computacional aplicado ao controle de micro robôs. São
Bernardo do Campo, Relatório do projeto de trabalho OS.N5886, 2001.
BOUCHÉ, Ch. Manual de Construção de Máquinas Dubbel, São Paulo, Hemus, 1979.
CAMPBELL, Joe. RS232 Técnicas de Interface, 1.ed., São Paulo, Ebras, 1996.
COSTA, Anna Helena Reali, PEGORARO, Renê, “Construindo Robôs Autônomos para
Partidas de Futebol: O Time Guaraná”, SP, SBA Controle e Automação, vol 3, Dezembro
de 2000.
KITANO, Hiroaki, et al. “RoboCup: The Robot World Cup Initiative”, Disponivel em
www.robocup.org, Acesso em: 04 de 2005.
MORAVEC, Hans, “Robots, After All”, Communications Of the ACM, vol 46 pag. 90 a
97 Outubro de 2003.
ROBOCUP PROCEDURES, Disponivel em www.robocup.org., Acesso em: 04 de 2005.
SCHILDT, Herbert. C. Completo e Total. 3.ed., São Paulo, Makron Books, 1996.
SILVA, Vidal P. Aplicações Práticas do Microcontrolador 8051 7.ed., São Paulo, Érica,
1998.
ALEGRO MICROSYSTEMS INC. Integrated and Discrete Semiconductors. 2.ed.,
Worcester, 1993.
Download

Detecção de Objetos no Plano via Sistema de Visão