Upload
wilson-silva-sousa
View
525
Download
2
Embed Size (px)
Citation preview
UNIVERSIDADE FEDERAL DO ABC
Wilson Silva Sousa
OPERAÇÃO REMOTA DE MESA MÓVEL UTILIZANDO VISÃO
COMPUTACIONAL
Trabalho de Graduação de Engenharia de Instrumentação,
Automação e Robótica
Aluno: Wilson Silva Sousa
Prof° Orientadora: Dra. Elvira Rafikova
- Santo André, 2015 -
Wilson Silva Sousa
OPERAÇÃO REMOTA DE MESA MÓVEL UTILIZANDO VISÃO
COMPUTACIONAL
Trabalho de Graduação apresentado a
Universidade Federal do ABC, como
requisito parcial para obtenção do diploma
no curso de graduação em Engenharia de
Instrumentação, Automação e Robótica.
Orientadora: Profª Dra. Elvira Rafikova
- Santo André, 2015 -
AGRADECIMENTOS
A Deus, pela oportunidade de viver, pensar, realizar e amar.
À minha família, por todo o apoio durante esta jornada.
Aos amigos e familiares, que com boa vontade me auxiliaram neste trabalho.
À minha orientadora, por ter acreditado neste projeto.
E a todos aqueles que, durante esses anos, acompanharam de perto esta
caminhada, oferecendo seu apoio e muitas vezes sua compreensão.
OPERAÇÃO REMOTA DE MESA MÓVEL UTILIZANDO VISÃO
COMPUTACIONAL
Wilson Silva Sousa
Março / 2015
Orientadora: Profª Dra. Elvira Rafikova
RESUMO
Por questões de segurança e ergonomia, seja na indústria ou em outras áreas,
por diversas vezes se torna necessário operar mecanismos remotos, situados em
ambientes perigosos, inacessíveis ou distantes. Nestes casos o operador atuante
geralmente utiliza equipamentos portáteis dotados de botões, joystick’s, interfaces
gráficas ou outros meios que possibilitem controlar movimentos. Visando propor uma
forma alternativa de controle remoto de sistemas de movimentação, é desenvolvido
neste trabalho um sistema de visão computacional que permita a um operador
manusear uma mesa móvel bidirecional, por meio da movimentação de um objeto em
frente a uma câmera. No sistema proposto, as imagens do objeto de referência são
captadas por uma webcam e analisadas por um software que determina as
coordenadas deste objeto, via técnicas de visão computacional. As coordenadas
obtidas são enviadas para o circuito eletrônico de controle, que aciona os atuadores
da mesa, posicionando-a nas coordenadas correspondentes. Através dos projetos
mecânico e eletrônico, e também o desenvolvimento dos softwares de visão e de
controle de movimentação, pode-se implementar um sistema onde a mesa se desloca
junto com o objeto, de acordo com as coordenadas exibidas na interface gráfica.
Palavras-chave: Operação remota. Visão Computacional. Automação.
REMOTE OPERATION OF SLIDING TABLE USING COMPUTER
VISION
Wilson Silva Sousa
March / 2015
Advisor: Profª Dra. Elvira Rafikova
ABSTRACT
For reasons of safety and ergonomics, whether in industry or in other areas,
many times it is necessary to operate remote mechanisms, situated in dangerous
environments, distant or inaccessible. In these cases the acting operator generally
uses portable equipment fitted with buttons, joystick's, graphical user interfaces or
other means which allow to control movements. In order to propose an alternative way
of remote control of drive systems, is developed in this work a computer vision system
that allows an operator to handle a bidirectional mobile table, through the movement
of an object in front of a camera. In the proposed system, the reference object images
are captured by a webcam and analyzed by a software that determines the coordinates
of this object, via computer vision techniques. The coordinates obtained are sent to the
control electronic circuit, which triggers the table actuators, positioning it in the
corresponding coordinates. Through mechanical and electronic projects, and also the
development of the software of vision and movement control, can be implemented a
system where the table moves along with the object, according to the coordinates
displayed in the graphical interface.
Keywords: Remote operation. Computer Vision. Automation.
LISTA DE FIGURAS
Figura 1. Arquitetura de um sistema de operação remota ................................. 2
Figura 2.(a) Robô industrial FANUC guiado por visão computacional. (b)
Detecção da posição de garrafas para posterior manipulação.......................... 5
Figura 3. (a) Reconhecimento da íris do olho humano. (b) Reconhecimento da
impressão digital ................................................................................................. 5
Figura 4. Detecção de lesões no cérebro humano. ........................................... 6
Figura 5. Arquitetura de um sistema de visão computacional. .......................... 7
Figura 6. Imagem monocromática. ................................................................... 10
Figura 7. Formação de uma imagem colorida. ................................................ 11
Figura 8. Sensor de imagem CCD ................................................................... 11
Figura 9. Princípio de operação dos dispositivos CCD. ................................... 12
Figura 10. Transmissão de um quadro de imagem em dispositivo CCD. ....... 13
Figura 11. Filtro de Bayer. ................................................................................ 14
Figura 12. Espectro eletromagnético. .............................................................. 15
Figura 13. Sensibilidade do olho humano em relação ao comprimento de onda
da radiação eletromagnética incidente. ........................................................... 16
Figura 14. Cores primárias e secundárias em combinação aditiva. ................ 17
Figura 15. Representação gráfica do modelo RGB. ........................................ 19
Figura 16. Representação gráfica do modelo HSV. ........................................ 19
Figura 17. Vizinhança 3x3 definida ao redor de um pixel de coordenadas (x,y).
.......................................................................................................................... 22
Figura 18. Filtro linear com resposta ao impulso h(x,y). .................................. 23
Figura 19. Matriz representando a imagem à ser filtrada (à esquerda). Máscara
de convolução (à direita) .................................................................................. 24
Figura 20. Determinação de um ponto na imagem filtrada através da operação
de convolução. ................................................................................................. 24
Figura 21. Matriz representando a imagem filtrada. ........................................ 25
Figura 22. Máscara 7x7 do filtro gaussiano para σ=1. ..................................... 26
Figura 23. Mesa X-Y industrial para posicionamento ...................................... 28
Figura 24. Sistema de posicionamento X-Y em detalhe. ................................. 29
Figura 25. Diagrama simplificado de um microcontrolador. ............................. 31
Figura 26. Pinagem do microcontrolador 18F4550. ......................................... 34
Figura 27. Pinagem do microcontrolador 18F4550. ......................................... 34
Figura 28. Sinal elétrico padrão RS-232. ......................................................... 37
Figura 29. Conector DB9 fêmea. ...................................................................... 38
Figura 30: Conector USB, designação dos pinos e cores dos fios
correspondentes. .............................................................................................. 40
Figura 31. Conector DB9 fêmea. ...................................................................... 40
Figura 32. Sinal codificado em NRZI................................................................ 41
Figura 33. Motores de passo. ........................................................................... 44
Figura 34: Funcionamento simplificado de um motor de passo. ..................... 45
Figura 35. Motor de passo de relutância variável. ........................................... 46
Figura 36. Motor de passo de relutância variável. ........................................... 46
Figura 37. Motor de passo Híbrido. .................................................................. 47
Figura 38. Motor de passo Híbrido. .................................................................. 48
Figura 39. Tipos de ligações. À esquerda um motor bipolar de 2 fases e 4 fios.
À direita um motor unipolar de 2 fases e 6 fios. ............................................... 49
Figura 40. Sequência de acionamento, com uma fase por vez. ...................... 49
Figura 41. Sequência de acionamento, com duas fases simultaneamente. ... 50
Figura 42. Área de aplicação do motion control industrial. .............................. 51
Figura 43. Arquitetura típica de um sistema de motion control industrial. ....... 52
Figura 44. Deteminação dos pontos de origem de cada pixel no algoritmo de
Bresenham. ...................................................................................................... 54
Figura 45. Interpolação linear utilizando o algoritmo de Bresenham. .............. 55
Figura 46: Vista em perspectiva da Mesa Móvel. ............................................ 57
Figura 47. Vista frontal da Mesa Móvel. ........................................................... 57
Figura 48. Vista da lateral esquerda da Mesa Móvel ....................................... 58
Figura 49. Vista superior da Mesa Móvel. ........................................................ 58
Figura 50. Acoplamento elástico utlizado. ....................................................... 60
Figura 51. Vista em perspectiva da mesa móvel montada. ............................. 61
Figura 52. Vista superior da mesa móvel montada.......................................... 61
Figura 53. Protótipo montado sobre protoboard. ............................................. 65
Figura 54. Corrente consumida para um eixo acionado. ................................. 65
Figura 55. Fluxograma simplificado do aplicativo de visão computacional. .... 69
Figura 56. Telas de ajuste de valores e visualização. ..................................... 72
Figura 57. Paleta de cores do Paint. ................................................................ 73
Figura 58. Tela principal do aplicativo. ............................................................. 74
Figura 59. Fluxograma simplificado do firmware de movimentação. ............... 77
Figura 60.Porta virtual COM5 criada. ............................................................... 79
Figura 61.Requisições enviadas pelo firmware. .............................................. 80
Figura 62.Resposta as requisições pelo software de visão. ............................ 81
Figura 62. Desenho técnico do CONJUNTO. .................................................. 90
Figura 63. Desenho técnico - BASE 1.............................................................. 91
Figura 65. Desenho técnico – BASE 3. ............................................................ 93
Figura 66. Desenho técnico - EIXO GUIA. ....................................................... 94
Figura 67. Desenho técnico – EIXO TR1. ........................................................ 95
Figura 68. Desenho técnico – EIXO TR2. ........................................................ 96
Figura 69. Desenho técnico – EIXO TR3. ........................................................ 97
Figura 70. Desenho técnico - EIXO TR4. ......................................................... 98
Figura 71. Desenho técnico – GUIA LINEAR. ................................................. 99
Figura 72. Desenho técnico – MANCAL GUIAS. ........................................... 100
Figura 73. Desenho técnico – MANCAL POLIAS. ......................................... 101
Figura 74. Desenho técnico - POLIA.............................................................. 102
Figura 75. Desenho técnico - SUPORTE DO MOTOR. ................................. 103
Figura 76. Circuito – MÓDULO DE CONTROLE. .......................................... 104
Figura 77. Circuito – MÓDULO DE POTÊNCIA. ............................................ 105
Figura 78. Circuito – MOTORES DE PASSO. ............................................... 106
LISTA DE TABELAS
Tabela 1: Lista de componentes do projeto eletrônico. ................................... 64
Quadro 1: Cronograma de atividades .............................................................. 85
LISTA DE ABREVIATURAS
A/D Analógico para Digital
ADC Audio Class Device
BPS Bits Per Second
CAD Computer Aided Design
CCD Charge Coupled Device
CI Circuito Integrado
CDC Communication Device Class
CMOS Complementary Metal Oxide Silicon
CNC Computer Numeric Control
CPU Central Unit Processing
DCE Data Communication Equipment
DTE Data Terminal Equipment
EEPROM Eletrically Erasable Programmable Read Only Memory
EIA Electronic Industries Association
EPROM Erasable Programmable Read Only Memory
HID Human Interface Device
HSV Hue, Saturation, Value
ICSP In Circuit Serial Programming
IDE Integrated Development Environment
IHM Interface Humano-Máquina
LCD Liquid Cristal Display
MSC Mass storage Class
NRZI Non Return to Zero Inverted
PIC Programmable Interface Controller
PWM Pulse Width Modulation
RAM Random Access Memory
RGB Red, Green, Blue
ROM Read Only Memory
SPI Serial Peripheral Interface
UFABC Universidade Federal do ABC
ULA Unidade Lógica e Aritmética
USART Universal Synchronous Asynchronous ReceiverTransmitter
USB Universal Serial Bus
Sumário
1. Objetivo ........................................................................................................... 1
2. Justificativas ................................................................................................... 1
3. Fundamentação teórica .................................................................................. 3
3.1. Visão Computacional ...................................................................................................... 3
3.1.1. Histórico ................................................................................................................... 4
3.1.2. Aplicações ............................................................................................................... 4
3.2. Sistemas de visão computacional ................................................................................... 6
3.3. Processamento digital de imagens ................................................................................. 8
3.4. Imagens digitais .............................................................................................................. 9
3.5. Dispositivos de aquisição de imagens digitais .............................................................. 11
3.6. Imagens coloridas ......................................................................................................... 13
3.7. Conversão e armazenamento ....................................................................................... 14
3.8. Modelos de representação de cores ............................................................................. 14
3.8.1. Modelo RGB .......................................................................................................... 18
3.8.2. Modelo HSV ........................................................................................................... 19
3.9. Limiarização .................................................................................................................. 20
3.10. Filtragem ..................................................................................................................... 21
3.10.1. Filtragem espacial ................................................................................................ 22
3.10.2. Operação de convolução com máscaras ............................................................. 23
3.10.3. Suavização .......................................................................................................... 25
3.11. Momentos geométricos de uma imagem .................................................................... 27
3.12. Mesa móvel ................................................................................................................ 28
3.13. Software de Visão Computacional .............................................................................. 30
3.13.1. Linguagem programação e ambiente de desenvolvimento .................................. 30
3.13.2. Biblioteca OpenCV............................................................................................... 30
3.14. Microcontroladores ..................................................................................................... 30
3.14.1. Microcontrolador PIC18F4550 ............................................................................. 33
3.15. Comunicação entre Microcontrolador e Computador ................................................. 36
3.15.1. USART ................................................................................................................. 36
3.15.2. RS-232 ................................................................................................................. 37
3.15.3. USB ..................................................................................................................... 38
3.15.4. Microchip Libraries Application ............................................................................ 43
3.16. Motores de Passo ....................................................................................................... 43
3.17. Método de interpolação de movimentos utilizando motores de passo ........................ 50
3.17.1. Motion Control ..................................................................................................... 51
3.17.2. Algoritmo de Interpolação Linear ......................................................................... 53
4. Resultados .................................................................................................... 56
4.1. Mesa Móvel .................................................................................................................. 56
4.1.1. Projeto ................................................................................................................... 56
4.1.2. Confecção, montagem e resultado final ................................................................. 59
4.2. Circuitos Eletrônicos Controle e Potência ..................................................................... 62
4.2.1. Projeto ................................................................................................................... 62
4.2.2. Lista de Materiais ................................................................................................... 64
4.2.3. Montagem .............................................................................................................. 64
4.3. Software........................................................................................................................ 66
4.3.1. Aplicativo de Visão Computacional ........................................................................ 66
4.3.2. Firmware de movimentação da mesa .................................................................... 74
4.4. Testes de comunicação USB-RS-232 entre Microcontrolador e Computador .............. 79
5. Conclusões ................................................................................................... 82
5.1. Trabalhos e melhorias futuras ...................................................................................... 83
6. Cronograma .................................................................................................. 85
7. Referências bibliográficas ............................................................................ 86
8. Apêndice A – Desenhos Técnicos da Mesa Móvel ...................................... 90
9. Apêndice B – Circuitos Eletrônicos ............................................................ 104
1
1. Objetivo
O presente trabalho tem como objetivo o desenvolvimento de um sistema de
visão computacional que permita realizar a operação remota de uma mesa móvel de
duas direções.
Como objetivos específicos esse trabalho visa:
• Realizar o estudo dos conceitos e técnicas de visão computacional para
a extração de características de imagens. Estudar componentes
mecânicos e elétricos, métodos e algoritmos, que possibilitem de uma
forma geral a realização do objetivo final;
• Criar um protótipo de sistema de visão computacional que implemente
algoritmos para extração automática de características (cor, linha, forma
geométrica);
• Realizar o projeto, confecção e montagem de uma plataforma móvel
(mesa) a ser operada remotamente;
• Projetar e implementar os circuitos eletrônicos para comunicação com o
computador e para o acionamento da plataforma móvel;
• Totalizar a construção do protótipo de uma mesa móvel remotamente
operada com o auxílio de um sistema de visão computacional.
2. Justificativas
Dada a crescente demanda por segurança nas indústrias, e implementação de
normas regulamentadoras, é de fundamental importância o desenvolvimento de
técnicas adequadas que permitam a manipulação segura, de máquinas,
equipamentos e materiais. Nesse âmbito, quando a acessibilidade ao local é restrita,
como em ambientes agressivos, ou mesmo por questões de conforto e ergonomia,
uma das possíveis formas de se implementar a operação de equipamentos diversos
é através da operação remota.
2
A operação remota, ou teleoperação é definida basicamente como a operação
à distância de sistemas, tais como máquinas, equipamentos, robôs, etc. Esta
tecnologia de controle encontra aplicação para as áreas aeroespacial, médica,
industrial, militar, entre outras. No que diz respeito, a arquitetura de um sistema
remotamente operado, segundo Nof(1985) deve haver uma unidade de controle
responsável por receber os comandos do operador, uma unidade remota que
responde aos comandos e efetua a ação, e um canal de comunicação entre ambos.
Figura 1. Arquitetura de um sistema de operação remota. [Fonte: Adaptado de
NOF(1985) ]
Para a implementação da unidade de controle do sistema de operação remota,
as possibilidades são grandes, variando conforme a aplicação. Podem ser utilizados
dispositivos manuais com botoeiras e chaves seletoras, dispositivos do tipo joystick,
IHM’s industriais, Tablet’s, etc. Dentre estas maneiras é possível também empregar
técnicas de visão computacional, onde um sistema de visão é capaz de converter
comandos visuais em comandos para a unidade remota.
O campo da visão computacional tem sofrido um grande avanço nas últimas
décadas. Dada também a gama de aplicações que os sistemas de visão tem, os
recursos de programação e softwares dedicados a visão computacional são cada vez
maiores. Grandes empresas desenvolvedoras de softwares, como National
Instruments, com o Labview, ou MathWorks com o MatLAB, possuem em seus
softwares bibliotecas de comandos inteiramente dedicados a visão computacional.
Mais recentemente, no ano 2000, a Intel criou a biblioteca de visão computacional
3
OpenCV (Open Source Computer Vision), que segue o modelo de software livre e
possui recursos que facilitam o desenvolvimento de softwares de visão.
Sendo assim, devido as razões citadas, a visão computacional pode ser uma
ferramenta útil no desenvolvimento de sistemas de operação remota. Neste caso
teríamos uma arquitetura onde não só a realimentação, como também a entrada do
sistema, seria feita de maneira visual.
3. Fundamentação teórica
3.1. Visão Computacional
Visão computacional, também conhecida como Visão de Máquina, é um campo
de pesquisa que tem avançado muito nas últimas décadas, tendo inúmeras
aplicações, sejam industriais, médicas, na agricultura, na astronomia, etc.
É possível entender a visão computacional como um conjunto de técnicas que
visam dotar as máquinas com capacidade visual semelhante à dos seres humanos,
não só em termos de aquisição, como também de interpretação. Segundo
Shapiro(2001) o principal objetivo desta área é analisar imagens de objetos do mundo
real e tomar decisões a partir destas. Já para Szeliski(2010) tenta-se criar uma
representação do mundo real através da reconstrução das propriedades das imagens,
tais como forma, cor e iluminação.
O processo de percepção humano envolve características notáveis como:
ampla base de dados de apoio, alta capacidade de processamento e habilidade para
trabalhar sobre variadas condições. Atualmente com os avanços tecnológicos, em
software e hardware, dispõe-se cada vez mais, de condições de reproduzir as duas
primeiras características citadas. Contudo a terceira característica, que consiste em
fazer os sistemas de visão operaram sob condições variadas de luz, posição relativa
de elementos da cena, contraste, entre outras, ainda permanece um desafio.
(MARQUES; VIEIRA, 1999)
Isso geralmente ocorre em áreas de pesquisa, onde há a tentativa de recriar
características perceptivas e cognitivas humanas. Verifica-se que as mais simples
4
tarefas como, ver, ouvir e falar, são na verdade problemas extremamente complexos
do ponto de vista computacional.
3.1.1. Histórico
Os primeiros trabalhos acadêmicos da área foram realizados em meados dos
anos de 1970. Segundo Szeliski (2010) nesta época os pesquisadores da área tinham
o ambicioso plano de imitar a inteligência humana, dotando robôs com esta habilidade.
Neste âmbito alguns acreditavam que resolver o problema da entrada visual de dados
seria apenas uma fácil etapa rumo à solução de problemas de alto nível como
raciocínio e planejamento. As pesquisas estavam focadas na reconstrução do
ambiente tridimensional a partir das imagens da cena em estudo. Diversos algoritmos
foram desenvolvidos, principalmente aqueles relacionados a detecção de bordas, que
forneciam os blocos utilizados na reconstrução do objeto ou cena tridimensional.
Nos anos de 1980, de com acordo com Szeliski (2010) as pesquisas estiveram
focadas no desenvolvimento de técnicas matemáticas para análise da cena e imagem,
e também no aperfeiçoamento de algoritmos de detecção de bordas e contornos.
Nas décadas de 1990 e 2000, áreas como segmentação de imagens e
reconhecimento de faces tiveram seu desenvolvimento, além das outras áreas já
citadas que continuaram paralelamente sendo desenvolvidas. Uma tendência
observada atualmente, segundo Szeliski(2010) são as pesquisas na área de
reconhecimento visual utilizando técnicas de aprendizado de máquina.
3.1.2. Aplicações
Atualmente a visão computacional se aplica em áreas como: Robótica,
Biometria, Medicina, Sensoriamento Remoto, Meteorologia, entre outras.
Na robótica os sistemas de visão têm larga aplicação. Auxiliam robôs
manipuladores em operações como: montagem, despaletização, inspeção e controle
de qualidade, triagem automática de produtos. Em robôs autônomos a aplicação se
concentra na determinação de obstáculos através da cor e formato, caracterização do
ambiente, localização, identificação de alvos, navegação, etc.
5
(a) (b)
Figura 2.(a) Robô industrial FANUC guiado por visão computacional. (b)
Detecção da posição de garrafas para posterior manipulação. [Fonte: BASTIAN
Solutions, 2008.]
No campo da biometria, as técnicas de visão computacional têm sido aplicadas
com sucesso, principalmente no reconhecimento de características únicas, como as
digitais dos dedos e a íris do olho.
(a) (b)
Figura 3. (a) Reconhecimento da íris do olho humano. (b) Reconhecimento da
impressão digital. [Fonte: SPIE, 2007.]
6
Na medicina a visão computacional também encontra ampla aplicação. Os
resultados obtidos auxiliam os profissionais da área no diagnóstico de doenças
diversas, caracterização de lesões e tumores, análises de exames tomográficos,
análise de imagens de ultrassonografia e ressonância magnética, análises de sangue,
entre muitas outras aplicações. (NEVES et. al., 2012)
Figura 4. Detecção de lesões no cérebro humano. [Fonte: BIOCLINICA, 2013.]
3.2. Sistemas de visão computacional
Segundo Marques (1999) sistemas de visão computacional são sistemas com
a capacidade de adquirir, processar e interpretar imagens de uma determinada cena
ou objeto. Este sistema tem uma arquitetura que pode ser descrita conforme o
diagrama de blocos abaixo:
7
Figura 5. Arquitetura de um sistema de visão computacional. [Fonte:
Marques(1999)]
A primeira etapa realizada pelo sistema de visão é a aquisição de imagens.
Neste passo um equipamento composto basicamente de lentes, sensores ópticos e
circuitos eletrônicos, convertem em sinais elétricos digitais as imagens projetadas
sobre o sensor. (MARQUES; VIEIRA, 1999)
A etapa de pré-processamento visa corrigir ou minimizar defeitos gerados no
processo de aquisição. Ruídos, contraste ou brilho inadequados são possíveis
defeitos. O objetivo é produzir uma nova imagem de maior qualidade para ser utilizada
nas etapas seguintes.
Na etapa de segmentação, segundo Gonzales (2000), o objetivo é basicamente
produzir uma imagem em que o objeto ou a região de interesse estejam em evidência
com relação ao resto da imagem, isto é, a cena é subdividida em seus objetos
constituintes.
8
Na etapa seguinte, de extração de características, define-se a forma de
representação e descrição dos dados. A representação consiste em definir se os
objetos da cena serão representados por suas fronteiras ou por uma região completa.
A representação por fronteira é adequada quando há interesse na forma, dimensões,
cantos ou pontos de inflexão. Já a representação por regiões é adequada quando as
características visadas são propriedades internas como cor ou textura. A descrição
consiste em definir um método de descrever os dados da cena, isto é, extrair
características úteis que possam ajudar nos processos de distinção entre objetos.
Estas características são chamadas também de descritores. (GONZALES; WOODS,
2000)
Por fim, na etapa de reconhecimento e interpretação os descritores são
avaliados, resultando na atribuição de rótulos para cada objeto, e também de um
significado ao conjunto.
A base de conhecimento mostrada no diagrama da figura 5, se refere ao
conhecimento prévio que se têm da cena analisada e quais são os resultados
esperados. Esta base de conhecimento é de fundamental importância nos sistemas
de visão computacional e têm como função direcionar as ações em cada etapa,
definindo quais algoritmos ou processos serão realizados, de modo a produzir um
resultado final adequado. (GONZALES; WOODS, 2000)
3.3. Processamento digital de imagens
Segundo Oppenheim (1999) o processamento de sinais é a área que trata da
manipulação, transformação e representação de sinais. A definição do conceito de
sinal é ampla e engloba praticamente tudo que transporta algum tipo de informação,
sendo também que, os sinais podem ser contínuos ou discretos.
A área de processamento digital de imagens é uma subárea do processamento
de sinais, tendo o mesmo objetivo, utilizando técnicas em comum, e onde os sinais a
serem processados são as imagens digitais.
Em termos gerais, o processamento digital de imagens transforma uma imagem
inicial, em outra que tenha características desejadas para uma determinada aplicação
(VERNON,1991). Para que se alcance este objetivo são utilizadas diversas técnicas
9
e algoritmos tais como: filtragem, manipulação de histogramas, limiarização, realce,
suavização, etc.
3.4. Imagens digitais
Uma imagem monocromática pode ser definida como uma função
bidimensional f (x,y) de intensidade luminosa, onde x e y é o par de coordenadas
espaciais de um ponto na imagem e f representa o valor do brilho. No caso de imagens
monocromáticas o brilho é chamado também de nível de cinza (GONZALES;
WOODS, 2000).
Para que uma imagem analógica seja convertida em uma imagem digital é
necessário que haja um processo de digitalização. Esse processo consiste em realizar
a amostragem espacial da imagem e quantizar seus níveis de cinza (MARQUES;
VIEIRA, 1999).
Como resultado da amostragem obtêm-se uma imagem subdividida em
regiões, as quais são denominados pixels. O pixel é o menor elemento de uma
imagem e a cada um é atribuído um nível de cinza. Este processo transforma portanto,
uma imagem f (x,y) em uma estrutura análoga a uma matriz, com M linhas e N colunas,
onde cada elemento contém o nível de cinza de um pixel.
, = 0,0 ⋯ 0, − 1⋮ ⋱ ⋮ − 1,0 ⋯ − 1, − 1 (equação 1)
Para uma imagem digital o par M x N corresponde a resolução da imagem.
Na produção de uma imagem digital se forem utilizados n bits para armazenar
o valor de brilho de um pixel, então este pixel poderá assumir valores inteiros na faixa
de 0 a 2n-1, correspondendo a níveis ou tons de cinza diferentes. Neste intervalo de
valores o valor 0 representa a cor preta enquanto o valor 2n-1 representa o branco.
Os valores intermediários são tonalidades de cinza.
10
A figura 6 abaixo mostra uma imagem digital monocromática com o sistema de
coordenadas convencional:
Figura 6. Imagem monocromática. [Fonte: Adaptado de Marques(1999)]
No caso de imagens coloridas, há uma superposição de funções f (x,y) cada
uma representando uma cor ou característica. No caso de uma representação através
do modelo RGB (R - Red, G - Green, B - Blue) são necessárias três funções f (x,y)
cada uma contendo os valores de brilho para cada cor.
11
Figura 7. Formação de uma imagem colorida. [Fonte: Adaptado de Wikipedia -
Grayscale.1 ]
3.5. Dispositivos de aquisição de imagens digitais
Dentro os diversos dispositivos de aquisição de imagens destacam-se
atualmente duas tecnologias: os sensores CCD e CMOS.
Figura 8. Sensor de imagem CCD. [Fonte: Wikipedia.2 ]
1 Disponível em: < http://en.wikipedia.org/wiki/Grayscale >, acesso em 15 de março de 2014.
2 Disponível em: < http://en.wikipedia.org/wiki/Charge-coupled_device >, acesso em 15 de março de 2014.
12
O sensor de imagem CCD (Charge Coupled Device) é uma das tecnologias
mais utilizadas atualmente para aquisição de imagens. Este sensor corresponde a
dispositivo semicondutor de silício que se assemelha a uma matriz de capacitores. A
estrutura desse sensor permite que a carga gerada fique armazenada em uma região
de barreira de potencial, análoga a um recipiente. A interligação com elementos
fotossensíveis permite que a carga armazenada em cada capacitor seja dependente
da intensidade luminosa incidente (MARQUES; VIEIRA, 1999). Por meio de um
controle externo cada capacitor pode transferir sua carga para o capacitor vizinho
conforme a figura 9 abaixo:
Figura 9. Princípio de operação dos dispositivos CCD. [Fonte: PIXCELLENT,
2006]
Quando uma imagem é projetada sobre o arranjo CCD é gerada em cada
capacitor uma quantidade de carga correspondente a intensidade luminosa incidente.
Através de registradores de deslocamento a carga armazenada em uma linha de
elementos é transferida as linhas vizinhas em um deslocamento vertical. Este
processo é repetido até que os valores de uma linha completa cheguem ao registrador
de deslocamento horizontal que então faz a transmissão serial dos dados para um
amplificador. Quando um quadro inteiro de imagem é transmitido o processo inicia-se
novamente. A figura 10 abaixo ilustra este processo:
13
Figura 10. Transmissão de um quadro de imagem em dispositivo CCD. [Fonte:
PIXCELLENT, 2006]
O sensor de imagem CMOS (Complementary Metal Oxide Silicon) tem
princípios de funcionamento semelhante ao CCD, porém o sinal produzido por cada
elemento é lido individualmente de forma sequencial, através de um processo de
multiplexação. Além disso, este sensor incorpora amplificadores, conversores A/D e
circuitos adicionais de processamento na própria pastilha, ao contrário do CCD que
necessita de circuitos externos.
Com relação ao sensor CCD, o CMOS apresenta baixo consumo de energia,
baixo custo, e menor tamanho. Por outro lado o CCD produz imagens digitais de maior
qualidade, com maior nitidez e possuem maior sensibilidade em ambientes com baixa
iluminação.
3.6. Imagens coloridas
Para aquisição de imagens coloridas é necessária a utilização de um filtro ótico
denominado filtro de Bayer. Cada elemento do filtro tem a função de transmitir a
intensidade luminosa relacionada a somente uma cor, absorvendo as outras. Os sinais
relativos a cada cor são transmitidos individualmente e posteriormente combinados
formando a imagem colorida no formato RGB.
14
Figura 11. Filtro de Bayer. [Fonte: Adaptado de CHEERS4ALL.3]
3.7. Conversão e armazenamento
Uma vez realizada a captura da imagem e transmitido o sinal analógico
correspondente, para que seja possível o processamento computacional dessa
imagem torna-se necessária a conversão analógico-digital do sinal, de modo que a
imagem passe a ser representada em padrão binário. O dispositivo que realiza essa
conversão é o chamado de dispositivo de captura de quadro ou frame grabber. Sua
função é detectar os limites de cada quadro de imagem e realizar sua amostragem
temporal gerando a imagem digital.
A imagem digital de cada quadro é armazenada em um sistema de memória
volátil denominado frame buffer. Neste dispositivo as imagens ficam prontas para
serem utilizadas seja para o processamento, visualização ou armazenamento em
dispositivos adequados.
3.8. Modelos de representação de cores
Toda a luz visível está compreendida em um pequeno intervalo de frequências
do espectro eletromagnético. Logo, todo tipo de luz que pode ser vista corresponde
3 Disponível em: < http://www.cheers4all.com/2013/03/project-report-of-quadcopter >, acesso em 17 março de 2014.
15
uma radiação de frequência definida ou geralmente uma combinação de radiações de
frequências distintas dentro do espectro da luz visível. Esse é o caso da luz branca,
que corresponde a mistura de radiações de determinadas frequências abrangendo
todo o espectro visível.
Figura 12. Espectro eletromagnético. [Fonte: Projeto Fotossíntese, 2011.]
As cores dos objetos são resultado da interação entre a luz incidente e o
material do objeto. Se a superfície de um objeto sob iluminação tiver uma cor definida
significa que boa parte da luz refletida tem frequência situada na faixa a que
corresponde esta cor, enquanto as radiações de outras frequências na faixa visível
foram absorvidas pela superfície do objeto (MARQUES; VIEIRA, 1999).
O olho humano é sensível a radiação eletromagnética com comprimento de
onda na faixa de 400 nm a 700 nm aproximadamente, conforme figura 13. Em sua
estrutura interna, o olho possui células fotossensíveis denominadas cones, que são
divididas em três tipos, cada uma possuindo uma curva de sensibilidade, conforme
mostrado na figura 13 abaixo:
16
Figura 13. Sensibilidade do olho humano em relação ao comprimento de onda
da radiação eletromagnética incidente. [Fonte: DPI, 2011.]
É possível observar que cada tipo de cone possui um máximo de sensibilidade
em torno das cores vermelha (R, do inglês “red”), verde (G, do inglês “green”) e azul
(B, do inglês “blue”). Logo, todas cores possíveis são o resultado da combinação dos
estímulos recebidos por cada tipo de cone, com diferentes intensidades cada,
produzindo assim as diversas sensações de cores. (MARQUES; VIEIRA, 1999)
As cores vermelho, verde e azul são denominadas cores primárias e a partir
destas todas as cores são obtidas. Estas cores se combinadas duas a duas produzem
as chamadas cores secundárias: magenta (vermelho + azul), ciano (verde + azul) e
amarelo (vermelho + verde). Todas as cores primárias se combinadas em
intensidades corretas produzem a luz branca. (GONZALES; WOODS, 2000)
A figura 14 abaixo ilustra essa combinação:
17
Figura 14. Cores primárias e secundárias em combinação aditiva. [Fonte:
SIDIGICOR, 2012.]
Esta mistura é denominada combinação aditiva de cores. Uma combinação
subtrativa ocorre quando são combinados pigmentos ou corantes, pois neste caso a
cor refletida é resultado da absorção de uma determinada cor. Para este caso as cores
magenta, ciano e amarelo são tidas como cores primárias e suas combinações
resultam em: azul (magenta + ciano), vermelho (magenta + amarelo), verde (ciano +
amarelo). O preto é obtido pela combinação, em devidas proporções, de pigmentos
ou corantes magenta, ciano e amarelo.
Para distinguir uma cor da outra geralmente são usadas as características de
matiz (H, do inglês “hue”), saturação (S, do inglês “saturation”) e brilho (B, do inglês
“brightness”). O matiz representa o comprimento de onda dominante na formação de
uma cor. A saturação corresponde a quantidade de luz branca que se tem misturada
ao matiz, determinando por exemplo, se uma cor é mais clara ou escura. Já o brilho
se refere a intensidade da radiação luminosa. O matiz e a saturação em conjunto
formam a chamada cromaticidade. Uma cor, portanto, pode ser definida por sua
cromaticidade e brilho (GONZALES; WOODS,2000).
As quantidades de vermelho, verde e azul necessárias para formar uma
determinada cor são denominados coeficientes tricromáticos e são definidos por:
18
= (equação 2)
= (equação 3)
= (equação 4)
Onde R, G e B são as quantidades de vermelho, verde e azul, respectivamente,
presentes em uma cor. Os valores de R, G e B são normalizados entre 0 e 1, e cada
coeficiente r, g e b também situam-se nesta faixa.
Segundo as equações 2, 3 e 4, tem-se que:
+ + = 1 (equação 5)
3.8.1. Modelo RGB
Segundo Gonzales (2000) os modelos de cores servem que se tenha uma
forma padronizada de especificação de uma determinada cor.
O modelo RGB é uma representação cartesiana conforme figura 15 onde cada
ponto representa uma cor. O vermelho, o verde e o azul correspondem ao ponto final
do cubo sobre cada eixo. A origem corresponde ao preto, enquanto o branco está
situado no final da diagonal principal. Essa diagonal contém todos os níveis de cinza.
As cores secundárias, como magenta, ciano e amarelo estão no final de cada aresta
superior. Este cubo é unitário portanto assume-se que os valores de R, G e B estão
normalizados na faixa de 0 a 1.
19
Figura 15. Representação gráfica do modelo RGB. [Fonte: TEORIA DA COR,
2010]
3.8.2. Modelo HSV
O modelo HSV (H - Hue, S - Saturation, V - Value) é um modelo que define
uma cor pelo matiz, saturação e intensidade (ou brilho). Sua representação é
mostrada na figura 16 abaixo:
Figura 16. Representação gráfica do modelo HSV. [Fonte: Adaptada de SIP4]
4 Disponível em: < http://miac.unibas.ch/SIP/02-Fundamentals.html >, acesso em: 17
de março de 2014.
20
A conversão entre RGB e HSI é dada através das seguintes equações:
= (equação 6)
= 1 − min", #, $% (equação 7)
& = cos*+ -.**%*.**%-. (equação 8)
3.9. Limiarização
A limiarização ou Thresholding é uma operação de segmentação aplicada
sobre uma imagem, onde cria-se uma distinção clara entre as regiões da mesma. É
geralmente aplicado com o objetivo de distinguir um objeto alvo em uma imagem, de
seu ambiente.
No caso de imagens monocromáticas é definido um limiar de intensidade
luminosa T. Para todos os pixels que tiverem com seus níveis de cinza acima desse
limiar é atribuído um determinado valor de intensidade luminosa, para os pixels que
estiverem abaixo é atribuído outro valor. O resultado é a criação de uma imagem
binarizada.
Em termos matemáticos, se houver uma imagem de entrada f(x,y), e for
definido um limiar T, a limiarização produzirá uma imagem g(x,y) dada por:
, = 0 12 , > 4 12 , ≤ 4 (equação 9)
21
Onde M e N são níveis de cinza quaisquer.
É possível também fazer a limiarização com base na cor do objeto. Neste caso
atribui-se um valor de intensidade a cada pixel que possuir a cor do objeto, e zero para
todos os pixels que não se enquadram nesta condição. Com isso obtêm-se uma
imagem binária com o objeto em destaque.
3.10. Filtragem
A filtragem é uma operação de pré-processamento que se baseia na frequência
espacial de cada região de uma imagem. A frequência espacial em uma imagem pode
ser entendida como a variação de intensidade de um pixel a outro.
Dependendo da configuração do filtro é possível produzir resultados como
realce, suavização, atenuação de ruídos, detecção de bordas entre outros. A
operação de filtragem pode ser realizada no domínio da frequência ou no domínio
espacial.
No domínio da frequência a filtragem é realizada a partir das transformadas de
Fourier da imagem e do filtro, que são multiplicados. O resultado deve ser levado para
o domínio do espaço através de uma transformada inversa de Fourier, obtendo assim
a imagem resultante. Já a filtragem no domínio espacial é uma operação que age
diretamente sobre os pixels da imagem através de operadores.
Os filtros podem ser classificados também quanto a banda de frequência
espacial sobre a qual operam. Os filtros denominados passa-altas atenuam as partes
da imagem com baixas frequências, que correspondem as regiões de baixa variação
de intensidade dos pixels no espaço, e com efeito realçam as regiões de alta
frequência como bordas e cantos. Os filtros denominados passa-baixas realizam o
inverso atenuando as regiões de alta frequência, cujo resultado é o borramento ou
suavização de certas regiões da imagem. Há também os filtros denominados passa-
faixas que atenuam ou realçam determinado intervalo de frequência e são usados
para remover ou realçar certas regiões selecionadas em uma imagem.
Os filtros utilizados neste trabalho operam no domínio espacial, e uma
explanação mais detalhada é dada nas seções seguintes.
22
3.10.1. Filtragem espacial
Segundo Gonzales (2000) o termo domínio espacial refere-se a distribuição
espacial dos pixels em uma imagem levando em contas suas variações de intensidade
e os métodos no domínio espacial são aqueles que operam diretamente sobre estes
pixels. Sendo assim uma definição geral das operações no domínio espacial podem
ser expressas por:
, = 4, % (equação 10)
Onde g(x,y) é a imagem resultante; f(x,y) é imagem original e T é um operador
em f, definido sobre uma certa vizinhança de (x,y).
O valor de g na posição (x,y) é dependente de sua vizinhança, de modo que o
operador T age sobre todos os pixels desta subimagem para produzir o resultado final.
(MARQUES; VIEIRA, 1999)
Figura 17. Vizinhança 3x3 definida ao redor de um pixel de coordenadas (x,y).
[Fonte: MARQUES; VIEIRA, 1999.]
23
3.10.2. Operação de convolução com máscaras
Segundo Szeliski (2011) o tipo mais comum de operador baseado na
vizinhança é a convolução. Neste caso o filtro é um sistema linear, onde o sinal de
entrada é uma imagem f(x,y) e a resposta deste filtro é uma imagem de saída g(x,y).
Sendo assim, se for conhecida a resposta ao impulso h(x,y) deste filtro, é possível
através de uma operação de convolução determinar a resposta do filtro a imagem de
entrada.
Figura 18. Filtro linear com resposta ao impulso h(x,y). [Fonte: MARQUES;
VIEIRA, 1999.]
Conforme Gonzales (2000) a resposta de um filtro através da operação de
convolução em duas dimensões é dada pela seguinte expressão:
, = +67 ∑ 6*+9:; ∑ ℎ − =, − >. =, >7*+@:; (equação 11)
Onde i=0...M-1 e j=0...N-1.Os coeficientes M e N são respectivamente o
número de linhas e colunas de h(x,y).
O termo h(x,y) é uma matriz denominada máscara de convolução espacial.
A equação 11 é a expressão matemática da convolução entre uma máscara e
uma imagem. Este processo pode ser visualizado espacialmente de acordo com a
descrição dada a seguir.
24
Conforme exemplo dado por Marques(1999) considera-se uma imagem a ser
filtrada e uma máscara de convolução:
Figura 19. Matriz representando a imagem à ser filtrada (à esquerda). Máscara
de convolução (à direita) [Fonte: Adaptado de Marques (1999)]
Para realizar a operação de convolução entre as mesmas, inicialmente a
máscara é espelhada verticalmente e horizontalmente. Em seguida o centro da
máscara é posicionado sobre um ponto (x,y) da imagem. Cada coeficiente da máscara
é multiplicado pelo valor de intensidade do pixel sobre o qual está sobreposto. O novo
valor do pixel na posição (x,y) é dado pela soma destas multiplicações.
Figura 20. Determinação de um ponto na imagem filtrada através da operação
de convolução. [Fonte: Adaptado de Marques (1999)]
25
Este procedimento é repetido para todos os pixels da imagem original,
resultando então na imagem filtrada:
Figura 21. Matriz representando a imagem filtrada. [Fonte: Adaptado de
Marques (1999)]
3.10.3. Suavização
O efeito de suavização de uma imagem é obtido através de filtros passa-baixas,
cuja função é provocar um efeito de borramento em regiões como bordas e cantos e
também ajuda a eliminar ruídos esparsos na imagem.
O filtro de suavização utilizado neste trabalho é o chamado filtro gaussiano.
Este filtro utiliza a curva gaussiana, também conhecida como distribuição normal, para
realizar o cálculo dos valores de intensidade dos pixels na imagem filtrada.
A curva gaussiana em uma dimensão é dada pela seguinte equação:
# = +√BCD 2* E.
.F. (equação 12)
Onde σ é o desvio padrão. Considera-se que esta distribuição tem média zero
(µ=0), e portanto está centrada em x=0.
26
A variação da equação acima para duas dimensões é dada por:
#, = +BCD. 2*E.GH.
.F. (equação 13)
A partir da equação 13 é possível calcular os coeficientes da máscara do filtro
gaussiano. Abaixo é mostrada um exemplo uma máscara para este filtro:
Figura 22. Máscara 7x7 do filtro gaussiano para σ=1. [Fonte: CONCI, 2013]
Os coeficientes da máscara do filtro gaussiano diminuem gradualmente do
centro para a borda, tendendo a zero. Segundo Conci(2013) é possível, deste modo,
obter uma suavização mais delicada. Como o peso maior é atribuído ao pixel central
este filtro é capaz de preservar melhor os contornos da imagem com relação a outros
filtros passa-baixas. Por esta razão este filtro é utilizado geralmente antes da
aplicação de algoritmos de detecção de bordas, pois elimina os ruídos ao mesmo
tempo em que preserva as bordas, tornando assim a operação de detecção mais
eficiente.
27
3.11. Momentos geométricos de uma imagem
Segundo Gonzales (2000) o momento de ordem p+q de uma função
bidimensional f(x,y) é dado pela equação abaixo:
IJK = L L JM*M K , N N M*M (equação 18)
Onde p=0,1,2 …, e q=0,1,2...
No caso de uma imagem digital f(x,y) a equação 18 torna-se:
IJK = ∑ ∑ J KOP; , OQ; (equação 19)
Onde nx e ny correspondem a largura e altura da imagem, respectivamente.
Neste trabalho o uso dos momentos geométricos são de extrema importância,
pois permitem que em uma dada imagem binária, contendo somente um objeto em
destaque, seja possível obter o seu centro de massa. Este cálculo é feito a partir dos
momentos de ordem 0 e 1 da imagem, e a localização do centro de massa é dado
pelas seguintes equações:
= S-TSTT (equação 20)
U = ST-STT (equação 21)
No caso de uma imagem binária, com um único objeto na cena, o momento m00
representa a área total do objeto.
28
3.12. Mesa móvel
A mesa móvel a ser desenvolvida neste trabalho consiste em uma mesa com a
capacidade de se deslocar em duas direções, sendo atuada por motores de passo.
Consistirá basicamente em um sistema de posicionamento que deverá descrever
aproximadamente a mesma trajetória do objeto detectado pelo sistema de visão
computacional.
As referências para este tipo de mecanismo são vastas, variando em tamanho,
robustez, precisão, capacidade de carga, sistema de transmissão, entre outras
características.
Figura 23. Mesa X-Y industrial para posicionamento [Fonte: Yigone(2014)]
Na figura 23 é mostrada uma mesa de posicionamento do fabricante YIGONE.
Segundo o fabricante esta mesa foi fabricada em alumínio, utilizando barramentos de
aço temperado e retificado. Os eixos são atuados por motores de passo e a
transmissão de movimentos é feita através de fusos de esferas, o que garante
precisão e suavidade nos movimentos.
29
O sistema acima apesar de robusto e preciso, possui custo elevado e exige
grande precisão dimensional na confecção dos componentes e na etapa de
montagem.
Na figura 24 é mostrado o detalhe de um sistema de posicionamento X-Y mais
simples. Segundo o fabricante Newmark(2014) os eixos são atuados por motores de
passo e os barramentos são feitos de aço inoxidável trefilado. O fabricante não informa
o material do mancal deslizante, porém as possibilidades são o bronze ou o nylon,
entre outros, que garantem um baixo coeficiente de atrito. A transmissão de
movimentos é feita por meio de polias e correias sincronizadoras, que oferecem
também boa precisão aos movimentos.
Figura 24. Sistema de posicionamento X-Y em detalhe. [Fonte:
Newmark(2014) ]
As vantagens do sistema acima são a modularidade e o baixo custo, uma vez
que componentes como os barramentos de aço trefilado, polias e correias
sincronizadoras podem ser adquiridos e encontrados com maior facilidade no
mercado.
30
3.13. Software de Visão Computacional
3.13.1. Linguagem programação e ambiente de desenvolvimento
Neste trabalho a linguagem de programação utilizada no software de visão
computacional é o C++. O C++ é uma linguagem que desenvolvida por Bjarne
Stroustrup dos Bell Labs, durante a década de 80. É uma linguagem de alto nível,
desenvolvida a partir da linguagem C com o objetivo de incorporar recursos de
programação orientada a objetos.
O ambiente de desenvolvimento integrado utilizado é o Eclipse CDT. É um
ambiente inicialmente desenvolvido para trabalhar com a linguagem Java, mas que
suporta diversas linguagens, dentre elas o C++. Este ambiente segue o modelo de
software livre, podendo ser utilizado de forma gratuita por seus usuários.
3.13.2. Biblioteca OpenCV
O software de visão computacional desenvolvido em linguagem C++ fará uso
dos algoritmos disponíveis na biblioteca OpenCV. A OpenCV (Open Source Computer
Vision) é uma biblioteca de visão computacional desenvolvida pela Intel no ano 2000.
Ela é totalmente aberta ao usuário e segue o modelo de software livre. Foi
desenvolvida em C/C++ e possui módulos de processamento de imagens e vídeo, I/O,
estrutura de dados, álgebra linear, interface gráfica do usuário, possuindo além disso
mais de 350 algoritmos de visão computacional como filtros, calibração de câmera,
reconhecimento de objetos, etc. Possui foco em aplicações de tempo real. (OPENCV,
2014)
3.14. Microcontroladores
Os microcontroladores são dispositivos eletrônicos programáveis, fabricados
na forma de CI’s, que possuem uma organização semelhante a de um computador,
integrando em um mesmo chip, uma CPU (Central Processing Unit), sistema de clock,
memórias de dados e programa, e periféricos tais como, portas de entrada e saída,
temporizadores, conversores A/D entre outros. Adicionalmente consomem pouca
energia, geralmente na faixa de alguns mW. Estes dispositivos têm atualmente uma
vasta gama de aplicações, podendo ser encontrados em diversos equipamentos
31
eletrônicos como celulares, tablet’s, etc., e tendo uso em áreas como robótica,
instrumentação e eletrônica em geral.
Figura 25. Diagrama simplificado de um microcontrolador. [Fonte: Adaptado
de Miyadaira (2009)]
Conforme Miyadaira(2009) as duas principais arquiteturas de
microcontroladores são a Harvard e a Von-Neumann. Na arquitetura Harvard os
barramentos de acesso a memória de dados e memória de programa são separados,
o que resulta em um aumento significativo no fluxo de dados. Já na arquitetura Von-
Neumann o barramento é compartilhado, o que limita porém a velocidade da troca de
dados.
CPU (Central Processing Unit)
A função da CPU é executar as instruções de um programa, em uma sequência
especificada, fazendo a leitura das unidades de entrada, lendo e escrevendo na
memória de dados, e realizando a escrita nas unidades de saída. A CPU é composta
basicamente de três unidades: a unidade lógica aritmética (ULA), unidade de controle
e os registradores.
A função ULA é realizar operações lógicas e aritméticas sobre os dados
oriundos das unidades de entrada ou de uma memória. Os resultados dessas
operações podem ser armazenados na memória de dados RAM ou enviados para
uma unidade de saída.
32
A unidade de controle é responsável por coordenar a ULA e as demais
unidades conectadas à CPU. Basicamente esta unidade busca, decodifica e executa
as instruções do programa, enviando os sinais e resultados para as unidades
pertinentes.
Já os registradores são memórias rápidas e de baixa capacidade, que tem a
função de armazenar, de forma temporária, os dados importantes durante o
processamento.
A comunicação entre as diversas unidades de um microcontrolador é feita por
meio de um barramento de dados, sendo que a largura deste barramento em bits
define a quantidade de bits com que a CPU trabalha.
Sistema de clock
O sistema de clock fornece periodicamente à CPU, os pulsos necessários para
realizar de forma síncrona todas as suas operações, permitindo o sequenciamento
das instruções. Corresponde portanto a velocidade do microcontrolador. Este sinal de
clock é provindo geralmente de um cristal piezoelétrico e sua frequência na maioria
dos casos se situa na faixa de alguns Mhz.
Memórias
Os principais tipos de memória que podem ser encontrados em um
microcontrolador são as memórias RAM, ROM, EPROM, Flash e EEPROM. Tal como
em um sistema computacional a memória RAM (Random Access Memory) é a
memória de dados utilizada para armazenar as variáveis e registradores usados pelo
programa durante a execução das instruções. As memórias ROM (Read Only
Memory), EPROM (Erasable ROM) e Flash constituem a memória de programa, onde
o mesmo é armazenado. Atualmente a memória do tipo Flash é mais utilizada, uma
vez que pode ser programada diversas vezes, enquanto as outras não tem essa
capacidade. E por último temos a memória EEPROM (Eletrically Erasable ROM) que
pode ser utilizada pelo usuário para guardar dados, sendo uma memória do tipo não
volátil, que mantém os seus dados mesmo sem alimentação.
33
Periféricos
Os periféricos disponíveis nos microcontroladores são diversos e variam
conforme o modelo e o fabricante. Esses periféricos podem ser controladores de
comunicação, seja serial assíncrona (USART), USB, paralela, etc., conversores A/D,
comparadores, controladores de LCD, PWM. Dentre os principais periféricos
destacam-se as portas de entrada e saída e os timers.
As portas de entrada e saída são portas digitais com a capacidade de fornecer
ou drenar correntes na faixa de alguns mA, produzindo assim os sinais necessários
para acionamento de circuitos externos ou recebendo sinais que serão utilizados pela
CPU do microcontrolador. Já os timers são contadores internos, independentes, que
fornecem uma referência para processos que envolvam a contagem de tempo.
Interrupções
As interrupções são pausas no programa principal provocadas por algum
evento interno ou externo que são tratadas por uma rotina que esteja fora do programa
principal. As interrupções podem ser programadas para acontecer devido a diversos
tipos de eventos como a borda de descida de um sinal externo, um estouro de
contagem de um timer interno, ou mesmo uma interrupção provocada pelo início de
uma comunicação com outro dispositivo. As rotinas de interrupção são armazenadas
em uma área de memória separada do programa principal.
3.14.1. Microcontrolador PIC18F4550
O microcontrolador PIC18F4550 faz parte de uma família de
microcontroladores fabricados pela Microchip Technology Inc., baseados na
arquitetura Harvard. O nome PIC provêm de “Programmable Interface Controller”.
34
Figura 26. Pinagem do microcontrolador 18F4550. [Fonte: Inginieria5 ]
Estes dispositivos processam dados de 8 bits, possuem 32Kbytes de memória
de programa, no formato ROM, EPROM ou FLASH, 2048 bytes de memória de dados
RAM e mais 256 bytes de memória EEPROM. Devido a arquitetura Harvard possuem
alta velocidade de processamento, operando em frequências de até 48MHz. Possuem
um conjunto de 35 instruções em assembly.
Figura 27. Pinagem do microcontrolador 18F4550. [Fonte: Adaptado de
Microchip (2006)]
5 Disponível em: < http://cosasdeingenieria.com/esp/index/item/189/55/microcontrolador-pic18f4550 >, acesso em: 14 de fevereiro de 2015.
35
O PIC18F4550 possui 40 pinos, onde 35 destes podem ser configurados como
entradas e saídas digitais. Pode ser alimentado com tensões de 4V à 5.5 V. Possui
diversos periféricos, tais como, treze conversores A/D de 10bits de resolução, um
timer de 8 bits e mais três timers de 16 bits (TIMER2, TIMER0, TIMER1 e TIMER3),
dois comparadores analógicos, módulos de comunicação, serial assíncrona (USART),
SPI, I²C e USB 2.0.
Características Elétricas
Conforme descrito por Miyadaira(2009) as características elétricas do
PIC18F4550 são:
Faixa de temperatura de trabalho.................................-40°C a +85°C
Tensão de funcionamento....................................................4V a 5.5V
Potência máxima de dissipação.....................................................1 W
Corrente máxima de saída do pino VSS.....................................300mA
Corrente máxima de entrado do pino VDD.................................250mA
Corrente máxima fornecida por qualquer pino I/O.......................25mA
Corrente máxima de entrada em todas as portas I/O................200mA
Corrente máxima fornecida por todas as portas I/O..................200mA
Ambiente de desenvolvimento integrado,compilador e gravador
O Ambiente de Desenvolvimento Integrado da família de microcontroladores
PIC é o MPLAB IDE. Com este software é possível editar, debugar, simular, compilar
e gravar os programas no microcontrolador.
O compilador desenvolvido para a família PIC 18F é o MPLAB C18. Este é um
compilador de linguagem C, que trabalha integrado ao ambiente de desenvolvimento
integrado, possuindo uma vasta biblioteca. Este compilador permite também incluir
sequências de código assembly no código em C.
O gravador utilizado é o PICKit3, que efetua a gravação dos arquivos gerados
no microcontrolador após a compilação no MPLAB. Este gravador é do tipo ICSP (In
36
Circuit Serial Programming) onde é possível realizar toda a gravação sem a
necessidade de retirar o chip do circuito final.
3.15. Comunicação entre Microcontrolador e Computador
Em diversas aplicações utilizando microcontroladores, surge a necessidade de
haver uma troca de dados deste dispositivo com um computador pessoal, seja para
receber e transmitir resultados de operações ou mesmo para interagir com uma
interface gráfica hospedada no computador. Com esta finalidade os
microcontroladores da família PIC 18F dispõem de alguns protocolos de comunicação
serial, seja para troca de dados entre periféricos, como o SPI e o I²C, ou então para a
comunicação direta entre o dispositivo e o computador, tais como a USART,
implementado o RS-232, e a USB.
3.15.1. USART
Conforme Miyadaira (2009) a USART (Universal Synchronous Asynchronous
Receiver Transmitter) é um periférico presente no PIC que permite a realização da
comunicação entre o chip e uma porta serial. Pode ser configurado para trabalhar de
modo assíncrono, em full-duplex, ou no modo síncrono, half-duplex. Full-duplex é o
modo de comunicação onde os dispositivos envolvidos na comunicação podem
receber e transmitir dados simultaneamente, já no modo half-duplex somente um
dispositivo pode transmitir ou receber por vez.
A USART recebe os dados da CPU do PIC de forma paralela e os transmite de
forma serial, e do mesmo modo recebe dados de forma serial e os repassa à CPU de
forma paralela.
Através deste hardware de comunicação é possível implementar diversos
protocolos seriais dentre eles destaca-se o RS-232.
37
3.15.2. RS-232
O RS-232 é um protocolo de comunicação serial utilizado para a troca de dados
entre dispositivos denominados DTE (Data Terminal Equipment), um terminal de
dados, como um computador, e entre um DCE (Data Communication Equipment), um
comunicador de dados, tal como um modem, a título de exemplo. Este protocolo foi
desenvolvido pela EIA (Electronic Industries Association) por volta de 1962, e é
também conhecido pelos nomes de EIA 232 ou TIA 232.
A troca de dados é feita através de pacotes de dados, denominados frames,
com tamanho de 10 ou 11 bits, sendo 1 bit de início (Start Bit), 1 à 2 bits de parada
(Stop Bits),1 bit de paridade e 8 bits da mensagem codificada conforme tabela ASCII.
As taxas de transmissão mais comuns são de 300bps, 600bps, 1200bps, 2400bps,
4800bps, 9600bps, 19200bps. (MIYADARA, 2009)
Quanto aos sinais elétricos binários, o estado lógico 0, também denominado
espaço, é representado por tensões na faixa de +3V a +25V, enquanto o estado lógico
1, é denominado marca, e é representado por tensões na faixa de -3V a -25V. A região
de -3V a +3V não representa nenhum estado lógico. A figura 28 exibe os sinais
elétricos para um frame de 10 bits, sem paridade, onde acima do gráfico estão
representados os estados lógicos correspondentes.
Figura 28. Sinal elétrico padrão RS-232. [Fonte: Adaptado de Ermicro6]
6 Disponível em: < http://www.ermicro.com/blog/?p=325#more-325 >, acesso em: 14 de fevereiro de 2015.
38
Os conectores geralmente utilizados nas portas seriais são o DB9 e o DB25,
com 9 e 25 pinos respectivamente. Na figura 29 é mostrado o conector DB9 macho,
utilizado geralmente nas extremidades dos cabos de comunicação, enquanto o
conector fêmea é embutido nos dispositivos que se comunicam.
Figura 29. Conector DB9 fêmea. [Fonte: Adaptado de Usconverters7]
Nos computadores com sistema operacional Windows as portas de
comunicação seriais são referidas como portas COM, seguindo uma numeração
sequencial: COM1, COM2...e assim sucessivamente. Quando há a necessidade de
se utilizar as funcionalidades de uma porta COM mesmo sem a existência de uma
porta física instalada, é possível através de um software dedicado, criar portas seriais
virtuais.
3.15.3. USB
O USB (Universal Serial Bus) é protocolo de comunicação serial desenvolvido
nos anos 90 por um conjunto de grandes empresas do ramo de tecnologia como
Compaq, Hewlett-Packard, Intel, Lucent, Microsoft, NEC e Philips. Foi concebido sob
7 Disponível em: < http://www.usconverters.com/index.php?main_page=page&id=61 >, acesso em: 14 de fevereiro de 2015.
39
o conceito da tecnologia plug-and-play onde o usuário pode conectar um dispositivo
USB a um computador, ou outro equipamento de capacidade semelhante, e todo o
processo de inicialização e conexão é realizado automaticamente.
Ao longo dos anos o protocolo passou por diversas atualizações, partindo do
USB 1.0, com taxas de transmissão de 1.5 Mbit/s a 12 Mbit/s, em seguida o USB 2.0,
com taxas que alcançam até 480 Mbit/s, e mais recentemente foi concebido o USB
3.0 com altas taxas de transmissão, chegando a 5 Gbit/s.
Este protocolo opera no modo half-duplex e a codificação dos estados lógicos
é do tipo NRZI.
Na topologia de uma rede USB são considerados quatro elementos: o
host, o root hub, o hub e os periféricos. Segundo Messias (2007) host é o dispositivo
responsável por inicializar e gerenciar processos como detecção e remoção de
periféricos, controle do fluxo de dados, fornecimento de alimentação para os
periféricos e monitoramento dos sinais no barramento USB. Já os hubs são os
dispositivos que fornecem portas físicas adicionais e alimentação para os periféricos
conectados, permitindo ampliar a rede USB. O root hub é a porta física principal
presente no host.
Meio físico e conectores
O meio físico é constituído de 4 linhas, sendo duas para alimentação, o Vbus
com +5V e o GND (terra), e um par trançado de fios com as linhas de dados D+ e D-.
As cores padronizadas dos fios são: preto para o GND, vermelho para o Vbus, verde
e branco para o D- e D+ respectivamente.
40
Figura 30: Conector USB, designação dos pinos e cores dos fios
correspondentes. [Fonte: Adaptado de SuperUser8]
Existem diversos conectores padronizados, entre eles tem-se o USB tipo A, tipo
B, Mini-A, Mini-B, Micro-AB, Micro-B. Os conectores do tipo A são utilizados nas portas
dos host ou hubs, já o tipo B é utilizado nas portas dos periféricos.
Figura 31. Conector DB9 fêmea. [Fonte: Adaptado de Greenlightgo9]
8 Disponível em: < http://superuser.com/questions/448722/can-i-safely-connect-the-power-
only-end-of-a-usb-y-cable-to-an-other-power-source >, acesso em: 14 de fevereiro de 2015.
9 Disponível em: < http://greenlightgo.org/education/courses/engr101fall2014/
2014/10/10/human-factors-mw-1430-landon-duke >, acesso em: 14 de fevereiro de 2015.
41
Codificação NRZI
Toda a troca de dados em uma comunicação USB é feita pelo código NRZI. O
NRZI (Non-Return to Zero Inverted) é um tipo de codificação que designa o estado
lógico 1 como uma transição qualquer de subida ou descida do sinal, enquanto o
estado lógico 0 é designado como a ausência de transições. A figura 32, ilustra esta
codificação:
Figura 32. Sinal codificado em NRZI. [Fonte: Adaptado de Hertfordshire10]
Endpoint, Pipe e tipos de transferência de dados
Um endpoint é uma região de memória no periférico que armazena todos os
dados relacionados ao protocolo USB. Estes dados podem ser: número de série,
fabricante, classe, velocidade, tipo de transferência, nome do produto entre outras
características. Já o pipe é um canal de dados virtual, que faz a associação entre um
endpoint no dispositivo e um software gerenciador no host.
Quanto ao tipo de transferências de dados, são definidas quatro formas:
Control, Bulk, Interrupt e Isochronous. O tipo Control é utilizado para realizar a
configuração de um dispositivo que é conectado pela primeira vez. O tipo Bulk é
utilizado quando é necessária a transferência de grandes quantidades de dados,
garantindo a integridade dos dados por meio da verificação de erros. O tipo Interrupt
é utilizado por dispositivos que realizam transferências de dados em pequenas
10 Disponível em: < http://homepages.herts.ac.uk/~comqrgd/docs/network-notes/network-
notes-node4.html >, acesso em: 14 de fevereiro de 2015.
42
quantidades e com pouca frequência, tais como, mouses e teclados. E o tipo
Isochronous é utilizado para a transferência de grandes quantidades de dados, de
forma contínua, com velocidade mais alta, e sem a necessidade da verificação de
erros. Esta última forma é utilizada geralmente para transmissões dados do tipo áudio
ou vídeo.
Pacotes de dados do protocolo USB
Conforme descrito por Messias(2007) As transferências de dados no protocolo
USB são sempre iniciadas e gerenciadas pelo Host, e todo o processo é feito através
de pacotes, sendo o primeiro destes o Token que descreve o que será enviado no
pacote seguinte, e se a mensagem deverá ser lida ou escrita, o pacote Data que
contém os dados úteis e por fim o pacote Handshake que sinaliza se houve ou não
sucesso na operação.
Descritores
É um grupo de dados acerca de um dispositivo USB que dão ao Host diversas
informações sobre o dispositivo como número de endpoints, tipo de transferência,
número de série, fabricante, tipo de dispositivo, etc. No processo de enumeração o
host realiza a solicitação dos descritores, de modo a identificar o dispositivo e suas
características, e então estabelecer a comunicação entre ambos.
Classes
No protocolo USB os dispositivos que possuem características em comum são
agrupados em classes. Isso permite em muitos casos a reutilização de software, de
modo que os drivers utilizados para um dispositivo possam ser utilizados por outro
pertencente a mesma classe com poucas modificações.
Os tipos de classes mais comuns são: Audio Device Class (ADC), Human
Interface Device (HID), Mass storage Class (MSC), Custom Class, Communication
Device Class(CDC).
A classe ADC é usada para troca de dados de áudio. A HID é geralmente
utilizada em mouses e teclado para trocas de dados simples e não frequentes. A MSC
é utilizada para dispositivos como cartões de memória e pen-drives. Já a Custom
Class é utilizada para implementar novos dispositivos USB.
43
A classe CDC, contém as especificações para dispositivos de comunicação.
Estes dispositivos podem ser telefones, modems, etc. Esta classe prevê também a
emulação de portas seriais virtuais, que tem grande importância quando há a
necessidade de se conectar equipamentos que se comunicam através do protocolo
RS-232. Neste caso o driver USB CDC do dispositivo poderá emular uma porta serial
no computador que contém o host, e a aplicação que se comunica com o dispositivo
poderá se comunicar através do protocolo RS-232, diminuindo a complexidade do
software.
Enumeração
Enumeração corresponde ao processo de conexão, solicitação e leitura de
descritores e atribuição de um endereço para o dispositivo. No final do processo o
dispositivo se encontrará configurado e pronto para se comunicar. A enumeração lida
também com o processo de desconexão de um dispositivo.
3.15.4. Microchip Libraries Application
A Microchip Technology Inc. dispõe de uma biblioteca de aplicações que
contém códigos-fonte e arquivos de cabeçalho para uma grande diversidade de
projetos, abrangendo toda a família PIC. Estes projetos lidam com interfaces gráficas,
escrita e leitura de arquivos, criptografia, protocolo USB, protocolo TCP/IP, entre
outros. Neste pacote ainda vem incluso diversos drivers e aplicativos que funcionam
em conjunto com cada projeto.
A biblioteca e os projetos de comunicação USB disponíveis, são
particularmente importantes para este trabalho, uma vez que fornecem as classes,
funções e drivers necessários para implementar dispositivos USB da classe CDC,
permitindo emular portas COM virtuais no sistema operacional Windows.
3.16. Motores de Passo
Os motores de passo são máquinas elétricas cuja rotação é feita em variações
angulares discretas, através da aplicação de pulsos elétricos sequenciais em cada
44
fase de seu estator. A velocidade de rotação do rotor é diretamente proporcional a
frequência dos pulsos aplicados no estator.
Figura 33. Motores de passo. [Fonte: Manutenção & Suprimentos11]
Estes motores são utilizados principalmente em aplicações que requeiram
posicionamento preciso e sincronismo, a partir de um controle em malha aberta. São
amplamente empregados nas áreas de robótica e automação industrial, e são
encontrados em equipamentos como impressoras, scanners, câmeras, robôs e
sistemas de posicionamento. Quanto a resolução angular, é possível encontrar
motores com passos de 0.9°, 1.8°, 3.6°, entre outros, chegando até valores de 90° por
passo.
Princípio de funcionamento
Os motores de passo são constituídos basicamente de um estator com
enrolamentos de excitação e um rotor que pode ser composto de saliências
espaçadas uniformemente ou imãs permanentes. O conjugado é produzido pela
tendência do rotor em se alinhar com o campo produzido pela fase excitada. Um
exemplo simplificado de funcionamento é mostrado na figura 34, abaixo:
11 Disponível em: < http://www.manutencaoesuprimentos.com.br/conteudo/5899-motores-de-passo >, acesso em: 14 de fevereiro de 2015.
45
Figura 34: Funcionamento simplificado de um motor de passo. [Fonte:
Adaptado de Savage12]
Na figura 34 é possível ver um diagrama conceitual de um motor de passo, cujo
rotor é constituído de um imã permanente que se alinha com o campo magnético
produzido por uma fase do estator.
Formas construtivas
Segundo Fitzgerald (2003) existe uma grande variedade de formas construtivas
de motores de passo, sendo que as principais são: os motores de relutância variável,
de imã permanente e híbridos.
Nos motores de passo de relutância variável o estator possui pólos magnéticos
salientes enquanto o rotor é constituído de lâminas de aço-silício empilhadas. O rotor
possui também diversas saliências longitudinais que atuam como caminhos de baixa
relutância para o fluxo magnético. Sendo assim quando um enrolamento é excitado,
o rotor tende a se alinhar em uma direção que minimize a relutância entre dois pólos
opostos do estator. Na figura 35 é mostrado o esquema de um motor de passo de
relutância variável, onde a fase B é excitada, produzindo um campo magnético entre
12 Disponível em: < http://www.savagehomeautomation.com/projects/raspberry-pi-stepper-motor-control-breakout-board.html >, acesso em: 14 de fevereiro de 2015.
46
os pólos B e B’, o que resulta no alinhamento das saliências 3 e 6 do rotor, que formam
o caminho magnético de baixa relutância.
Figura 35. Motor de passo de relutância variável. [Fonte: Adaptado de EEP13]
Já nos motores de imã permanente o rotor é constituído de imãs permanentes,
sendo que quando uma das fases do estator é acionada os imãs tendem a alinhar seu
campo magnético com o campo produzido. São motores de baixa resolução, podendo
ser encontrados com passos de 7,5° a 15°.
Figura 36. Motor de passo de relutância variável. [Fonte: Adaptado de Electrical
Engineering Assignment14]
13 Disponível em:< http://electrical-engineering-portal.com/few-words-about-stepper-motor-advantages-disadvantages-and-classification >, acesso em: 15 de fevereiro de 2015.
14 Disponível em:< http://www.electrical-engineering-assignment.com/construction-and-
working-2 >, acesso em: 15 de fevereiro de 2015.
47
O terceiro tipo, o motor de passo híbrido, combina as vantagens dos motores
de relutância variável e imã permanente. Seu rotor é constituído de dois corpos
cilíndricos, ferromagnéticos, com saliências que permitem a formação de um caminho
magnético bem definido. No interior do rotor é colocado um imã permanente de tal
modo que cada corpo cilíndrico tenha uma polaridade magnética diferente. Além disso
as saliências de um corpo se encontram deslocadas em relação as saliências do outro
corpo, sendo que esse ângulo de deslocamento corresponde ao valor de dois passos.
Já no estator os pólos salientes possuem também ressaltos, que ajudam na condução
do fluxo magnético para cada saliência do rotor. A figura 37 ilustra a estrutura descrita:
Figura 37. Motor de passo Híbrido. [Fonte: Adaptado de McComb15]
Tendo essas características em vista, quando se excita uma fase do estator,
cada saliência do rotor, que formam pequenos pólos, tenderão a se alinhar com os
ressaltos do estator, produzindo então o conjugado.
15 Disponível em:< http://www.microchip.com/stellent/groups/SiteComm_sg/documents/ DeviceDoc/en543047.pdf >, acesso em: 15 de fevereiro de 2015.
48
Figura 38. Motor de passo Híbrido. [Fonte: Adaptado de PCBheaven16]
Ligações elétricas do estator
Os motores de passo, quanto a ligação do estator, podem ser bipolares ou
unipolares. Conforme Os motores bipolares possuem somente um enrolamento para
cada fase, sendo necessária a inversão da corrente para inverter o sentido de rotação
do motor. Já os motores unipolares possuem dois enrolamentos por fase, um para
cada sentido de rotação. Neste último caso há sempre um fio em comum aos dois
enrolamentos de uma fase. (BRITES et al., 2008)
A ligação bipolar permite obter torques maiores, uma vez que a ligação unipolar
divide o enrolamento de uma fase em duas partes, através do fio comum, o que reduz
a indutância pela metade. Por outro lado a ligação unipolar permite que o acionamento
seja feito por um hardware mais simples.
16 Disponível em:< http://www.pcbheaven.com/wikipages/How_Stepper_Motors_Work >, acesso em: 15 de fevereiro de 2015.
49
Figura 39. Tipos de ligações. À esquerda um motor bipolar de 2 fases e 4 fios.
À direita um motor unipolar de 2 fases e 6 fios. [Fonte: Adaptado de McComb17]
Sequência de acionamento de fases
Para que o rotor dos motores de passo se desloque de modo uniforme é
necessário seguir uma sequência de acionamento. Tomando como base a
nomenclatura da figura 39, os sinais aplicados as fases do estator devem ter a
seguinte ordem, mostrada nas figuras 40 e 41 abaixo:
Figura 40. Sequência de acionamento, com uma fase por vez. [Fonte:
Adaptado de Neoyama (2014)]
17 Disponível em:< http://www.likomotor.com/en/_default_v72.aspx >, acesso em: 15 de fevereiro de 2015.
50
Figura 41. Sequência de acionamento, com duas fases simultaneamente.
[Fonte: Adaptado de Neoyama (2014)]
O sinal “+” na tabela representa uma tensão positiva aplicada no terminal
correspondente.
As figuras 40 e 41 mostram dois modos de acionamentos, válidos tanto para
motores bipolares, como para unipolares. No primeiro, somente uma fase é acionada
por vez, na sequência especificada, e no segundo temos duas fases sendo acionadas
simultaneamente. Ambos produzirão a rotação do motor, porém no segundo caso o
torque produzido é maior, o que acarreta também um consumo maior de corrente.
3.17. Método de interpolação de movimentos utilizando motores de
passo
Um dos problemas relativos a mesa móvel diz respeito não só ao projeto e
construção, como também a forma como a mesa deve se movimentar e como deve
ser feito o controle das trajetórias utilizando motores de passo. Tendo a vista a solução
deste problema, uma das possíveis referências se encontram na indústria e as
tecnologias utilizadas para sistemas de posicionamento. Uma área que fornece
soluções para este tipo de problema é denominada Motion Control. As tecnologias e
métodos utilizados por esta área, são amplamente utilizados na indústria e constituem
uma valiosa referência para o desenvolvimento de sistemas de posicionamento, tal
como a mesa móvel desenvolvida neste trabalho.
51
3.17.1. Motion Control
O controle de movimentos, ou Motion Control como é mais conhecido na
indústria, é uma das áreas da automação industrial que trata do controle de posição,
velocidade e aceleração de mecanismos acionados por atuadores hidráulicos,
pneumáticos ou elétricos. Esta área porém lida com movimentos de média
complexidade, aplicada em mecanismos e planejamento de trajetórias mais simples
do que aqueles encontrados nas área de robótica industrial ou mesmo em máquinas
CNC. (SCHNEIDER, 2014)
A figura 42 abaixo, expressa graficamente o nível de complexidade e os tipos
de mecanismos que são acionados:
Figura 42. Área de aplicação do motion control industrial. [Fonte: SCHNEIDER,
2014]
52
Arquitetura
A arquitetura típica de um sistema de motion control é mostrada abaixo, na
figura 43:
Figura 43. Arquitetura típica de um sistema de motion control industrial. [Fonte:
Adaptado de EETimes18]
Conforme mostrado a arquitetura é composta basicamente de um controlador,
os amplificadores, atuadores, e sensores.
O controlador tem a função de processar as ordens recebidas de um
controlador mestre, processar os sinais de realimentação, realizar o cálculo das
trajetórias e gerar os sinais de controle para a etapa seguinte.
Os amplificadores ou drivers, constituem a etapa de potência do sistema, sendo
responsáveis por acionar diretamente os atuadores fornecendo a potência que
necessitam.
Os atuadores são os responsáveis por movimentar o mecanismo que se
desejar acionar. Podem ser atuadores hidráulicos, pneumáticos ou elétricos, contudo,
a maioria dos sistemas de motion control são dedicados a motores elétricos.
18 Disponível em:< http://www.eetimes.com/document.asp?doc_id=1272319 >, acesso em: 15 de fevereiro de 2015.
53
Tipos de movimento
Na área de motion control os tipos de movimentos mais comuns são o ponto-
a-ponto, interpolação linear e interpolação circular.
O movimento ponto-a-ponto, como o próprio nome diz, é executado ponto por
ponto, em passos. Segundo Ardayfio (1987) Há três formas usuais de se realizar este
tipo de movimento. No primeiro modo somente um eixo é movimentado por vez, até
que se atinja o ponto desejado. Na segundo modo cada eixo é movimento para sua
coordenada final sem haver coordenação, de modo que, se algum dos eixos atingir
sua coordenada primeiro, ele ficará imobilizado até os outros alcançarem sua posição
final. E no terceiro modo, os eixos são coordenados de forma que atinjam
simultaneamente a posição final
Já a interpolação linear é um método mais sofisticado onde os movimentos de
cada eixo são coordenados de modo que a trajetória seja realmente linear com
velocidade controlada.
E por fim na interpolação circular, são percorridas trajetórias em arco ou em um
círculo. A partir das posições inicial e final, e da posição do centro de curvatura, é
gerada uma trajetória e o eixos são movimentadas de forma coordenada, tal que se
atinja simultaneamente o ponto final.
3.17.2. Algoritmo de Interpolação Linear
A mesa móvel constituí um sistema de posicionamento de dois eixos lineares,
sendo acionados por dois motores de passo. O que resulta que todos os movimentos
são realizados de forma discreta, em passos. Neste sistema será utilizado somente
um microcontrolador para dois eixos, e dada a natureza sequencial deste controlador,
não é possível o acionamento simultâneo dos eixos. Neste contexto o tipo de
movimento que pode ser realizado pela mesa é ponto-a-ponto, conforme o primeiro
tipo descrito no item 3.1. Dentre as diversas possibilidades de se realizar este tipo de
movimento, tem-se o algoritmo de Bresenham, utilizado com sucesso por
Chiang(1994) na implementação de um sistema de controle de movimentos utilizando
motores de passo. Com esse algoritmo é possível implementar uma interpolação
linear com boa precisão utilizando uma série de pequenos movimentos ponto-a-ponto.
54
Algoritmo de Bresenham
O algoritmo de Bresenham é um algoritmo da área de computação gráfica, que
tem a função de desenhar retas da forma aproximada em matrizes de pixels. Foi criado
por Jack Elton Bresenham em 1965, cujo objetivo, segundo o próprio autor em
Bresenham (1965) era obter um algoritmo para o controle de posição de plotadoras
digitais.
Basicamente este algoritmo verifica qual pixel se encontra mais próximo da reta
a ser desenhada, assinalando esta posição.
Figura 44. Deteminação dos pontos de origem de cada pixel no algoritmo de
Bresenham. [Fonte: ZINGL,2012]
Sendo assim em cada passo é feita a comparação da distância da reta com o
ponto Pm. Se a reta ficar acima da metade da altura do pixel então o pixel acima da
reta é assinalado, caso contrário o pixel onde se encontra a reta é assinalado. Na
figura 44 como a reta ficou abaixo de Pm então o pixel com origem em Px foi
assinalado.
55
Neste algoritmo o eixo que possuir o maior número de passos é tomado como
referência, sendo incrementado a cada passo. Já o eixo secundário para ser
incrementado ou não, depende da comparação com o ponto médio, conforme
explanação do parágrafo anterior.
Interpolação linear utilizando o Algoritmo de Bresenham
Quando utilizado em sistemas de movimentação o algoritmo de Bresenham
pode fornecer uma trajetória aproximadamente linear, utilizando pequenos
movimentos ponto-a-ponto. Tomando como base a figura 44 e os pontos gerados pelo
algoritmo, é possível obter um perfil de movimentação conforme mostrado abaixo na
figura 45:
Figura 45. Interpolação linear utilizando o algoritmo de Bresenham. [Fonte:
Adaptado de ZINGL,2012]
No caso de um sistema de posicionamento utilizando motores de passo como
atuadores, pode-se verificar que quanto maior a resolução angular do motor, mais a
trajetória se aproximará de uma interpolação linear ideal.
56
4. Resultados
4.1. Mesa Móvel
Neste tópico são explanadas as etapas de projeto e construção da mesa móvel,
bem como as dificuldades encontradas na execução.
4.1.1. Projeto
O projeto foi inspirado em mesas X-Y de uso corrente na indústria, conforme
descrito no tópico 3.13 deste trabalho. Todo o desenvolvimento foi feito com o objetivo
de produzir um mecanismo estável, com precisão razoável, e que pudesse ser
facilmente confeccionado e montado nas dependências da oficina mecânica da
UFABC. Todos as peças possuem formatos simples e com tolerâncias dimensionais
de fácil obtenção. O material utilizado em sua maioria é o alumínio, que possui boa
usinabilidade, leveza e um custo menor se comparado ao aço.
O sistema é composto de uma base principal que dá suporte a mais duas
bases, sendo a base final a parte que se desloca em duas direções. Sobre a base
principal há dois barramentos redondos de aço trefilado, sobre os quais deslizam dois
mancais de nylon. O nylon garante um baixo coeficiente de atrito, combinado com uma
razoável rigidez que é característica deste material. Estes mancais servem também
de suporte a segunda base. Fixada a esta base há duas correias sincronizadoras, cuja
movimentação é feita através de um motor de passo com o eixo acoplado a duas
polias sincronizadoras. Sobre a segunda base há o mesmo conjunto descrito, com um
outro motor de passo realizando a movimentação.
Nas figuras 46, 47, 48 e 49 são mostradas algumas vistas do projeto da mesa
móvel desenvolvido no software CAD SolidWorks:
57
Figura 46: Vista em perspectiva da Mesa Móvel. [Fonte: Autor]
Figura 47. Vista frontal da Mesa Móvel. [Fonte: Autor]
58
Figura 48. Vista da lateral esquerda da Mesa Móvel. [Fonte: Autor]
Figura 49. Vista superior da Mesa Móvel. [Fonte: Autor]
Este conjunto foi projetado para possuir um curso máximo de 240 mm nas
direções x e y.
59
Para evitar colisões no fim do curso de movimentação são acoplados aos
suportes das guias, sensores mecânicos do tipo microswitch, de tal modo que próximo
do curso máximo, os mancais de nylon entrem em contato com o sensor gerando um
sinal de parada do motor de passo.
Todo o projeto das peças e do conjunto é de autoria própria, e os desenhos
técnicos se encontram no Apêndice A deste trabalho.
4.1.2. Confecção, montagem e resultado final
Após a finalização do projeto, todos os desenhos técnicos foram entregues aos
responsáveis da oficina mecânica da UFABC, juntamente com as matérias-primas,
necessárias a usinagem.
Todo o processo de confecção se desenvolveu sem maiores problemas,
havendo uma pequena dificuldade na usinagem dos mancais de nylon. O nylon é um
material de plástico de estrutura rígida e que se funde a baixas temperaturas. Resulta
que no momento da usinagem a retirada de cavacos é irregular devido a deformação
causada pela temperatura, gerada na fricção com a ferramenta. Então no momento
da operação manual de alargamento do furo principal, houve a formação sulcos
longitudinais neste furo. Estas irregularidades foram corrigidas com repasses da
ferramenta de alargamento.
Por fim todas as peças foram confeccionadas corretamente, de acordo com as
dimensões e tolerâncias especificadas no projeto.
A montagem também ocorreu sem maiores problemas, uma vez que o projeto
foi feito visando também a facilidade de montagem. Todos os componentes foram
fixados através de parafusos, porcas e arruelas.
Conforme o previsto as bases montadas sobre os barramentos exibiram um
baixo coeficiente de atrito, podendo ser deslocadas manualmente quando os motores
não estão acoplados.
A dificuldade encontrada foi no mecanismo de acoplamento entre o motor e o
eixo que suporta as polias. Como o sistema em si não possui uma alta precisão
dimensional e de posição, houveram pequenos desvios entre o eixo do motor e o eixo
60
de transmissão de movimento às polias. O acoplamento utilizado exibia também
folgas nos furos que amplificaram o desalinhamento dos eixos. Resultou que nos
testes, com o motor acoplado e acionado, todo o desalinhamento foi transmitido ao
eixo do motor que a cada volta ficava se deslocando de sua posição.
A solução encontrada foi a utilização de acoplamentos elásticos. Estes
acoplamentos são peças de alumínio que possuem o diâmetro de cada eixo a ser
acoplado e o seu corpo é cilíndrico, porém é fabricado com uma seção em forma
helicoidal que permite que este componente se comporte como uma mola. Na figura
50 é possível ver o acoplamento utilizado:
Figura 50. Acoplamento elástico utlizado. [Fonte: Autor]
Este formato permite que este componente compense tanto desalinhamentos
radiais como longitudinais. Sua aplicação no conjunto montado permitiu a
compensação dos desalinhamentos, tornando suave a transmissão de movimento do
motor para o eixo das polias.
Com relação aos atuadores, foram utilizados motores de passo híbridos, com
passos de 1.8°, do fornecedor Neoyama Ltda. O motor escolhido para movimentar a
base inferior, possui torque de 15 Kgf.cm, enquanto o outro motor possui torque de 10
Kgf.cm, uma vez que a carga do conjunto da base superior é menor.
A mesa móvel montada, incluindo os motores de passo é mostrada nas figuras
51 e 52 abaixo:
61
Figura 51. Vista em perspectiva da mesa móvel montada. [Fonte: Autor]
Figura 52. Vista superior da mesa móvel montada. [Fonte: Autor]
62
4.2. Circuitos Eletrônicos Controle e Potência
Neste tópico são explanadas as etapas de projeto dos circuitos eletrônicos e
montagem do protótipo, bem como as dificuldades encontradas durante os testes.
4.2.1. Projeto
O circuito eletrônico deste trabalho pode ser dividido basicamente em dois
módulos: módulo de controle e módulo de potência. O módulo de controle é
responsável por gerar os sinais de acionamento do motor de passo, na sequência
correta e também gerenciar a comunicação USB com o computador. Já o módulo de
potência, ou driver, amplifica os sinais de acionamento fornecendo a tensão e corrente
que os motores de passo necessitam.
Módulo de Controle
Este módulo é constituído de microcontrolador, regulador de tensão, oscilador
e conector USB.
O regulador de tensão é primordial para oferecer uma tensão de 5V para a
alimentação do microcontrolador e suas entradas e saídas. Já o oscilador é composto
de um cristal piezoelétrico associado a capacitores cerâmicos, cuja função é fornecer
o sinal de clock para o microcontrolador para a realização de todas as tarefas. O sinal
fornecido é de 20 Mhz neste projeto.
Para permitir que este módulo se comunique com o computador, é ligado à
saída USB do microcontrolador um conector USB fêmea do tipo B, semelhante ao
mostrado na figura 41.
Módulo de Potência
Este módulo é constituído de optoacopladores, transistores bipolares, diodos e
resistores de potência.
Com a finalidade de isolar eletricamente o módulo de interface do módulo de
potência, são empregados nas entradas do módulo de potência dezesseis
optoacopladores. Estes componentes realizam a interface entre a etapa de potência
e controle, eliminando boa parte das interferências que poderiam se propagar para o
63
circuito de controle além de evitar possíveis surtos de corrente ou tensão nas saídas
do microcontrolador, que possivelmente levariam o elemento à queima.
Já os transistores, diodos e resistores de potência são empregados nas
denominada pontes H que alimentam as fases dos motores de passo. A ponte H é um
conjunto de 4 chaves que permite fornecer corrente nos dois sentidos para um
elemento conectado no centro da ponte. As chaves são acionadas em pares, sendo
um par de chaves para cada sentido de corrente. Neste circuito os transistores
bipolares são polarizados na região de saturação atuando portanto como as chaves.
Como o elemento a ser acionado pela ponte H é uma indutância, então quando
for feita a comutação dos transistores para inverter a corrente, a indutância produzirá
sobre o transistor, entre o coletor e o emissor, uma força contra-eletromotriz que
impedirá a variação brusca de corrente. Se os terminais do transistor forem
diretamente submetidos a esta tensão de grande magnitude, com uma corrente
remanescente grande, então a dissipação de calor no elemento será alta, podendo
levar a queima do transistor. Para resolver isto são utilizados diodos em paralelo com
os transistores, os denominados de diodos roda-livre, que fornecem um caminho de
baixa resistência para a corrente remanescente, livrando o transistor da alta
dissipação de calor. Estes diodos são ligados de modo que fiquem inversamente
polarizados em relação a tensão de alimentação.
Já os resistores de potência são utilizados na entrada das pontes H para
suportar a alta dissipação de calor de calor devido as correntes elevadas. Conforme
os testes realizados, a corrente registrada na entrada de uma das pontes H utilizadas,
chegou a 3 A aproximadamente, sendo que os resistores utilizados possuem 2,2 Ω,
isso resulta em uma potência dissipada de 6,6 W. Para efeito de comparação um
resistor comum de carvão tem a capacidade de dissipar sem queimar, até 3W no
modelo com maior capacidade de potência. Os resistores de potência utilizados neste
projeto são do tipo fio, e tem a capacidade de dissipar até 25W.
64
4.2.2. Lista de Materiais
Abaixo na tabela 1 são mostrados todos os materiais utilizados na montagem
do protótipo eletrônico bem como as designações utilizadas no projeto:
Tabela 1: Lista de componentes do projeto eletrônico.
[Fonte: Autor]
Todo os desenhos técnicos dos circuitos são de autoria própria e se encontram
no Apêndice B deste trabalho.
4.2.3. Montagem
O protótipo do circuito foi montado sobre uma protoboard e os resistores de
potência e diodos foram montados em bornes devido ao tamanho dos mesmos.
Abaixo na figura 52 é mostrada a foto do protótipo montado:
65
Figura 53. Protótipo montado sobre protoboard. [Fonte: Autor]
Nos testes realizados as correntes obtidas foram de cerca de 2,5 A por motor
acionado, conforme figura 53 abaixo:
Figura 54. Corrente consumida para um eixo acionado. [Fonte: Autor]
66
Durante a montagem e os testes ocorreram dois erros que consumiram um
tempo razoável para a detecção. O primeiro ocorreu devido a queima de um dos
optoacopladores, possivelmente por uma ligação errada ou inversão da tensão de
alimentação. Isso resultou em um funcionamento irregular do motor de passo já que
uma das fases não estava sendo acionada. E se o motor não for acionado na
sequência correta seu eixo não gira. A identificação do componente queimado foi feita
passo a passo, desconectando os motores, as pontes H, até chegar nos
optoacopladores onde foi identificado o defeito. O componente foi então substituído e
o motor funcionou corretamente.
O segundo erro ocorreu na porta USB do microcontrolador devido à falta de um
capacitor cerâmico na saída designada por Vusb. A falta deste elemento estava
impedindo o computador de reconhecer o dispositivo conectado, provavelmente
devido a erros na transmissão dos sinais nas vias D+ e D-. O erro foi identificado após
a consulta ao manual do fabricante e os exemplos de circuitos com USB lá fornecidos.
Com a inclusão do capacitor o problema foi corrigido.
4.3. Software
Os softwares desenvolvidos para este sistema visam principalmente obter as
coordenadas de um objeto via técnicas de visão computacional, transmitir e receber
estas coordenadas via USB e movimentar a mesa para as coordenadas
correspondentes. Para cumprir estas funções foram desenvolvidos dois softwares,
onde um é o aplicativo de visão computacional que é executado no computador com
sistema operacional Windows, já o outro é o software de controle de movimentos da
mesa, que é gravado diretamente na memória do microcontrolador, podendo ser
chamado também de firmware.
4.3.1. Aplicativo de Visão Computacional
A função deste aplicativo é obter as coordenadas do objeto que será
movimentado em frente a webcam, e transmiti-las para o microcontrolador via porta
serial virtual. Este programa foi desenvolvido em linguagem C++, através do IDE
67
Eclipse CDT, e o compilador utilizado é o Mingw. Utiliza a biblioteca de visão
computacional OpenCV e uma biblioteca de comunicação serial.
Funcionamento
Inicialmente após inicialização de todas as variáveis, a webcam conectada é
detectada e suas imagens começam a ser armazenadas em uma estrutura de dados
própria da biblioteca OpenCV. Em seguida a porta serial virtual é analisada para
verificar se o circuitos de controle da mesa estão conectados na porta USB, e também
são atribuídos valores de configuração da comunicação serial como número da porta
COM e baud rate. Uma vez feita esta análise e ajustadas as configurações, o
programa entra em loop. Dentro deste laço são utilizadas as classes de visão
computacional e é feita a transmissão de dados.
Inicialmente é feito o pré-processamento da imagem adquirida, mudando-se o
espaço de cor da imagem de RGB para HSV. Isto permite que se possa manipular as
características de cor de uma forma mais intuitiva, sendo estas propriedades a matiz
(H) que é a cor propriamente dita, a saturação (S) que é o quanto a cor está misturada
com luz branca, e a intensidade (V) que denota se a cor é mais clara ou mais escura.
No próximo passo é feita a limiarização da imagem baseada na cor do objeto.
Para tal, são escolhidos os valores máximos e mínimos de H, S e V que denotam um
intervalo de cor. O objeto de referência utilizado neste trabalho estará sob uma
iluminação de cor branca cuja intensidade varia com a posição, isto requer que os
intervalos de S e V possam abranger estas variações. Do mesmo modo o intervalo de
H deve ser ajustado para um intervalo mais restrito que englobe somente a cor
desejada. Cada um dos valores de H, S e V está atrelado a uma variável que pode
ser ajustada através de seis barras deslizantes na interface gráfica. Sendo assim, uma
vez ajustado um intervalo de cor, a operação de limiarização cria uma imagem binária,
de modo que todas regiões que estavam dentro do intervalo de cor, são preenchidas
com pixels brancos e as regiões restantes são preenchidas com pixels pretos. Como
resultado a nova imagem terá somente o objeto em cor branca e o fundo em cor preta.
A etapa seguinte consiste na aplicação de um filtro de suavização, neste caso
o filtro gaussiano descrito no item 3.10.3 deste trabalho. A função desta operação é
68
provocar um leve efeito de borramento, eliminando assim a maioria dos ruídos
esparsos na imagem binária gerada na última etapa.
Uma vez que a imagem foi limiarizada e filtrada, é possível seguir para a etapa
de extração de caraterísticas. Neste passo o programa analisa a imagem e determina
os momentos geométricos do conjunto de pixels brancos na imagem. A partir destes
valores calcula-se as posições x e y do centro de massa deste conjunto de pixels
conforme descrito no item 3.11. Vale ressaltar que essas operações se aplicam a
todos os pixels brancos na imagem binária, inclusive os ruídos, daí a importância da
filtragem anterior.
Após a obtenção das coordenadas, são iniciadas as rotinas de desenho das
linhas vertical e horizontal e da linha representante da trajetória do objeto. As linhas
horizontal e vertical são linhas paralelas aos eixos x e y respectivamente, que partem
da origem do eixo até coordenada do centro de massa. Já a linha de trajetória é
traçada seguindo o centro de massa do objeto e é atualizada a cada 5 segundos
aproximadamente. Estas linhas são inicialmente desenhadas sobre uma imagem
vazia, onde todos os pixels são pretos, e depois esta imagem é somada a imagem
captada pela câmera. Isso resulta na sobreposição da imagem captada com o
desenho destas linhas. Após essa superposição de imagens é ainda adicionada a esta
imagem final uma caixa de texto contendo as coordenadas atualizadas do objeto.
A última parte do laço de repetição, se refere a transmissão das coordenadas
para a porta COM virtual criada pelo microcontrolador. No protocolo criado, primeiro o
programa recebe uma solicitação do microcontrolador para que seja enviada uma
coordenada específica, caso a solicitação for reconhecida a coordenada é enviada.
Então inicialmente as coordenadas, que são variáveis do tipo inteiro são convertidas
para o tipo caractere, e em seguida a porta serial especificada é monitorada, se o
caractere recebido for “x”, “y”, ”X” e “Y” significa que o microcontrolador está
requisitando os valores atuais das coordenadas x e y.A diferença entre as letras
maisculas e minúsculas, é que após o envio das letras maisculas, as coordenadas
recebidas no microcontrolador serão armazenadas como valores antigos de x ou y,
enquanto depois do envio das letras minúsculas os valores recebidos serão
armazenados como valores atuais.
69
Fluxograma
Abaixo é mostrado o fluxograma simplificado deste programa resumindo o que
foi dito no item anterior. A função main contém o código principal do programa, e é
declarada após a inclusão das bibliotecas, definições e declaração das variáveis
globais.
Figura 55. Fluxograma simplificado do aplicativo de visão computacional.
[Fonte: Autor]
70
Classes e funções de visão computacional
As principais classes e métodos de visão computacional utilizados no programa
são explanados abaixo conforme consta em OPENCV(2014):
Mat: É a classe utilizada para armazenar imagens. É possível armazenar
imagens coloridas, de 3 canais, ou imagens binárias, com um único canal. Dentro
desta classe são definidos diversos métodos e atributos, seja para manipulação de
imagens ou para fornecer dados como largura e altura da imagem
VideoCapture: Classe utilizada para capturar as imagens provindas de
arquivos de vídeo ou câmeras, fazendo o armazenamento e descarte continuo destas
imagens em um buffer de imagem.
imshow: Função que mostra uma imagem em uma janela.
createTrackbar: Função que cria uma barra deslizante e associa a mesma a
uma janela e uma variável .
cvtColor: Converte uma imagem de um espaço de cor para outro.
inRange: Função que aplica limiares máximo e mínimo aos valores de
intensidade dos pixels em uma imagem. Em uma imagem colorida, essa função
verifica se os três parâmetros, de um dado espaço de cor, se situam entre os limiares
de cor definidos também por três parâmetros.
GaussianBlur: Função que suaviza uma imagem usando o filtro gaussiano.
Nesta função é possível definir o tamanho da máscara que define o filtro, controlando
assim o grau de suavização.
Moments: Função que realiza o cálculos dos momentos do conjunto de pixels
brancos em uma imagem binária. Os momentos calculados abrangem da primeira até
a terceira ordem. O momento de ordem zero corresponde a área da imagem, enquanto
os momentos de primeira ordem correspondem aos momentos em relação a x e y.
Line: Função que desenha um segmento de reta entre dois pontos definidos.
putText: Desenha uma caixa de texto contendo uma determinada string.
71
Funções de comunicação serial
As principais classes e métodos de comunicação serial utilizados no programa
são explanados abaixo conforme explanado por BEELEN (2014):
RS232_OpenComport: Função que abre a porta COM, habilitando a mesma
para a comunicação.
RS232_PollComport: Função que recebe caracteres da porta COM
armazenando os mesmos em um buffer.
RS232_cputs: Função que envia caracteres pela porta COM.
RS232_CloseComport: Função que fecha a porta COM.
Interface Gráfica
Abaixo, nas figuras 54 e 55 são mostradas as telas da interface gráfica do
aplicativo. Na figura 54 são mostradas as telas denominadas “Barras Deslizantes” e
“Ajuste de Limiares”.
O ajuste de cor é feito variando os valores de H, S e V na tela “Barras
Deslizantes” e observando a tela “Ajuste de Limiares”. Quando nesta última tela
aparecer somente o objeto em destaque é porque a cor foi ajustada corretamente. A
partir daí é possível fazer ajustes mais finos de modo a englobar as variações de cor
causadas por sombras ou reflexos na superfície do objeto.
72
Figura 56. Telas de ajuste de valores e visualização. [Fonte: Autor]
Uma referência inicial para os valores de H, S e V do objeto pode ser obtida
através do software de desenho Paint da Microsoft, conforme a figura 55, abaixo:
73
Figura 57. Paleta de cores do Paint. [Fonte: Microsoft]
Esta paleta de cores se encontra na barra de ferramentas do Paint, clicando-se
em “Editar Cores”. Nesta paleta deve observar os valores de Matiz, Sat e Lum, que
correspondem respectivamente aos valores H, S e V de cor. Estes valores podem ser
tomados como os valores centrais de cada intervalo de H, S e V, sendo possível então
determinar os limiares.
Após o ajuste da cor do objeto a tela principal “Feedback Visual” apresentará
os resultados da seguinte maneira, conforme exemplo da figura 56 abaixo:
74
Figura 58. Tela principal do aplicativo. [Fonte: Autor]
Conforme o objeto é movimentado em frente a câmera, as coordenadas
atualizadas da mesa são mostradas no canto superior esquerdo da tela. A linha verde,
mais espessa, representa a trajetória do objeto, sendo atualizada a cada cinco
segundos aproximadamente, para que a tela não seja gradualmente poluída com as
trajetórias anteriores.
4.3.2. Firmware de movimentação da mesa
Firmware é o nome dado aos programas que são executados e gravados na
memória de um sistema embarcado tal como um microcontrolador. O firmware deste
trabalho tem como funções principais solicitar e receber as coordenadas do objeto via
comunicação USB, gerenciar a trajetória da mesa empregando a interpolação linear a
cada movimento e gerar os sinais de acionamento dos motores de passo. Este
programa foi desenvolvido em linguagem C, através do IDE MPLAB, e o compilador
utilizado é o C18 v3.47 evaluation mode. Utiliza as bibliotecas de comunicação USB
CDC.
75
Funcionamento
Na rotina principal incialmente são definidos os pinos de entrada e saída de
sinais. Na sequência a porta USB do microcontrolador é inicializada e configurada e a
interrupção por USB é ativada. Após as configurações iniciais, o primeiro passo
executado é o envio de requisições de coordenadas para o aplicativo no computador.
São enviados os caracteres ‘x’, ‘y’, ‘X’ ou ‘Y’. Cada vez que o aplicativo de visão
computacional recebe um destes caracteres, ele responde, enviando a coordenada
correspondente. O recebimento de uma destas coordenadas ativa a interrupção por
USB do microcontrolador, causando uma pausa no programa principal e desviando o
processamento para a rotina de tratamento desta interrupção. Dentro desta rotina uma
função realiza a leitura dos caracteres recebidos. Uma vez feita a leitura destas
coordenadas em forma de caracteres, é feita a conversão dos mesmos em números,
e estes são armazenadas nas variáveis pertinentes. Na sequência a interrupção é
terminada e o processamento é desviado novamente para o programa principal no
ponto onde parou. O processo acima é repetido em intervalos de tempo definidos até
que sejam obtidas duas posições, em instantes diferentes, permitindo descrever uma
reta. Isto torna o movimento da mesa subdividido em pequenas retas, e atrasado em
relação ao real movimento do objeto, mas é um erro pequeno uma vez que o intervalo
de tempo é da ordem de algumas centenas de milissegundos.
Tendo obtido as posições finais e iniciais da reta, e feita a devida conversão,
estes valores são passados a função de movimentação. Esta função define os
intervalos de movimentação em x e y, calcula a inclinação da reta e aplica o algoritmo
de Bresenham, gerando o conjunto de pontos de destino. Este algoritmo é aplicado
em passos, então a cada incremento de um eixo, o outro é calculado e incrementado
ou não. Cada um desses incrementos em um eixo corresponde a um passo no motor.
Então a cada cálculo de um conjunto x e y pelo algoritmo, é chamada uma outra
função que tem o objetivo de controlar a sequência de passos no motor e gerar os
sinais de acionamento na porta do microcontrolador.
Resulta que os sinais gerados na sequência correta, conforme mostrado figura
41, provocam o giro dos motores, e então o movimento da mesa.
76
Dentro da rotina principal são também monitorados os sensores fim-de-curso
da mesa, que ao serem acionados provocam a parada do eixo correspondente,
permitindo que somente um movimento de distanciação do fim de curso seja possível.
Fluxograma
Abaixo é mostrado o fluxograma simplificado deste programa resumindo o que
foi dito no item anterior. Tal como no software de visão, a função main contém o código
principal do programa, e é declarada após a inclusão das bibliotecas, definições e
declaração de variáveis globais.
77
Figura 59. Fluxograma simplificado do firmware de movimentação. [Fonte:
Autor]
78
Comunicação USB e funções relacionadas
A comunicação USB do microcontrolador com o computador é possível através
do driver “mchpcdc” que junto as bibliotecas de comunicação USB CDC permitem
realizar a emulação de uma porta serial COM. As bibliotecas utilizadas são:
usb_config.h: Contém as configurações possíveis do dispositivo USB.
usb_descriptors.c: Contém os descritores de dispositivos da classe CDC.
HardwareProfile.h: Contém diversas definições relacionadas à kit’s didáticos
da Microchip Technology e deve obrigatoriamente ser utilizada.
Estes arquivos devem ser incluídos no cabeçalho do programa, uma vez
contém todas as funções e variáveis utilizadas na comunicação USB CDC. Todas
estas bibliotecas e o driver de comunicação estão disponíveis no conjunto de arquivos
da Microchip Application Libraries, disponibilizada no site da Microchip Technology.
As principais funções de comunicação USB utilizadas no programa são
explanadas abaixo conforme consta em Miyadaira (2009) e Microchip(2006):
USBDeviceInit: Função responsável por realizar a inicialização e configuração
de todas a variáveis relacionadas ao dispositivo, deixando-o dispositivo no estado
padrão de configuração.
USBDeviceAttach: Função responsável por informar que o dispositivo está
conectado ao barramento USB.
USBUSARTIsTxTrfReady: Função que verifica se é possível enviar dados
para o host através de uma transferência CDC bulk.
putsUSBUSART: Função que envia um conjunto de dados para a USB
incluindo o caractere NULL.
getsUSBUSART: Função que copia um conjunto de dados recebidos de uma
transferência USB CDC Bulk para uma variável definida pelo usuário.
USBDeviceTasks: Função responsável pelo gerenciamento de transferências
do tipo control, processo de enumeração e a detecção de eventos da USB.
79
CDCTxService: Função que manipula as transações entre o dispositivo e o
host. Essa rotina deve ser chamada uma vez a cada loop da função main.
4.4. Testes de comunicação USB-RS-232 entre Microcontrolador e
Computador
Antes de se executar o aplicativo de visão computacional primeiro é necessário
garantir que a porta COM virtual foi criada. Então com o firmware em execução
inicialmente é conectado o cabo USB na porta do PIC e do computador. Neste instante
é possível visualizar no Windows, em Painel de Controle, e Gerenciador de
Dispositivos, o aparecimento da porta COM5,denominada como USB Serial Port que
é a porta virtual criada pelo firmware e o driver USB da Microchip. Na figura 58 abaixo
é mostrada a porta COM no Windows:
Figura 60.Porta virtual COM5 criada. [Fonte: Autor]
80
Para a verificação e testes da troca de dados entre o aplicativo de visão e o
firmware foi utilizado o programa RealTerm: Serial Terminal 19 que se encontra
disponível para download gratuito no site do desenvolvedor. Este programa inclui
funções como a abertura de portas seriais virtuais e monitoramento dos dados
trocados.
Nos testes executados, primeiramente foram verificados os dados enviados
pelo firmware, para verificar se todas as requisições estão sendo enviadas. Para tal,
foi criada uma tela de monitoramento da porta COM5 no RealTerm. O resultado obtido
foi:
Figura 61.Requisições enviadas pelo firmware. [Fonte: Autor]
Na figura 60 acima pode ser observado que, a sequência de caracteres obtida
é “x y X Y”, conforme o esperado.
19 Este aplicativo se encontra disponível para download gratuito no site do desenvolvedor, no endereço: http://realterm.sourceforge.net/
81
No teste seguinte, são enviados os caracteres x e y através do RealTerm para
o software de visão, onde cada caractere é enviado três vezes. Na figura 61 é
mostrada a resposta obtida, onde os caracteres da parte superior são as coordenadas
em x, e na parte inferior estão as coordenadas em y.
Figura 62.Resposta as requisições pelo software de visão. [Fonte: Autor]
A figura 60 acima as coordenadas de x recebidas são: “305”, “307”, “308”. Já
as coordenadas de y são: “159”, “159”, “160”, significando que após cada envio de
uma requisição estão sendo enviadas através da porta COM5 os valores de cada
coordenada.
82
5. Conclusões
Com a finalidade de implementar um sistema para movimentação de
mecanismos remotos, situados em áreas sob condições adversas, foi proposto neste
trabalho, um sistema de visão computacional que capta as coordenadas de um objeto
movimentado em frente a uma câmera e transfere suas coordenadas para o sistema
de movimentação. A implementação deste sistema ficou dividida em quatro etapas,
basicamente, sendo o desenvolvimento do software de visão computacional, o projeto
e construção da mesa móvel, o projeto e montagem dos circuitos eletrônicos e o
desenvolvimento do firmware de movimentação.
A etapa de desenvolvimento do software de visão, se deu sem maiores
problemas, dada a relativa facilidade de se manusear as diversas funções oferecidas
pela biblioteca OpenCV, além da grande quantidade de exemplos de programas,
fornecidos pelos desenvolvedores desta biblioteca. Nesta etapa foram aplicados os
conceitos de visão computacional explanados ao longo do trabalho, o que permitiu
sistematizar a aplicação de algoritmos de visão. Como resultado foi obtido um
software que analisa as imagens captadas pela câmera, obtêm as coordenadas do
objeto, e cria uma interface gráfica onde são mostradas as coordenadas atualizadas
bem como a trajetória do objeto na tela. Nos testes foi utilizado como objeto uma bola
de cor laranja, cujo ajuste de cor foi feito conforme o procedimento descrito no item
4.3.1, e o resultado obtido é mostrado na figura 56.
Já a etapa de projeto e construção da mesa móvel foi desenvolvida conforme
explanado no item 4.1. O projeto pode ser realizado com poucas dificuldades, e foi
pensado de maneira a ser composto por peças de simples montagem e usinagem,
facilitando as etapas posteriores de confecção e montagem. Parte do conceito, foi
baseado em mesas de movimentação X-Y de uso industrial conforme explanado no
item 3.13. Houveram algumas pequenas dificuldades na confecção e montagem, cuja
explicação e solução são expostas também no item 4.1. Como resultado pode-se
obter uma mesa móvel funcional, que se desloca com baixo atrito entre mancal e
barramento. Nos testes realizados, o firmware foi programado para a realização de
movimentos intermitentes, de ida e volta, e o sistema realizou os movimentos
programados sem a ocorrência de problemas mecânicos. Um dos problemas
encontrados foi o ruído exibido pela mesa, que só pode ser eliminado de maneira
83
considerável, caso o sistema seja mais rígido e robusto, exigindo então uma
construção de dimensões maiores, com maior peso e maior custo.
A etapa seguinte, de projeto e montagem dos circuitos eletrônicos foi feita com
base nos conceitos explanados nos itens 3.14, 3.15 e 3.16, de modo a prover os sinais
necessários aos motores e realizar a comunicação com o computador, através do
módulo de controle, bem como fornecer a potência necessária aos motores através
do módulo de potência. Como resultado pode-se obter um circuito que realiza o
acionamento dos motores na lógica correta e com a potência requerida. Da mesma
forma o circuito permite que o microcontrolador se comunique com o computador
através da porta USB, conforme os testes de comunicação realizados, e que são
descritos no item 4.4.
A última etapa, referente ao desenvolvimento do firmware de movimentação,
foi feita visando a geração correta de sinais de acionamento, bem como o
estabelecimento da comunicação entre computador e microcontrolador. Conforme os
testes realizados o firmware é capaz de acionar os motores de passo de forma correta
no número de passos que se deseja e no sentido de rotação escolhido. Esses
acionamentos são feitos através da função de movimentação criada, que se mostrou
funcional. O programa também é capaz de receber e enviar dados através da porta
USB, conforme verificado no monitoramento da porta serial, descrito no item 4.4.
Como resultado foi obtido um firmware capaz de realizar o acionamento dos motores
de passo e também a troca de dados via USB.
5.1. Trabalhos e melhorias futuras
Com a finalidade de melhoramento deste sistema e utilização do mesmo em
trabalhos futuros, diversas melhorias podem ser empregadas. Dentre elas, a
calibração de câmera, inclusão de uma segunda câmera, inclusão de um terceiro eixo
na vertical, redução de ruídos na mesa móvel e melhoramento da interface gráfica.
Calibração de câmera
A calibração de câmera visa obter, através de transformações de coordenadas,
a posição e tamanho de objetos em relação a um sistema de referência tridimensional.
Com isso seria possível corrigir as coordenadas do objeto quando o mesmo se
84
distância do centro da câmera, dando maior precisão ao posicionamento da mesa
móvel
Inclusão de uma 2ª câmera
Dependendo da aplicação pode haver casos em que o mecanismo a ser
controlado esteja muito distante ou mesmo visualmente inacessível. Neste caso o
emprego de uma segunda câmera poderia auxiliar o operador a visualizar a posição
real do mecanismo a ser controlado.
Inclusão de um 3° eixo na mesa móvel
A mesa desenvolvida pode ser aproveitada como uma base de uma máquina-
ferramenta de pequena potência. A inclusão de um 3° eixo, na posição vertical,
acoplado a uma ferramenta de corte rotativa permitiria realizar usinagens em materiais
de baixa resistência mecânica. Somando-se ainda à ideia do item anterior, o terceiro
eixo poderia ser controlado também visualmente com a inclusão de uma terceira
câmera para captar lateralmente a posição do objeto e transferir suas coordenadas
ao novo eixo.
Redução de ruídos
É possível realizar um estudo detalhado da mesa móvel e realizar correções
estruturais nas peças, de modo que seja possível reduzir os ruídos existentes. Uma
das possíveis soluções seria tornar a base principal mais rígida e maciça, tal como em
máquinas-ferramenta, o que iria amortecer boa parte das vibrações. Possivelmente a
inclusão de materiais plásticos com razoável rigidez nas junções entre determinadas
peças, poderia também amortecer boa parte dos ruídos.
Interface gráfica
Nesta interface podem ser empregados, como melhorias futuras, menus e
botões, que permitissem navegar entre telas ou mesmo ajustar parâmetros de visão
e movimentação. Isso requer a utilização de bibliotecas especializadas ou mesmo a
mudança da linguagem de programação do sistema de visão computacional.
85
6. Cronograma
Abaixo é mostrado o cronograma de pesquisa e desenvolvimento dos tópicos
bem como o desenvolvimento dos programas, projetos e protóripos.
Quadro 1: Cronograma de atividades
[Fonte: Autor]
86
7. Referências bibliográficas
NOF, Shimon Y. Handbook of Industrial Robotics. Canadá: John Wiley & Sons Inc.,
2ª ed., 1985.
SZELISKI, Richard. Computer Vision: Algorithms and Applications. Springer,
2011. Disponível em: < http://szeliski.org/Book/ >, acesso em: 10 de março de 2014.
SHAPIRO, Linda G.; STOCKMAN, George C. Computer Vision. Prentice Hall, 2001.
Disponível em: < http://www.cse.msu.edu/~stockman/Book/ >, acesso em: 10 de
março de 2014.
GONZALEZ, R, C; WOODS, R, E. Processamento de Imagens Digitais. São Paulo:
Edgard Blucher Ltda., 2000.
MARQUES, O; VIEIRA, H. Processamento Digital de Imagens. Rio de Janeiro:
Brasport, 1999.
NEVES, Antônio L. P.; NETO, Hugo V., GONZAGA, Adilson. Avanços em Visão
computacional. Curitiba: Omnipax, 2012.
VERNON, David. Machine Vision – Automated Visual Inspection and Robot Vision.
New Jersey: Prentice Hall,1991.
FRANCO, Cristiano R. Identificação da utilização de cinto de segurança em
condutores de automóveis através de visão computacional. Itajaí, 2013. Tese
(Mestrado em computação aplicada) – Universidade do Vale do Itajaí, 2013.
MANZI, Felipe A. Aplicação de Visão Computacional para extração de
características em imagens do olho humano. Pará, 2010. Dissertação (Graduação
em Engenharia de Computação) – Escola de Engenharia de São Carlos, Universidade
de São Paulo, 2007.
OPPENHEIM, Alan V.; SCHAFER, Ronald W. Discrete-time Signal Processing.
New Jersey: Prentice Hall, 1999.
87
PAIVA, Cayo O. N. Introdução a Técnicas de Segmentação de Imagens. Pará,
2010. Dissertação (Graduação em Engenharia de Computação) – Faculdade de
Engenharia da Computação, Universidade Federal do Pará, 2010.
CASTLEMAN, Kenneth R. Digital Image Processing. New Jersey: Prentice Hall,
1996.
ARDAYFIO, David D. Fundamentals of Robotics. New York: Marcel Dekker Inc.,
1987.
CHIANG, Luciano E. 3-D CNC Trajectory Interpolation Using Bresenham’s
Algorithm. 1994 IEEE International Symposium on Industrial Electronics, vol. 1, n. 1,
p. 264-268, maio de 1994.
BRESENHAM, J. E. Algorithm for computer control of a digital plotter. IBM
Systems Journal, vol. 4, n. 1, p. 25-30, 1965.
ZINGL, Alois; A Rasterizing Algorithm for Drawing Curves . Wien, 2012. Disponível
em: < http://members.chello.at/easyfilter/ >, acesso em: 19 de fevereiro de 2015.
MIYADAIRA, Alberto Noboru. Microcontroladores PIC 18 – Aprenda e Programe
em Linguagem C. São Paulo: Editora Érica,1ª ed., 2009.
FITZGERALD, A. E. Máquinas Elétricas. São Paulo: Editora Bookman,6ª ed., 2003.
BASTIAN Solutions. Fanuc iRVision. Disponível em: <
http://www.bastiansolutions.com/robotics/robotic-solutions/vision-guided-
robotics/fanuc-irvision >, acesso em: acesso em: 15 de março de 2014.
SPIE. Making Iris recognition more reliable a spoof resistant. Disponível em: <
https://spie.org/x14548.xml >, acesso em: 15 de março de 2014.
BIOCLINICA. Lesion detection and Tracking in CNS Trials. Disponível em: <
http://www.bioclinica.com/imaging/therapeutic-expertise/neurology/image-
processing/lesion-detection-and-tracking-cns-trials >, acesso em: 15 de março de
2014.
PIXCELLENT. The role of charge coupled devices in low light imaging. Disponível
em: < http://www.pixcellent.com/CCDROLE5.htm >, acesso em: 16 de março de 2014.
88
PROJETO fotossíntese. Clorofila. Disponível em: <
http://projetofotossintese.blogspot.com.br/2011/03/clorofila.html >, acesso em: 16 de
março de 2014.
DPI Inpe. Processamento digital de imagens. Disponível em: <
http://www.dpi.inpe.br/~carlos/Academicos/Cursos/Pdi/pdi_cores.html >, acesso em:
16 de março de 2014.
SIDIGICOR. Teoria da cor aplicada aos sistemas digitais. Disponível em: <
http://sidigicor.blogspot.com.br/ >, acesso em: 16 de março de 2014.
TEORIA DA COR. Modelo RGB. Disponível em: <
https://sites.google.com/site/aimcjv/modelo-rgb >, acesso em: 17 de março de 2014.
SIP. Introduction to Signal and Image Processing. Disponível em: <
http://miac.unibas.ch/SIP/02-Fundamentals.html >, acesso em: 17 de março de 2014.
CONCI, Aura. Análise de Imagens. Disponível em: <
http://www2.ic.uff.br/~aconci/AI.html >, acesso em: 07 de junho de 2014.
OPENCV. OpenCV (Open Source Computer Vision). Disponível em: <
http://opencv.org >, acesso em: 22 de junho de 2014.
YIGONE. X-Y Axis CNC Worktable. Disponível em: < http://linearguidechina.com/5-
2-2-x-y-axis-work-table.html >, acesso em: 15 de fevereiro de 2015.
NEWMARK. NLS8 Linear Stage. Disponível em: <
http://www.newmarksystems.com/linear-positioners/nls8-series-linear-stage >,
acesso em: 15 de fevereiro de 2015.
MESSIAS, Antônio Rogério. Curso USB/Serial – Controle de Dispositivos.
Disponível em: < http://www.rogercom.com/CursoOnlineUSB >, acesso em: 17 de
fevereiro de 2015.
MICROCHIP. PIC18F2455/2550/4455/4550 Data Sheet. U.S.A, 2006. Disponível em:
< http://ww1.microchip.com/downloads/en/devicedoc >, acesso em: 17 de fevereiro de
2015.
89
BRITES, Felipe G.; SANTOS, Vinicius P. A. Motor de Passo. Rio de Janeiro, 2008.
Disponível em: < http://www.mc.unicamp.br/files/rf4dfcd6596e33/ >, acesso em: 18 de
fevereiro de 2015.
NEOYAMA. Motor-de-passo-nema-23-torque-15-00-kgfcm-corrente-3-00-a-dat-
i000389-2. São Paulo, 2014. Disponível em: <
http://www.neoyama.com.br/produtos/motores/motor-de-passo/motor-de-passo-
nema-23-torque-1500-kgf-cm-corrente-300-a/ >, acesso em: 18 de fevereiro de 2015.
SCHNEIDER. Introdução ao Motion Control. Disponível em: <
http://www.schneider-electric.com.br/sites/brasil/pt/produtos-servicos/treinamento >,
acesso em: 17 de fevereiro de 2015.
BEELEN, Teunis. RS-232 for Linux, FreeBSD and Windows. Disponível em: <
http://www.teuniz.net/RS-232/ >, acesso em: 23 de fevereiro de 2015.
90
8. Apêndice A – Desenhos Técnicos da Mesa Móvel
Figura 62. Desenho técnico do CONJUNTO. [Fonte: Autor]
91
Figura 63. Desenho técnico - BASE 1. [Fonte: Autor]
92
Figura 64. Desenho técnico - BASE 2. [Fonte: Autor]
93
Figura 65. Desenho técnico – BASE 3. [Fonte: Autor]
94
Figura 66. Desenho técnico - EIXO GUIA. [Fonte: Autor]
95
Figura 67. Desenho técnico – EIXO TR1. [Fonte: Autor]
96
Figura 68. Desenho técnico – EIXO TR2. [Fonte: Autor]
97
Figura 69. Desenho técnico – EIXO TR3. [Fonte: Autor]
98
Figura 70. Desenho técnico - EIXO TR4. [Fonte: Autor]
99
Figura 71. Desenho técnico – GUIA LINEAR. [Fonte: Autor]
100
Figura 72. Desenho técnico – MANCAL GUIAS. [Fonte: Autor]
101
Figura 73. Desenho técnico – MANCAL POLIAS. [Fonte: Autor]
102
Figura 74. Desenho técnico - POLIA. [Fonte: Autor]
103
Figura 75. Desenho técnico - SUPORTE DO MOTOR. [Fonte: Autor]
104
9. Apêndice B – Circuitos Eletrônicos
Figura 76. Circuito – MÓDULO DE CONTROLE. [Fonte: Autor]
105
Figura 77. Circuito – MÓDULO DE POTÊNCIA. [Fonte: Autor]
106
Figura 78. Circuito – MOTORES DE PASSO. [Fonte: Autor]