Escolar Documentos
Profissional Documentos
Cultura Documentos
NOVEMBRO - 2007
FACULDADE DE ENGENHARIA MECÂNICA
COORDENAÇÃO DE GRADUAÇÃO
ENGENHARIA DE CONTROLE E AUTOMAÇÃO
UNICAMP
ES952 - TRABALHO DE GRADUAÇÃO II
2 o semestre de 2007
ALUNO: RA:
TÍTULO:
Conteúdo do Trabalho
Apresentação do Trabalho
Seminário de Apresentação
A t r i b u ir c o n c e i t o : E x c e l e n t e , B o m, R e g u la r , I n s u f i c ie n t e
M ÉDI A
NOTA GLOBAL F IN AL
A t r ib u i r n o t a d e 0 - 1 0 ( n o t a m í n i ma p a r a a p r o v a ç ã o : 5 , 0 )
Campi nas, de de
_________________________________ _________________________________
Prof. Prof.
Membro (1) Membro (2)
Carimbo e Assinatura Carimbo e Assinatura
_________________________________ _________________________________
Prof. Prof. Dr. Eurípides G. de Oliveira Nóbrega
Orientador Coordenador de Graduação
Carimbo e Assinatura Carimbo e Assinatura
i
Agradecimentos
Gostaria de agradecer ao professor Luiz Otávio Saraiva Ferreira pelas orientações prestadas
e pela disponibilidade de atendimento para esclarecer dúvidas. Gostaria de agradecer ao Marcílio
e ao Paulo Lamim, que contribuíram quando da utilização do laboratório de mecatrônica.
Gostaria também de deixar um agradecimento aos meus pais, pelo apoio e suporte constantes.
ii
Resumo
O presente trabalho traz, inicialmente, um estudo sobre encoders ópticos baseados no efeito
moiré, apresentando os princípios de funcionamento, discutindo sistemas para aumentar a
resolução (sistemas resolvedores), mostrando as técnicas de fabricação de discos e abordando
questões relacionadas a erros e testes de encoders. Em seguida, apresenta o desenvolvimento de
um kit de encoder composto por um encoder didático de baixo custo (128 PPR), um encoder de
referência (1024 PPR), uma interface eletrônica com microcontrolador e uma interface gráfica do
usuário em MATLAB. O encoder didático é desenvolvido utilizando o efeito moiré para gerar a
defasagem de 90º elétricos entre seus canais A e B. Para isso, são utilizados dois discos, um
móvel com 32 pares de setores translúcido-opaco e outro estático com 33 pares. A diferença de 1
par de setores translúcido-opaco permite a obtenção da defasagem de 90º elétricos por meio do
posicionamento de dispositivos de leitura a 90º angulares. A resolução do encoder obtida
fisicamente (32 PPR) é ampliada (128 PPR) com a utilização de um resolvedor eletrônico via
software, implementado em um microcontrolador. O microcontrolador também é utilizado para a
transmissão de dados, via serial, a um PC executando a interface gráfica do usuário (GUI). A
GUI criada em MATLAB permitiu caracterizar o funcionamento do encoder didático através de
dois tipos de experimentos: aquisição da posição e teste de precisão. Nos experimentos de
aquisição da posição, o encoder didático foi movimentado nos dois sentidos e com velocidades
diferentes, fazendo com que os dados de posição fossem lidos e armazenados em MATLAB,
onde foram determinadas as velocidades. Cada experimento teve os resultados apresentados na
forma gráfica, refletindo, coerentemente, o movimento físico imposto ao encoder didático. Nos
experimentos de teste de precisão, o encoder didático foi movimentado juntamente com um
encoder de referência. Além das leituras da posição do encoder didático, o MATLAB recebeu as
quantidades de pulsos do encoder de referência que ocorreram entre cada duas leituras do
encoder didático. Os resultados dos experimentos também foram apresentados graficamente,
onde foi possível inferir a respeito da precisão do encoder didático, que ficou em ± 1,4º , metade
de sua resolução (360º / 128PPR = 2,8º).
Palavras-chave: encoder óptico, efeito moiré, encoder incremental, encoder absoluto, resolvedor,
fabricação de discos de encoder, erros de encoder, teste de encoder, kit didático, PIC, MATLAB.
iii
Abstract
First, the present work brings a study about optical encoders based on moiré effect, showing the
working principles, discussing systems to increase the resolution (resolving systems), showing
the manufacturing techniques of encoder disks and approaching questions related to errors and
tests of encoders. Next, it shows the development of an encoder kit composed of a low cost
didactic encoder (128 PPR), a reference encoder (1024 PPR), an electronic interface with a
microcontroller, and of a graphical user interface in MATLAB. The didactic encoder is
developed using the moiré effect to generate the difference in phase of 90 electrical degrees
between its channels A and B. Therefore, two disks are used, one moving with 32 pairs of
translucent-opaque sectors, and another one static with 33 pairs. The difference of 1 pair of
translucent-opaque sectors allows obtaining the difference in phase of 90 electrical degrees
through the positioning of the reading devices at 90 angular degrees. The resolution of the
encoder obtained physically (32 PPR) is increased (128 PPR) with the use of an electronic
resolving system via software, programmed in a microcontroller. The microcontroller is also used
to transmit data, via serial port, to a PC running the graphical user interface (GUI). The GUI
created in MATLAB allowed characterizing the operation of the didactic encoder through two
types of experiments: position acquisition and accuracy test. In the position acquisition
experiments, the didactic encoder was turned in both directions and at different speeds, so that the
position data could be read and recorded in MATLAB, where the speeds were calculated. Each
experiment had its results showed graphically, reflecting coherently the physical turn applied to
the didactic encoder. In the accuracy test experiments, the didactic encoder was turned at the
same time as the reference encoder. Besides receiving the position readings of the didactic
encoder, MATLAB received the quantities of pulses of the reference encoder that happened
between each two readings of the didactic encoder. The results of the experiments were also
showed graphically, where it was possible to infer about the accuracy of the didactic encoder, that
was in ± 1,4º, half of its resolution (360º / 128PPR = 2,8º).
Key words: optical encoder, moiré effect, incremental encoder, absolute encoder, resolving
systems, encoder disks manufacturing, encoder errors, encoder testing, didactic kit, PIC, MATLAB.
iv
Índice
1. Introdução ................................................................................................................................... 11
2. Princípio de Funcionamento de Encoders Ópticos ..................................................................... 22
2.1 O Efeito Moiré .......................................................................................................................... 22
2.2 Batimentos ................................................................................................................................ 99
2.3 Introdução aos Sistemas de Medição ...................................................................................... 16 16
2.3.1 Sistemas de Medição ........................................................................................................... 16 16
2.3.2 Transdutores ........................................................................................................................ 18 18
2.4 Encoders ................................................................................................................................. 20
20
2.4.1 Fundamentos do Encoder Incremental ................................................................................ 20 20
2.4.2 Encoder Óptico Incremental ................................................................................................ 23 23
2.4.3 Fundamentos do Encoder Absoluto ..................................................................................... 31 31
2.4.4 Encoder Óptico Absoluto .................................................................................................... 37 37
3. Resolvedores ............................................................................................................................. 39
39
3.1 Resolvedores Eletrônicos ....................................................................................................... 39 39
3.2 Resolvedores Ópticos ............................................................................................................. 47 47
4. Técnicas de Fabricação de Discos e Réguas de Encoders Ópticos .......................................... 50 50
4.1 Técnica Industrial Utilizando o Processo de Lift-off ............................................................. 50 50
4.1.1 Preparação Inicial do Disco ................................................................................................. 51 51
4.1.2 Processo de Lift-off ............................................................................................................. 53
53
4.2 Técnica para Fins Didáticos Utilizando Materiais de Baixo Custo ........................................ 60 60
5. Erros e Testes de Encoders Ópticos .......................................................................................... 62
62
5.1 Erros Associados a Encoders Ópticos Incrementais Rotativos .............................................. 62 62
5.2 Testes de Encoders Ópticos Incrementais Rotativos .............................................................. 68 68
6. Materiais e Métodos ................................................................................................................. 77
6.1 Projeto e Montagem da Mecânica do Kit de Encoder ............................................................ 77
6.2 Projeto e Montagem da Eletrônica do Kit de Encoder ........................................................... 86
6.3 Desenvolvimento do Software Embarcado ............................................................................ 91
6.4 Desenvolvimento da Interface com o Usuário ....................................................................... 98
6.5 Manual de Experimentos ...................................................................................................... 104
6.5.1 Aquisição da Posição e Determinação da Velocidade ....................................................... 105
6.5.2 Teste de Precisão Utilizando um Encoder de Referência .................................................. 107
7. Resultados e Discussão ........................................................................................................... 109
7.1 Construção do Kit de Encoder .............................................................................................. 109
7.2 Experimentos de Aquisição da Posição ................................................................................ 112
7.3 Experimentos de Teste de Precisão ...................................................................................... 115
8. Conclusões e Sugestões para Próximos Trabalhos ................................................................. 76 119
Referências Bibliográficas .......................................................................................................... 77 121
Anexos ........................................................................................................................................ 124
79
v
Lista de Figuras
vi
Figura 2.32 - Encoder óptico incremental rotativo ....................................................................... 30
Figura 2.33 - Encoder absoluto ..................................................................................................... 31
Figura 2.34 - Circuitos para conversão do código Gray para o código binário natural ................ 34
Figura 2.35 - Exemplo de mecanismo multi-revoluções .............................................................. 36
Figura 2.36 - Esquema básico de um encoder óptico absoluto .................................................... 37
Figura 2.37 - Sistemas básicos de focalização ............................................................................. 38 38
Figura 3.1 - Obtenção de dois sinais senoidais defasados de 90º elétricos .................................. 41 41
Figura 3.3 - Formas de onda de um sistema resolvedor sem interpolador eletrônico .................. 42 42
Figura 3.5 - Formas de onda de um sistema resolvedor com interpolador eletrônico. A resolução
obtida neste exemplo é oito vezes maior ..................................................................................... 45 45
Figura 3.7 - Obtenção de N sinais senoidais igualmente defasados, N = 4 (esq) e N = 5 (dir) ... 48 48
Figura 4.3 - Transmissão em função do comprimento de onda para diferentes tipos de vidro .... 52 52
Figura 4.6 - Perfil obtido com a aplicação de clorobenzeno sobre uma resina positiva antes da
revelação ...................................................................................................................................... 56
56
Figura 4.7 - Resultado obtido com a deposição de uma película de metal sobre um substrato, via
processo de evaporação do metal ................................................................................................. 58 58
Figura 4.9 - Exemplo de disco incremental obtido com programa em MATLAB, Nlinhas=36 .. 60 60
Figura 4.10 - Exemplo de técnica para construção de um disco de encoder óptico para fins
didáticos empregando materiais de baixo custo ........................................................................... 61 61
Figura 5.10 - Influência da distância entre o fotodetector e o disco graduado. Resultado das
medições do sinal de saída do fotodetector em um encoder real .................................................. 72 72
Figura 5.11 - Influência da razão entre a largura da área ativa do fotodetector e o espaçamento
das graduações do disco ............................................................................................................... 72 72
Figura 5.12 - Influência da razão entre a largura da área ativa do fotodetector e o espaçamento
das graduações. Resultado das medições do sinal de saída do fotodetector em um encoder real .. 73 73
vii
Figura 6.1 - Método escolhido para geração do efeito moiré ....................................................... 78
Figura 6.2 - Croqui da base metálica ............................................................................................ 79
Figura 6.3 - Croqui do eixo de plástico ......................................................................................... 34 79
Figura 6.4 - Croqui do suporte de papelão para fixar os fotodiodos ............................................ 80
Figura 6.5 - Croqui do suporte de papelão para fixar os LED´s infravermelho ........................... 37 80
Figura 6.6 - Croqui dos CD´s de plástico transparente ................................................................ 80
Figura 6.7 - Croqui do disco incremental em transparência com 33 pares de setores .................. 80
Figura 6.8 - Croqui do disco incremental em transparência com 32 pares de setores .................. 81 34
Figura 6.9 - Croqui dos suportes metálicos .................................................................................. 81
Figura 6.10 - Croqui das cantoneiras metálicas com rasgos ........................................................ 37 81
Figura 6.11 - Croqui das cantoneiras metálicas com furos .......................................................... 81
Figura 6.12 - Croqui de um conjunto de componentes ................................................................ 82
Figura 6.13 - Croqui da sub-montagem dos fotodiodos no suporte ............................................. 34 82
Figura 6.14 - Croqui da sub-montagem dos LED´s infravermelho no suporte ............................ 83
Figura 6.15 - Croquis das etapas de montagem do encoder didático ........................................... 37 84
Figura 6.16 - Circuito para ligação de um par emissor-receptor .................................................. 87
Figura 6.17 - Circuito quadrador .................................................................................................. 87
Figura 6.18 - Defasagem de 90º elétricos entre os sinais dos pares emissor-receptor ................. 34 88
Figura 6.19 - Circuito para ligação e condicionamento dos sinais dos fotodiodos e dos LED’s
infravermelho, incluindo a pinagem do CI LM324 ...................................................................... 88
Figura 6.20 - Ligação do encoder de referência ........................................................................... 37 89
Figura 6.21 - Conector de expansão ligando a protoboard ao módulo II ..................................... 89
Figura 6.22 - Formas de onda de um sistema resolvedor sem interpolador eletrônico ................ 92
Figura 6.23 - Diagrama SDL para o encoder didático ................................................................. 34 92
Figura 6.24 - Fluxograma simplificado de funcionamento do software embarcado ................... 93
Figura 6.25 - Teste de precisão de um encoder de menor resolução utilizando um encoder de
referência ..................................................................................................................................... 37
95
Figura 6.26 - Registradores de configuração da transmissão/recepção serial ............................. 97
Figura 6.27 - Desenvolvimento da interface com o usuário – GUI ............................................. 99
Figura 6.28 - Tela principal da interface com o usuário do kit de encoder didático .................. 105 34
Figura 7.1 - Mecânica do kit de encoder didático construído ..................................................... 109
Figura 7.2 - Eletrônica do kit de encoder didático construído .................................................... 110
Figura 7.3 - GUI do kit de encoder didático construído ............................................................. 34 111
Figura 7.4 - Resultados do ensaio I ............................................................................................ 112
Figura 7.5 - Resultados do ensaio II ........................................................................................... 113
Figura 7.6 - Resultados do ensaio III .......................................................................................... 114
Figura 7.7 - Resultados do ensaio IV ......................................................................................... 115
Figura 7.8 - Resultados do ensaio V ........................................................................................... 117
Figura 7.9 - Resultados do ensaio VI ......................................................................................... 118
Figura 7.10 - Resultados do ensaio VII ...................................................................................... 118
viii
Lista de Tabelas
ix
1. Introdução
1
2. Princípio de Funcionamento de Encoders Ópticos
Seguramente, todos já se depararam com o efeito moiré em algum momento. Ele está
presente em situações do dia-a-dia e pode trazer curiosidade àqueles que o observam. Exemplos
clássicos do efeito moiré surgem quando uma cortina se sobrepõe à outra e enxerga-se através
delas (também se aplica a tecidos), quando é possível ver um lado treliçado de uma ponte na
frente do outro, ou simplesmente quando colocamos dois pentes de cabelo frente-a-frente. Em
todos esses casos são observados padrões constituídos de áreas mais claras e mais escuras. A
Figura 2.1, retirada de (POST et al, 1994), ilustra o caso dos dois pentes e também mostra o
efeito da sobreposição de duas peneiras finas.
(a)
(b)
Figura 2.1 - Efeito moiré. (a) Sobreposição de duas peneiras. (b) Sobreposição de dois pentes.
(POST et al, 1994).
2
Em (AMIDROR, 2000) é possível encontrar uma descrição sobre a origem do efeito moiré.
Ele nada mais é do que um “fenômeno que ocorre quando estruturas repetitivas do mesmo tipo
(como retículos, telas ou grades) são sobrepostas e visualizadas”. Consiste então, de um novo
padrão de áreas claras e escuras alternadas (franjas moiré), que são observadas apenas com a
sobreposição, ou seja, não aparecem em nenhuma das estruturas originais isoladamente.
Segundo (AMIDROR, 2000), o termo moiré é proveniente da França, onde ele
originariamente se referia a um tipo especial de seda que possuía como característica um padrão
alternado e ondulado. Muitas vezes, tal tecido era colocado em duas camadas para se fazer
determinada roupa, de modo que o movimento dessa roupa no corpo da pessoa criasse um
movimento relativo dos tecidos, gerando um efeito visual bem interessante, o efeito moiré. É dito
que esse efeito em roupas já era utilizado pelos chineses desde os tempos antigos. Diante desses
relatos, vale ressaltar que o termo moiré não se refere ao nome de um cientista que estudou o
efeito moiré. Portanto, não é necessário que se inicie a escrita desse termo com letra maiúscula.
O efeito moiré pode ser aplicado em inúmeros campos do conhecimento e tecnologia. Isso
ocorre graças à grande sensibilidade aos menores deslocamentos das estruturas sobrepostas. São
exemplos de aplicações descritas em (POST et al, 1994) e (AMIDROR, 2000) a medição de
deformações em objetos (deslocamentos no plano e fora dele), a medição de ângulos e
movimentos muito pequenos, alinhamento óptico, cristalografia, documentos anti-falsificação,
arte e diversão. Amostras do efeito moiré em cores, exibidas em (AMIDROR, 2000), podem ser
observadas na Figura 2.2, onde se vê um misto de arte e diversão. Convém lembrar que o efeito
moiré pode ser indesejado em algumas situações como, por exemplo, na imagem de monitores de
computadores e principalmente na área de impressão e reprodução colorida.
Figura 2.2 - Efeito moiré em cores. (a) Padrão RGB. (b) Verde e branco. (c) Vermelho e branco.
(AMIDROR, 2000).
3
Claro
Escuro
Claro
Escuro
Claro
∞
f1 ( x, y ) = a1 + ∑ b1n cos[nφ1 ( x, y )]
n =1
∞
f 2 ( x, y ) = a2 + ∑ b2 m cos[mφ2 ( x, y )] , (2.1)
m =1
onde φ ( x, y ) é a função que descreve a forma básica das linhas da grade. Para a freqüência
fundamental, φ ( x, y ) é igual a um inteiro multiplicado por 2π no centro de cada linha clara e é
igual a um inteiro e meio multiplicado por 2π no centro de cada linha escura. Os coeficientes b
determinam o perfil das linhas da grade (i. e., onda quadrada, triangular, senoidal, etc.). Para um
perfil de linha senoidal, bi1 é o único termo não nulo.
Quando essas duas grades são sobrepostas, a função transmissão de intensidade resultante é
dada pelo produto
4
f1 ( x, y ) f 2 ( x, y ) =
∞ ∞ ∞ ∞
a1a 2 + a1 ∑ b2 m cos[mφ 2 ( x, y )] + a 2 ∑ b1n cos[nφ1 ( x, y )] + ∑∑ b1n b2 m cos[nφ1 ( x, y )] cos[mφ2 ( x, y )] .
m =1 n =1 m =1 n =1
(2.2)
Os três primeiros termos da Equação 2.2 fornecem informações que podem ser
determinadas observando os dois padrões separadamente. O último termo é o termo de interesse,
e pode ser reescrito como
1
Termo 4 = b11b21 cos[φ1 ( x, y ) − φ 2 ( x, y )]
2
1 ∞ ∞
+ ∑∑ b1n b2 m cos[nφ1 ( x, y) − mφ2 ( x, y)] ;
2 m =1 n=1
n e m ambos ≠ 1
1 ∞ ∞
+ ∑∑ b1n b2m cos[nφ1 ( x, y) + mφ2 ( x, y)] x .
2 m =1 n=1
(2.3)
Esta expressão mostra que ao se sobrepor duas grades, a soma e a diferença entre as duas
grades é obtida. O primeiro termo da Equação 2.3 representa a diferença entre o padrão
fundamental e as duas grades. Ele pode ser usado para predizer o padrão moiré mostrado na
Figura 2.4. Assumindo que as duas grades estão orientadas com um ângulo 2α entre elas e com o
eixo y do sistema de coordenadas biseccionando esse ângulo, as duas funções das grades φ1 ( x, y )
e φ 2 ( x, y ) podem ser escritas como
2π
φ1 ( x, y ) = ( x cos α + y sin α )
λ1
e
2π
φ 2 ( x, y ) = ( x cos α − y sin α ) , (2.4)
λ2
5
y
2α
x
λ / 2 sinα
Plano de
Observação
Figura 2.4 - Efeito moiré entre duas grades de linhas retas com mesmo espaçamento e um ângulo
2α entre elas. (CREATH et al, 1992).
2π 4π
φ1 ( x, y ) − φ 2 ( x, y ) = x cos α + y sin α , (2.5)
λbeat λ
λ1λ2
λbeat = . (2.6)
λ2 − λ1
Usando a Equação 2.3, as franjas moiré serão as linhas cujos centros satisfazem a equação
φ1 ( x, y ) − φ 2 ( x, y ) = M 2π . (2.7)
Três casos separados para o efeito moiré podem ser considerados. Quando λ1 = λ2 = λ , o primeiro
termo da Equação 2.5 é zero, e os centros das franjas são dados por
Mλ = 2 y sin α , (2.8)
6
onde M é um inteiro correspondendo à ordem da franja. Como esperado, a Equação 2.8 é a
equação de linhas horizontais igualmente espaçadas, como pode ser visto na Figura 2.4.
O outro caso simples ocorre quando as grades estão em paralelo, ou seja, α = 0 . Isso faz
com que o segundo termo da Equação 2.5 seja anulado. As franjas moiré, nesse caso, serão as
linhas que satisfazem
Mλbeat = x . (2.9)
Essas franjas são igualmente espaçadas e são linhas verticais paralelas ao eixo y .
Para o caso mais geral, onde as duas grades têm diferentes espaçamentos entre linhas e o ângulo
entre as grades é diferente de zero, a equação para as franjas moiré será
λ
Mλ = x cos α + 2 y sin α . (2.10)
λbeat
Essa é a equação de linhas retas cujo espaçamento e orientação é dependente da diferença relativa
entre os espaçamentos das duas grades e do ângulo entre as grades. A Figura 2.5 mostra os
padrões moiré para esses três casos.
Inclinado
Mesma Freqüência
Não Inclinado
Freqüências Diferentes
Inclinado
Freqüências Diferentes
Figura 2.5 - Padrões moiré causados pela sobreposição de duas grades de linhas retas. (CREATH
et al, 1992).
7
y
α
α
λ1
λ2
θ
B
A
D x
C E
Franjas
moiré
Grades
Figura 2.6 - Geometria utilizada para determinar o espaçamento e o ângulo das franjas moiré.
Uso de duas grades de freqüências diferentes e inclinadas entre si. (CREATH et al, 1992).
A orientação e o espaçamento das franjas moiré para o caso geral podem ser determinados
a partir da geometria mostrada na Figura 2.6. A distância AB pode ser escrita em termos dos
espaçamentos das duas grades,
λ1 λ2
AB = = , (2.11)
sin(θ − α ) sin(θ + α )
onde θ é o ângulo que as franjas moiré fazem com o eixo y . Depois de rearranjar os termos, o
ângulo de orientação das franjas θ é dado por
λ +λ
tan θ = tan α 1 2 . (2.12)
λ1 − λ2
8
λ1 C
DE = = , (2.13)
sin 2α sin(θ + α )
sin(θ + α )
C = λ1 . (2.14)
sin 2α
Substituindo a orientação das franjas θ , o espaçamento da franjas pode ser encontrado em termos
dos espaçamentos das grades e do ângulo entre as grades,
λ1λ2
C= . (2.15)
λ sin 2α + (λ2 cos 2α − λ1 ) 2
2
2
2
2.2 Batimentos
y1 = A cos(k1 x − ω1t )
y 2 = A cos(k 2 x − ω 2 t ) , (2.16)
9
onde A é a amplitude das ondas, ki é a freqüência espacial e ωi é a freqüência temporal. A onda
1 1
y = 2 A cos [(k1 + k 2 ) x − ( ω1 + ω 2 ) t ] cos [(k1 − k 2 ) x − ( ω1 − ω 2 ) t ] (2.18)
2 2
1 1
cos α + cos β = 2 cos (α + β ) cos (α − β ) . (2.19)
2 2
(k + k 2 ) ( ω + ω2 ) (k − k 2 ) ( ω − ω2 )
y = 2 A cos 1 x− 1 t cos 1 x− 1 t , (2.20)
2 2 2 2
onde se nota a presença de termos que contêm a soma das freqüências e de termos que contêm a
subtração das freqüências, tanto no tempo quanto no espaço. Para existir o batimento, os valores
das respectivas freqüências devem ser diferentes, mas próximos um do outro ( k1 ≅ k 2 e ω1 ≅ ω 2 ).
10
2π (24 + 20) 2π (24 − 20)
y = 2 cos x cos x = 2 cos(44π x) cos(4π x) , (2.21)
2 2
onde é possível notar valores distintos no argumento dos cossenos. O cosseno cujo argumento é
proveniente da subtração de freqüências ( 4π ) irá modular a amplitude do sinal de maior
freqüência ( 44π ). É justamente essa modulação que causa o aparecimento dos batimentos. A
Figura 2.7 apresenta os gráficos das ondas individualmente. As três ondas plotadas no mesmo
gráfico podem ser observadas na Figura 2.8. A freqüência de batimento neste exemplo é dada por
4
y1
(a) 0
-1
-2
-3
-4
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
4
y2
(b) 0
-1
-2
-3
-4
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
4
y=y1+y2
(c) 0
-1
-2
-3
-4
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Figura 2.7 - Exemplo de batimento. (a) Onda y1. (b) Onda y2. (c) Onda resultante y=y1+y2.
11
4
y1
y2
y=y1+y2
3
-1
-2
-3
-4
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Figura 2.8 - Exemplo de batimento. Ondas y1, y2, e resultante y=y1+y2 num mesmo gráfico.
12
1 1
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Figura 2.9 - Exemplo de batimento gerado pela sobreposição de duas grades. Uma grade
com n1 = 352 linhas e outra com n 2 = 350 linhas.
1 1
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Figura 2.10 - Exemplo de batimento gerado pela sobreposição de duas grades. Uma grade
com n1 = 354 linhas e outra com n 2 = 350 linhas.
13
1 1
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Figura 2.11 - Exemplo de batimento gerado pela sobreposição de duas grades. Uma grade
com n1 = 358 linhas e outra com n2 = 350 linhas.
Os batimentos associados ao efeito moiré podem ser visualizados de um outro modo. Eles
também surgem com a sobreposição de duas grades circulares com número diferente de linhas
radiais. O programa (em MATLAB) apresentado no Anexo III auxilia na criação de grades
circulares de linhas radiais. O número de linhas da grade é definido na variável Nlinhas .
Exemplos de grades geradas podem ser vistas nas Figuras 2.12 e 2.13, com Nlinhas = 100 e
Nlinhas = 101 respectivamente. Essas duas grades, quando sobrepostas, originam a Figura 2.14,
onde visivelmente se observa uma área mais clara e outra mais escura, representando um
batimento. Considerando agora a sobreposição de uma grade circular com Nlinhas = 100 e outra
com Nlinhas = 102 , obtém-se a Figura 2.15. Nesse caso aparecem duas áreas claras e duas
escuras, em outras palavras, dois batimentos. Mais uma vez, o número de batimentos corresponde
à diferença entre o número de linhas de uma grade e o número de linhas da outra grade. Essa
correspondência sempre ocorre e está relacionada com a freqüência espacial. Sendo assim, se a
diferença entre o número de linhas fosse 4, o número de batimentos observados também seria 4.
Esse último caso é mostrado na Figura 2.16.
14
Figura 2.12 - Exemplo de grade circular de linhas radiais com Nlinhas = 100 .
Figura 2.13 - Exemplo de grade circular de linhas radiais com Nlinhas = 101 .
Figura 2.14 - Exemplo de batimento gerado pela sobreposição de duas grades circulares.
Uma grade com Nlinhas = 100 e outra com Nlinhas = 101 .
15
Figura 2.15 - Exemplo de batimento gerado pela sobreposição de duas grades circulares.
Uma grade com Nlinhas = 100 e outra com Nlinhas = 102 .
Figura 2.16 - Exemplo de batimento gerado pela sobreposição de duas grades circulares.
Uma grade com Nlinhas = 100 e outra com Nlinhas = 104 .
16
ou evento, a fim de descrevê-lo. Deve haver uma correspondência entre as quantidades numéricas
medidas e as propriedades descritas. Sistemas de medição podem ser utilizados para
monitoramento de processos, como a medição de temperatura, de volume de líquidos, ou de
dados clínicos. Também podem ser utilizados no controle de processos, como no controle de
nível de um tanque, ou no controle de posição de uma esteira. Por fim, sistemas de medição
podem auxiliar na engenharia experimental, como no estudo de distribuição de temperaturas num
objeto com formato irregular, ou na determinação da distribuição de forças num teste de colisão
de um veículo, exemplos de (PALLÁS-ARENY et al, 1991). A Figura 2.17, traduzida do mesmo
livro, mostra o fluxo de dados em um sistema de medição e controle. Em uma medição, é
imprescindível que haja a aquisição das informações por um sensor ou transdutor, mas também é
necessário que ocorra o processamento dessas informações e a apresentação dos resultados numa
forma que o ser humano possa perceber.
Objetivos
Alarmes
Sistema, planta
ou processo Controlador
Perturbações Supervisor
Controle manual
Figura 2.17 - Estrutura geral de um sistema de medição e controle. (PALLÁS-ARENY et al, 1991).
17
2.3.2 Transdutores
“1) Transdutores elétricos podem ser desenvolvidos para medir qualquer propriedade não
elétrica, selecionando um material apropriado. Qualquer variação em um parâmetro não elétrico
leva a uma variação em um parâmetro elétrico, devido à estrutura eletrônica do material.
2) Energia não é consumida do processo que está sendo medido porque os sinais na saída
do transdutor podem ser amplificados. Com amplificadores eletrônicos, é fácil a obtenção de
ganhos no sinal que ultrapassam 1010 num único estágio.
18
3) Um número cada vez maior de diferentes circuitos integrados estão disponíveis para o
condicionamento de sinais eletrônicos. Inclusive existem transdutores que já incorporam esse
condicionamento do sinal.
Reforça afirmando que “um transdutor é um dispositivo que retira energia do sistema que
ele mede para gerar um sinal de saída que pode ser convertido num sinal elétrico, o qual
corresponde à quantidade medida”. Cita que algumas vezes os termos sensor e transdutor são
utilizados como sinônimos, embora sensor esteja mais ligado à capacidade de adquirir
informações não percebidas pelos sentidos humanos, e transdutor esteja ligado apenas ao fato de
converter tipos de sinais. Conclui dizendo que “a distinção entre transdutor de entrada (sinal
físico / sinal elétrico) e transdutor de saída (sinal elétrico / exibição ou atuação) raramente é feita
nos dias de hoje. E a tendência, particularmente em robótica, é em direção ao uso do termo
sensor para se referir a um transdutor de entrada, e o uso do termo atuador para se referir a um
transdutor de saída”.
Os tópicos seguintes farão uma abordagem sobre o encoder, considerado um transdutor
digital, segundo (De SA, 1990). Embora o encoder possa fazer uso de um outro transdutor
internamente (ex. célula fotoelétrica), o dispositivo como um todo pode ser chamado de
transdutor, pois converte um sinal de posição/deslocamento em um sinal elétrico. Além disso,
com o condicionamento apropriado do sinal (ex. transformação de senóide para onda quadrada),
o encoder pode ser considerado um transdutor digital, assim como fez (De SA, 1990).
19
2.4 Encoders
20
Setores
eqüidistantes
Dispositivo de
leitura fixo
Eixo
Disco
Rotação
Régua
Acoplamento
Movimento linear
Figura 2.18 - Princípio de encoder incremental rotativo e encoder incremental linear. (PALLÁS-
ARENY et al, 1991).
Primeiro em relação à perda de informação da posição sempre que ocorrer a falta de alimentação
elétrica, segundo em relação à necessidade da utilização de contadores up-down para fazer a
integração com os circuitos externos, e por fim, principalmente em relação à impossibilidade de
se determinar a direção do movimento. A determinação da direção do movimento requer o uso de
um outro dispositivo de leitura, ou ainda de um elemento adicional (régua ou disco). Nesses casos
tem-se um encoder propriamente dito, ou seja, com detecção de movimento e direção.
Independentemente da natureza da propriedade utilizada para diferenciar os setores da
régua ou do disco, a mecânica do posicionamento dos dois dispositivos de leitura combinado com
o posicionamento dos elementos móveis (réguas ou discos) é a responsável pela defasagem de
90º elétricos existente entre os dois sinais fornecidos por um encoder incremental. A eletrônica
embarcada trata os sinais e os coloca em forma de pulsos (onda quadrada). Diz-se então, que
esses dois sinais, usualmente chamados de canal A e canal B, estão em quadratura. Normalmente
um encoder incremental possui uma marcação (na régua ou no disco) indicando a posição
absoluta “zero”. Nesse caso, é preciso a utilização de um terceiro dispositivo de leitura. O mesmo
irá fornecer o sinal de “zero”, chamado de Z, e que na maioria das vezes consiste de um pulso
com fase idêntica à fase do canal A. A Figura 2.19 apresenta o comportamento desses três sinais.
21
90º
22
A resolução de um encoder incremental linear é dada em pulsos por unidade de
comprimento, ou simplesmente pela distância (µm) correspondente a um único incremento/pulso.
Já a resolução de um encoder rotativo é dada em pulsos por revolução (PPR), mas também pode
ser dada na forma do ângulo correspondente a um único incremento/pulso.
Em encoders ópticos, a propriedade física utilizada para diferenciar os setores de uma régua
ou um disco é a óptica. Réguas ou discos de encoders ópticos incrementais podem ser
constituídos de setores translúcidos e opacos ou de setores refletivos e não refletivos. Nos dois
casos, os dispositivos de leitura são compostos por uma fonte emissora de luz, geralmente um
LED, e por um detector de luz (fotodetector), que pode ser um LDR, uma célula fotoelétrica, um
fototransistor ou um fotodiodo. Pode ou não haver elementos de focalização (lentes). Quando
setores translúcidos e opacos são utilizados, o elemento móvel (régua ou disco) deve estar
posicionado entre o emissor e o detector de luz. O elemento é comumente feito de vidro
transparente e os setores opacos são obtidos através da deposição de cromo. Um esquema de um
encoder óptico incremental rotativo desse tipo pode ser visto na Figura 2.21, traduzida do
(CATÁLOGO TURCK, acesso em 2007). Quando setores refletivos e não refletivos são
utilizados, o emissor e detector devem ser posicionados do mesmo lado. A Figura 2.22, traduzida
do (CATÁLOGO RENISHAW, acesso em 2007), mostra um esquema de encoder óptico
incremental linear que usa essa técnica.
Placa PCB
Sensor
Disco
Máscara
LED
Figura 2.21 - Esquema de um encoder com disco constituído de setores transparentes e opacos.
(CATÁLOGO TURCK, acesso em 2007).
23
LED
Fotodetector
Grade
Lente
Máscara do
dispositivo de leitura Marca de referência
®
óptica IN-TRAC
Régua
Figura 2.22 - Esquema de um encoder com régua constituída de setores refletivos e não refletivos.
(CATÁLOGO RENISHAW, acesso em 2007).
Nos dois casos, de acordo com (PALLÁS-ARENY et al, 1991), os problemas associados
são aqueles advindos da sujeira do ambiente, das limitações de temperatura e tempo de resposta
dos componentes optoeletrônicos, e da possível vibração dos elementos de focalização.
Como já foi dito, um encoder incremental precisa fornecer dois sinais (canal A e canal B)
com 90º elétricos de defasagem, a qual é obtida pela mecânica do posicionamento dos
dispositivos de leitura e elementos móveis. Essa mecânica para obtenção da defasagem pode ser
implementada de diversas formas. Alguns métodos serão apresentados a seguir e independem se
os setores são do tipo translúcido/opaco ou do tipo refletivo/não refletivo.
O primeiro método consiste na utilização de uma máscara fixa contendo quatro janelas de
espaçamentos idênticos ao espaçamento de um único setor. Na direção de cada janela é
posicionado um fotodetector, que neste exemplo é uma célula fotoelétrica. As quatro janelas são
dispostas de tal modo que os sinais na saída das quatro fotocélulas estão defasados de 90º
elétricos entre si. Esses sinais de tensão são aproximadamente senoidais, pois o movimento
relativo da régua ou disco em relação à máscara faz com que a luminosidade em cada janela varie
de um mínimo até um máximo. Lembrando que a luminosidade pode ser transmitida ou refletida.
A Figura 2.23, traduzida de (WOOLVET, 1977), ilustra essa técnica e exibe os sinais na saída
das células fotoelétricas. O sinal E11 está 180º elétricos defasado em relação ao sinal E12, assim
como o sinal E21 está 180º elétricos defasado em relação ao sinal E22. Cada par de sinais E11 / E12
e E21 / E22 terá suas componentes de tensão somadas, gerando dois sinais, aqui chamados de a e b.
24
máscara
régua
(a)
movimento da régua
saída da
célula
(b)
deslocamento da régua
Figura 2.23 - Máscara, em (a), com quatro janelas dispostas de modo a gerar uma defasagem de
90º elétricos entre os sinais das fotocélulas, em (b). (WOOLVET, 1977).
Esses dois sinais, ainda senoidais, já estão defasados de 90º elétricos entre si. Logo, é necessário
o uso de circuitos quadradores para se obter sinais de onda quadrada. Uma vez obtido os dois
sinais de onda quadrada, tem-se os canais A e B. A Figura 2.24, baseada em (WOOLVET, 1977),
esquematiza o circuito de condicionamento dos sinais e mostra as formas de onda envolvidas.
Dependendo do componente fotodetector, pode ser preciso ainda amplificar ou inverter os sinais.
E11
a
- +
a A
quadrador b
E12
- +
- +
E21 b
quadrador
B A
- +
E22
B
(a) (b)
25
Segundo (PALLÁS-ARENY et al, 1991), encoders ópticos fornecem as maiores resoluções
e o fator limitante é o tamanho do fotodetector, principalmente neste método apresentado. Nele, a
luminosidade é dependente do posicionamento de um único setor, tornando o sistema mais
suscetível a erros de contagem devido a interferências ou contaminação das janelas. Os métodos
seguintes buscam contornar esse problema fazendo uso do efeito moiré médio, ao mesmo tempo
em que conseguem maiores resoluções.
Um método possível consiste também na utilização de uma máscara fixa, só que ao invés
de ter quatro janelas, ela possui quatro grades com regiões translúcidas e opacas alternadas. O
espaçamento das grades é exatamente igual ao espaçamento dos setores da régua ou disco, como
mostrado na Figura 2.25, adaptada de (PALLÁS-ARENY et al, 1991). Na direção de cada grade
é posicionado um fotodetector, o qual receberá a máxima luminosidade quando a grade estiver
perfeitamente alinhada com os setores do elemento móvel (régua ou disco). Quando o elemento é
movido de meio incremento, ou seja, quando é percorrido um setor, a luminosidade decresce até
atingir um mínimo. Nesse instante, o alinhamento faz com que a luminosidade seja totalmente
bloqueada. Vários incrementos consecutivos geram um sinal luminoso praticamente senoidal, que
será convertido em sinal elétrico pelo fotodetector. Em todo o tempo, o fotodetector recebe a
luminosidade média, não mais dependendo da luminosidade correspondente a um único setor. As
quatro grades existentes na máscara também são dispostas fisicamente com o intuito de se obter
quatro sinais defasados eletricamente de 90º entre si, como pode ser observado na Figura 2.26,
traduzida de (WOOLVET, 1977). O condicionamento dos sinais pode ser feito de forma similar
àquela apresentada, e, caso os fotodetectores sejam células fotoelétricas, o esquema eletrônico é
idêntico ao apresentado no item (a) da Figura 2.24.
Fotodetector Fotodetector
Grade Grade
LED
LED
Elemento móvel
Elemento móvel
(a) (b)
Figura 2.25 - Grades com mesmo espaçamento dos setores presentes no elemento móvel. (a) Setores
translúcidos / opacos. (b) Setores refletivos / não refletivos. (PALLÁS-ARENY et al, 1991).
26
Régua
Máscara
Fotocélulas
Figura 2.26 - Máscara com quatro grades dispostas de modo a gerar uma defasagem de 90º
elétricos entre os sinais dos fotodetectores, no caso fotocélulas. Utiliza o efeito moiré originado
da sobreposição de grades igualmente espaçadas. (WOOLVET, 1977).
p = afastamento (pitch)
Elemento móvel
Figura 2.27 - Máscara com grade inclinada em relação aos setores presentes no elemento móvel,
gerando uma franja moiré. (PALLÁS-ARENY et al, 1991).
27
Setores
Régua
Máscara
Fotocélulas
Figura 2.28 - Dispositivos de leitura distribuídos verticalmente para obter os sinais defasados.
Utiliza o efeito moiré originado da sobreposição de grades inclinadas entre si. (WOOLVET,
1977).
Se o deslocamento da régua for para a direita, a franja se movimentará para baixo. Nesse método,
os dispositivos de leitura devem ser posicionados perpendicularmente em relação ao
deslocamento do elemento móvel, como ilustrado na Figura 2.28, traduzida de (WOOLVET,
1977). Na figura, observa-se a existência de quatro células fotoelétricas, as quais estão
distribuídas novamente com a finalidade de se gerar quatro sinais defasados de 90º elétricos. O
condicionamento dos sinais pode ser realizado da mesma maneira já abordada.
Um último método, aqui discutido, não se utiliza de máscara para gerar o efeito moiré. O
efeito surge da sobreposição de dois elementos, um estático e outro móvel. A condição é que a
diferença entre o número de pares de setores translúcido-opaco do elemento estático e do
elemento móvel seja 1. Em outras palavras, se o elemento estático tiver N pares de setores
translúcido-opaco, o elemento móvel deverá ter N − 1 pares, ou vice-versa. A diferença de 1 é
justamente para o aparecimento de um único batimento associado ao efeito moiré. A Figura 2.29
mostra exatamente esse comportamento utilizando réguas e discos.
4
1 2 3 4
2 3
(a) (b) 1
Figura 2.29 - Sobreposição de elementos com diferença de 1 par. (a) Duas réguas. (b) Dois discos.
28
4
1 2 3 4
2 3
(a) (b) 1
Figura 2.30 - Sobreposição de elementos com diferença de 1 par e após o deslocamento relativo
equivalente a um setor/espaçamento. (a) Duas réguas. (b) Dois discos.
Nela pode-se observar o aparecimento uma região mais clara e uma região mais escura.
Dispositivos de leitura, com ou sem auxílio de grades para leitura, são posicionados nas direções
indicadas de 1 a 4, mais uma vez resultando em quatro sinais defasados de 90º elétricos entre si.
A cada deslocamento relativo entre os elementos equivalente a um setor/espaçamento, tem-se a
luminosidade oposta à anterior em cada dispositivo de leitura. Isso pode ser verificado fazendo a
comparação da Figura 2.29 com a Figura 2.30. Logo, um deslocamento relativo equivalente a
dois setores/espaçamentos fará com que a luminosidade em cada dispositivo de leitura varie de
um valor inicial até um valor final e volte ao valor inicial, correspondendo a um pulso, ou
melhor, um incremento.
Os métodos apresentados fazem uso de quatro dispositivos de leitura, os quais fornecem
quatro sinais defasados de 90º elétricos. Estes sinais são combinados eletronicamente para gerar
dois sinais de onda quadrada, o canal A e o canal B, minimizando erros mecânicos. É possível
obter diretamente esses dois canais a partir de apenas dois dispositivos de leitura, desde que esses
dispositivos estejam posicionados de modo a garantir a defasagem de 90º e que seus sinais
tenham amplitude suficiente para detecção, a partir da luminosidade existente.
Como já foi citado, encoders ópticos possuem as maiores resoluções. Mesmo assim,
existem técnicas para aumentar sua resolução, como a utilização de resolvedores eletrônicos ou a
utilização de mais dispositivos de leitura para se obter sinais com defasagens diferentes
(resolvedores ópticos). Técnicas estas que serão estudadas no capítulo seguinte.
29
Para efeito de ilustração, a Figura 2.31 mostra exemplos comerciais de encoders ópticos
incrementais lineares presentes no (CATÁLOGO RENISHAW, acesso em 2007). A Figura 2.32
mostra exemplos de encoders ópticos incrementais rotativos e um desenho de encoder em corte,
ambos do (CATÁLOGO TURCK, acesso em 2007).
(a)
Sinais de saída
Entrada 5-30 VDC
(b)
Figura 2.32 - Encoder óptico incremental rotativo. (a) Exemplos comerciais. (b) Desenho em
corte. (CATÁLOGO TURCK, acesso em 2007).
30
2.4.3 Fundamentos do Encoder Absoluto
Rotação
Eixo
(a) (b)
Figura 2.33 - Encoder absoluto. (a) Exemplo de um disco. (PALLÁS-ARENY et al, 1991).
(b) Esquema de um encoder absoluto por contato. (HOESCHELE, 1968).
31
Quando a propriedade é a magnética, não há o contato, e os dispositivos de leitura são ímas
envolvidos por espiras que sentem a variação do fluxo magnético provocada pela presença de
áreas magnéticas e não magnéticas, codificadas no disco. Maiores detalhes desses dois casos
podem ser encontrados em (WOOLVET, 1977). Em relação ao uso da propriedade óptica,
também não existe o contato entre dispositivos de leitura e disco. Esse caso será tratado mais
adiante, mas cabe antecipar que os dispositivos de leitura são pares emissor/receptor de luz, e o
disco é codificado em áreas translúcidas e opacas.
O código presente no disco associa a cada posição um conjunto de N sinais que são lidos
pelos N dispositivos de leitura. Cada conjunto de N sinais é um conjunto de N bits, que
variam de acordo com a resolução do encoder absoluto. Por exemplo, considerando um encoder
com N = 10 bits, a quantidade de posições codificadas é dada por 2 N = 210 = 1024 . Esse valor
corresponde à resolução do encoder, que normalmente é potência de 2 ou múltiplo de 360. Os
sinais de saída em encoders comerciais estão disponíveis na forma paralela ou em algum padrão
serial do tipo RS ou SSI. Os bits mais significativos estão associados aos dispositivos de leitura
posicionados mais próximos do centro do disco, ou seja, nas trilhas mais internas.
Existem diferentes tipos de código que podem ser gravados em um disco de encoder
absoluto. O código binário natural é o mais fácil de ser interpretado por circuitos eletrônicos
simples, e não requer nenhum tipo de conversão para se determinar a posição real do encoder, e
conseqüentemente, a posição real do sistema ao qual ele está acoplado. O código BCD (Binary
Coded Decimal) também pode ser empregado. Ambos os códigos podem ser analisados na
Tabela 2.1, adaptada de (PALLÁS-ARENY et al, 1991).
Tabela 2.1 - Códigos comuns em discos de encoders absolutos. (PALLÁS-ARENY et al, 1991).
BCD
Binário natural Gray
Número Código Padrão
decimal
Código Padrão Dezena Unidade Dezena Unidade Código Padrão
32
Após uma rápida inspeção tanto no código binário natural quanto no código BCD, nota-se
que em cada mudança de valor, equivalente num disco a uma mudança de posição, ocorre a
inversão de um ou mais bits. As mudanças que envolvem a inversão de mais de um bit por vez
são críticas. Elas exigem um perfeito alinhamento das trilhas do disco, caso contrário, podem
causar ambigüidade. O exemplo a seguir, modificado de (PALLÁS-ARENY et al, 1991), explica
bem isso. Considere um encoder absoluto de 10 bits com código binário natural. As posições 0, 1,
2, 3 e 4 são dadas por
Posição 0 0000000000
Posição 1 0000000001
Posição 2 0000000010
Posição 3 0000000011
Posição 4 0000000100
Supondo que os dispositivos de leitura estejam ligeiramente desalinhados, por exemplo, os dois
primeiros estejam um pouco adiantados. Então, a saída lida após um movimento da posição 3
para a posição 4 seria 0 0 0 0 0 0 0 0 0 0, que representa a posição 0.
Para evitar essa ambigüidade, vários métodos foram desenvolvidos. Um deles consiste em
um código cíclico contínuo onde há a inversão de somente um bit a cada mudança de valor. O
código Gray é o exemplo mais comum desse tipo de código, e também pode ser analisado na
Tabela 2.1. Outros métodos podem eliminar a ambigüidade sem a necessidade da inversão de um
único bit por vez, são exemplos as lógicas V-scan e U-scan, detalhadas em (HOESCHELE, 1968)
e (WOOLVET, 1977).
A utilização do código Gray exige a interpretação dos sinais de saída, seja para determinar
a posição real ou para uso aritmético. Segundo (HOESCHELE, 1968), o código Gray deve ser
traduzido para o sistema binário natural ou para um algum sistema numérico aplicável. A
tradução para o sistema binário natural pode ser feita por um circuito eletrônico simples, como o
reproduzido na Figura 2.34, mas também pode ser programada em um computador. A expressão
Booleana para a conversão do código Gray para binário é
( ) ( )
Bn −1 = Gn −1 ⋅ B n + G n −1 ⋅ Bn , (2.22)
33
(a) (b)
Figura 2.34 - Circuitos para conversão do código Gray para o código binário natural.
(a) Utilizando portas lógicas elementares. (b) Utilizando portas XOR. (HOESCHELE, 1968).
Com uma análise mais profunda do código de Gray, pode-se verificar que a propriedade de
inversão de um único bit por vez só vale completamente quando o número total de valores é
potência de 2. Quando o número total de valores não satisfaz essa relação, como múltiplos de
360, a propriedade não é obedecida na transição do maior valor para o valor zero, e vice-versa.
Ver Tabela 2.2. Por exemplo, se o número total de valores for 10, que não é potência de 2, as
mudanças entre 9 e 0 (1101 e 0000 em Gray) provocam a inversão de 3 bits de uma só vez.
Uma maneira de contornar esse problema é causando um deslocamento D a partir do valor
zero no código Gray. Seu valor pode ser determinado por
2 n − N TOT
D= , (2.23)
2
34
Tabela 2.2 - Código binário natural e código Gray. A transição para o valor zero com a mudança
de um único bit só ocorre quando o número total de valores é potência de 2.
2n − NTOT 24 − 10 16 − 10 6
D = = = = = 3. (2.24)
2 2 2 2
O efeito do deslocamento pode ser observado na Tabela 2.3, onde a transição crítica 0-9 foi
substituída pela transição 3-12, não crítica.
35
Tabela 2.3 - Exemplo de código Gray deslocado em 3 unidades. Número total de valores N TOT = 10 .
36
2.4.4 Encoder Óptico Absoluto
Hoje em dia, a maioria dos encoders absolutos faz uso de princípios ópticos e fotoelétricos.
Falando especificamente de encoders absolutos rotativos, que são os mais comuns, eles possuem
um disco constituído de áreas translúcidas e opacas. A distribuição dessas áreas sobre o disco é
definida de acordo com o código utilizado. Normalmente o disco é feito de vidro transparente e o
código é gravado na superfície através da deposição de cromo, que não permite a passagem de
luz. Segundo (WOOLVET, 1977), esses encoders possuem ainda uma fonte de luz, um sistema
de focalização e um conjunto de fotodetectores dispostos radialmente. Esses elementos podem ser
vistos na Figura 2.36, traduzida do mesmo livro, onde os fotodetectores são fotocélulas. O autor
ressalta a importância da qualidade do disco na performance do encoder. O disco deve ter um alto
grau de precisão e possuir trilhas com arestas agudas, minimizando ruídos durante as transições
0-1 e 1-0.
Ainda segundo (WOOLVET, 1977), a fonte de luz utilizada pode ser uma pequena lâmpada
com filamento de tungstênio ou um dispositivo do estado sólido como, por exemplo, um LED. A
Figura 2.37, também traduzida do livro, ilustra dois sistemas básicos de focalização utilizando
uma lâmpada pequena como fonte de luz. A Figura 2.37 (a) mostra uma lente focalizando a luz
sobre o disco e os fotodetectores expostos à luminosidade através de uma fenda estreita,
precisamente posicionada na linha de leitura. A Figura 2.37 (b) mostra um arranjo alternativo,
onde uma lente cilíndrica é incluída no sistema com o objetivo de “linearizar” o feixe de luz na
direção da linha de leitura.
Fenda
Lâmpada
Fotocélulas
37
Fenda
Lâmpada Lâmpada
Fotocélulas Fotocélulas
Lente
cilíndrica
(a) (b)
Figura 2.37 - Sistemas básicos de focalização. (a) Utilização de uma fenda na linha de leitura.
(b) Utilização de uma lente cilíndrica para focalizar a luz na linha de leitura. (WOOLVET, 1977).
38
3. Resolvedores
Neste capítulo, serão apresentados dois tipos de sistemas resolvedores, que nada mais são
do que sistemas que permitem aumentar a resolução de um encoder, seja ele incremental ou
absoluto, a partir de sinais defasados adequadamente. O primeiro tipo de sistema resolvedor a ser
analisado é o resolvedor eletrônico, cujo princípio para obtenção de sinais defasados está na
utilização de um circuito interpolador eletrônico. O resolvedor óptico é o outro tipo de sistema
resolvedor que será discutido. Nele, os sinais defasados provêm da existência e posicionamento
de vários dispositivos de leitura.
39
Encoders incrementais já possuem um disco do tipo incremental, ou seja, com uma trilha
radial constituída de dois tipos de setores, por exemplo, opacos e translúcidos. Para um encoder
absoluto, é necessário incluir na periferia do disco uma trilha radial, cujo espaçamento dos
setores deve ser metade do espaçamento dos setores da trilha mais externa (relativa ao bit menos
significativo). Em ambos os discos, dispositivos de leitura são posicionados na trilha radial para
se obter dois sinais senoidais defasados de 90º elétricos entre si, chamados de sin (seno) e cos
(cosseno). Em alguns casos, dois ou mais dispositivos de leitura juntamente com circuitos para
efetuar a média são utilizados para determinar cada sinal, minimizando erros mecânicos.
Na presente análise, será considerado o uso de apenas um dispositivo de leitura para gerar o
sinal sin e um dispositivo de leitura para gerar o sinal cos. A Figura 3.1 ilustra esse início de
análise. No item (a), tem-se um exemplo de um disco de encoder óptico incremental, onde uma
máscara com duas grades é utilizada para originar a defasagem dos sinais sin e cos. No item (b),
pode ser visto um exemplo de um disco de encoder óptico absoluto de 7 bits, onde foi incluída
uma trilha radial na periferia. Também é utilizada uma máscara com duas grades para originar a
defasagem dos sinais. Em (c), observa-se a sobreposição de dois discos incrementais, cuja
diferença no número de pares translúcido-opaco é 1. Aqui, os 90º elétricos estão relacionados
com os 90º angulares. Portanto, os dois dispositivos de leitura são posicionados a 90º angulares
um do outro, dando origem aos sinais sin e cos. Duas grades são utilizadas, neste caso, para
facilitar a captura da luminosidade, além de estarem alinhadas com os setores de um dos discos.
Uma vez obtidos os sinais senoidais sin e cos, a próxima etapa do sistema resolvedor seria
o uso de um circuito interpolador eletrônico. No entanto, ainda sem a presença de tal circuito,
consegue-se construir um resolvedor capaz de multiplicar por 4 a resolução do encoder. Isso é
feito, primeiramente, com a transformação dos sinais sin e cos em sinais de onda quadrada, por
meio de circuitos quadradores (ex. Schmitt triggers). Um esquema dessa transformação é
mostrado na Figura 3.2. Os dois sinais digitais resultantes A e B são combinados logicamente
para se obter quatro sinais digitais defasados de 1/4 do período (90º elétricos). A Figura 3.3 exibe
as formas de onda referentes a um exemplo de combinação lógica, a qual pode ser implementada
eletronicamente ou programada em um microcontrolador.
Na mesma figura, nota-se que, para um encoder absoluto, um período dos sinais A e B
corresponde à meio período do sinal relacionado ao bit menos significativo (LSB). O mesmo
provém da trilha mais externa do disco, não considerando a trilha radial acrescentada na periferia.
40
sin sin
cos cos
6
5
4
3
2
1
0
cos
(c)
Figura 3.1 - Obtenção de dois sinais senoidais defasados de 90º elétricos. (a) Disco
incremental com máscara. (b) Disco absoluto com trilha periférica e máscara.
(c) Sobreposição de dois discos incrementais com diferença de 1 no número de pares de setores
translúcido-opaco.
sin
cos
sin A
quadrador
cos B A
quadrador
(a) (b)
Figura 3.2 - Transformação senóide / onda quadrada. (a) Esquema. (b) Formas de onda.
41
LSB
(encoder absoluto)
AB
AB
AB
AB
Pulsos
(encoder incremental)
Ainda considerando a Figura 3.3 e no caso de um encoder absoluto, pode-se fazer a seguinte
associação de sinais com bits: AB 00 , AB 01 , AB 10 , AB 11 , obtendo-se dois
novos bits, ou seja, originando quatro novas posições absolutas dentro da posição absoluta
limitada pelo bit menos significativo (LSB). Portanto, a resolução do encoder se torna quatro
vezes maior, já que o número total de bits é acrescido de 2. Conseqüentemente, os dois novos bits
passam a ser agora os bits menos significativos do encoder.
Para um encoder incremental, a mesma Figura 3.3 mostra que, a partir dos quatro sinais
obtidos via combinação lógica dos sinais A e B, é possível gerar uma seqüência de pulsos com
quatro pulsos por período de A (ou B). Sabendo-se que um período de A corresponde a um
incremento físico na posição do disco (limitado por um setor/espaçamento), cada um dos quatro
pulsos indica um deslocamento físico quatro vezes menor. Logo, a resolução é quatro vezes maior.
42
O sinal de contagem (seqüência de pulsos) bem como o sinal de direção podem ser determinados
via software, quando da utilização de um microcontrolador. Caso este não seja utilizado, a
determinação do sinal de contagem e do sinal de direção é feita eletronicamente por circuitos
compostos de multivibradores monoestáveis e de portas lógicas. Os multivibradores
monoestáveis são disparados pelas bordas de subida dos quatro sinais advindos da combinação de
A e B, e dão origem à seqüência de pulsos, cujas larguras são menores do que as larguras desses
quatro sinais que efetuaram o disparo. Ver último gráfico da Figura 3.3. Isso é necessário para
gerar um pulso a cada transição (mudança de posição) e não um sinal contínuo.
O sistema resolvedor que acabou de ser analisado não faz uso de um circuito interpolador
eletrônico. Desse modo, só é possível quadruplicar a resolução do encoder. Quando existe a
necessidade de se aumentar ainda mais a resolução, um circuito interpolador deve ser incluído no
sistema. Segundo (WOOLVET, 1977), o circuito interpolador mais simples consiste de uma rede
de resistores conforme apresenta a Figura 3.4, adaptada do mesmo livro. Na figura, o circuito tem
como entradas os dois sinais já conhecidos (sin e cos) e um sinal -sin, que é facilmente obtido
através da inversão do sinal sin. Nesse exemplo, são mostradas quatro saídas, que possibilitarão
um aumento de oito vezes na resolução. Generalizando, para N saídas, a resolução será
multiplicada por 2N. As saídas, antes de passarem pelos quadradores, também são senóides
aproximadas, mas diferem em fase de acordo com sua posição na cadeia de resistores. Nesse
ponto, (WOOLVET, 1977) afirma que o desempenho global do sistema poderia ser aperfeiçoado
-sin
D
quadrador
cos C
quadrador
B
quadrador
sin A
quadrador
43
caso fossem utilizadas formas de onda aproximadamente triangulares, o que pode ser feito
modificando-se o arranjo mecânico. Voltando ao exemplo, cada uma das quatro senóides da saída
passa por um circuito quadrador, dando origem aos sinais digitais A, B, C e D. Esses sinais
digitais são combinados logicamente dois a dois, com o objetivo de se obter oito sinais digitais
defasados de 1/8 do período (45º elétricos). A combinação dos sinais, mais uma vez, pode ser
implementada eletronicamente ou programada em um microcontrolador. A Figura 3.5 mostra um
exemplo dessa combinação de sinais, exibindo as formas de onda. Como esperado, um período
dos sinais A, B, C e D corresponde a meio período do sinal relacionado ao LSB de um encoder
absoluto. Neste exemplo, a associação de sinais com bits para o encoder absoluto é: AB 000 ,
BC 001 , CD 010 , AD 011 , AB 100 , BC 101 , CD 110 , AD 111 ,
obtendo-se agora três novos bits que, por sua vez, determinam oito novas posições absolutas
dentro da posição absoluta limitada pelo LSB. Assim, a resolução aumenta oito vezes e os três
novos bits passam a ser os bits menos significativos.
Considerando um encoder incremental, a Figura 3.5 exibe a seqüência de pulsos obtida a
partir dos oito sinais derivados da combinação de A, B, C e D. A seqüência de pulsos possui oito
pulsos por período de A (ou B, C, D), que indicam um deslocamento físico oito vezes menor do
que o indicado sem o uso do resolvedor eletrônico. Portanto, a resolução torna-se oito vezes
maior. Assim como no caso do sistema resolvedor sem interpolador, a determinação dessa
seqüência de pulsos (sinal de contagem) e do sinal de direção pode ser feita através de software
quando se utiliza um microcontrolador, ou através de circuitos eletrônicos constituídos de
multivibradores monoestáveis e de portas lógicas quando não se utiliza um microcontrolador. No
caso dos circuitos eletrônicos, seu funcionamento deve ser análogo ao descrito para o sistema
resolvedor sem interpolador. Os multivibradores monoestáveis devem ser disparados pelas bordas
de subida dos oito sinais derivados da combinação de A, B, C e D, dando origem à seqüência de
pulsos, cujas larguras devem ser menores do que as larguras desses oito sinais que efetuaram o
disparo. Relembrando, isso garante a existência de um pulso a cada transição (mudança de
posição) e não simplesmente um sinal contínuo.
O circuito interpolador apresentado é um circuito bem simples, porém, hoje já existem
circuitos interpoladores bem mais sofisticados, inclusive na forma de circuitos integrados. A
Figura 3.6 exibe três exemplos com diferentes fatores de interpolação, como pode ser visto pelas
formas de onda. Maiores detalhes podem ser encontrados no respectivo (DATASHEET - RLS).
44
LSB
(encoder absoluto)
AB
BC
CD
AD
AB
BC
CD
AD
Pulsos
(encoder incremental)
45
fotodetector
(a)
fotodetector
(b)
fotodetector
(c)
46
Teoricamente, a utilização de um circuito interpolador eletrônico em um sistema resolvedor
poderia aumentar a resolução do encoder infinitamente. Na prática, sabe-se que isso é impossível,
devido às limitações de hardware ou de software.
47
sin(θ) sin(θ)
sin(θ+45º) sin(θ+36º)
sin(θ+90º) sin(θ+72º)
sin(θ+135º) sin(θ+108º)
sin(θ+144º)
(a)
sin(θ) sin(θ)
sin(θ+45º) sin(θ+36º)
sin(θ+90º) sin(θ+72º)
6 6
5 sin(θ+135º) 5 sin(θ+108º)
4 4
3 3
2 2 sin(θ+144º)
1 1
0 0
(b)
sin(θ)
sin(θ) sin(θ+36º)
sin(θ+45º) sin(θ+72º)
sin(θ+90º) sin(θ+108º)
sin(θ+135º) sin(θ+144º)
(c)
48
Neste caso, as grades são utilizadas para facilitar a captura da luminosidade, além de estarem
alinhadas com os setores de um dos discos.
Para um número N de dispositivos de leitura, a resolução do encoder é multiplicada por 2N.
No exemplo onde o número de dispositivos de leitura é N = 4, obtém-se quatro sinais senoidais
igualmente defasados de 45º, que propiciarão um aumento de 8 vezes na resolução. Cada um
desses quatro sinais senoidais passa por um circuito quadrador, originando os mesmos quatro
sinais digitais (A, B, C e D) que provêm das quatro saídas do circuito interpolador eletrônico
mostrado na Figura 3.4. O condicionamento seguinte dos sinais, tanto para um encoder absoluto
quanto para um encoder incremental, é realizado da mesma maneira como foi apresentado para o
resolvedor eletrônico, e está sintetizado na Figura 3.5.
Quando se buscam grandes aumentos na resolução, um sistema resolvedor eletrônico é
mais recomendado do que um sistema resolvedor óptico, pois este último começa a ficar mais
complexo física e geometricamente, à medida que cresce o número de dispositivos de leitura.
49
4. Técnicas de Fabricação de Discos e Réguas de Encoders Ópticos
(a) (b)
Figura 4.1 - Exemplos de discos de encoders ópticos. (a) Incrementais. (b) Absolutos.
(CATÁLOGO HEIDENHAIN, acesso em 2007).
50
Na seqüência, será descrito o processo de fabricação de um disco de encoder óptico, já que
o processo é o mesmo para a fabricação de uma régua. O que podem variar são detalhes
relacionados à diferença de formatos entre os elementos.
O vidro transparente utilizado para fabricar o disco pode ter diferentes composições e
propriedades, de acordo com o tipo de vidro escolhido. Em (ELLIOTT, 1985), pode-se encontrar
uma comparação entre os principais tipos de vidro. A Tabela 4.1, adaptada do mesmo livro,
resume as diferenças na composição química e nas propriedades físicas. Nota-se que todos os
tipos são compostos majoritariamente por dióxido de silício (SiO2), sendo o quartzo praticamente
SiO2 puro. Também nota-se que o quartzo é o vidro que possui a menor expansão térmica, tanto
que é classificado como um material de expansão térmica ultra baixa. O vidro LE-30 (silicato de
boro) tem uma expansão térmica superior ao quartzo, mas relativamente baixa, sendo
classificado, portanto, como vidro de baixa expansão. A Figura 4.2 compara a expansão em
micrômetros com a variação da temperatura para três tipos de vidro, e para discos de ensaio de
vidro com quatro tamanhos diferentes: 6, 5, 4 e 3 polegadas (in). O vidro soda-lime é o que
apresenta a maior expansão com a temperatura, mas é também o de menor custo. O vidro de
silicato de boro tem preços não muito superiores aos do soda-lime e apresenta baixa expansão
com a variação da temperatura, como já foi dito. Por possuir pouco ou quase nenhum sódio na
51
Expansão, µm
Diferença de temperatura, ºC
Figura 4.2 - Expansão em função do tipo de vidro, tamanho e temperatura. (ELLIOTT, 1985).
composição, o quartzo é o vidro que menos se expande com o aumento da temperatura, porém, é
o que possui o maior custo. A Figura 4.3, também adaptada de (ELLIOTT, 1985), apresenta a
relação entre a porcentagem de transmissão e o comprimento de onda para os diferentes tipos de
vidro. Todos eles têm transmissão superior a 90% para comprimentos de onda a partir do
espectro visível (aprox. 4000Å = 400nm). O quartzo, desejável por razões de estabilidade
térmica, mantém transmissão de aproximadamente 90% para comprimentos de onda na direção
do ultravioleta intenso (menores comprimentos de onda). Essa característica faz com que o
quartzo seja muito utilizado em aplicações de imagem com ultravioleta intenso, como em
máscaras de alguns tipos de fotolitografia. Nesses casos, o quartzo garante ainda um aumento da
vida útil da máscara. O quartzo também é o mais resistente às soluções utilizadas para a limpeza
do vidro. Diante das comparações, é possível entender porquê o quartzo é o vidro mais indicado
para aplicações que envolvem grande precisão, como no caso de discos de encoders ópticos, e
que sofrem processos físico-químicos durante o processo de fabricação.
Transmissão, %
Comprimento de onda, Å
Figura 4.3 - Transmissão em função do comprimento de onda para diferentes tipos de vidro.
(ELLIOTT, 1985).
52
De acordo com (ELLIOTT, 1985), pode-se resumir em nove etapas o processo para
obtenção de um disco de vidro a ser transformado num disco de encoder:
O processo pode variar de acordo com o fabricante, com operações de inspeção e limpeza
podendo ser efetuadas em pontos diferentes. Cada etapa é caracterizada por um equipamento
especial e cada fabricante desenvolve sua própria técnica para otimizar o processo.
53
químicas na fase polimérica, e o solvente permite espalhar o polímero sobre a superfície do
substrato. Continuando o processo, a solução viscosa de resina é colocada no centro do disco e o
mesmo é posto a girar a altas taxas de rotação. A força centrífuga espalha uma fina camada de
resina uniformemente sobre o disco. A espessura da camada é controlada e depende da
velocidade de rotação, da concentração da solução e da viscosidade intrínseca. Após a rotação, a
camada de resina ainda contém vestígios do solvente, o qual é eliminado através do aquecimento
adequado do conjunto disco-resina. Esse aquecimento, por sinal, melhora a adesão entre eles.
É importante dizer que as resinas são classificadas em dois tipos, a chamada resina positiva
e a chamada resina negativa. Se a resina é positiva, a reação química durante a exposição à
radiação enfraquece as cadeias de polímeros, aumentado sua solubilidade em soluções com
substâncias reveladoras. Se a resina é negativa, a reação fortalece as cadeias de polímeros,
tornando a área exposta à radiação menos solúvel em soluções reveladoras.
O padrão desejado a ser gravado no disco do encoder com a película de cromo (ex. padrão
incremental com marcação de zero, padrão absoluto em código Gray) deve ser o mesmo padrão a
ser gravado na resina. A gravação do padrão na resina é feita, considerando o tipo de resina,
através da exposição à radiação (radiação UV ou feixe de elétrons) das áreas da resina que
determinarão o padrão desejado. No caso da utilização de uma fonte de radiação UV, essas áreas
podem ser selecionadas por uma máscara contendo o padrão desejado. A máscara é semelhante à
empregada no processo de fotolitografia para fabricação de circuitos integrados, e também é
composta de quartzo com regiões opacas de metal depositado na superfície. Neste caso, todas as
áreas expostas da fotoresina recebem radiação ao mesmo tempo, como pode ser observado no
item (a) da Figura 4.4. Agora, no caso da utilização de um feixe de elétrons para gravação do
padrão na resina, as áreas a serem expostas são selecionadas pelo direcionamento do feixe de
elétrons. O equipamento que gera e controla o feixe de elétrons recebe o desenho do padrão
desejado através de um sistema CAD. O feixe é então direcionado de modo a contornar o
desenho do padrão, gravando-o sobre a resina e-beam. Assim, as áreas selecionadas são expostas
ao feixe de elétrons em instantes diferentes durante o percurso do feixe, como representado pelos
tempos t1, t2 e t3 no item (b) da Figura 4.4.
Neste ponto do processo de lift-off, tem-se um disco com o padrão desejado gravado na
resina na forma de áreas latentes. Essas áreas são reveladas por meio da imersão do disco em
uma solução reveladora, ou borrifando essa solução sobre a face do disco que contém a resina.
54
Aplicação da resina
Vidro Vidro
t1 t2 t3
Máscara
Revelação do padrão
(a) (b)
Figura 4.4 - Etapas iniciais do processo de lift-off. (a) Gravação do padrão na resina com
radiação UV selecionada por uma máscara. (b) Gravação do padrão na resina com
direcionamento do feixe de elétrons (e-beam).
Cada resina tem sua respectiva solução reveladora, a qual tem a propriedade de dissolver as áreas
que foram expostas à radiação, no caso de uma resina positiva, e de dissolver as áreas não
expostas, no caso de uma resina negativa. Ver Figura 4.4.
Após a exposição e a revelação, o perfil obtido é distinto para resinas positivas e para
resinas negativas. Elas apresentam comportamento diferente tanto na dispersão da radiação em
seu interior, quanto na interação com a solução reveladora. Os perfis em resinas positivas podem
ser controlados através da dose de exposição à radiação e do tempo de revelação, como pode ser
visto no item (a) da Figura 4.5, adaptada de (MADOU, 1997). Altas doses de exposição e rápida
55
Dose de Tempo de contato Dose de
exposição com o revelador exposição
(a) (b)
(b)
Figura 4.5 - Perfis após a exposição à radiação e revelação. (a) Resina positiva. (b) Resina
negativa.
revelação em resinas positivas são ideais para um bom processo de lift-off, pois originam um
perfil com paredes inclinadas no sentido de cobrir as arestas em contato com o substrato. Isso
evitará a deposição de metal sobre as paredes da resina, possibilitando o contato seguinte das
paredes da resina com o solvente removedor. Resinas negativas não apresentam o mesmo
controle sobre os perfis, acarretando apenas em pequenas variações nas dimensões, quando da
mudança das condições de exposição e revelação. Observar item (b) da Figura 4.5.
Diante do apresentado, os processos de lift-off utilizam resinas positivas para gerar um
perfil de paredes inclinadas conforme descrito. Existem algumas técnicas para tornar os outros
perfis mais adequados ao processo de lift-off, como, por exemplo, a apresentada por (PATEL et
al, acesso em 2007). A técnica consiste em aplicar sobre a superfície da resina, antes da
revelação, uma substância que diminui a taxa de dissolução da resina na solução reveladora. Tal
substância causará a diminuição na dissolução somente da camada superior da resina, ou seja, a
porção da resina que entrou em contato com a substância. No caso apresentado, a substância é o
clorobenzeno e um exemplo do perfil obtido é reproduzido na Figura 4.6. Nela é possível
observar as rebarbas que permaneceram após a revelação e que cobrem as paredes da resina.
Figura 4.6 - Perfil obtido com a aplicação de clorobenzeno sobre uma resina positiva antes da
revelação. (PATEL et al, acesso em 2007).
56
Voltando a abordar especificamente as resinas, um tipo de resina positiva muito conhecida
e utilizada é a PMMA (poly-[methyl-metacrylate]). A resina PMMA é sensível à radiação UV
intensa e sensível ao feixe de elétrons. Também é sensível a outras formas de radiação, como
feixe de íons e raios-X. Tem como propriedades a boa transparência, resistência ao UV, boa
resistência abrasiva, dureza, rigidez, baixa absorção de água e baixa emissão de fumaça. Um
outro exemplo de resina positiva é a PBS (poly-[butene-1-sulfone]). Maiores detalhes sobre
resinas podem ser encontrados em (MADOU, 1997) e em (ELLIOTT, 1985).
Neste ponto do processo de lift-off, após a etapa de revelação, o disco do encoder apresenta
o padrão desejado desenhado por meio de áreas cobertas por resina e de áreas removidas
(dissolvidas) de resina. As áreas da superfície do vidro que não deverão receber uma película de
cromo são as áreas que estão cobertas pela resina, ou seja, o cromo será depositado sobre a
resina, durante a deposição. As áreas da superfície do vidro que deverão receber uma película de
cromo são as áreas reveladas, isto é, aquelas que tiveram a camada de resina dissolvida. A etapa
seguinte do processo de lift-off para fabricação de um disco de encoder consiste, portanto, na
deposição de uma película de cromo.
Segundo (ELLIOTT, 1985), existem diversos métodos utilizados para depositar uma
película de metal sobre um substrato de vidro. Eles são divididos em métodos a vácuo (baixa
pressão) e métodos que não utilizam vácuo. Os principais métodos de deposição a vácuo são os
métodos de pulverização (sputtering) e evaporação, muito comuns para depositar cromo. Dentre
os métodos que não são a vácuo, destaca-se a deposição química a vapor (CVD). No caso de um
disco de encoder em um processo de lift-off, a deposição de uma película de cromo é realizada a
vácuo por pulverização ou por evaporação. Os equipamentos para deposição a vácuo podem
apresentar diferentes características, porém, um equipamento básico deve conter: uma área onde
o vácuo possa ser gerado; software e hardware para controle de parâmetros (ex. nível de vácuo,
espessura da camada depositada); uma bomba de vácuo; e hardware para deposição de material.
A seguir, serão descritos os processos a vácuo de pulverização e evaporação, começando pelo
primeiro.
A pulverização é baseada no princípio da descarga elétrica entre dois eletrodos. O processo
ocorre a baixas pressões, permitindo a expulsão de átomos do metal no catodo em direção ao
anodo. Quando a câmara de vácuo termina de ser evacuada a um nível apropriado, íons de um gás
inerte são introduzidos na câmara. Estes são rapidamente ionizados quando da aplicação de um
57
campo elétrico. Os átomos ionizados de alta energia incidem sobre a meta, que é um pedaço de
metal (cromo) presente no catodo. A energia incidente deve ser suficiente para romper as ligações
entre os átomos de cromo, expelindo-os na direção do anodo. Este fenômeno lembra o que
acontece quando se atira uma pedra com força em uma poça d’água. Assim, o cromo é
pulverizado sobre o anodo, onde está localizado o substrato que recebe a deposição. O substrato,
no caso o disco com o padrão desenhado em resina, deve ser mantido aquecido moderadamente
durante a pulverização, tomando-se o cuidado de não atingir uma temperatura que comprometa as
propriedades da resina. A pulverização proporciona uma boa adesão do cromo sobre o vidro, já
que os átomos de cromo o atingem com muita energia. Segundo (ELLIOTT, 1985), essa adesão é
cerca de dez vezes maior do que a do processo de evaporação. Outras vantagens a considerar são
as altas taxas de deposição e a alta homogeneidade da deposição.
O processo de evaporação também acontece a pressões muito baixas, neste caso, facilitando
a evaporação do metal (cromo) ao reduzir a temperatura necessária para tal. Existem diversos
mecanismos para se conseguir a evaporação do cromo, como, por exemplo, a utilização de um fio
de cromo sobre um filamento, cuja passagem de corrente elétrica fornece calor para a fusão e a
evaporação deste fio de cromo. O vapor de cromo é então depositado sobre o disco com o padrão
desenhado em resina. Como mencionado anteriormente, a adesão do cromo sobre o vidro num
processo de evaporação é menor do que num processo de pulverização, já que na evaporação os
átomos de cromo atingem o substrato com baixa energia relativamente. Para melhorar a adesão,
costuma-se aquecer o substrato mais do que num processo de pulverização. Desse modo, no caso
do disco, aumenta-se a energia na superfície do vidro, fortalecendo as ligações cromo-vidro.
Também é necessário garantir que o aquecimento do disco não danifique a resina. O processo de
evaporação é considerado um processo a quente e o processo de pulverização pode ser
considerado um processo a frio. A Figura 4.7, presente em (PATEL et al, acesso em 2007), ilustra
o resultado da deposição de uma película de metal sobre um substrato, por evaporação do metal.
Figura 4.7 - Resultado obtido com a deposição de uma película de metal sobre um substrato, via
processo de evaporação do metal. (PATEL et al, acesso em 2007).
58
Na figura, é possível observar que as rebarbas impediram a deposição de metal sobre as
paredes da resina. A Figura 4.8 esquematiza a deposição, dentro do processo de lift-off, para o
caso de uma resina positiva com perfis inclinados e sem a presença de rebarbas.
A última etapa do processo de lift-off para fabricação de um disco de encoder é a remoção
da resina que ainda permanece sobre o disco. Isso é feito através da imersão do mesmo em uma
solução contendo um solvente removedor apropriado para a resina utilizada. A acetona é um tipo
de solvente barato e que remove um grande número de resinas. A remoção se inicia pelas paredes
da resina, as quais não foram cobertas pela película de cromo e que, portanto, podem entrar em
contato com o solvente. Após a total remoção da resina, tem-se um disco de vidro com o padrão
desejado gravado em sua superfície na forma de uma película de cromo. O processo é finalizado
com o uso de soluções para limpeza e com a posterior secagem do disco. Ao término do processo
de lift-off, o disco está pronto para ser montado junto com os outros componentes de um encoder
óptico.
Revelação do padrão
Resina positiva
Vidro
Deposição do cromo
Cromo
Remoção da resina
59
4.2 Técnica para Fins Didáticos Utilizando Materiais de Baixo Custo
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1%
1% 1% 1%
Figura 4.9 - Exemplo de disco incremental obtido com
1% 1% 1% programa em MATLAB, Nlinhas = 36.
60
A segunda etapa consiste em reproduzir o desenho do padrão em uma folha de papel
branco. Isso é facilmente conseguido através da impressão do desenho por uma impressora
comum. Um detalhe importante a ser observado é o diâmetro do padrão impresso, que deve ser
compatível com modelo didático a ser construído. Um padrão impresso com 12 cm de diâmetro é
ideal quando se utilizam CD´s transparentes para montar o disco. Esses CD´s serão discutidos
mais adiante.
Na terceira etapa, deseja-se obter um padrão com setores opacos e espaçamentos
translúcidos. Para conseguir isso, é possível xerocopiar o padrão impresso em papel sobre uma
transparência. Assim, o padrão fica desenhado sobre a transparência, onde as áreas que eram da
cor preta passam a ser opacas e as áreas que eram brancas tornam-se translúcidas. A
transparência é recortada no formato do disco e é feito um furo central, que no caso do uso de
CD´s tem diâmetro de 1,5 cm.
A última etapa é a colocação da transparência recortada em um sistema rígido, o qual
possibilitará o movimento de rotação. Esse sistema rígido pode ser um único disco translúcido,
fino e rígido, onde a transparência é colada sobre ele. Para uma maior flexibilidade, é mais
conveniente posicionar a transparência entre dois discos translúcidos, finos e rígidos, que podem
ser unidos pelo furo central, evitando o uso de cola. Em ambos os casos, há uma dificuldade na
obtenção de discos com as características mencionadas, logo o uso de CD´s transparentes é
justificado. Esses CD´s são facilmente obtidos, estando presentes em todos os tubos de CD´s
virgens disponíveis comercialmente. A Figura 4.10 ilustra um resumo de todas as etapas
descritas.
Figura 4.10 - Exemplo de técnica para construção de um disco de encoder óptico para fins
didáticos empregando materiais de baixo custo.
61
5. Erros e Testes de Encoders Ópticos
Este capítulo traz estudos sobre erros e testes de encoders ópticos, enfocando os
incrementais rotativos. Começa com a discussão de termos e erros associados a esse tipo de
encoder e sua montagem. Mostra o efeito de alguns fatores na amplitude do sinal de saída e
termina descrevendo uma técnica para a realização de testes de precisão.
62
Enquanto a resolução do encoder é permanentemente fixa desde a fabricação do disco, os
erros do encoder podem variar em função de fatores ambientais, como a temperatura, carga no
eixo, e condições de serviço. Isso não significa que o número de pulsos por revolução é alterado.
Isso ocorreria somente como resultado de um dano severo ou contaminação de seus
componentes, tais como o disco ou o rolamento. Resolução e precisão não estão diretamente
relacionados. Em encoders de alta performance, o erro pode chegar a muitos pulsos, ou pode ser
uma pequena fração de um único pulso, dependendo das necessidades da aplicação.
A repetibilidade é uma medida de qual é a leitura neste instante, comparada com o que ela
era da última vez, para o movimento na mesma direção. Dependendo da aplicação, pode ser
importante distinguir entre repetibilidade de longo período e de curto período. Ela é expressa em
unidades de ângulo, assim como a precisão. É necessário entender a aplicação para saber o quê
especificar. Caso se deseje controlar a trajetória de uma aeronave, por exemplo, a precisão será
crítica, mas caso se deseje ensinar a um robô tarefas repetitivas, a repetibilidade pode ser mais
importante do que a precisão”.
De acordo com (ELLIN, acesso em 2007), para a saída de um sistema com encoder óptico
incremental rotativo, como ilustrado na Figura 5.1, refletir o movimento real do componente, são
necessários os seguintes pré-requisitos:
1) Cada parte do sistema deve girar em seu rolamento sem deslocamento radial do eixo de
rotação, isto é, sem movimentação lateral;
2) O sistema de eixo conectando o componente de interesse ao encoder deveria ser rígido à
torção;
3) O acoplamento deveria garantir que o movimento angular do encoder girando em seu
rolamento fosse o mesmo que o do componente de interesse girando em seu próprio sistema de
rolamento, isto é, uma velocidade de junta constante e precisa é exigida;
4) O espaçamento dos setores/linhas ao longo do disco do encoder deveria ser uniforme e o
dispositivo de leitura deveria interpolar entre eles de modo linear;
5) O disco (escala) do encoder deveria ser verdadeiramente circular com o eixo de rotação
passando perpendicularmente através de seu centro;
6) O dispositivo de leitura deveria ler a escala sem paralaxe ou outro erro geométrico e ser
rigidamente montado na estrutura não rotativa do encoder.
63
Componente
Dispositivo de interesse
de leitura Rolamento
do encoder
Rolamento do
componente Rolamento do
Acoplamento
componente
Disco do
encoder Eixo do Eixo do
encoder componente
Se algum dos pré-requisitos listados não for cumprido, haverá diferenças entre a posição
angular do componente de interesse e aquela indicada pelo encoder. Por meio da investigação de
cada uma dessas potenciais fontes de erro, é possível determinar suas contribuições individuais e,
conseqüentemente, obter o erro total associado ao sistema. Ainda em (ELLIN, acesso em 2007),
pode-se encontrar análises nesse sentido. Parte delas serão levantadas a seguir.
Efeito de desvios em rolamentos:
O termo desvio descreve uma variedade de atributos que resultam num deslocamento radial
(ou translação lateral) do eixo de rotação do encoder e/ou do componente, provocados em sua
maioria por deficiências nos rolamentos. Inclui jogo e harmônicas (ex. imperfeições das
esferas/roletes), mas não excentricidade. A magnitude do deslocamento radial de um eixo girando
em rolamentos de esferas/roletes é afetado pelo projeto e ajuste desse sistema de rolamentos, mas
é improvável que seja menor do que ±1 µm. Como o sistema do encoder pode ler a posição de
sua escala rotativa com pelo menos um décimo desse valor, pode ser visto que os erros causados
por desvios em rolamentos podem se sobrepor àqueles causados pelo restante de um sistema bem
projetado. A relação entre o deslocamento radial, a repetibilidade e a posição angular dependerá:
- das dimensões relativas do curso interno e externo do rolamento (onde se movimentam as
esferas/roletes);
- do número e diâmetro das esferas/roletes;
- do ajuste do sistema de rolamentos.
Para sistemas de alta precisão, é preferível o uso de rolamentos a ar. Os deslocamentos
radiais podem ser reduzidos a sub-microns pela correta seleção da rigidez radial do rolamento.
64
Efeito de erros de acoplamento:
A Figura 5.1 mostra um sistema com um encoder rotativo com seu próprio rolamento
conectado ao componente de interesse, através de um acoplamento. Isso pode ser uma vantagem,
pois somente os desvios no rolamento do encoder irão afetar a precisão da medição angular.
Entretanto, essa vantagem deve ser considerada com cuidado, já que desvios nos rolamentos
principais irão afetar a precisão de posicionamento, se o sistema é projetado para retornar as
coordenadas polares de um ponto no componente de interesse.
O acoplamento por si só pode ter um impacto significativo na precisão do sistema,
apresentando problemas como:
- Folgas: qualquer folga irá introduzir diferenças na posição angular indicada, considerando
a direção de rotação, e tem o impacto mais significativo na repetibilidade do sistema.
- Rigidez torsional: o acoplamento pode não ser tão rígido quanto o eixo que ele conecta,
podendo, então, ser afetado pela vibração/ressonância do sistema. Erros dinâmicos acabam sendo
induzidos, resultando em problemas de performance.
- Erros angulares: a maioria dos acoplamentos pode, sob certas condições de alinhamento,
introduzir erros angulares entre o eixo motor e o eixo movido.
Efeito da distorção e excentricidade do disco/escala:
Caso seja necessário se obter uma medição angular precisa, uma escala com graduação
linear deve ser posicionada a uma distância adequada do eixo de rotação. Variações no raio,
como a causada pela excentricidade de uma escala perfeitamente circular, podem gerar erros que
variam uma vez por revolução. Estes se combinam com os outros erros que variam duas ou mais
vezes por revolução, os quais são resultado da distorção da escala.
Ângulo de
Azimute zero fase Ф1
nominal
Centro de
rotação
r0
Excentricidade a1
Centro da escala
65
Considerando uma escala perfeitamente circular de raio r0, ao invés de montá-la para que
gire sobre sua linha de centro nominal, ela é montada para girar sobre um outro ponto a uma
distância a1 da nominal e a um ângulo de fase Ф1, conforme esquematizado na Figura 5.2,
também traduzida de (ELLIN, acesso em 2007). A um ângulo azimute arbitrário θ1, a distância do
centro de rotação à periferia da escala R0 será dada por
R0 = r0 − a1 cos(θ − φ1 ) . (5.1)
O raio verdadeiro irá, portanto, variar de maneira senoidal uma vez por revolução, com
uma amplitude igual à excentricidade. Para adicionar os efeitos da distorção de escala, a forma
global do disco pode ser considerada como a soma de uma série de ondas senoidais de diferentes
freqüências n, fases Фn e amplitudes an, tal que o raio da escala a um ângulo azimute θ é dado por
Pode ser mostrado que o máximo erro circunferencial En induzido por uma distorção de
amplitude an variando de maneira senoidal, com ciclo de n vezes por revolução é dado por
an
± En = . (5.3)
n
66
Disco/escala
do encoder
Ângulo de
inclinação
A Figura 5.3, novamente traduzida de (ELLIN, acesso em 2007), ilustra essa condição.
Vista de lado, a cada rotação, seria possível observar o movimento senoidal axial na periferia da
escala do encoder. A inclinação promove três mecanismos de erro distintos. O primeiro está
associado à distância e ao ângulo relativo entre a periferia da escala e o dispositivo de leitura fixo
axialmente. O segundo está associado à forma elíptica que a escala assume quando vista de
frente, levando a erros que variam duas vezes por revolução. O terceiro mecanismo só é
pertinente quando a escala é fabricada com graduações axiais marginalmente oblíquas (fora de
esquadro). Todos estes efeitos da inclinação também podem ser superados por meio de técnicas
de compensação, como o uso de dois ou mais dispositivos de leitura diametralmente opostos.
Efeito de erros induzidos por dispositivos de leitura:
Até agora, procurou-se concentrar na escala do encoder e em seus mecanismos de erro, mas
a escala é somente parte do encoder. O dispositivo de leitura também contribui para o erro total.
Os erros induzidos por dispositivos de leitura mais significativos são:
- Erro de sub-divisão: surge da não linearidade na interpolação, a qual é requerida nos casos
em que se deseja aumentar a resolução do encoder. O erro de sub-divisão é afetado pelo
alinhamento, ajuste e limpeza da escala, por isso é importante manter o encoder bem abrigado e o
dispositivo de leitura bem alinhado.
- Paralaxe: a distância entre a escala e o dispositivo de leitura pode mudar devido, por
exemplo, à excentricidade do disco ou à variação da temperatura. Logo, erros serão induzidos,
exceto se o dispositivo de leitura estiver corretamente alinhado com a linha de centro da escala
circular.
- Estabilidade da montagem: este pode parecer óbvio, mas a montagem rígida e segura do
dispositivo de leitura e da marca de referência é vital para medições angulares repetidas e
precisas.
67
5.2 Testes de Encoders Ópticos Incrementais Rotativos
Em (MATSUZOE et al, 2001), encontra-se uma análise que verifica a influência de três
fatores na amplitude do sinal gerado em encoders ópticos incrementais rotativos. Os fatores são:
Variando certos parâmetros (relacionados aos três fatores), a técnica e o sistema utilizados
geram resultados analíticos, os quais são comparados com os resultados obtidos em um encoder
real com parâmetros idênticos. Confirmando-se que os resultados analíticos são muito próximos
dos resultados reais, é possível testar um encoder em relação a um parâmetro definido, já que sua
resposta deve seguir a resposta analítica. Em outras palavras, o sinal senoidal gerado pelo
fotodetector do encoder deve ser comparado com o sinal previsto analiticamente.
Primeiramente, (MATSUZOE et al, 2001) apresenta o princípio de funcionamento do
encoder óptico incremental rotativo, representado na Figura 5.4. A luz, a partir do LED, atravessa
o disco pelo espaçamento entre as áreas opacas, isto é, pelas áreas translúcidas, e é detectada pela
área ativa do fotodetector.
Áreas
opacas
L Graduações
LED
Fotodetector
Eixo de rotação
Disco
graduado
L: comprimento
Figura 5.4 - Princípio de um encoder óptico incremental rotativo. (MATSUZOE et al, 2001).
68
Fotodetector
Área ativa Áreas opacas
Comprimento
da onda
Sinal de saída
(a) Coberta por áreas opacas (c) (c)
Amplitude
(b) (b)
(b) Semicoberta por áreas opacas
(a) (a)
Offset
Lente objetiva L
Unidade de
processamento
de imagem
Câmera
CCD
LED
PC Posição de formação de
imagem da lente objetiva
Disco graduado
L: comprimento
Figura 5.6 - Sistema implementado para a realização da análise. (MATSUZOE et al, 2001).
69
g(X0,Y0) g(a,b) Modelo do fotodetector
Direção radial
g(c,d)
x
Direção de rotação
Figura 5.7 - Imagem da intensidade de luz a uma posição L = 0,1 mm. (MATSUZOE et al, 2001).
A Figura 5.7 apresenta a imagem obtida pelo sistema. A imagem indica a intensidade de luz
em uma posição onde L = 0,1 mm. As áreas escuras são aquelas cobertas pelas áreas opacas do
disco, enquanto que as áreas claras são aquelas iluminadas. O modelo do fotodetector representa
a área ativa do fotodetector que está sendo iluminada. Ignorando o efeito da comunicação cruzada
entre cada área ativa do fotodetector e possíveis efeitos de suas áreas não ativas, o sinal de saída
do fotodetector será proporcional às áreas ativas iluminadas. Em outras palavras, o sinal de saída
do fotodetector é computado pela integral do modelo do fotodetector na imagem, ou seja,
In = ∫∫ g ( x, y ) . (5.4)
Aqui, g(x,y) é a imagem presente na Figura 5.7 e In é o valor da integral calculada pelas
coordenadas de g(a,b) e g(c,d). Assim, quando o disco graduado gira, o modelo do fotodetector
se move na direção da seta maior, mostrada na Figura 5.7, baseado no movimento relativo entre o
disco e o fotodetector. O sinal de saída do fotodetector é determinado repetindo este cálculo para
cada movimento de giro do disco, mais especificamente, toda vez que o modelo do fotodetector
se mover 1 pixel na direção indicada pela seta. A Figura 5.8 mostra o resultado analítico obtido
empregando esta técnica. O eixo vertical indica a amplitude normalizada, e o eixo horizontal
indica o movimento do modelo do fotodetector em pixels. O resultado analítico é um sinal de
saída senoidal (não triangular), incluindo o efeito da difração e dispersão da luz em direção
oblíqua, porque a imagem é baseada na intensidade de luz a uma posição onde L = 0,1 mm.
70
Amplitude normalizada
Movimento do modelo do fotodetector (pixels)
71
Amplitude normalizada
Movimento relativo entre o fotodetector e o disco (mm)
Figura 5.10 - Influência da distância entre o fotodetector e o disco graduado. Resultado das
medições do sinal de saída do fotodetector em um encoder real. (MATSUZOE et al, 2001).
Para comparar com o resultado analítico, foram realizadas medições da amplitude do sinal
de saída do fotodetector de um encoder real, para os mesmos L’s. O resultado destas medições,
obtidas por (MATSUZOE et al, 2001), é mostrado na Figura 5.10. O eixo vertical também está
normalizado para o caso onde L = 0,0 mm. Pela simples comparação das Figuras 5.9 (b) e 5.10,
se vê que os resultados analíticos são muito próximos dos resultados reais medidos.
Influência da razão entre a largura da área ativa do fotodetector e o espaçamento das
graduações do disco:
Esta razão é referida como duty, por (MATSUZOE et al, 2001). Neste caso, foram obtidas
imagens com duty de 100, 70 e 40%, ambas para o mesmo valor de L = 0,2 mm. A partir dessas
imagens também foi gerado o resultado analítico do sinal de saída. A Figura 5.11 exibe essas
imagens e o resultado analítico. O eixo vertical da Figura 5.11 (b) está normalizado para um duty
Modelo do
Amplitude normalizada
fotodetector
(a) (b)
Figura 5.11 - Influência da razão entre a largura da área ativa do fotodetector e o espaçamento
das graduações do disco. (a) Imagens obtidas. (b) Resultado analítico do sinal de saída.
(MATSUZOE et al, 2001).
72
Amplitude normalizada
Movimento relativo entre o fotodetector e o disco (mm)
Figura 5.12 - Influência da razão entre a largura da área ativa do fotodetector e o espaçamento
das graduações do disco. Resultado das medições do sinal de saída do fotodetector em um
encoder real. (MATSUZOE et al, 2001).
de 100% com L = 0,0 mm. A influência da difração e da direção oblíqua da luz vinda do LED é
diminuída, quando a largura da área ativa é menor do que o espaçamento das graduações do
disco. Por exemplo, com base na Figura 5.11 (b), a amplitude do sinal de saída aumenta de 66%
(83% - 17% = 66%) para 89% (94% - 5% = 89%), com a redução do duty de 100 para 40%.
Novamente, para comparar com o resultado analítico, (MATSUZOE et al, 2001) realizou
medições em fotodetectores de encoders reais, preparados com duty de 100 e 70%. O duty de
40% não foi medido/implementado por questões de custo. A Figura 5.12 mostra o resultado
destas medições. O eixo vertical está normalizado para um duty de 100% com L = 0,0 mm. A
comparação das Figuras 5.11 (b) e 5.12, nos casos onde o duty é 100 e 70%, mais uma vez
confirmam que os resultados analíticos são muito próximos dos resultados reais medidos.
Influência da concentricidade entre o fotodetector e o disco graduado:
A posição correta do fotodetector é aquela na qual a linha de centro de cada área ativa,
quando estendida na direção do centro do encoder (SP), o intercepta. Além disso, deve interceptar
o centro de rotação do disco graduado (SS), isto é, SP e SS devem ser coincidentes, como
ilustrado na Figura 5.13 (a). Se a posição relativa de SP e SS for levemente alterada em x e em y,
o fotodetector e o disco graduado inclinam-se um em relação ao outro, e o disco graduado fica
impossibilitado de cobrir completamente a área ativa, como mostra a Figura 5.13 (b). Nela, θ é
calculado por tan-1(x/R), com R >> y sendo o raio do disco graduado.
O resultado analítico foi obtido através de imagens onde θ = 1º e θ = 2,4º, conseguidos com
o desvio entre SP e SS de x = 0.2 mm e x = 0.5 mm, respectivamente. Em ambos os casos, o raio
do disco tinha 12 mm. Um exemplo de imagem captada e o resultado analítico obtido podem ser
73
Linha de centro
da área ativa
Figura 5.13 - Posição relativa entre o fotodetector e o disco graduado. (MATSUZOE et al,
2001).
vistos na Figura 5.14. O eixo vertical está normalizado pela amplitude relacionada a θ = 0º.
Segundo (MATSUZOE et al, 2001), a atenuação de amplitude, resultante da variação da
concentricidade, é muito menor do que a atenuação resultante da variação dos dois fatores
anteriormente analisados. Isto pode ser visto pelos resultados analíticos, já que os resultados reais
para a influência do fator concentricidade não foram levantados.
Modelo do
Amplitude normalizada
fotodetector
(a) (b)
74
Falando agora especificamente sobre o teste de precisão de um encoder óptico incremental
rotativo, (GORDON, acesso em 2007) menciona que uma maneira de medir sua precisão é
girando o encoder a uma velocidade muito bem controlada, e medindo o intervalo de tempo entre
as sucessivas transições do sinal de saída. Diz que a eletrônica moderna permite que esse
intervalo de tempo seja medido corretamente, mas que é impossível separar variações na
velocidade de erros na posição do encoder, principalmente em encoders de alta resolução. O
aperfeiçoado controle de velocidade, presente nos dias atuais, permite que esta técnica seja
utilizada em encoders de baixa e moderada resolução, porém os de alta resolução necessitam de
uma técnica mais direta para medir os erros de posição.
Ainda em (GORDON, acesso em 2007), é apresentado um equipamento denominado
METRA – Master Encoder for Testing Rotary Accuracy. O dispositivo central do METRA é um
encoder óptico com 20 polegadas de diâmetro, montado sobre um eixo com rolamentos a ar. Uma
técnica de múltiplos dispositivos de leitura elimina, virtualmente, todos os erros. O METRA tem
resolução de 221 pulsos/rev, ou seja, 2.097.152 pulsos/rev. Para medir a precisão, o encoder a ser
testado é acoplado ao METRA com muita perfeição. Ao serem girados juntos, a informação da
posição do METRA é usada para “interrogar” o encoder sob teste, a uma taxa de 2.097.152 vezes
por revolução. Desta maneira, esse teste verifica a localização de cada estado da saída do encoder
sob teste, e também não depende de suposições estatísticas baseadas num conjunto incompleto de
dados.
O princípio do METRA pode ser empregado para testar a precisão de um encoder de menor
resolução via utilização de um encoder de maior resolução (encoder de referência), bastando
acoplar os dois para que girem solidariamente e analisando suas saídas. Por exemplo,
considerando a Figura 5.15, se a cada pulso do encoder de menor resolução (A, B, C, ...)
corresponder sempre 8 pulsos do encoder de referência, pode-se dizer que a precisão do encoder
de menor resolução é mantida dentro de um ângulo equivalente a um pulso do encoder de
referência. Mas, pode-se observar que ao pulso B correspondem, erroneamente, 9 pulsos do
encoder de referência. Assim sendo, neste trecho, a posição real de um componente acoplado ao
encoder de menor resolução é ligeiramente diferente da indicada por este encoder. Em outras
palavras, sua precisão é menor neste trecho.
75
Encoder A B C
de menor
resolução
Encoder
de maior
resolução 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8
(referência)
76
6. Materiais e Métodos
77
= 1 LED infravermelho + 1 fotodiodo
90º
Figura 6.1 - Método escolhido para geração do efeito moiré e obtenção de dois sinais defasados
de 90º elétricos. (a) Disco móvel com 32 pares de setores translúcido-opaco. (b) Disco estático
com 33 pares de setores translúcido-opaco. (c) Sobreposição dos discos.
resolvedor eletrônico (via software) para aumento em 4 vezes da resolução. Deste modo, a
resolução final será de 128 pulsos por revolução, que é um valor na base 2 como na maioria dos
encoders. Também pode ser levantado como justificativa o fato de que o teste de precisão a ser
realizado sobre o encoder didático é feito com a ajuda de um encoder de referência com 1024
PPR, valor exatamente 8 vezes maior do que 32*4 = 128 PPR.
A Figura 6.1 sintetiza o método escolhido para geração do efeito moiré e para a obtenção
de dois sinais defasados eletricamente de 90º.
Tendo em mente a utilização de materiais de baixo custo e a utilização dos equipamentos
disponíveis no laboratório de mecatrônica, o kit de encoder foi mecanicamente projetado e
construído com os seguintes componentes:
- 1 base metálica, Figura 6.2, com eixo central acoplado a um motor CC e a um encoder de
referência com 1024 PPR. Módulo presente no laboratório;
- 1 eixo de plástico, Figura 6.3, obtido a partir do eixo presente em tubos de CD´s virgens;
- 1 suporte confeccionado em papelão, Figura 6.4, para fixar os fotodiodos (receptores);
- 1 suporte confeccionado em papelão, Figura 6.5, para fixar os LED´s infravermelho
(emissores);
- 3 CD´s de plástico transparente, Figura 6.6, presentes em tubos de CD´s virgens;
78
- 1 padrão de disco incremental em transparência, Figura 6.7, com 33 pares de setores
translúcido-opaco. Obtido segundo o método apresentado na seção 4.2 (Técnica para Fins
Didáticos Utilizando Materiais de Baixo Custo);
- 1 padrão de disco incremental em transparência, Figura 6.8, com 32 pares de setores
translúcido-opaco. Obtido segundo o método apresentado na seção 4.2 (Técnica para Fins
Didáticos Utilizando Materiais de Baixo Custo);
- 2 suportes metálicos, Figura 6.9, para fixação na base e fixação/ajuste das cantoneiras;
- 4 cantoneiras metálicas com rasgos, Figura 6.10, para fixação dos suportes em papelão e
do disco estático;
- 4 cantoneiras metálicas com furos, Figura 6.11, para fixação dos suportes em papelão e do
disco estático;
- 2 fotodiodos de 5mm (corpo branco), 2 LED´s infravermelho de 5mm (corpo azul), 2
anéis o’ring de 15mm, 4 pares de arruelas pequenas, 8 parafusos com porca M3, Figura 6.12;
- Fios para conexão, estanho para soldagem, fita isolante e espaguetes para isolação
elétrica. Todos aplicados aos terminais dos LED´s e fotodiodos.
79
Figura 6.4 - Croqui do suporte de papelão para fixar os fotodiodos.
Figura 6.6 - Croqui dos CD´s de plástico transparente. Dext = 120mm. D int = 15mm.
80
Figura 6.8 - Croqui do disco incremental em transparência com 32 pares de setores.
81
Figura 6.12 - Croqui de um conjunto de componentes.
Antes de apresentar como foi feita a montagem do encoder didático a partir de seus
componentes, convém mostrar as etapas de sub-montagem nas quais os fotodiodos e os LED’s
infravermelho foram fixados em seus respectivos suportes.
Os dois fotodiodos tiveram seus terminais dobrados e encaixados no rasgo presente no
suporte, como ilustrado na Figura 6.13. Eles foram posicionados aproximadamente a 90º
angulares um do outro, dados pela distância de 9 setores translúcidos no disco estático, ver Figura
6.1 (b). Voltando à Figura 6.13, os terminais dos fotodiodos foram soldados a fios de conexão na
parte inferior do suporte. Os terminais catodo (K), identificados pelo chanfro no corpo dos
componentes, foram soldados aos fios de cor branco-marrom num fotodiodo e branco-verde no
outro. Os terminais anodo (A) foram soldados, respectivamente para cada fotodiodo, aos fios de
cor marrom e verde.
82
Figura 6.14 - Croqui da sub-montagem dos LED´s infravermelho no suporte.
A Figura 6.14 mostra que os dois LED´s infravermelho também tiveram seus terminais
dobrados e encaixados no rasgo presente no suporte. Eles foram posicionados aproximadamente a
90º angulares um do outro, buscando o alinhamento com os fotodiodos fixados no outro suporte.
Mais uma vez os terminais foram soldados a fios de conexão na parte inferior do suporte. Os
terminais catodo (K), identificados pelo chanfro no corpo dos componentes, foram soldados aos
fios de cor branco-laranja num LED e branco-azul no outro. Os terminais anodo (A) também
foram soldados, respectivamente para cada LED, aos fios de cor laranja e azul.
A montagem do encoder didático foi realizada seguindo as etapas apresentadas pelos
croquis da Figura 6.15. Tais croquis foram elaborados no AutoCAD 2006, assim como todos os
croquis anteriores. Uma breve descrição sobre cada etapa é dada a seguir:
2 - Fixar o eixo de plástico no eixo central da base metálica por meio dos 4 parafusos
retirados anteriormente e com o uso dos 4 pares de arruelas. Fixar os dois suportes metálicos, um
em cada lado da base, por meio dos outros 4 parafusos retirados na etapa 1. Em cada suporte
metálico, fixar uma cantoneira metálica que possui furos usando 2 parafusos e suas porcas.
Figura 6.15 (b);
83
(a) (b)
(c) (d)
(e) (f)
84
3 - Posicionar o suporte com os LED´s infravermelho sobre as cantoneiras. Em cada lado,
encaixar uma cantoneira que possui rasgos sobre a cantoneira que já está presa, de modo que o
suporte de papelão fique entre elas. Fazer o alinhamento e apertar os parafusos/porcas. Inserir um
anel o’ring no eixo de plástico, servindo de apoio para a fixação do disco móvel. A posição do
anel deve ser ajustada para que não haja contato entre o disco móvel e o corpo dos LED´s
infravermelho. Figura 6.15 (c);
85
6.2 Projeto e Montagem da Eletrônica do Kit de Encoder
Continuando com o método escolhido, que gera o efeito moiré a partir da sobreposição de
dois discos, um estático e um móvel, cuja diferença no número de pares de setores translúcido-
opaco é igual a 1, foi necessário transformar o sinal luminoso dos dispositivos de leitura em sinal
elétrico. O primeiro passo foi a criação do circuito para ligação dos fotodiodos e dos LED’s
infravermelho.
Considerando que a tensão de alimentação era de 5 VCC, que a queda de tensão sobre os
LED´s infravermelho era de 2 V, e que sua corrente não pudesse ultrapassar 20 mA, o resistor a
ser ligado em série com cada LED infravermelho foi dimensionado utilizando a seguinte
equação:
VCC − VLED 5 − 2 3
R= = = = 150 Ω . (6.1)
ILED 0,02 0,02
VCC − VLED 5 − 2 3
ILED = = = = 16,7 mA . (6.2)
R 180 180
O resistor a ser colocado em série com cada fotodiodo teve seu valor estabelecido
experimentalmente, através da montagem do circuito mostrado na Figura 6.16. Observar que o
LED infravermelho é polarizado diretamente, enquanto que o fotodiodo é polarizado
inversamente. A cada valor de resistência testada, começando com as maiores, foi feita a
aproximação do LED infravermelho em relação ao fotodiodo a uma distância de 10mm, distância
esta similar à distância prevista na montagem do encoder. Além disso, foi medida a tensão no
ponto “C” procurando-se obter um valor o mais próximo possível de 5 V. O resistor de 1 kΩ
atendeu bem as exigências, gerando uma tensão aproximada de 4,3 V no ponto “C”.
86
Figura 6.16 - Circuito para ligação de um par emissor-receptor (LED infravermelho-fotodiodo).
O passo seguinte foi transformar o sinal analógico em digital, ou seja, transformar o sinal
de tensão no ponto “C”, que varia de um mínimo (luz bloqueada) a um máximo (luz incidente) e
volta a um mínimo, em uma onda quadrada. Para isso foi utilizado um circuito quadrador, como
apresentado na seção 2.4.2 (Encoder Óptico Incremental). O circuito quadrador escolhido foi o
schmitt trigger, cujas características são trazidas na Figura 6.17, modificada de (SCHMITT
TRIGGER, acesso em 2007). O valor dos resistores segue um compromisso e seu
dimensionamento exato somente via cálculo não era garantia de funcionamento na prática. O
ponto de partida adotado foi a escolha de R3 como o resistor de maior valor, minimizando a
diferença entre v2 e v2’. O valor escolhido para R3 foi de 10 kΩ. Adotando Vref = Vcc = 5 V,
ligando o ponto “C” do circuito anterior a Vin , foram realizados alguns ensaios com diferentes
valores de R1 e R2, ambos menores que 10 kΩ.
87
Os ensaios envolveram um circuito para cada par emissor-receptor, já posicionados à 90º
angulares um do outro conforme montagem da seção anterior. Um cenário que se adequou bem à
necessidade de um nível de tensão TTL alto em Vout, quando da transição para nível alto (luz
incidente), foi obtido com R1 = 560 Ω e R2 = 1 kΩ. Com esses resistores, as tensões foram as
seguintes: Vout = GND (nível baixo), Vout = 3,5 V (nível alto, interpretado como 5 V TTL), v2 =
1,9 V (calculado) e v2’ = 1,6 V (calculado). Esse cenário também garantiu a defasagem de 90º
elétricos entre os sinais digitais de cada para emissor-receptor, quando da rotação do eixo do
encoder. A Figura 6.18 ilustra esses sinais.
O circuito completo para ligação e condicionamento dos sinais dos fotodiodos e dos
LED’s infravermelho é mostrado na Figura 6.19. Ele foi montado com os seguintes componentes:
- 2 fotodiodos de 5mm e 2 LED´s infravermelho de 5mm, já posicionados mecanicamente no
encoder didático e com fios soldados a seus terminais;
- 2 resistores de 180 Ω, 2 resistores de 560 Ω, 2 resistores de 10 kΩ e 4 resistores de 1 kΩ;
- 1 circuito integrado LM324 com quatro amplificadores operacionais;
- 1 protoboard, fios e grampos metálicos para conexões.
Vin A
Vin B
Vout A
Vout B
Figura 6.18 - Defasagem de 90º elétricos entre os sinais dos pares emissor-receptor.
Figura 6.19 - Circuito para ligação e condicionamento dos sinais dos fotodiodos e dos LED’s
infravermelho, incluindo a pinagem do CI LM324.
88
DB9 Fêmea DB9 Macho
A A_RES
GND GND
O kit também conta com um encoder de referência (1024 PPR) acoplado ao mesmo eixo do
encoder didático. O encoder de referência faz parte do módulo utilizado como base para o
encoder didático e sua ligação até a protoboard foi realizada com fios e um conector DB9. Essa
ligação é esquematizada na Figura 6.20, onde A_RES significa o canal A do encoder de
referência (canal A de maior RESolução) e B_RES o canal B do encoder de referência.
A alimentação do encoder didático e do encoder de referência, Figura 6.19 e 6.20, bem
como o envio de seus respectivos sinais A e B ao microcontrolador, foram feitas através de um
conector de expansão. A Figura 6.21 traz um esquema do conector de expansão, que será
conectado à placa de desenvolvimento módulo II.
2 18
1 17
Módulo II
Conector de
Expansão
18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
5 Vcc GND 3.3V RD7 RC5 RD6 RC4 RD5 RC3 RD4 RC2 RD3 RB0 RD2 RA2 RD1 RE2 RD0
89
Como dito anteriormente, o tratamento dos sinais provenientes do encoder didático e do
encoder de referência foi feito num microcontrolador, no caso, um PIC16F877A da Microchip.
Este microcontrolador está presente na placa de desenvolvimento módulo II, disponível no
laboratório de mecatrônica. Os recursos do módulo II utilizados no kit de encoder foram:
- PIC16F877A, onde foi gravado o software embarcado que trata os sinais do kit de encoder e os
sinais vindos da interface em MATLAB (porta serial do PC);
- 4 Displays de 7 segmentos, onde é indicada a posição atual (em pulsos) do encoder didático;
- 2 LED´s, onde é indicado o estado atual do encoder didático, isto é, o nível lógico momentâneo
do canal A e do canal B;
- Conector de expansão contendo 15 I/O’s (Figura 6.21), que serve de ligação entre os pinos do
microcontrolador presente no módulo II e a protoboard, onde estão concentrados os sinais dos
encoders;
- Comunicação serial RS232, utilizada para enviar e receber dados entre o microcontrolador e o
PC que está rodando a interface em MATLAB de aquisição de posição ou teste de precisão;
- Entrada de gravação in-circuit, para conexão com a placa ICD2 da LabTools. O ICD2 é uma
interface de gravação de programas no microcontrolador via porta USB do PC;
Algumas informações de hardware do módulo II (MANUAL MOSAICO, 2007) são
apresentadas a seguir:
- O microcontrolador PIC16F877A está configurado para trabalhar numa freqüência de clock de
4 MHz;
- Os quatro displays de 7 segmentos possuem os respectivos segmentos conectados entre si, ou
seja, de maneira a se fazer uma varredura de displays. A conexão com o microcontrolador segue
a Tabela 6.1. As vias de seleção de cada um dos displays seguem a Tabela 6.2.
90
Tabela 6.2 - Correspondência entre as vias de seleção dos displays e os terminais do PIC.
PIC Display
RB7 DS1 (milhar)
RB6 DS2 (centena)
RB5 DS3 (dezena)
RB4 DS4 (unidade)
- Os dois LED’s utilizados estão ligados, respectivamente, nos terminais RB2 e RB3 do
microcontrolador;
- A placa de desenvolvimento módulo II possui driver interno para adequar os níveis de tensão do
microcontrolador (TTL) aos padrões da RS232 (+12V e –12V). A comunicação é feita com 2
vias, a via de TX está ligada ao terminal RC6 e a via de RX está ligada ao terminal RC7 do
microcontrolador.
De acordo com a Figura 6.21, o conector de expansão permitiu realizar as seguintes
ligações entre os canais dos encoders e os terminais do microcontrolador:
- Encoder didático: Canal A (AA, no soft. emb.) => RC4 Canal B (BB, no soft. emb.) => RC5
- Encoder de referência: Canal A (A_RES) => RA2 Canal B (B_RES) => RE2
91
Figura 6.22 - Formas de onda de um sistema resolvedor sem interpolador eletrônico. A
resolução obtida é quatro vezes maior.
canais canais
11 10 00 01 01 10 00 11
Considera Considera
Considera Considera Considera Considera
Considera mudança Considera mudança
diminuição aumento aumento diminuição
manutenção errada de manutenção errada de
de posição de posição de posição de posição
do estado estado do estado estado
(U_D := 0, (U_D := 1, (U_D := 1, (U_D := 0,
(CLK := 0) (CLK := 0, (CLK := 0) (CLK := 0,
CLK := 1) CLK := 1) CLK := 1) CLK := 1)
ERR++) ERR++)
ESTADO 0 ESTADO 2
canais canais
10 11 01 00 01 10 11 00
Considera Considera
Considera Considera Considera Considera Considera Considera
mudança mudança
manutenção aumento diminuição diminuição aumento manutenção
errada de errada de
do estado de posição de posição de posição de posição do estado
estado estado
(CLK := 0) (U_D := 1, (U_D := 0, (U_D := 0, (U_D := 1, (CLK := 0)
(CLK := 0, (CLK := 0,
CLK := 1) CLK := 1) CLK := 1) CLK := 1)
ERR++) ERR++)
ESTADO 1 ESTADO 3
92
início
zera sistema;
zera posição absoluta/acumulada;
zera posição atual;
lê estado inicial do encoder;
senão então
se estiver em modo teste
mostra posição atual nos displays de 7 segmentos, ou mostra ‘run’ caso não tenha havido a 1ª mudança de estado;
senão então
se estiver em modo teste
93
A Figura 6.24 apresenta um fluxograma simplificado que resume o funcionamento do
software embarcado. O fluxograma é baseado no código completo que se encontra no Anexo IV.
Como dito, o programa está sempre lendo os canais A e B do encoder didático e
identificando se houve ou não mudanças de estado. O estado atual é indicado através dos dois
LED`s mais à direita presentes no módulo II. A cada mudança de estado do encoder didático, o
programa identifica também o sentido de giro (aumentando ou diminuindo a posição) e mostra a
posição atual através dos quatro displays de 7 segmentos do módulo II. O acendimento dos
displays foi feito por meio de sua multiplexação no tempo. O display mais à esquerda mostra o
sinal de menos, caso a posição atual seja negativa, ou não mostra nada, caso a posição seja
positiva. Os outros três displays mostram a posição atual, em pulsos (mudanças de estado),
partindo de 000. Lembrando que a posição 000 só é mostrada a partir da detecção da primeira
mudança de estado do encoder didático. Antes disso é exibida a mensagem ‘run’.
O programa também está sempre verificando os pedidos do usuário, que são caracteres
recebidos no PIC pela porta serial e que são enviados a partir da interface do usuário em
MATLAB. Alguns caracteres foram escolhidos para representar cada pedido que é feito na
interface. Assim, um caractere é transmitido da interface para o programa com o intuito de
configurar um ou mais parâmetros do programa. A função que verifica os pedidos do usuário é
mostrada a seguir:
void verif_pedido(void)
{
CHAR_RX = recebe();
switch(CHAR_RX)
{
case ('Z'): zera(); break;
case ('E'): info_err(); break;
case ('T'): zera(); EH_TESTE = 1; le_est_atual_RES(); break;
case ('F'): EH_TESTE = 0; break;
case ('1'): PULS_POR_VAL_ENV = 1; break;
case ('2'): PULS_POR_VAL_ENV = 2; break;
case ('4'): PULS_POR_VAL_ENV = 4; break;
default: break;
}
}
O caractere ‘Z’ “zera” os parâmetros do sistema. O caractere ‘E’ faz com que seja enviado
pela porta serial, do PIC para a interface em MATLAB, o valor aproximado de mudanças erradas
de estado. O caractere ‘T’ configura para modo de teste de precisão. O caractere ‘F’ finaliza o
modo teste de precisão.
94
Os caracteres ‘1’, ‘2’ e ‘4’ configuram a variável que define quantos pulsos (mudanças de estado)
devem ocorrer para que um valor de posição atual seja enviado do PIC para a interface em
MATLAB. Quando configurada em ‘1’, a cada pulso do encoder didático é enviada sua posição
atual para a interface em MATLAB. Esse envio da posição atual é feito transmitindo-se, nesta
ordem, o caractere ASCII ‘-’ se for negativa, o caractere ASCII da posição em centenas, o
caractere ASCII da posição em dezenas, o caractere ASCII da posição em unidades e o caractere
ASCII ‘TAB’ como caractere terminador. A interface será configurada para interpretar o
caractere ‘TAB’ como terminador de forma que os caracteres enviados anteriormente sejam
convertidos em um único valor numérico de posição. Quando em modo teste de precisão, além do
programa transmitir a posição atual do encoder didático, ele transmite o valor da contagem de
pulsos do canal A do encoder de referência no intervalo entre duas transmissões de posição do
encoder didático. Por exemplo, se o programa estiver configurado para transmitir a posição a
cada pulso do encoder didático, em modo teste será transmitido também o valor da contagem de
pulsos do canal A do encoder de referência que ocorreram no intervalo entre dois pulsos
consecutivos do encoder didático. Este é o método para teste de precisão que foi apresentado no
final da seção 5.2 (Testes de Encoders Ópticos Incrementais Rotativos). Nele, é utilizado um
encoder de maior resolução (referência) para testar a precisão de um encoder de menor resolução.
O método consiste em verificar se a cada pulso do encoder de menor resolução (intervalo entre
dois pulsos consecutivos) corresponde uma quantidade de pulsos constante do encoder de
referência. A Figura 6.25 reproduz a Figura 5.15 como um exemplo do método utilizado. No
exemplo, o trecho/pulso B do encoder de menor resolução apresenta menor precisão, já que
corresponde a uma quantidade de pulsos do encoder de referência diferente de oito.
Encoder A B C
de menor
resolução
Encoder de
maior
resolução 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8
(referência)
95
No caso do encoder didático construído, sua resolução final com resolvedor foi de 128
PPR. O encoder de referência utilizado para realizar o teste de precisão possui 1024 PPR e, como
não teve sua resolução aumentada via resolvedor, não foi necessário utilizar o canal B. A
contagem de pulsos foi realizada somente com a leitura do canal A.
Como já adiantado, o programa também transmite, quando solicitado via interface em
MATLAB (caractere ‘E’), o valor aproximado de mudanças erradas de estado do encoder
didático. Tais mudanças estão destacadas em vermelho na Figura 6.23 e normalmente não
acontecem, a menos que o encoder didático seja girado com extrema velocidade, superando o
tempo de processamento do sistema (limitado pela transmissão serial). Foi elaborado um código
para a transmissão do valor aproximado destes erros, sendo a seqüência ‘1’ ‘2’ ‘3’ ‘TAB’
interpretada na interface como a não existência de mudanças erradas de estado.
A inicialização do processador/microcontrolador foi realizada seguindo as informações
presentes no datasheet do PIC16F877A (DATASHEET MICROCHIP, acesso em 2007). Convém
enfatizar a configuração da transmissão/recepção serial, já que este recurso foi bastante explorado
no projeto. O modo de transmissão utilizado foi o assíncrono no formato de um start bit, oito bits
de dados e um stop bit. A taxa de transmissão/recepção foi configurada em 9600 bps, a mesma a
ser configurada na interface em MATLAB. Os registradores configurados foram o TXSTA, o
RCSTA e SPBRG, conforme mostra a Figura 6.26, modificada de (DATASHEET MICROCHIP,
acesso em 2007).
Configuração dos bits para o TXSTA:
96
Figura 6.26 - Registradores de configuração da transmissão/recepção serial. (DATASHEET
MICROCHIP, acesso em 2007).
Sabendo-se que o microcontrolador está preparado para trabalhar numa freqüência de clock
de 4 MHz, que o bit BRGH foi configurado em 1 (altas velocidades) e que a taxa desejada é de
9600 bps, pelas indicações da Figura 6.26, o valor decimal de SPBRG deve ser igual a 25.
Logo, SPBRG = 25 = 0x19.
97
6.4 Desenvolvimento da Interface com o Usuário
A interface com o usuário foi desenvolvida em MATLAB, utilizando um recurso não muito
conhecido denominado GUIDE. O GUIDE (Graphical User Interface Development Environment
- Ambiente de Desenvolvimento de Interface Gráfica do Usuário) contém um conjunto de
ferramentas para criação de interfaces gráficas do usuário (GUI’s), sendo muito semelhante aos
ambientes visuais de programação como o Visual Basic e o Visual C++. Tais ferramentas
simplificam o processo de desenvolver e construir GUI’s. Utilizando o GUIDE do MATLAB é
possível:
- Fazer o layout da GUI: Através do GUIDE Layout Editor, é possível fazer o layout
facilmente clicando e arrastando componentes GUI como painéis, botões, textos e menus para a
área de layout. O resultado é salvo com a extensão “.fig”.
- Programar a GUI: O GUIDE gera automaticamente um arquivo M do MATLAB que
controla como a GUI opera. O arquivo M inicializa a GUI e contém o código de funcionamento
para todas as chamadas (comandos que são executados quando o usuário clica num componente
da GUI). Utilizando o M-file Editor (editor de arquivos M) do MATLAB, é possível adicionar
códigos nas chamadas a fim de obter as funções desejadas.
A interface com o usuário foi desenvolvida para permitir a aquisição das posições do
encoder didático em um dado movimento e para permitir a realização de um teste de precisão
deste encoder com ajuda de um encoder de referência. Em ambos os casos o usuário verificaria os
resultados dos ensaios/experimentos na forma gráfica, com opção de exportar os dados tabelados,
no caso, para o Excel.
Utilizando o GUIDE Layout Editor, foram criadas três telas que compõem a interface do
usuário. As mesmas podem ser vistas na Figura 6.27 (a) (c) (e) em fase de construção, e em (b)
(d) (f) em exemplos de como são utilizadas pelo usuário. Estas três telas têm os
respectivos layouts salvos nos arquivos “encoderGUI128.fig”, “encoderAQUIS128.fig” e
“encoderTESTE128.fig”, os quais originaram os arquivos M “encoderGUI128.m”,
“encoderAQUIS128.m” e “encoderTESTE128.m”. Os códigos dos arquivos M se encontram,
respectivamente, nos Anexos V, VI e VII deste trabalho.
98
(a) (b)
(c) (d)
(e) (f)
Figura 6.27 - Desenvolvimento da interface com o usuário - GUI. (a)(c)(e) Fase de construção.
(b)(d)(f) Exemplos de utilização.
99
As telas associadas aos arquivos “encoderAQUIS128” e “encoderTESTE128”, Figura 6.27
(d) e (f), servem para a visualização e gravação dos dados obtidos. A tela principal, Figura 6.27
(b), é a tela que surge com a execução do arquivo “encoderGUI128.m” no prompt do MATLAB.
É a partir dela que o usuário obtém os dados vindos do kit de encoder. Ela é dividida em duas
partes: aquisição, do lado esquerdo, e teste de precisão, do lado direito. Em ambas o usuário pode
selecionar a quantidade de pulsos por leitura {1, 2, 4} e a quantidade de leituras desejadas {16,
32, 64, 128}. O valor definido na quantidade de pulsos por leitura é o valor que irá configurar, via
porta serial, a variável no microcontrolador PIC que define quantos pulsos (mudanças de estado)
devem ocorrer no encoder didático para que um valor de posição atual seja enviado do PIC para a
interface em MATLAB. O valor definido na quantidade de leituras desejadas configura no
próprio código em MATLAB quantos valores de posição atual, vindos pela serial, devem ser
lidos num determinado ensaio/experimento com o encoder didático.
Feita a seleção da quantidade de pulsos por leitura e da quantidade de leituras desejadas, é
calculado e mostrado o movimento total, em graus, necessário para movimentar o encoder
didático até que a quantidade de leituras desejadas seja atingida, ou seja, em quantos graus o
encoder didático deve ser girado para completar determinado ensaio. Aqui foi considerada a
resolução de 128 PPR, levando a 2,8125º por pulso.
Ainda na tela principal, Figura 6.27 (b), o usuário pode agora clicar no botão “FAZER
AQUISIÇÃO” ou no botão “FAZER TESTE”.
Caso escolha “FAZER AQUISIÇÃO”, será executada uma seqüência de comandos,
resumidos a seguir e que se encontram no arquivo “encoderGUI128.m” (Anexo V):
Envia, pela serial, a quantidade de pulsos por leitura selecionada (por exemplo 1)
fprintf(s,'1')
100
Enquanto o número de leituras de posição for menor que o número de leituras desejadas
Lê a posição atual via serial
POS=fscanf(s,'%d')
Caso o usuário tenha escolhido “FAZER TESTE”, também será executada uma seqüência
de comandos, resumidos a seguir e que se encontram no arquivo “encoderGUI128.m” (Anexo V):
Envia, pela serial, a quantidade de pulsos por leitura selecionada (por exemplo 1)
fprintf(s,'1')
101
Enquanto o número de leituras de posição for menor que o número de leituras desejadas
Lê, via serial, a posição atual e a contagem de pulsos do encoder de referência no intervalo
POS=fscanf(s,'%d')
QDE_PULSOS_INTERV=fscanf(s,'%d')
Torna as variáveis globais para poderem ser utilizadas por outros arquivos M
Chama a tela de resultados do teste de precisão, arquivos “encoderTESTE128”, Figura 6.27 (f).
102
arquivo em Excel, clicando no botão “EXPORTAR P/ EXCEL”. Aqui foi utilizado o comando
xlswrite do MATLAB. Os resultados são gravados no arquivo “encoder_aquisicao.xls”, que é
criado para armazenar os dados. O código do arquivo M associado com a tela de resultados da
aquisição está presente no Anexo VI.
Agora falando sobre a tela de resultados do teste de precisão, Figura 6.27 (f), ela também
mostra dois gráficos com a opção de seleção da informação a ser plotada {Posição x Número da
leitura, Qde de pulsos no intervalo x Número da leitura}. A posição é mostrada em pulsos e a
quantidade de pulsos no intervalo é mostrada em pulsos do encoder de referência. A mesma tela
indica a quantidade de mudanças erradas de estado do encoder didático que podem ter ocorrido
durante o ensaio. Ela também permite exportar os resultados para um arquivo em Excel, clicando
no botão “EXPORTAR P/ EXCEL”. Os resultados são gravados no arquivo
“encoder_testeprecisao.xls”, que é criado para armazenar os dados. O código do arquivo M
associado com a tela de resultados do teste de precisão está presente no Anexo VII.
103
6.5 Manual de Experimentos
O kit de encoder didático permite realizar dois tipos de ensaio: aquisição da posição, com a
determinação da velocidade; e teste de precisão, com ajuda de um encoder comercial de maior
resolução (encoder de referência). A realização destes ensaios se inicia com os procedimentos a
seguir, que são comuns para os dois tipos de ensaio.
104
Figura 6.28 - Tela principal da interface com o usuário do kit de encoder didático.
As próximas duas seções apresentam em detalhes cada um dos tipos possíveis de ensaio.
Neste tipo de ensaio, é possível verificar o funcionamento do encoder didático de 128 PPR
através de seu movimento. Durante o movimento, a cada pulso (mudança de estado) do encoder
didático, sua posição atual é incrementada ou decrementada de acordo com o sentido de rotação.
A posição atual começa em 000 e é indicada pelos 4 displays de 7 segmentos do módulo II. Os 2
LED´s mais à direita presentes no módulo II indicam o estado atual do encoder didático, ou seja,
os níveis lógicos momentâneos de seus canais A e B. Ainda durante o movimento do encoder
didático, a interface em MATLAB recebe as leituras de posição atual no tempo, gerando um
histórico de posição e velocidade do encoder didático para o movimento em questão.
Este tipo de ensaio é realizado continuando o procedimento apresentado anteriormente.
105
14 - Do lado esquerdo da tela da Figura 6.28, selecionar a quantidade de pulsos por leitura entre
1, 2 e 4. Este valor configura o kit de encoder para enviar uma leitura de posição atual a cada N
pulsos do encoder didático, sendo N o valor selecionado.
15 - Logo abaixo, selecionar a quantidade de leituras desejadas entre 16, 32, 64 e 128. Este valor
estabelece a quantidade de leituras que o MATLAB irá receber antes de apresentar os resultados,
ou seja, a quantidade de leituras de posição atual que deverão ser feitas durante o movimento do
encoder, caracterizando o ensaio.
16 - Logo abaixo, observar o valor do movimento total em graus. Este valor leva em conta os
dois valores escolhidos nos passos 14 e 15, e indica em quantos graus se deve girar fisicamente o
encoder didático para a conclusão do ensaio.
17 - Logo abaixo, clicar no botão “FAZER AQUISIÇÃO”. Observar a mensagem ‘run’ nos
displays de 7 segmentos. Girar o encoder para qualquer um dos lados. Observar que a primeira
posição atual a ser mostrada nos displays é 000. Continuar movimentando até completar o
movimento total em graus indicado no passo 16. Caso desejado, alternar o sentido de giro durante
o ensaio. Ao término do movimento total, o MATLAB abre automaticamente uma janela com os
resultados da aquisição. A qualquer instante, se ocorrer algum erro no MATLAB, deve-se fechá-
lo e retomar os passos do procedimento a partir do passo 11.
18 - Conferir os resultados do ensaio. A tela de resultados da aquisição traz dois gráficos com
opção de seleção da informação a ser plotada {Posição x Número da leitura, Velocidade x
Número da leitura, Posição x Tempo, Velocidade x Tempo}. A posição é mostrada em pulsos, a
velocidade em pulsos/seg, e o tempo em segundos. A mesma tela indica a quantidade de
mudanças erradas de estado do encoder didático que podem ter ocorrido durante o ensaio.
Normalmente esse valor é sempre zero. Ela também permite exportar os resultados para um
arquivo em Excel, clicando no botão “EXPORTAR P/ EXCEL”. Os resultados são gravados no
arquivo “encoder_aquisicao.xls”, que é criado no diretório corrente para armazenar os dados.
Para retornar à tela principal, clicar em “FECHAR AQUISIÇÃO”.
106
6.5.2 Teste de Precisão Utilizando um Encoder de Referência
Neste tipo de ensaio, é possível verificar a precisão do encoder didático (128 PPR) através
de seu movimento conjunto com o encoder de referência (1024 PPR). Durante o movimento, a
cada pulso do encoder didático, sua posição atual é incrementada ou decrementada de acordo
com o sentido de rotação. A posição atual começa em 000 e é indicada pelos 4 displays de 7
segmentos do módulo II. Os 2 LED´s mais à direita presentes no módulo II indicam o estado
atual do encoder didático, ou seja, os níveis lógicos momentâneos de seus canais A e B. Ainda
durante o movimento do encoder didático, a interface em MATLAB recebe as leituras de suas
posições atuais. Como o encoder de referência também se move junto, a interface em MATLAB
também recebe leituras deste encoder simultaneamente. Neste caso, as leituras representam
quantos pulsos do encoder de referência ocorreram no intervalo entre duas leituras do encoder
didático. Assim, o ensaio gera um histórico de posição do encoder didático e um histórico
mostrando a quantidade de pulsos do encoder de referência que ocorreram em cada intervalo.
Neste último histórico, se a quantidade de pulsos do encoder de referência for igual em todos os
intervalos, pode-se dizer que o encoder didático apresenta precisão dentro de um ângulo
equivalente a um pulso do encoder de referência. Se houver variação na quantidade de pulsos do
encoder de referência nos intervalos, a precisão do encoder didático estará dentro do ângulo
equivalente a essa variação em pulsos do encoder de referência.
Este tipo de ensaio também é realizado continuando o procedimento apresentado no início.
14 - Do lado direito da tela da Figura 6.28, selecionar a quantidade de pulsos por leitura entre 1, 2
e 4. Este valor configura o kit de encoder para enviar uma leitura de posição atual a cada N
pulsos do encoder didático, sendo N o valor selecionado. Junto com cada leitura, também é
enviada a quantidade de pulsos do encoder de referência que ocorreram desde a leitura
imediatamente anterior.
15 - Logo abaixo, selecionar a quantidade de leituras desejadas entre 16, 32, 64 e 128. Este valor
estabelece a quantidade de leituras que o MATLAB irá receber antes de apresentar os resultados,
ou seja, a quantidade de leituras de posição atual que deverão ser feitas durante o movimento do
encoder, caracterizando o ensaio.
107
16 - Logo abaixo, observar o valor do movimento total em graus. Este valor leva em conta os
dois valores escolhidos nos passos 14 e 15, e indica em quantos graus se deve girar fisicamente o
encoder didático para a conclusão do ensaio.
17 - Logo abaixo, clicar no botão “FAZER TESTE”. Observar a mensagem ‘run’ nos displays de
7 segmentos. Girar o encoder lentamente para qualquer um dos lados e manter o mesmo sentido
durante todo o ensaio. Observar que a primeira posição atual a ser mostrada nos displays é 000.
Continuar movimentando até completar o movimento total em graus indicado no passo 16. Ao
término do movimento total, o MATLAB abre automaticamente uma janela com os resultados do
teste de precisão. A qualquer instante, se ocorrer algum erro no MATLAB, deve-se fechá-lo e
retomar os passos do procedimento a partir do passo 11.
18 - Conferir os resultados do ensaio. A tela de resultados do teste de precisão traz dois gráficos
com opção de seleção da informação a ser plotada {Posição x Número da leitura, Qde de pulsos
no intervalo x Número da leitura}. A posição é mostrada em pulsos e a quantidade de pulsos no
intervalo é mostrada em pulsos do encoder de referência [pulsos>RES]. A precisão do encoder
didático é verificada através do gráfico de “Qde de pulsos no intervalo x Número da leitura”.
Quanto mais constante o gráfico, maior é a precisão, isto é, o encoder está realmente mais
próximo de onde ele diz que está. Caso tenha sido selecionada, no passo 14, uma quantidade de
pulsos por leitura igual a 1, o mesmo gráfico deve ser aproximadamente constante e centrado no
valor 8. Isso porque cada leitura feita corresponde a um único pulso do encoder didático (128
PPR) e porque, no intervalo entre dois pulsos seus, ocorrem 8 pulsos do encoder de referência
(1024 PPR), já que este possui resolução 8 vezes maior. Por conseqüência, caso a quantidade de
pulsos por leitura tenha sido selecionada em 2 ou 4, o gráfico deve ser centrado, respectivamente,
em 16 ou 32 pulsos do encoder de referência [pulsos>RES].
A mesma tela indica ainda a quantidade de mudanças erradas de estado do encoder didático
que podem ter ocorrido durante o ensaio. Normalmente esse valor é sempre zero. Ela também
permite exportar os resultados para um arquivo em Excel, clicando no botão “EXPORTAR P/
EXCEL”. Os resultados são gravados no arquivo “encoder_testeprecisao.xls”, que é criado no
diretório corrente para armazenar os dados. Para retornar à tela principal, clicar em “FECHAR
TESTE”.
108
7. Resultados e Discussão
Este capítulo apresenta os resultados da construção do kit de encoder didático, bem como
os resultados de experimentos realizados com ele. Também traz algumas discussões acerca dos
resultados obtidos.
O resultado obtido com o projeto e montagem da mecânica do kit (Seção 6.1) é mostrado
na Figura 7.1. Nela, pode-se visualizar o encoder didático que foi construído e montado sobre a
base metálica do módulo que contém um motor CC e o encoder de referência. É interessante
notar a utilização de materiais de baixo custo, como CD´s, transparências e suportes em papelão,
que viabilizaram a execução do projeto. O objetivo principal foi atingido, que era permitir a
captação de dois sinais defasados eletricamente em 90º com o movimento do encoder em torno
de seu eixo. Uma ressalva pode ser feita em relação ao procedimento de montagem mecânica e
ajustes. O procedimento aparenta ser trabalhoso e manual, o que pode ser justificado, em parte,
pela utilização de materiais de baixo custo, mas não oferece grandes dificuldades se realizado
com atenção.
109
Figura 7.2 - Eletrônica do kit de encoder didático construído.
O resultado obtido com o projeto e montagem da eletrônica do kit (Seção 6.2) e com o
desenvolvimento do software embarcado (Seção 6.3) é ilustrado pela Figura 7.2. Nela, é possível
observar a protoboard, onde foi montado o circuito de condicionamento dos sinais vindos dos
LED´s infravermelho e dos fotodiodos presentes no encoder didático. Pode-se ver a ligação do
encoder de referência à protoboard através de um conector DB9. Também é possível enxergar o
conector de expansão ligando a protoboard ao módulo II. No módulo II, está o PIC 16F877A,
onde foi gravado o software embarcado. Nota-se os quatro displays de 7 segmentos, onde é
mostrada a posição atual do encoder didático. Em baixo dos displays, estão os dois LED´s que
indicam o estado atual, e, por fim, nota-se o cabo serial, que é conectado ao PC responsável pela
interface com o usuário. Os objetivos desta etapa foram atingidos, já que toda a eletrônica
envolvida permitiu o funcionamento do kit de encoder. Por se tratar de um projeto didático, pôde-
se utilizar os recursos e facilidades do módulo II. Além do mais, o kit também ficou bem flexível
quanto a mudanças, possibilitando a inclusão de novos circuitos para outras aplicações.
Uma limitação em relação ao software embarcado desenvolvido está ligada ao tempo de
transmissão de dados pela porta serial. Durante o movimento do encoder didático, o
microcontrolador está constantemente enviando dados, via serial, para o PC que está rodando a
interface com o usuário. Esta transmissão (9600bps) é lenta quando comparada com os tempos de
processamento do microcontrolador. Assim, a velocidade de giro do encoder não pode ser muito
elevada, pois poderiam haver, fisicamente, mudanças de estado do encoder, que não seriam
110
detectadas pelo microcontrolador, enquanto ainda está havendo a transmissão de dados anteriores
pela serial. Uma aplicação que não necessitasse da constante transmissão da posição do encoder
via serial não sofreria este tipo de limitação. Convém citar também que, dependendo da posição
de parada do encoder didático (na transição dos sinais), pode haver a transição de estados
alternadamente entre dois estados adjacentes, causando a transmissão alternada de duas posições
adjacentes para interface. Isto só ocorre porque foi definido que uma mudança de estado no
encoder didático é o gatilho para a transmissão da posição, via serial, à interface.
A Figura 7.3 traz o resultado obtido após o desenvolvimento da interface com o usuário
(Seção 6.4) utilizando o recurso GUIDE do MATLAB. Nela, é possível visualizar um PC
executando, em MATLAB, a interface gráfica do usuário (GUI) do kit de encoder. Aqui, o
objetivo também foi atingido, que era construir uma interface intuitiva e de fácil usabilidade,
permitindo ao usuário a realização de ensaios e a verificação dos resultados. O fato de a interface
ter sido desenvolvida no MATLAB exigiu que a mesma fosse executada dentro dele, o que torna
o processamento um pouco mais demorado, já que o MATLAB é um software “pesado” e com
uma infinidade de ferramentas. Este fato não influenciou na leitura dos resultados, apenas na sua
apresentação. Uma outra questão a ser levantada em relação ao desenvolvimento de uma
interface em MATLAB está ligada à quantidade de arquivos. Para cada tela da interface são
necessários dois arquivos, um arquivo “.m” e um arquivo “.fig”. Uma interface com muitas telas
e/ou recursos implicaria em um número exagerado de arquivos, o que não foi o caso da interface
desenvolvida para o kit de encoder. Uma solução poderia ser o desenvolvimento da interface em
um ambiente de programação que gerasse um único arquivo executável (“.exe”), porém o mesmo
seria “fechado” ao usuário. Em outras palavras, uma interface em MATLAB pode ser alterada e
editada mais facilmente, já que seu desenvolvimento e execução ocorrem no mesmo ambiente.
111
7.2 Experimentos de Aquisição da Posição
(a) (b)
112
Ainda na Figura 7.4 (a), agora no gráfico de baixo, é possível observar os valores de
posição lidos contra o tempo. Este gráfico possui forma linear devido ao movimento do encoder
ter sido feito com velocidade quase constante. O ensaio durou cerca de 3,5 segundos e a
inclinação da reta pode ser estimada facilmente em aproximadamente 40 pulsos por segundo.
Este valor corresponde à velocidade de giro do encoder, que foi determinada a cada duas leituras
e pode ser vista na Figura 7.4 (b). As oscilações ocorrem devido aos pequenos intervalos de
tempo que são usados na determinação da velocidade instantânea. No canto inferior direito da
tela, foi indicado que não houve mudanças erradas de estado do encoder didático.
(a) (b)
113
Na mesma Figura 7.5 (a), agora no gráfico de baixo, pode-se visualizar os valores de
posição lidos contra o tempo. Este gráfico possui forma exponencial devido ao movimento do
encoder ter sido feito com velocidade baixa no início e acelerado depois, onde permaneceu em
velocidade constante. O ensaio durou pouco mais de 3 segundos e a velocidade de giro do
encoder, que foi determinada a cada duas leituras, pode ser vista na Figura 7.5 (b). Nela, nota-se
que a velocidade partiu de zero, cresceu, e permaneceu constante próxima a 80 pulsos por
segundo. No canto inferior direito da tela, também foi indicado que não houve mudanças erradas
de estado.
(a) (b)
114
Ainda na Figura 7.6 (a), agora no gráfico de baixo, é possível observar os valores de
posição lidos contra o tempo. Este gráfico possui forma linear devido ao movimento do encoder
ter sido feito com velocidade quase constante. O ensaio durou cerca de 3,5 segundos e as
inclinações da reta podem ser estimadas entre 30 e 40 pulsos por segundo. Estes valores
correspondem à velocidade de giro do encoder, que foi determinada a cada duas leituras e pode
ser vista na Figura 7.6 (b). Nela, nota-se que a velocidade partiu de zero, cresceu, permaneceu
entre 30 e 40 pulsos por segundo, passou por zero no instante da inversão de sentido, cresceu
negativamente, e permaneceu entre 30 e 40 pulsos por segundo (sentido contrário). No canto
inferior direito da tela, também foi indicado que não houve mudanças erradas de estado.
(a) (b)
Figura 7.7 - Resultados do ensaio IV. (a) Gráficos. (b) Dados exportados para o excel.
115
Os resultados obtidos são apresentados nos itens (a) e (b) da Figura 7.7. Em (a), no gráfico
de cima, pode-se ver os valores de posição do encoder didático lidos contra o número da leitura.
Como a quantidade de pulsos por leitura foi selecionada em 1 e cada pulso está relacionado com
uma posição, a inclinação da reta vale 1, ou seja, o valor do eixo Y é igual ao valor do eixo X. A
reta parte de zero porque a posição inicial sempre é nula. A reta é estritamente crescente e
positiva, pois, durante o ensaio, o encoder foi girado no mesmo sentido (positivo). Foram obtidas
16 leituras (eixo X), conforme seleção inicial da quantidade de leituras desejadas,
correspondendo a um movimento de 45º, tanto do encoder didático (128 PPR), quanto do encoder
de referência (1024 PPR).
Continuando na Figura 7.7 (a), agora no gráfico de baixo, pode-se observar a quantidade de
pulsos do encoder de referência [pulsos>RES] que ocorreram entre cada leitura de posição do
encoder didático (intervalo entre duas leituras consecutivas). Como esperado, o gráfico se
apresentou aproximadamente constante e centrado em 8, já que a quantidade de pulsos por leitura
foi selecionada em 1 e a resolução do encoder de referência é 8 vezes maior do que a resolução
do encoder didático. A quantidade de pulsos no intervalo relacionada à leitura 0 deve ser
ignorada, já que não existe ainda nenhuma leitura de posição feita, logo não é possível
caracterizar um intervalo. Sendo assim, e com ajuda dos dados exportados para Excel, Figura 7.7
(b), a média dos valores da quantidade de pulsos no intervalo ficou em 7,9 [pulsos>RES], muito
próximo do valor 8 esperado. Analisando melhor os dados, pode-se verificar que, no trecho de
45º ensaiado, a quantidade de pulsos no intervalo esteve entre 4 e 12 [pulsos>RES], portanto 8 ±
4 [pulsos>RES]. Sabendo que 1 [pulso>RES] corresponde a 0,3516º (360º / 1024PPR), pode-se
tirar que a resolução do encoder didático é 8 * 0,3516º = 2,8125º como esperado (360º / 128PPR
= 2,8125º), e que sua precisão é de, no mínimo, ± 4 * 0,3516º ≅ ± 1,4º. No canto inferior direito
da tela, também foi indicado que não houve mudanças erradas de estado.
116
Figura 7.8 - Resultados do ensaio V.
O gráfico de cima da Figura 7.8 é decrescente, mostrando que o encoder didático foi girado
no sentido negativo. Considerando o gráfico de baixo, a análise dos resultados neste caso é
análoga ao ensaio anterior. A única diferença é que o número de leituras realizadas foi de 128,
correspondendo a uma revolução completa do encoder.
117
Figura 7.9 - Resultados do ensaio VI.
118
8. Conclusões e Sugestões para Próximos Trabalhos
Foi realizado um estudo inicial sobre encoders ópticos baseados no efeito moiré,
apresentando os princípios de funcionamento, discutindo sistemas para aumentar a resolução
(sistemas resolvedores), mostrando as técnicas de fabricação de discos e abordando questões
relacionadas a erros e testes de encoders.
Em seguida, foi desenvolvido um kit de encoder composto por um encoder didático de
baixo custo (128 PPR), um encoder de referência (1024 PPR), uma interface eletrônica com
microcontrolador e uma interface gráfica do usuário em MATLAB. O encoder didático, de custo
estimado em 30 reais, foi desenvolvido utilizando o efeito moiré para gerar a defasagem de 90º
elétricos entre seus canais A e B. Para isso, foram utilizados dois discos, um móvel com 32 pares
de setores translúcido-opaco e outro estático com 33 pares. A diferença de 1 par de setores
translúcido-opaco permitiu a obtenção da defasagem de 90º elétricos por meio do posicionamento
de dispositivos de leitura a 90º angulares. A resolução do encoder obtida fisicamente (32 PPR) foi
ampliada (128 PPR) com a utilização de um resolvedor eletrônico via software, implementado
em um microcontrolador. O microcontrolador também foi utilizado para a transmissão de dados,
via serial, a um PC executando a interface gráfica do usuário (GUI). A GUI criada em MATLAB
permitiu caracterizar o funcionamento do encoder didático através de dois tipos de experimentos:
aquisição da posição e teste de precisão.
Nos experimentos de aquisição da posição, o encoder didático foi movimentado nos dois
sentidos e com velocidades diferentes, fazendo com que os dados de posição fossem lidos e
armazenados em MATLAB, onde foram determinadas as velocidades. Cada experimento teve os
resultados apresentados na forma gráfica, refletindo, coerentemente, o movimento físico imposto
ao encoder didático.
Nos experimentos de teste de precisão, o encoder didático foi movimentado juntamente
com um encoder de referência. Além das leituras da posição do encoder didático, o MATLAB
recebeu as quantidades de pulsos do encoder de referência que ocorreram entre cada duas leituras
do encoder didático. Os resultados dos experimentos também foram apresentados graficamente,
onde foi possível inferir a respeito da precisão do encoder didático, que ficou em ± 1,4º , metade
de sua resolução (360º / 128PPR = 2,8º).
119
Considerando trabalhos futuros, poderiam ser construídos outros tipos de encoders
didáticos com a utilização do efeito moiré em suas diferentes variações, seja utilizando máscaras
ou modificando a disposição física de fotosensores para se obter sinais defasados em 90º elétricos
sem a necessidade de um disco extra. Poderiam ser introduzidos mais fotosensores, por exemplo,
para utilizar o efeito médio do sinal e minimizar a influência de erros mecânicos; e para servir
como leitor da posição zero, com a alteração do padrão incremental do reticulado para isso.
Poderiam ser construídos encoders ópticos lineares, novamente com suas diferentes variações.
Outra sugestão seria a construção de um encoder óptico absoluto, cujo padrão do disco é bem
interessante, embora não utilize o efeito moiré. Neste caso, seria possível o estudo do código de
Gray.
Também poderiam ser construídos encoders com diferentes resoluções, através do aumento
ou diminuição do número de setores dos discos. Aumentos na resolução poderiam ser obtidos
também com a implementação e utilização de resolvedores eletrônicos (rede de resistores e CI´s
comerciais) e de resolvedores ópticos (dispositivos de leitura em diferentes angulações).
Pode ser considerada como uma sugestão de melhoria a confecção de um circuito impresso
em substituição à protoboard e ao módulo II utilizados na interface eletrônica do projeto. O uso
de lógica programável também poderia ser explorada no futuro.
Uma outra sugestão para trabalhos futuros seria a utilização do encoder didático em uma
aplicação, onde seria possível realizar o controle digital do motor CC a ele acoplado. Também
seria interessante realizar a supervisão/monitoramento da posição em tempo real, ou seja,
utilizando ferramentas como o LabView ou o próprio simulink do MATLAB.
120
Referências Bibliográficas
Amidror, Isaac. The Theory of the Moiré Phenomenon. Boston: Kluwer Academic Publishers,
2000, 474p.
Catálogo Turck. Linear and Rotary Position Products. Disponível em: <http://www.turck-
usa.com/Literature/B1025_Linear_Rotary_Position.pdf>. Acesso em: 13 mar. 2007.
Creath, K., Wyant, J. C. Moiré and Fringe Projection Techniques. In: Malacara, D. Optical Shop
Testing. 2.ed. New York: John Wiley & Sons, Inc., 1992, pp.653-675.
121
Datasheet RLS - Interpolador RLX100. Interpolation factors 5, 10, or 25. Disponível em:
<http://www.rls.si/default.asp?prod=interpolators/RLX100.pdf>. Acesso em: 13 mar. 2007.
De Sa, A. Principles of Electronic Instrumentation. 2.ed. London: Edward Arnold, 1990, pp.197-
198.
Elliott, David J. Integrated Circuit Mask Technology. New York: McGraw-Hill, Inc., 1985, 287p.
Madou, Marc J. Fundamentals of Microfabrication. Boca Raton: CRC Press, 1997, pp.1-44.
Manual Mosaico. Guia do usuário - placa de desenvolvimento - módulo II. 2007, 23p.
Matsuzoe, Y., Tsuji, N. Breadboard system and techniques to optimize the optical system of an
encoder. Optical Engineering, v.40, (2), pp.283-288, 2001.
Pallás-Areny, R., Webster, J. G. Sensors and Signal Conditioning. New York: John Wiley &
Sons, Inc., 1991, pp.1-4, 300-309.
Patel, B., Sutton, A., George, L. Liftoff Process Using Positive Photoresist. Disponível em:
<http://cmos.mirc.gatech.edu/group/projects/liftoff.pdf>. Acesso em: 08 maio 2007.
122
Post, D., Han, B., Ifju, P. High Sensitivity Moiré – Experimental Analysis for Mechanics and
Materials. New York: Springer-Verlag, Inc., 1994, 444p.
Woolvet, G. A. Transducers in Digital Systems. London: Peter Peregrinus Ltd., 1977, 193p.
123
Anexo I
124
Anexo II
% Programa que ilustra o fenomeno do batimento utilizando duas grades de linhas retas
clear all; close all; clc;
n1=352; % define o numero de linhas da grade 1
n2=350; % define o numero de linhas da grade 2
x1=linspace(0,1, n1); % cria n1 pontos (linearmente espaçados) entre 0 e 1
x2=linspace(0,1, n2); % cria n2 pontos (linearmente espaçados) entre 0 e 1
Anexo III
f=figure(1);
h=pie(x); % cria a grade circular de linhas radiais
set(f,'Color','w') % formata as propriedades de cor
125
Anexo IV
/*
Universidade Estadual de Campinas
Faculdade de Engenharia Mecânica
Curso de Engenharia de Controle e Automação
TG II - Encoder Óptico
2o Semestre de 2007
Professor Orientador: Luiz Otávio Saraiva Ferreira
Aluno: Victor Adriano Turchetti RA: 025366
Arquivo: Encoder.h
Autor: Victor A. Turchetti
Data: 14/11/2007
Versão: 1.0
*/
//*****************************************************************************
/* Função que transmite caractere pela serial */
/* O argumento de entrada é o caractere a ser transmitido */
/* Não tem argumento de saida */
//-----------------------------------------------------------------------------
void transmite(char DADO_TX)
{
while (TXFLAG == 0)
{
};
TXREG = DADO_TX;
}
//*****************************************************************************
/* Função que recebe caractere pela serial */
/* Não tem argumento de entrada, e o argumento de saida é caractere ASCII */
/* recebido ou o número 0 em caso de nenhum caractere recebido */
//-----------------------------------------------------------------------------
char recebe(void)
{
if (RXFLAG == 0)
{ return 0;
}
else
{ return RCREG;
}
}
//*****************************************************************************
/* Função que lê estado atual do encoder */
//-----------------------------------------------------------------------------
void le_est_atual(void)
{
if(AA)
{ if(BB)
{ EST_ATUAL = 3; // Estado atual = 3 => AA=1 e BB=1
}
else
{ EST_ATUAL = 2; // Estado atual = 2 => AA=1 e BB=0
}
}
else
{ if(BB)
{ EST_ATUAL = 1; // Estado atual = 1 => AA=0 e BB=1
}
else
{ EST_ATUAL = 0; // Estado atual = 0 => AA=0 e BB=0
}
}
}
//*****************************************************************************
/* Função que lê estado do canal A do encoder de referência, quando em modo teste */
//-----------------------------------------------------------------------------
void le_est_atual_RES(void)
{
if(A_RES)
{ EST_ATUAL_RES = 1; // Canal A em nível alto, A_RES=1
}
else
{ EST_ATUAL_RES = 0; // Canal A em nível baixo, A_RES=0
}
}
//*****************************************************************************
/* Função que incrementa a posição do encoder em módulo */
//-----------------------------------------------------------------------------
void incrementa(void)
{
POS_UNID = POS_UNID + 1;
if(POS_UNID == 10)
{ POS_UNID = 0; POS_DEZ = POS_DEZ + 1;
if(POS_DEZ == 10)
{ POS_DEZ = 0; POS_CEN = POS_CEN + 1;
126
if(POS_CEN == 10)
{ POS_CEN = 0; POS_ACUM = 0; // Posição é zerada ao passar de 999 em módulo
}
}
}
}
//*****************************************************************************
/* Função que decrementa a posição do encoder em módulo */
//-----------------------------------------------------------------------------
void decrementa(void)
{
POS_UNID = POS_UNID - 1;
if(POS_UNID == 255)
{ POS_UNID = 9; POS_DEZ = POS_DEZ - 1;
if(POS_DEZ == 255)
{ POS_DEZ = 9; POS_CEN = POS_CEN - 1;
if(POS_CEN == 255)
{ POS_CEN = 9;
}
}
}
}
//*****************************************************************************
/* Função que "zera" o sistema */
//-----------------------------------------------------------------------------
void zera(void)
{
POS_ACUM = 0; POS_CEN = 0; POS_DEZ = 0; POS_UNID = 0;
EH_POSITIVO = 1; EH_PRIM_CLK = 1; QDE_EST_ERR = 0; INTERV_UNID = 0;
INTERV_DEZ = 0; EH_TESTE = 0; CONTA_PULSOS = 0;
}
//*****************************************************************************
/* Função que informa a quantidade aproximada de mudanças de estado erradas do encoder */
//-----------------------------------------------------------------------------
void info_err(void)
{
if(QDE_EST_ERR != 0)
{ if(QDE_EST_ERR < 5)
{ transmite('5'); transmite('5'); // 55 <=> ocorreram menos de 5 mudanças erradas
transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador)
}
else
{ if(QDE_EST_ERR < 10)
{ transmite('1'); transmite('1'); transmite('1'); // 111 <=> ocorreram menos de 10 mudanças erradas
transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador)
}
else
{ if(QDE_EST_ERR < 20)
{ transmite('2'); transmite('2'); transmite('2'); // 222 <=> ocorreram menos de 20 mudanças erradas
transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador)
}
else
{ transmite('9'); transmite('9'); transmite('9'); // 999 <=> ocorreram 20 ou mais mudanças erradas
transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador)
}
}
}
}
else
{ transmite('1'); transmite('2'); transmite('3'); // 123 <=> NÃO ocorreram mudanças erradas de estado
transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador)
}
}
//*****************************************************************************
/* Função que verifica o pedido solicitado pelo usuário via interface em MATLAB */
//-----------------------------------------------------------------------------
void verif_pedido(void)
{
CHAR_RX = recebe();
switch(CHAR_RX)
{
case ('Z'): zera(); break;
case ('E'): info_err(); break;
case ('T'): zera(); EH_TESTE = 1; le_est_atual_RES(); break; // Inicia modo teste e já deixa zerado
case ('F'): EH_TESTE = 0; break; // Termina modo teste
case ('1'): PULS_POR_VAL_ENV = 1; break;
case ('2'): PULS_POR_VAL_ENV = 2; break;
case ('4'): PULS_POR_VAL_ENV = 4; break;
default: break;
}
}
//*****************************************************************************
/* Função que trata as mudanças de estado */
//-----------------------------------------------------------------------------
void trata_mud_est(void)
{
switch(EST_ATUAL)
{
case (0): switch(EST_ANTES)
{
127
case (2): U_D = 0; CLK = 1; break; // Diminui posição (U_D = 0)
case (1): U_D = 1; CLK = 1; break; // Aumenta posição (U_D = 1)
case (0): CLK = 0; break; // Manteve o estado
default: CLK = 0; QDE_EST_ERR = QDE_EST_ERR + 1; break;
}
break;
default: break;
}//fim switch
}
//*****************************************************************************
/* Função que trata as mudanças de estado do canal A do encoder de referência */
//-----------------------------------------------------------------------------
void trata_mud_est_RES(void)
{
switch(EST_ATUAL_RES)
{
case (0): switch(EST_ANTES_RES)
{
case (1): CLK = 1; break; // Dá o clk, borda de descida
default: CLK = 0; break;
}
break;
//*****************************************************************************
/* Função que trata do acendimento dos displays de 7 segmentos */
//-----------------------------------------------------------------------------
void trata_display7seg(void)
{
switch(EH_VEZ)
{
case (0): if(EH_POSITIVO == 0) // Indica que a posição é negativa
{ PORTD = TABELA_7SEG[16]; // Prepara sinal de menos '-' no display7seg
}
else
{ PORTD = 0; // Não acenderá nada no de display7seg
}
128
case (2): if(EH_PRIM_CLK == 1)
{ PORTD = TABELA_7SEG[18]; // Prepara letra 'u' no display7seg
}
else
{ PORTD = TABELA_7SEG[POS_DEZ]; // Prepara dezena no display7seg
}
default: break;
}//fim switch
}
/*
Universidade Estadual de Campinas
Faculdade de Engenharia Mecânica
Curso de Engenharia de Controle e Automação
TG II - Encoder Óptico
2o Semestre de 2007
Professor Orientador: Luiz Otávio Saraiva Ferreira
Aluno: Victor Adriano Turchetti RA: 025366
Arquivo: Encoder.c
Autor: Victor A. Turchetti
Data: 14/11/2007
Versão: 1.0
*/
/*
O encoder didático será chamado aqui somente de encoder.
O encoder comercial de 1024 PPR será chamado aqui de encoder de referência.
*/
#define A_RES RA2 // Canal A do encoder de resolução maior, Pino 4 do conector de expansão
#define B_RES RE2 // Canal B do encoder de resolução maior, Pino 2 do conector de expansão, NÃO UTILIZADO
129
char EH_TESTE = 0; // Modo teste quando EH_TESTE = 1 a pedido do usuário via serial
char EST_ANTES_RES, EST_ATUAL_RES; // Variáveis de estado do canal A do encoder de referência (A_RES)
char INTERV_UNID = 0; // Qde de pulsos gerados pelo encoder de referência no intervalo
char INTERV_DEZ = 0; // entre dois valores enviados do encoder sob teste
char CONTA_PULSOS = 0; // Faz o controle de pulsos desejados por valor enviado pela serial
char PULS_POR_VAL_ENV = 1; // Qde de pulsos desejados por valor enviado pela serial. Pode ser escolhido pelo usuário
//*****************************************************************************
/* TABELA PARA OS DISPLAYS DE 7 SEGMENTOS */
//-----------------------------------------------------------------------------
const char TABELA_7SEG[21]= {
0x3F, // 0h - 0
0x06, // 1h - 1
0x5B, // 2h - 2
0x4F, // 3h - 3
0x66, // 4h - 4
0x6D, // 5h - 5
0x7D, // 6h - 6
0x07, // 7h - 7
0x7F, // 8h - 8
0x6F, // 9h - 9
0x77, // Ah - A
0x7C, // Bh - b
0x39, // Ch - C
0x5E, // Dh - d
0x79, // Eh - E
0x71, // Fh - F
0x40, // Sinal de menos '-' // chamada: PORTD = TABELA_7SEG[16]
0x50, // Letra 'r' // chamada: PORTD = TABELA_7SEG[17]
0x1C, // Letra 'u' // chamada: PORTD = TABELA_7SEG[18]
0x54 // Letra 'n' // chamada: PORTD = TABELA_7SEG[19]
};
//*****************************************************************************
// Função Principal
//-----------------------------------------------------------------------------
void main(void)
{
// A diretiva da linha abaixo define os bits de configuração do processador. No caso abaixo a depuração
// com o ICD2BR está habilitada. Para desabilitá-la, troque DEBUG_ON por DEBUG_OFF.
//__set_configuration_word(CP_OFF&CPD_OFF&DEBUG_ON&LVP_OFF&WRT_ENABLE_OFF&BODEN_OFF&PWRTE_ON&WDT_OFF&XT_OSC);
// A opção WRT_ENABLE_OFF não é compatível com 16F877a
__set_configuration_word(CP_OFF&CPD_OFF&DEBUG_ON&LVP_OFF&BODEN_OFF&PWRTE_ON&WDT_OFF&XT_OSC);
/* PROCESSOS - INÍCIO */
130
EST_ANTES = EST_ATUAL; // Armazena estado imediatamente anterior
le_est_atual(); // Lê o novo estado atual
trata_mud_est();
EH_PRIM_CLK = 0;
}
else // Não é o primeiro clock
{
if(U_D == 1) // Quando a posição aumenta
{ POS_ACUM = POS_ACUM + 1;
if(EH_POSITIVO == 1)
{ decrementa();
}
else // É número negativo
{ incrementa();
}
}//fim else U_D == 0
if(CONTA_PULSOS == PULS_POR_VAL_ENV)
{
if(EH_POSITIVO == 0) // Indica que a posição é negativa
{ transmite('-'); // Transmite o caracter '-' em ASCII pela serial
}
transmite(POS_CEN + 0x30); transmite(POS_DEZ + 0x30); transmite(POS_UNID + 0x30);
// Transmite o valor da posição em ASCII pela serial
transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador)
if(EH_TESTE == 1)
{ transmite(INTERV_DEZ + 0x30); transmite(INTERV_UNID + 0x30);
transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador)
INTERV_UNID = 0; INTERV_DEZ = 0;
}
CONTA_PULSOS = 0;
}
}//fim if(CLK == 1)
131
{ EST_ANTES_RES = EST_ATUAL_RES;
le_est_atual_RES();
trata_mud_est_RES();
}//fim while
/* PROCESSOS - FIM */
}//fim main
Anexo V
%##########################################################################
function varargout = encoderGUI128(varargin)
% ENCODERGUI128 M-file for encoderGUI128.fig
% ENCODERGUI128, by itself, creates a new ENCODERGUI128 or raises the existing
% singleton*.
%
% H = ENCODERGUI128 returns the handle to a new ENCODERGUI128 or the handle to
% the existing singleton*.
%
% ENCODERGUI128('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in ENCODERGUI128.M with the given input arguments.
%
% ENCODERGUI128('Property','Value',...) creates a new ENCODERGUI128 or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before encoderGUI128_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to encoderGUI128_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
%##########################################################################
% --- Executes just before encoderGUI128 is made visible.
function encoderGUI128_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to encoderGUI128 (see VARARGIN)
132
set(handles.TOTGRAUSaquis,'String','45º');
set(handles.TOTGRAUStes,'String','45º');
%##########################################################################
% --- Outputs from this function are returned to the command line.
function varargout = encoderGUI128_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%##########################################################################
% --- Executes on selection change in popupmenuPPLAQUI.
function popupmenuPPLAQUI_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuPPLAQUI (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%##########################################################################
% --- Executes during object creation, after setting all properties.
function popupmenuPPLAQUI_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuPPLAQUI (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
%##########################################################################
% --- Executes on selection change in popupmenuLDAQUI.
function popupmenuLDAQUI_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuLDAQUI (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
133
%##########################################################################
% --- Executes during object creation, after setting all properties.
function popupmenuLDAQUI_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuLDAQUI (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
%##########################################################################
% --- Executes on button press in pushbuttonAQUIS.
function pushbuttonAQUIS_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonAQUIS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PPL_AQUIS=get(handles.puls_por_leit_AQUIS,'String');
switch PPL_AQUIS
case '1'
fprintf(s,'1'); %envia pela serial pedido do usuário(pulsos por leitura)
case '2'
fprintf(s,'2'); %envia pela serial pedido do usuário(pulsos por leitura)
case '4'
fprintf(s,'4'); %envia pela serial pedido do usuário(pulsos por leitura)
otherwise
end
LD_AQUIS=get(handles.qde_leit_desej_AQUIS,'String');
switch LD_AQUIS
case '16'
qde_leit_desej=16;
case '32'
qde_leit_desej=32;
case '64'
qde_leit_desej=64;
case '128'
qde_leit_desej=128;
otherwise
end
134
N(1)=0;
for i=2:1:n
t(i)=etime(datevec(H(i)),t_ref);
N(i)=i-1;
end
%##########################################################################
% --- Executes on selection change in popupmenuPPLTES.
function popupmenuPPLTES_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuPPLTES (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%##########################################################################
% --- Executes during object creation, after setting all properties.
function popupmenuPPLTES_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuPPLTES (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
%##########################################################################
% --- Executes on selection change in popupmenuLDTES.
function popupmenuLDTES_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuLDTES (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
135
set(handles.qde_leit_desej_TES,'String',16);
LDtes=16;
case ' 32'
set(handles.qde_leit_desej_TES,'String',32);
LDtes=32;
case ' 64'
set(handles.qde_leit_desej_TES,'String',64);
LDtes=64;
case ' 128'
set(handles.qde_leit_desej_TES,'String',128);
LDtes=128;
otherwise
end
PPLtes=str2double(get(handles.puls_por_leit_TES,'String'));
TOTGRAUStes=2.8125*PPLtes*LDtes; %determina o movimento total em graus
strTOTGRAUStes=num2str(TOTGRAUStes);
strTOTGRAUStes=strcat(strTOTGRAUStes,'º');
set(handles.TOTGRAUStes,'String',strTOTGRAUStes);
%##########################################################################
% --- Executes during object creation, after setting all properties.
function popupmenuLDTES_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuLDTES (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
%##########################################################################
% --- Executes on button press in pushbuttonTESTE.
function pushbuttonTESTE_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonTESTE (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PPL_TES=get(handles.puls_por_leit_TES,'String');
global PPL_TESG;
switch PPL_TES
case '1'
fprintf(s,'1'); %envia pela serial pedido do usuário(pulsos por leitura)
PPL_TESG=1;
case '2'
fprintf(s,'2'); %envia pela serial pedido do usuário(pulsos por leitura)
PPL_TESG=2;
case '4'
fprintf(s,'4'); %envia pela serial pedido do usuário(pulsos por leitura)
PPL_TESG=4;
otherwise
end
LD_TES=get(handles.qde_leit_desej_TES,'String');
switch LD_TES
case '16'
qde_leit_desej=16;
case '32'
qde_leit_desej=32;
case '64'
qde_leit_desej=64;
case '128'
qde_leit_desej=128;
otherwise
end
fprintf(s,'T'); %ajusta para modo teste, zerando inclusive, envia pela serial
n=0;
136
fprintf(s,'F'); %finaliza modo teste, envia pela serial
%##########################################################################
% --- Executes on button press in pushbuttonSAIR.
function pushbuttonSAIR_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonSAIR (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
delete(handles.figuraPRINC);
Anexo VI
%##########################################################################
function varargout = encoderAQUIS128(varargin)
% ENCODERAQUIS128 M-file for encoderAQUIS128.fig
% ENCODERAQUIS128, by itself, creates a new ENCODERAQUIS128 or raises the existing
% singleton*.
%
% H = ENCODERAQUIS128 returns the handle to a new ENCODERAQUIS128 or the handle to
% the existing singleton*.
%
% ENCODERAQUIS128('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in ENCODERAQUIS128.M with the given input arguments.
%
% ENCODERAQUIS128('Property','Value',...) creates a new ENCODERAQUIS128 or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before encoderAQUIS128_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to encoderAQUIS128_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
137
'gui_OutputFcn', @encoderAQUIS128_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
%##########################################################################
% --- Executes just before encoderAQUIS128 is made visible.
function encoderAQUIS128_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to encoderAQUIS128 (see VARARGIN)
global nG NG grafPOSG tG EST_ERRG;
%##########################################################################
% --- Outputs from this function are returned to the command line.
function varargout = encoderAQUIS128_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%##########################################################################
% --- Executes on selection change in popupmenuGRAF1.
function popupmenuGRAF1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuGRAF1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val}; %verifica opção no popup menu e plota no gráfico 1
case ' Posicao x Numero da leitura'
plot(NG,grafPOSG,'.-','Color',[0,0.25,0])
xlim([0 nG-1])
ylim('auto')
xlabel('Número da leitura')
ylabel('Posição [pulsos]')
grid
case ' Velocidade x Numero da leitura'
plot(nVELG,grafVELG,'.-','Color',[0,0.25,0])
xlim([0 nG-1])
138
ylim('auto')
xlabel('Número da leitura')
ylabel('Velocidade [pulsos/seg]')
grid
case ' Posicao x Tempo'
plot(tG,grafPOSG,'.-b')
xlim([0 tG(nG)])
ylim('auto')
xlabel('Tempo [s]')
ylabel('Posição [pulsos]')
grid
case ' Velocidade x Tempo'
plot(tVELG,grafVELG,'.-b')
xlim([0 tG(nG)])
ylim('auto')
xlabel('Tempo [s]')
ylabel('Velocidade [pulsos/seg]')
grid
otherwise
end
%##########################################################################
% --- Executes during object creation, after setting all properties.
function popupmenuGRAF1_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuGRAF1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
%##########################################################################
% --- Executes on button press in pushbuttonfechaAQUIS.
function pushbuttonfechaAQUIS_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonfechaAQUIS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
delete(handles.figuraAQUIS);
%##########################################################################
% --- Executes on selection change in popupmenuGRAF2.
function popupmenuGRAF2_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuGRAF2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val}; %verifica opção no popup menu e plota no gráfico 2
case ' Posicao x Tempo'
plot(tG,grafPOSG,'.-b')
xlim([0 tG(nG)])
ylim('auto')
xlabel('Tempo [s]')
ylabel('Posição [pulsos]')
grid
case ' Velocidade x Tempo'
plot(tVELG,grafVELG,'.-b')
xlim([0 tG(nG)])
ylim('auto')
xlabel('Tempo [s]')
ylabel('Velocidade [pulsos/seg]')
grid
case ' Posicao x Numero da leitura'
plot(NG,grafPOSG,'.-','Color',[0,0.25,0])
xlim([0 nG-1])
ylim('auto')
xlabel('Número da leitura')
ylabel('Posição [pulsos]')
grid
case ' Velocidade x Numero da leitura'
plot(nVELG,grafVELG,'.-','Color',[0,0.25,0])
xlim([0 nG-1])
ylim('auto')
xlabel('Número da leitura')
ylabel('Velocidade [pulsos/seg]')
grid
otherwise
end
%##########################################################################
% --- Executes during object creation, after setting all properties.
function popupmenuGRAF2_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuGRAF2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
139
% handles empty - handles not created until after all CreateFcns called
%##########################################################################
% --- Executes on button press in pushbuttonEXPORT.
function pushbuttonEXPORT_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonEXPORT (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global NG tG grafPOSG nVELG tVELG grafVELG;
nome={'TEMPO [s]'};
xlswrite('encoder_aquisicao.xls',nome,'Plan1','C2');
xlswrite('encoder_aquisicao.xls',tG','Plan1','C4');
nome={'POS [pulsos]'};
xlswrite('encoder_aquisicao.xls',nome,'Plan1','E2');
xlswrite('encoder_aquisicao.xls',grafPOSG','Plan1','E4');
nome={'LEITURA'};
xlswrite('encoder_aquisicao.xls',nome,'Plan1','G2');
xlswrite('encoder_aquisicao.xls',nVELG','Plan1','G4');
nome={'TEMPO [s]'};
xlswrite('encoder_aquisicao.xls',nome,'Plan1','I2');
xlswrite('encoder_aquisicao.xls',tVELG','Plan1','I4');
nome={'VEL [pulsos/s]'};
xlswrite('encoder_aquisicao.xls',nome,'Plan1','K2');
xlswrite('encoder_aquisicao.xls',grafVELG','Plan1','K4');
set(handles.pushbuttonEXPORT,'ForegroundColor',[0.51,0.51,0.51]);
Anexo VII
%##########################################################################
function varargout = encoderTESTE128(varargin)
% ENCODERTESTE128 M-file for encoderTESTE128.fig
% ENCODERTESTE128, by itself, creates a new ENCODERTESTE128 or raises the existing
% singleton*.
%
% H = ENCODERTESTE128 returns the handle to a new ENCODERTESTE128 or the handle to
% the existing singleton*.
%
% ENCODERTESTE128('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in ENCODERTESTE128.M with the given input arguments.
%
% ENCODERTESTE128('Property','Value',...) creates a new ENCODERTESTE128 or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before encoderTESTE128_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to encoderTESTE128_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
140
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
%##########################################################################
% --- Executes just before encoderTESTE128 is made visible.
function encoderTESTE128_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to encoderTESTE128 (see VARARGIN)
global PPL_TESG;
global nG NG grafPOSG grafPULSG EST_ERRG;
%##########################################################################
% --- Outputs from this function are returned to the command line.
function varargout = encoderTESTE128_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%##########################################################################
% --- Executes on selection change in popupmenuGRAF1.
function popupmenuGRAF1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuGRAF1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val}; %verifica opção no popup menu e plota no gráfico 1
case ' Posicao x Numero da leitura'
plot(NG,grafPOSG,'.-','Color',[0,0.25,0])
xlim([0 nG-1])
ylim('auto')
xlabel('Número da leitura')
ylabel('Posição [pulsos]')
grid
case ' Qde de pulsos no intervalo x Numero da leitura'
plot(NG,grafPULSG,'.-b')
xlim([0 nG-1])
ylim([0 16*PPL_TESG])
xlabel('Número da leitura')
ylabel('Qde de pulsos no intervalo [pulsos>RES]')
grid
otherwise
end
141
%##########################################################################
% --- Executes during object creation, after setting all properties.
function popupmenuGRAF1_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuGRAF1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
%##########################################################################
% --- Executes on button press in pushbuttonfechaTEST.
function pushbuttonfechaTEST_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonfechaTEST (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
delete(handles.figuraTEST);
%##########################################################################
% --- Executes on selection change in popupmenuGRAF2.
function popupmenuGRAF2_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuGRAF2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val}; %verifica opção no popup menu e plota no gráfico 2
case ' Qde de pulsos no intervalo x Numero da leitura'
plot(NG,grafPULSG,'.-b')
xlim([0 nG-1])
ylim([0 16*PPL_TESG])
xlabel('Número da leitura')
ylabel('Qde de pulsos no intervalo [pulsos>RES]')
grid
case ' Posicao x Numero da leitura'
plot(NG,grafPOSG,'.-','Color',[0,0.25,0])
xlim([0 nG-1])
ylim('auto')
xlabel('Número da leitura')
ylabel('Posição [pulsos]')
grid
otherwise
end
%##########################################################################
% --- Executes during object creation, after setting all properties.
function popupmenuGRAF2_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuGRAF2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
%##########################################################################
% --- Executes on button press in pushbuttonEXPORT.
function pushbuttonEXPORT_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonEXPORT (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global NG grafPOSG grafPULSG;
nome={'POS [pulsos]'};
xlswrite('encoder_testeprecisao.xls',nome,'Plan1','C2');
xlswrite('encoder_testeprecisao.xls',grafPOSG','Plan1','C4');
set(handles.pushbuttonEXPORT,'ForegroundColor',[0.51,0.51,0.51]);
142