Académique Documents
Professionnel Documents
Culture Documents
RA: 025366
NOVEMBRO - 2007
RA:
TTULO:
MEMBRO
(1)
NOTAS DA BANCA
MEMBRO
(2)
ORIENTADOR
Contedo do Trabalho
Apresentao do Trabalho
Seminrio de Apresentao
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
F IN AL
NOTA GLOBAL
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.
Membro (1)
Carimbo e Assinatura
_________________________________
Prof.
Membro (2)
Carimbo e Assinatura
_________________________________
Prof.
Orientador
Carimbo e Assinatura
_________________________________
Prof. Dr. Eurpides G. de Oliveira Nbrega
Coordenador de Graduao
Carimbo e Assinatura
Agradecimentos
Gostaria de agradecer ao professor Luiz Otvio Saraiva Ferreira pelas orientaes prestadas
e pela disponibilidade de atendimento para esclarecer dvidas. Gostaria de agradecer ao Marclio
e ao Paulo Lamim, que contriburam quando da utilizao do laboratrio de mecatrnica.
Gostaria tambm 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 princpios de funcionamento, discutindo sistemas para aumentar a
resoluo (sistemas resolvedores), mostrando as tcnicas de fabricao de discos e abordando
questes relacionadas a erros e testes de encoders. Em seguida, apresenta o desenvolvimento de
um kit de encoder composto por um encoder didtico de baixo custo (128 PPR), um encoder de
referncia (1024 PPR), uma interface eletrnica com microcontrolador e uma interface grfica do
usurio em MATLAB. O encoder didtico desenvolvido utilizando o efeito moir para gerar a
defasagem de 90 eltricos entre seus canais A e B. Para isso, so utilizados dois discos, um
mvel com 32 pares de setores translcido-opaco e outro esttico com 33 pares. A diferena de 1
par de setores translcido-opaco permite a obteno da defasagem de 90 eltricos por meio do
posicionamento de dispositivos de leitura a 90 angulares. A resoluo do encoder obtida
fisicamente (32 PPR) ampliada (128 PPR) com a utilizao de um resolvedor eletrnico via
software, implementado em um microcontrolador. O microcontrolador tambm utilizado para a
transmisso de dados, via serial, a um PC executando a interface grfica do usurio (GUI). A
GUI criada em MATLAB permitiu caracterizar o funcionamento do encoder didtico atravs de
dois tipos de experimentos: aquisio da posio e teste de preciso. Nos experimentos de
aquisio da posio, o encoder didtico foi movimentado nos dois sentidos e com velocidades
diferentes, fazendo com que os dados de posio fossem lidos e armazenados em MATLAB,
onde foram determinadas as velocidades. Cada experimento teve os resultados apresentados na
forma grfica, refletindo, coerentemente, o movimento fsico imposto ao encoder didtico. Nos
experimentos de teste de preciso, o encoder didtico foi movimentado juntamente com um
encoder de referncia. Alm das leituras da posio do encoder didtico, o MATLAB recebeu as
quantidades de pulsos do encoder de referncia que ocorreram entre cada duas leituras do
encoder didtico. Os resultados dos experimentos tambm foram apresentados graficamente,
onde foi possvel inferir a respeito da preciso do encoder didtico, que ficou em 1,4 , metade
de sua resoluo (360 / 128PPR = 2,8).
Palavras-chave: encoder ptico, efeito moir, encoder incremental, encoder absoluto, resolvedor,
fabricao de discos de encoder, erros de encoder, teste de encoder, kit didtico, 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. Introduo ................................................................................................................................... 11
2. Princpio de Funcionamento de Encoders pticos ..................................................................... 22
2.1 O Efeito Moir .......................................................................................................................... 22
2.2 Batimentos ................................................................................................................................ 99
16
2.3 Introduo aos Sistemas de Medio ...................................................................................... 16
16
2.3.1 Sistemas de Medio ........................................................................................................... 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
31
2.4.3 Fundamentos do Encoder Absoluto ..................................................................................... 31
2.4.4 Encoder ptico Absoluto .................................................................................................... 37
37
3. Resolvedores ............................................................................................................................. 39
39
3.1 Resolvedores Eletrnicos ....................................................................................................... 39
39
3.2 Resolvedores pticos ............................................................................................................. 47
47
4. Tcnicas de Fabricao de Discos e Rguas de Encoders pticos .......................................... 50
50
4.1 Tcnica Industrial Utilizando o Processo de Lift-off ............................................................. 50
50
4.1.1 Preparao Inicial do Disco ................................................................................................. 51
51
4.1.2 Processo de Lift-off ............................................................................................................. 53
53
60
4.2 Tcnica para Fins Didticos Utilizando Materiais de Baixo Custo ........................................ 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 Mtodos ................................................................................................................. 77
6.1 Projeto e Montagem da Mecnica do Kit de Encoder ............................................................ 77
6.2 Projeto e Montagem da Eletrnica do Kit de Encoder ........................................................... 86
6.3 Desenvolvimento do Software Embarcado ............................................................................ 91
6.4 Desenvolvimento da Interface com o Usurio ....................................................................... 98
6.5 Manual de Experimentos ...................................................................................................... 104
6.5.1 Aquisio da Posio e Determinao da Velocidade ....................................................... 105
6.5.2 Teste de Preciso Utilizando um Encoder de Referncia .................................................. 107
7. Resultados e Discusso ........................................................................................................... 109
7.1 Construo do Kit de Encoder .............................................................................................. 109
7.2 Experimentos de Aquisio da Posio ................................................................................ 112
7.3 Experimentos de Teste de Preciso ...................................................................................... 115
8. Concluses e Sugestes para Prximos Trabalhos ................................................................. 76
119
Referncias Bibliogrficas .......................................................................................................... 77
121
Anexos ........................................................................................................................................ 124
79
Lista de Figuras
Figura 2.1 - Efeito moir ................................................................................................................ 2
Figura 2.2 - Efeito moir em cores ................................................................................................. 3
Figura 2.3 - Surgimento das franjas moir ..................................................................................... 4
Figura 2.4 - Efeito moir entre duas grades de linhas retas com mesmo espaamento e um ngulo
2 entre elas ................................................................................................................................... 6
Figura 2.5 - Padres moir causados pela sobreposio de duas grades de linhas retas ................ 7
Figura 2.6 - Geometria utilizada para determinar o espaamento e o ngulo das franjas moir .... 8
Figura 2.7 - Exemplo de batimento .............................................................................................. 11
Figura 2.8 - Exemplo de batimento. Ondas y1, y2, e resultante y=y1+y2 num mesmo grfico .. 12
Figura 2.9 - Exemplo de batimento gerado pela sobreposio de duas grades. Uma grade com n1
= 352 linhas e outra com n2 = 350 linhas ..................................................................................... 13
Figura 2.10 - Exemplo de batimento gerado pela sobreposio de duas grades. Uma grade com
n1=354 linhas e outra com n2=350 linhas .................................................................................... 13
Figura 2.11 - Exemplo de batimento gerado pela sobreposio de duas grades. Uma grade com
n1=358 linhas e outra com n2=350 linhas .................................................................................... 14
Figura 2.12 - Exemplo de grade circular de linhas radiais com Nlinhas=100 .............................. 15
Figura 2.13 - Exemplo de grade circular de linhas radiais com Nlinhas=101 .............................. 15
Figura 2.14 - Exemplo de batimento gerado pela sobreposio de duas grades circulares. Uma
grade com Nlinhas=100 e outra com Nlinhas=101 ...................................................................... 15
Figura 2.15 - Exemplo de batimento gerado pela sobreposio de duas grades circulares. Uma
grade com Nlinhas=100 e outra com Nlinhas=102 ...................................................................... 16
Figura 2.16 - Exemplo de batimento gerado pela sobreposio de duas grades circulares. Uma
grade com Nlinhas=100 e outra com Nlinhas=104 ...................................................................... 16
Figura 2.17 - Estrutura geral de um sistema de medio e controle ............................................. 17
Figura 2.18 - Princpio de encoder incremental rotativo e encoder incremental linear ................ 21
Figura 2.19 - Sinais fornecidos por um encoder incremental. Canais A e B em quadratura ........ 22
Figura 2.20 - Determinao da direo de movimento utilizando um flip-flop tipo D ................ 22
Figura 2.21 - Esquema de encoder com disco constitudo de setores transparentes e opacos ...... 23
Figura 2.22 - Esquema de encoder com rgua constituda de setores refletivos e no refletivos . 24
Figura 2.23 - Mscara, em (a), com quatro janelas dispostas de modo a gerar uma defasagem de
90 eltricos entre os sinais das fotoclulas, em (b) ..................................................................... 25
Figura 2.24 - Canais A e B ........................................................................................................... 25
Figura 2.25 - Grades com mesmo espaamento dos setores presentes no elemento mvel ......... 26
Figura 2.26 - Mscara com quatro grades dispostas de modo a gerar uma defasagem de 90
eltricos entre os sinais dos fotodetectores, no caso fotoclulas .................................................. 27
Figura 2.27 - Mscara com grade inclinada em relao aos setores presentes no elemento mvel,
gerando uma franja moir ............................................................................................................. 27
Figura 2.28 - Dispositivos de leitura distribudos verticalmente para obter os sinais defasados . 28
Figura 2.29 - Sobreposio de elementos com diferena de 1 par ............................................... 28
28
Figura 2.30 - Sobreposio de elementos com diferena de 1 par e aps o deslocamento relativo
equivalente a um setor/espaamento ............................................................................................ 29
Figura 2.31 - Exemplos comerciais de encoders pticos incrementais lineares .......................... 30
vi
38
41
41
42
43
45
46
48
50
52
52
55
56
56
58
59
60
61
64
65
67
68
69
69
70
71
71
72
72
73
74
74
76
vii
viii
Lista de Tabelas
Tabela 2.1 - Cdigos comuns em discos de encoders absolutos .................................................. 32
Tabela 2.2 - Cdigo binrio natural e cdigo Gray ...................................................................... 35
Tabela 2.3 - Exemplo de cdigo Gray deslocado em 3 unidades ................................................ 36
36
Tabela 4.1 - Caractersticas dos principais tipos de vidro ............................................................ 51
Tabela 6.1 - Correspondncia entre os segmentos dos displays e os terminais do PIC ............... 51
90
Tabela 6.2 - Correspondncia entre as vias de seleo dos displays e os terminais do PIC ........ 51
91
ix
1. Introduo
Os encoders pticos so dispositivos amplamente utilizados em aplicaes que exigem o
controle de posio e velocidade, tais como em robs industriais e mquinas ferramentas. Grande
parte deste tipo de encoder se baseia no efeito moir, um efeito muito interessante proveniente da
sobreposio de estruturas repetitivas. Um estudo sobre encoders pticos, alm fornecer uma
base terica para a utilizao dos mesmos, permitir o conhecimento dos princpios e tecnologias
envolvidas. O complemento do estudo atravs de um projeto prtico de um kit de encoder
didtico servir para consolidar estes conhecimentos e outros adquiridos durante a graduao em
engenharia mecatrnica.
(a)
(b)
Figura 2.1 - Efeito moir. (a) Sobreposio de duas peneiras. (b) Sobreposio de dois pentes.
(POST et al, 1994).
Em (AMIDROR, 2000) possvel encontrar uma descrio sobre a origem do efeito moir.
Ele nada mais do que um fenmeno que ocorre quando estruturas repetitivas do mesmo tipo
(como retculos, telas ou grades) so sobrepostas e visualizadas. Consiste ento, de um novo
padro de reas claras e escuras alternadas (franjas moir), que so observadas apenas com a
sobreposio, ou seja, no aparecem em nenhuma das estruturas originais isoladamente.
Segundo (AMIDROR, 2000), o termo moir proveniente da Frana, onde ele
originariamente se referia a um tipo especial de seda que possua como caracterstica um padro
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 no se refere ao nome de um cientista que estudou o
efeito moir. Portanto, no necessrio que se inicie a escrita desse termo com letra maiscula.
O efeito moir pode ser aplicado em inmeros campos do conhecimento e tecnologia. Isso
ocorre graas grande sensibilidade aos menores deslocamentos das estruturas sobrepostas. So
exemplos de aplicaes descritas em (POST et al, 1994) e (AMIDROR, 2000) a medio de
deformaes em objetos (deslocamentos no plano e fora dele), a medio de ngulos e
movimentos muito pequenos, alinhamento ptico, cristalografia, documentos anti-falsificao,
arte e diverso. 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 diverso. Convm lembrar que o efeito
moir pode ser indesejado em algumas situaes como, por exemplo, na imagem de monitores de
computadores e principalmente na rea de impresso e reproduo colorida.
(a)
(c)
(b)
Figura 2.2 - Efeito moir em cores. (a) Padro RGB. (b) Verde e branco. (c) Vermelho e branco.
(AMIDROR, 2000).
Claro
Escuro
Claro
Escuro
Claro
f1 ( x, y ) = a1 + b1n cos[n1 ( x, y )]
n =1
f 2 ( x, y ) = a2 + b2 m cos[m2 ( x, y )] ,
(2.1)
m =1
onde ( x, y ) a funo que descreve a forma bsica das linhas da grade. Para a freqncia
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 no nulo.
Quando essas duas grades so sobrepostas, a funo transmisso de intensidade resultante
dada pelo produto
f1 ( x, y ) f 2 ( x, y ) =
m =1
n =1
(2.2)
Os trs primeiros termos da Equao 2.2 fornecem informaes que podem ser
determinadas observando os dois padres separadamente. O ltimo termo o termo de interesse,
e pode ser reescrito como
Termo 4 =
+
1
b11b21 cos[1 ( x, y ) 2 ( x, y )]
2
1
b1n b2 m cos[n1 ( x, y) m2 ( x, y)] ;
2 m =1 n=1
n e m ambos 1
+
1
b1n b2m cos[n1 ( x, y) + m2 ( x, y)] x .
2 m =1 n=1
(2.3)
Esta expresso mostra que ao se sobrepor duas grades, a soma e a diferena entre as duas
grades obtida. O primeiro termo da Equao 2.3 representa a diferena entre o padro
fundamental e as duas grades. Ele pode ser usado para predizer o padro moir mostrado na
Figura 2.4. Assumindo que as duas grades esto orientadas com um ngulo 2 entre elas e com o
eixo y do sistema de coordenadas biseccionando esse ngulo, as duas funes das grades 1 ( x, y )
e 2 ( x, y ) podem ser escritas como
1 ( x, y ) =
( x cos + y sin )
e
2 ( x, y ) =
( x cos y sin ) ,
(2.4)
y
2
/ 2 sin
Plano de
Observao
Figura 2.4 - Efeito moir entre duas grades de linhas retas com mesmo espaamento e um ngulo
2 entre elas. (CREATH et al, 1992).
1 ( x, y ) 2 ( x, y ) =
beat
x cos +
y sin ,
(2.5)
beat =
12
.
2 1
(2.6)
Usando a Equao 2.3, as franjas moir sero as linhas cujos centros satisfazem a equao
1 ( x, y ) 2 ( x, y ) = M 2 .
(2.7)
Trs casos separados para o efeito moir podem ser considerados. Quando 1 = 2 = , o primeiro
termo da Equao 2.5 zero, e os centros das franjas so dados por
M = 2 y sin ,
(2.8)
(2.9)
M =
x cos + 2 y sin .
beat
(2.10)
Essa a equao de linhas retas cujo espaamento e orientao dependente da diferena relativa
entre os espaamentos das duas grades e do ngulo entre as grades. A Figura 2.5 mostra os
padres moir para esses trs casos.
y
Inclinado
Mesma Freqncia
y
No Inclinado
Freqncias Diferentes
y
Inclinado
Freqncias Diferentes
Figura 2.5 - Padres moir causados pela sobreposio de duas grades de linhas retas. (CREATH
et al, 1992).
D
C
Franjas
moir
Grades
Figura 2.6 - Geometria utilizada para determinar o espaamento e o ngulo das franjas moir.
Uso de duas grades de freqncias diferentes e inclinadas entre si. (CREATH et al, 1992).
A orientao e o espaamento das franjas moir para o caso geral podem ser determinados
a partir da geometria mostrada na Figura 2.6. A distncia AB pode ser escrita em termos dos
espaamentos das duas grades,
AB =
1
2
=
,
sin( ) sin( + )
(2.11)
onde o ngulo que as franjas moir fazem com o eixo y . Depois de rearranjar os termos, o
ngulo de orientao das franjas dado por
+
tan = tan 1 2
1 2
(2.12)
DE =
sin 2
C
,
sin( + )
(2.13)
(2.14)
Substituindo a orientao das franjas , o espaamento da franjas pode ser encontrado em termos
dos espaamentos das grades e do ngulo entre as grades,
C=
12
sin 2 + (2 cos 2 1 ) 2
2
2
(2.15)
2.2 Batimentos
O fenmeno conhecido como batimento, associado ao efeito moir, proveniente da
sobreposio de duas grades, de diferentes espaamentos (freqncias espaciais) e com linhas
paralelas entre si. Para efeito de anlise, as duas grades sero consideradas como duas ondas
distintas de mesma amplitude. Pode-se ento aplicar o princpio da sobreposio de ondas para
obter uma equao que represente os batimentos. Baseado em (HECHT, 2002), possvel iniciar
a anlise sobre os batimentos com a definio das equaes das duas ondas,
y1 = A cos(k1 x 1t )
y 2 = A cos(k 2 x 2 t ) ,
(2.16)
(2.17)
1
1
(2.18)
1
1
cos + cos = 2 cos ( + ) cos ( ) .
2
2
(2.19)
(2.20)
onde se nota a presena de termos que contm a soma das freqncias e de termos que contm a
subtrao das freqncias, tanto no tempo quanto no espao. Para existir o batimento, os valores
das respectivas freqncias devem ser diferentes, mas prximos um do outro ( k1 k 2 e 1 2 ).
A freqncia de batimento definida como a diferena dessas freqncias ( k1 k 2 ou 1 2 ).
A seguir ser apresentado um exemplo para visualizao do fenmeno do batimento. O exemplo
foi realizado no MATLAB 7.0 e seu cdigo se encontra no Anexo I.
Supondo as duas ondas y1 e y 2 , definidas na Equao 2.16, com
A = 1 , k1 = 2 .24 ,
10
2 (24 + 20)
2 (24 20)
y = 2 cos
x cos
x = 2 cos(44 x) cos(4 x) ,
2
2
(2.21)
onde possvel notar valores distintos no argumento dos cossenos. O cosseno cujo argumento
proveniente da subtrao de freqncias ( 4 ) ir modular a amplitude do sinal de maior
freqncia ( 44 ). justamente essa modulao que causa o aparecimento dos batimentos. A
Figura 2.7 apresenta os grficos das ondas individualmente. As trs ondas plotadas no mesmo
grfico podem ser observadas na Figura 2.8. A freqncia de batimento neste exemplo dada por
4
y1
3
(a)
-1
-2
-3
-4
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
4
y2
3
(b)
-1
-2
-3
-4
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
4
y=y1+y2
3
(c)
-1
-2
-3
-4
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
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
-1
-2
-3
-4
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Figura 2.8 - Exemplo de batimento. Ondas y1, y2, e resultante y=y1+y2 num mesmo grfico.
k1 k 2 = 2 .24 2 .20 = 2 .4 = 2 . f . Nota-se que o valor de f 4 , exatamente o nmero de
batimentos gerados, os quais podem ser vistos no grfico (c) da Figura 2.7.
Para o caso da sobreposio de duas grades de linhas retas paralelas entre si, o espaamento
entre linhas de uma grade tem valor bem prximo do espaamento entre linhas da outra grade,
mas so valores diferentes. A mesma anlise pode ser feita considerando o nmero de linhas de
cada grade que existem num mesmo intervalo de posio. Em ambos os casos h uma diferena
entre as freqncias espaciais. Continuando, quando h sobreposio de duas grades com essas
caractersticas, o fenmeno do batimento surge associado ao efeito moir. Os batimentos nesse
caso so observados na forma de franjas moir. O programa presente no Anexo II, desenvolvido
em MATLAB, ilustra bem o fenmeno do batimento. O programa gera e sobrepe duas grades de
linhas retas paralelas entre si. O espaamento de cada grade definido pelo nmero de linhas a
serem criadas num mesmo intervalo de posio (eixo x). Trs exemplos sero apresentados. O
primeiro exemplo gera uma grade com n1 = 352 linhas e outra com n2 = 350 linhas. A
sobreposio dessas grades mostrada na Figura 2.9. No segundo exemplo, apresentado na
Figura 2.10, utiliza-se n1 = 354 e n2 = 350 . O terceiro exemplo, com n1 = 358 e n2 = 350 , pode
ser visto na Figura 2.11. Como esperado, a diferena n1 n 2 igual ao nmero de batimentos
(franjas moir).
12
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0
1
Figura 2.9 - Exemplo de batimento gerado pela sobreposio de duas grades. Uma grade
com n1 = 352 linhas e outra com n 2 = 350 linhas.
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0
1
Figura 2.10 - Exemplo de batimento gerado pela sobreposio de duas grades. Uma grade
com n1 = 354 linhas e outra com n 2 = 350 linhas.
13
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0
1
Figura 2.11 - Exemplo de batimento gerado pela sobreposio 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
tambm surgem com a sobreposio de duas grades circulares com nmero diferente de linhas
radiais. O programa (em MATLAB) apresentado no Anexo III auxilia na criao de grades
circulares de linhas radiais. O nmero de linhas da grade definido na varivel 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 sobreposio de uma grade circular com Nlinhas = 100 e outra
com Nlinhas = 102 , obtm-se a Figura 2.15. Nesse caso aparecem duas reas claras e duas
escuras, em outras palavras, dois batimentos. Mais uma vez, o nmero de batimentos corresponde
diferena entre o nmero de linhas de uma grade e o nmero de linhas da outra grade. Essa
correspondncia sempre ocorre e est relacionada com a freqncia espacial. Sendo assim, se a
diferena entre o nmero de linhas fosse 4, o nmero de batimentos observados tambm 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 sobreposio de duas grades circulares.
Uma grade com Nlinhas = 100 e outra com Nlinhas = 101 .
15
Figura 2.15 - Exemplo de batimento gerado pela sobreposio de duas grades circulares.
Uma grade com Nlinhas = 100 e outra com Nlinhas = 102 .
Figura 2.16 - Exemplo de batimento gerado pela sobreposio 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 correspondncia entre as quantidades numricas
medidas e as propriedades descritas. Sistemas de medio podem ser utilizados para
monitoramento de processos, como a medio de temperatura, de volume de lquidos, ou de
dados clnicos. Tambm podem ser utilizados no controle de processos, como no controle de
nvel de um tanque, ou no controle de posio de uma esteira. Por fim, sistemas de medio
podem auxiliar na engenharia experimental, como no estudo de distribuio de temperaturas num
objeto com formato irregular, ou na determinao da distribuio de foras num teste de coliso
de um veculo, exemplos de (PALLS-ARENY et al, 1991). A Figura 2.17, traduzida do mesmo
livro, mostra o fluxo de dados em um sistema de medio e controle. Em uma medio,
imprescindvel que haja a aquisio das informaes por um sensor ou transdutor, mas tambm
necessrio que ocorra o processamento dessas informaes e a apresentao dos resultados numa
forma que o ser humano possa perceber.
Objetivos
Transdutor
Condicionamento
do sinal
Transmisso
dos dados
Display
Alarmes
Perturbaes
Sistema, planta
ou processo
Controlador
Supervisor
Controle manual
Atuador
Condicionamento
do sinal
Transmisso
de ordens
Figura 2.17 - Estrutura geral de um sistema de medio e controle. (PALLS-ARENY et al, 1991).
17
2.3.2 Transdutores
Como (PALLS-ARENY et al, 1991) define, um transdutor um dispositivo que
converte um sinal de uma forma fsica para um sinal correspondente que possui forma fsica
diferente. Da definio percebe-se que um transdutor uma espcie de conversor de energia,
como o autor mesmo afirma. Sendo assim, o sinal de entrada deve necessariamente ter esforo e
fluxo, componentes que multiplicados originam a potncia. Ele lembra que, no entanto, em
sistemas de medio, um desses componentes presentes no sinal medido tem valor desprezvel,
de modo que somente o outro componente medido. Por exemplo, ao realizar uma medio de
fora, o deslocamento (e velocidade) do transdutor desprezado. Quando medida uma corrente
eltrica, a queda de tenso no ampermetro deve ser prxima de zero. Vale ressaltar que um
transdutor sempre ir consumir uma pequena parte da potncia. Logo, deve-se garantir que a ao
de medir no perturbe excessivamente o sistema que est sendo medido. Caso contrrio, essa
interferncia pode levar a um erro na medio.
Existem seis tipos principais de sinais segundo (PALLS-ARENY et al, 1991): mecnico,
trmico, magntico, eltrico, ptico e qumico. Ele considera um transdutor qualquer dispositivo
que transforma um tipo de sinal num outro tipo, independentemente do tipo de sinal da sada.
Mas avisa que, na prtica, somente os dispositivos que geram um sinal eltrico na sada so
chamados de transdutores. Isso se deve ao fato de sinais eltricos serem utilizados na maioria dos
sistemas de medio. Ele apresenta ainda uma srie de vantagens para o uso de sistemas
eletrnicos de medio:
2) Energia no consumida do processo que est sendo medido porque os sinais na sada
do transdutor podem ser amplificados. Com amplificadores eletrnicos, fcil a obteno de
ganhos no sinal que ultrapassam 1010 num nico estgio.
18
3) Um nmero cada vez maior de diferentes circuitos integrados esto disponveis para o
condicionamento de sinais eletrnicos. Inclusive existem transdutores que j incorporam esse
condicionamento do sinal.
Refora afirmando que um transdutor um dispositivo que retira energia do sistema que
ele mede para gerar um sinal de sada que pode ser convertido num sinal eltrico, o qual
corresponde quantidade medida. Cita que algumas vezes os termos sensor e transdutor so
utilizados como sinnimos, embora sensor esteja mais ligado capacidade de adquirir
informaes no percebidas pelos sentidos humanos, e transdutor esteja ligado apenas ao fato de
converter tipos de sinais. Conclui dizendo que a distino entre transdutor de entrada (sinal
fsico / sinal eltrico) e transdutor de sada (sinal eltrico / exibio ou atuao) raramente feita
nos dias de hoje. E a tendncia, particularmente em robtica, em direo 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 sada.
Os tpicos seguintes faro 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. clula fotoeltrica), o dispositivo como um todo pode ser chamado de
transdutor, pois converte um sinal de posio/deslocamento em um sinal eltrico. Alm disso,
com o condicionamento apropriado do sinal (ex. transformao de senide para onda quadrada),
o encoder pode ser considerado um transdutor digital, assim como fez (De SA, 1990).
19
2.4 Encoders
O encoder um transdutor que converte um movimento linear ou angular em sinais
digitais. Esses sinais digitais podem ser utilizados para determinar a posio, a direo, a
velocidade e a acelerao do sistema ao qual o encoder est acoplado. Encoders apresentam
muitas aplicaes, as mais comuns so: em eixos de robs, em eixos de mquinas-ferramenta, em
plotters (mesas XY), em mesas rotativas, no controle de velocidade e posio de motores
eltricos, no posicionamento de antenas, telescpios e radares. Eles tambm podem ser aplicados
na medio de qualquer grandeza que pode ser convertida num deslocamento, como por exemplo,
na medio do nvel de um lquido usando uma bia ou na determinao da direo do vento
usando uma biruta. Encoders so classificados funcionalmente em dois tipos: incremental ou
absoluto.
20
Setores
eqidistantes
Dispositivo de
leitura fixo
Eixo
Disco
Rotao
Rgua
Acoplamento
Movimento linear
Figura 2.18 - Princpio de encoder incremental rotativo e encoder incremental linear. (PALLSARENY et al, 1991).
Primeiro em relao perda de informao da posio sempre que ocorrer a falta de alimentao
eltrica, segundo em relao necessidade da utilizao de contadores up-down para fazer a
integrao com os circuitos externos, e por fim, principalmente em relao impossibilidade de
se determinar a direo do movimento. A determinao da direo do movimento requer o uso de
um outro dispositivo de leitura, ou ainda de um elemento adicional (rgua ou disco). Nesses casos
tem-se um encoder propriamente dito, ou seja, com deteco de movimento e direo.
Independentemente da natureza da propriedade utilizada para diferenciar os setores da
rgua ou do disco, a mecnica do posicionamento dos dois dispositivos de leitura combinado com
o posicionamento dos elementos mveis (rguas ou discos) a responsvel pela defasagem de
90 eltricos existente entre os dois sinais fornecidos por um encoder incremental. A eletrnica
embarcada trata os sinais e os coloca em forma de pulsos (onda quadrada). Diz-se ento, que
esses dois sinais, usualmente chamados de canal A e canal B, esto em quadratura. Normalmente
um encoder incremental possui uma marcao (na rgua ou no disco) indicando a posio
absoluta zero. Nesse caso, preciso a utilizao 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 idntica fase do canal A. A Figura 2.19 apresenta o comportamento desses trs sinais.
21
90
Z
Figura 2.19 - Sinais fornecidos por um encoder incremental. Canais A e B em quadratura.
CLK
22
Placa PCB
Sensor
Disco
Mscara
LED
Figura 2.21 - Esquema de um encoder com disco constitudo de setores transparentes e opacos.
(CATLOGO TURCK, acesso em 2007).
23
LED
Fotodetector
Grade
Lente
Mscara do
dispositivo de leitura
Marca de referncia
ptica IN-TRAC
Rgua
Figura 2.22 - Esquema de um encoder com rgua constituda de setores refletivos e no refletivos.
(CATLOGO RENISHAW, acesso em 2007).
Nos dois casos, de acordo com (PALLS-ARENY et al, 1991), os problemas associados
so aqueles advindos da sujeira do ambiente, das limitaes de temperatura e tempo de resposta
dos componentes optoeletrnicos, e da possvel vibrao dos elementos de focalizao.
Como j foi dito, um encoder incremental precisa fornecer dois sinais (canal A e canal B)
com 90 eltricos de defasagem, a qual obtida pela mecnica do posicionamento dos
dispositivos de leitura e elementos mveis. Essa mecnica para obteno da defasagem pode ser
implementada de diversas formas. Alguns mtodos sero apresentados a seguir e independem se
os setores so do tipo translcido/opaco ou do tipo refletivo/no refletivo.
O primeiro mtodo consiste na utilizao de uma mscara fixa contendo quatro janelas de
espaamentos idnticos ao espaamento de um nico setor. Na direo de cada janela
posicionado um fotodetector, que neste exemplo uma clula fotoeltrica. As quatro janelas so
dispostas de tal modo que os sinais na sada das quatro fotoclulas esto defasados de 90
eltricos entre si. Esses sinais de tenso so aproximadamente senoidais, pois o movimento
relativo da rgua ou disco em relao mscara faz com que a luminosidade em cada janela varie
de um mnimo at um mximo. Lembrando que a luminosidade pode ser transmitida ou refletida.
A Figura 2.23, traduzida de (WOOLVET, 1977), ilustra essa tcnica e exibe os sinais na sada
das clulas fotoeltricas. O sinal E11 est 180 eltricos defasado em relao ao sinal E12, assim
como o sinal E21 est 180 eltricos defasado em relao ao sinal E22. Cada par de sinais E11 / E12
e E21 / E22 ter suas componentes de tenso somadas, gerando dois sinais, aqui chamados de a e b.
24
mscara
rgua
(a)
movimento da rgua
sada da
clula
(b)
deslocamento da rgua
Figura 2.23 - Mscara, em (a), com quatro janelas dispostas de modo a gerar uma defasagem de
90 eltricos entre os sinais das fotoclulas, em (b). (WOOLVET, 1977).
Esses dois sinais, ainda senoidais, j esto defasados de 90 eltricos entre si. Logo, necessrio
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
E12
-
+
+
E21
-
quadrador
quadrador
E22
B
(a)
(b)
25
Fotodetector
Fotodetector
Grade
Grade
LED
LED
Elemento mvel
Elemento mvel
(a)
(b)
Figura 2.25 - Grades com mesmo espaamento dos setores presentes no elemento mvel. (a) Setores
translcidos / opacos. (b) Setores refletivos / no refletivos. (PALLS-ARENY et al, 1991).
26
Rgua
Mscara
Fotoclulas
Figura 2.26 - Mscara com quatro grades dispostas de modo a gerar uma defasagem de 90
eltricos entre os sinais dos fotodetectores, no caso fotoclulas. Utiliza o efeito moir originado
da sobreposio de grades igualmente espaadas. (WOOLVET, 1977).
Elemento mvel
d
Figura 2.27 - Mscara com grade inclinada em relao aos setores presentes no elemento mvel,
gerando uma franja moir. (PALLS-ARENY et al, 1991).
27
Setores
Rgua
Mscara
Fotoclulas
Figura 2.28 - Dispositivos de leitura distribudos verticalmente para obter os sinais defasados.
Utiliza o efeito moir originado da sobreposio de grades inclinadas entre si. (WOOLVET,
1977).
Se o deslocamento da rgua for para a direita, a franja se movimentar para baixo. Nesse mtodo,
os dispositivos de leitura devem ser posicionados perpendicularmente em relao ao
deslocamento do elemento mvel, como ilustrado na Figura 2.28, traduzida de (WOOLVET,
1977). Na figura, observa-se a existncia de quatro clulas fotoeltricas, as quais esto
distribudas novamente com a finalidade de se gerar quatro sinais defasados de 90 eltricos. O
condicionamento dos sinais pode ser realizado da mesma maneira j abordada.
Um ltimo mtodo, aqui discutido, no se utiliza de mscara para gerar o efeito moir. O
efeito surge da sobreposio de dois elementos, um esttico e outro mvel. A condio que a
diferena entre o nmero de pares de setores translcido-opaco do elemento esttico e do
elemento mvel seja 1. Em outras palavras, se o elemento esttico tiver N pares de setores
translcido-opaco, o elemento mvel dever ter N 1 pares, ou vice-versa. A diferena de 1
justamente para o aparecimento de um nico batimento associado ao efeito moir. A Figura 2.29
mostra exatamente esse comportamento utilizando rguas e discos.
4
1
(a)
(b)
Figura 2.29 - Sobreposio de elementos com diferena de 1 par. (a) Duas rguas. (b) Dois discos.
28
4
1
(a)
(b)
Figura 2.30 - Sobreposio de elementos com diferena de 1 par e aps o deslocamento relativo
equivalente a um setor/espaamento. (a) Duas rguas. (b) Dois discos.
Nela pode-se observar o aparecimento uma regio mais clara e uma regio mais escura.
Dispositivos de leitura, com ou sem auxlio de grades para leitura, so posicionados nas direes
indicadas de 1 a 4, mais uma vez resultando em quatro sinais defasados de 90 eltricos entre si.
A cada deslocamento relativo entre os elementos equivalente a um setor/espaamento, tem-se a
luminosidade oposta anterior em cada dispositivo de leitura. Isso pode ser verificado fazendo a
comparao da Figura 2.29 com a Figura 2.30. Logo, um deslocamento relativo equivalente a
dois setores/espaamentos 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 mtodos apresentados fazem uso de quatro dispositivos de leitura, os quais fornecem
quatro sinais defasados de 90 eltricos. Estes sinais so combinados eletronicamente para gerar
dois sinais de onda quadrada, o canal A e o canal B, minimizando erros mecnicos. possvel
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 deteco, a partir da luminosidade existente.
Como j foi citado, encoders pticos possuem as maiores resolues. Mesmo assim,
existem tcnicas para aumentar sua resoluo, como a utilizao de resolvedores eletrnicos ou a
utilizao de mais dispositivos de leitura para se obter sinais com defasagens diferentes
(resolvedores pticos). Tcnicas estas que sero estudadas no captulo seguinte.
29
Para efeito de ilustrao, a Figura 2.31 mostra exemplos comerciais de encoders pticos
incrementais lineares presentes no (CATLOGO RENISHAW, acesso em 2007). A Figura 2.32
mostra exemplos de encoders pticos incrementais rotativos e um desenho de encoder em corte,
ambos do (CATLOGO TURCK, acesso em 2007).
(a)
Sinais de sada
Entrada 5-30 VDC
(b)
Figura 2.32 - Encoder ptico incremental rotativo. (a) Exemplos comerciais. (b) Desenho em
corte. (CATLOGO TURCK, acesso em 2007).
30
Comum
Linha de leitura
reas condutoras
Rotao
Eixo
(a)
(b)
Figura 2.33 - Encoder absoluto. (a) Exemplo de um disco. (PALLS-ARENY et al, 1991).
(b) Esquema de um encoder absoluto por contato. (HOESCHELE, 1968).
31
Tabela 2.1 - Cdigos comuns em discos de encoders absolutos. (PALLS-ARENY et al, 1991).
BCD
Binrio natural
Nmero
decimal
Gray
Cdigo
Cdigo
Padro
Dezena
Unidade
32
Padro
Dezena
Unidade
Cdigo
Padro
Aps uma rpida inspeo tanto no cdigo binrio natural quanto no cdigo BCD, nota-se
que em cada mudana de valor, equivalente num disco a uma mudana de posio, ocorre a
inverso de um ou mais bits. As mudanas que envolvem a inverso de mais de um bit por vez
so crticas. Elas exigem um perfeito alinhamento das trilhas do disco, caso contrrio, podem
causar ambigidade. O exemplo a seguir, modificado de (PALLS-ARENY et al, 1991), explica
bem isso. Considere um encoder absoluto de 10 bits com cdigo binrio natural. As posies 0, 1,
2, 3 e 4 so dadas por
Posio 0
0000000000
Posio 1
0000000001
Posio 2
0000000010
Posio 3
0000000011
Posio 4
0000000100
Supondo que os dispositivos de leitura estejam ligeiramente desalinhados, por exemplo, os dois
primeiros estejam um pouco adiantados. Ento, a sada lida aps um movimento da posio 3
para a posio 4 seria 0 0 0 0 0 0 0 0 0 0, que representa a posio 0.
Para evitar essa ambigidade, vrios mtodos foram desenvolvidos. Um deles consiste em
um cdigo cclico contnuo onde h a inverso de somente um bit a cada mudana de valor. O
cdigo Gray o exemplo mais comum desse tipo de cdigo, e tambm pode ser analisado na
Tabela 2.1. Outros mtodos podem eliminar a ambigidade sem a necessidade da inverso de um
nico bit por vez, so exemplos as lgicas V-scan e U-scan, detalhadas em (HOESCHELE, 1968)
e (WOOLVET, 1977).
A utilizao do cdigo Gray exige a interpretao dos sinais de sada, seja para determinar
a posio real ou para uso aritmtico. Segundo (HOESCHELE, 1968), o cdigo Gray deve ser
traduzido para o sistema binrio natural ou para um algum sistema numrico aplicvel. A
traduo para o sistema binrio natural pode ser feita por um circuito eletrnico simples, como o
reproduzido na Figura 2.34, mas tambm pode ser programada em um computador. A expresso
Booleana para a converso do cdigo Gray para binrio
) (
Bn 1 = Gn 1 B n + G n 1 Bn ,
33
(2.22)
(a)
(b)
Figura 2.34 - Circuitos para converso do cdigo Gray para o cdigo binrio natural.
(a) Utilizando portas lgicas elementares. (b) Utilizando portas XOR. (HOESCHELE, 1968).
Com uma anlise mais profunda do cdigo de Gray, pode-se verificar que a propriedade de
inverso de um nico bit por vez s vale completamente quando o nmero total de valores
potncia de 2. Quando o nmero total de valores no satisfaz essa relao, como mltiplos de
360, a propriedade no obedecida na transio do maior valor para o valor zero, e vice-versa.
Ver Tabela 2.2. Por exemplo, se o nmero total de valores for 10, que no potncia de 2, as
mudanas entre 9 e 0 (1101 e 0000 em Gray) provocam a inverso de 3 bits de uma s vez.
Uma maneira de contornar esse problema causando um deslocamento D a partir do valor
zero no cdigo Gray. Seu valor pode ser determinado por
D=
2 n N TOT
,
2
34
(2.23)
Tabela 2.2 - Cdigo binrio natural e cdigo Gray. A transio para o valor zero com a mudana
de um nico bit s ocorre quando o nmero total de valores potncia de 2.
DECIMAL
BINRIO
GRAY
0
1
00000
00001
00000
00001
2
3
00010
00011
00011
00010
4
5
6
7
00100
00101
00110
00111
00110
00111
00101
00100
8
9
10
11
12
13
14
15
01000
01001
01010
01011
01100
01101
01110
01111
01100
01101
01111
01110
01010
01011
01001
01000
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
11000
11001
11011
11010
11110
11111
11101
11100
10100
10101
10111
10110
10010
10011
10001
10000
D =
2n NTOT
24 10
16 10
6
=
=
=
= 3.
2
2
2
2
(2.24)
O efeito do deslocamento pode ser observado na Tabela 2.3, onde a transio crtica 0-9 foi
substituda pela transio 3-12, no crtica.
35
Tabela 2.3 - Exemplo de cdigo Gray deslocado em 3 unidades. Nmero total de valores N TOT = 10 .
DECIMAL
BINRIO
GRAY
0
1
2
0000
0001
0010
0000
0001
0011
3
4
5
6
7
8
9
10
11
12
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
13
14
15
1101
1110
1111
1011
1001
1000
36
Fenda
Lmpada
Fotoclulas
37
Fenda
Lmpada
Lmpada
Fotoclulas
Fotoclulas
Lente
cilndrica
(a)
(b)
Figura 2.37 - Sistemas bsicos de focalizao. (a) Utilizao de uma fenda na linha de leitura.
(b) Utilizao de uma lente cilndrica para focalizar a luz na linha de leitura. (WOOLVET, 1977).
38
3. Resolvedores
Neste captulo, sero apresentados dois tipos de sistemas resolvedores, que nada mais so
do que sistemas que permitem aumentar a resoluo 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 eletrnico, cujo princpio para obteno de sinais defasados est na
utilizao de um circuito interpolador eletrnico. O resolvedor ptico o outro tipo de sistema
resolvedor que ser discutido. Nele, os sinais defasados provm da existncia e posicionamento
de vrios dispositivos de leitura.
39
Encoders incrementais j possuem um disco do tipo incremental, ou seja, com uma trilha
radial constituda de dois tipos de setores, por exemplo, opacos e translcidos. Para um encoder
absoluto, necessrio incluir na periferia do disco uma trilha radial, cujo espaamento dos
setores deve ser metade do espaamento dos setores da trilha mais externa (relativa ao bit menos
significativo). Em ambos os discos, dispositivos de leitura so posicionados na trilha radial para
se obter dois sinais senoidais defasados de 90 eltricos entre si, chamados de sin (seno) e cos
(cosseno). Em alguns casos, dois ou mais dispositivos de leitura juntamente com circuitos para
efetuar a mdia so utilizados para determinar cada sinal, minimizando erros mecnicos.
Na presente anlise, 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 incio de
anlise. No item (a), tem-se um exemplo de um disco de encoder ptico incremental, onde uma
mscara 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 includa
uma trilha radial na periferia. Tambm utilizada uma mscara com duas grades para originar a
defasagem dos sinais. Em (c), observa-se a sobreposio de dois discos incrementais, cuja
diferena no nmero de pares translcido-opaco 1. Aqui, os 90 eltricos esto relacionados
com os 90 angulares. Portanto, os dois dispositivos de leitura so posicionados a 90 angulares
um do outro, dando origem aos sinais sin e cos. Duas grades so utilizadas, neste caso, para
facilitar a captura da luminosidade, alm de estarem alinhadas com os setores de um dos discos.
Uma vez obtidos os sinais senoidais sin e cos, a prxima etapa do sistema resolvedor seria
o uso de um circuito interpolador eletrnico. No entanto, ainda sem a presena de tal circuito,
consegue-se construir um resolvedor capaz de multiplicar por 4 a resoluo do encoder. Isso
feito, primeiramente, com a transformao dos sinais sin e cos em sinais de onda quadrada, por
meio de circuitos quadradores (ex. Schmitt triggers). Um esquema dessa transformao
mostrado na Figura 3.2. Os dois sinais digitais resultantes A e B so combinados logicamente
para se obter quatro sinais digitais defasados de 1/4 do perodo (90 eltricos). A Figura 3.3 exibe
as formas de onda referentes a um exemplo de combinao lgica, a qual pode ser implementada
eletronicamente ou programada em um microcontrolador.
Na mesma figura, nota-se que, para um encoder absoluto, um perodo dos sinais A e B
corresponde meio perodo do sinal relacionado ao bit menos significativo (LSB). O mesmo
provm da trilha mais externa do disco, no considerando a trilha radial acrescentada na periferia.
40
sin
sin
cos
cos
6
5
4
3
2
1
0
sin
(a)
(b)
cos
(c)
Figura 3.1 - Obteno de dois sinais senoidais defasados de 90 eltricos. (a) Disco
incremental com mscara. (b) Disco absoluto com trilha perifrica e mscara.
(c) Sobreposio de dois discos incrementais com diferena de 1 no nmero de pares de setores
translcido-opaco.
sin
sin
cos
quadrador
quadrador
cos
A
B
(a)
(b)
Figura 3.2 - Transformao senide / onda quadrada. (a) Esquema. (b) Formas de onda.
41
LSB
(encoder absoluto)
A
B
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
associao de sinais com bits: AB 00 , AB 01 , AB 10 , AB 11 , obtendo-se dois
novos bits, ou seja, originando quatro novas posies absolutas dentro da posio absoluta
limitada pelo bit menos significativo (LSB). Portanto, a resoluo do encoder se torna quatro
vezes maior, j que o nmero total de bits acrescido de 2. Conseqentemente, 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 combinao lgica dos sinais A e B, possvel gerar uma seqncia de pulsos com
quatro pulsos por perodo de A (ou B). Sabendo-se que um perodo de A corresponde a um
incremento fsico na posio do disco (limitado por um setor/espaamento), cada um dos quatro
pulsos indica um deslocamento fsico quatro vezes menor. Logo, a resoluo quatro vezes maior.
42
O sinal de contagem (seqncia de pulsos) bem como o sinal de direo podem ser determinados
via software, quando da utilizao de um microcontrolador. Caso este no seja utilizado, a
determinao do sinal de contagem e do sinal de direo feita eletronicamente por circuitos
compostos de multivibradores monoestveis e de portas lgicas. Os multivibradores
monoestveis so disparados pelas bordas de subida dos quatro sinais advindos da combinao de
A e B, e do origem seqncia de pulsos, cujas larguras so menores do que as larguras desses
quatro sinais que efetuaram o disparo. Ver ltimo grfico da Figura 3.3. Isso necessrio para
gerar um pulso a cada transio (mudana de posio) e no um sinal contnuo.
O sistema resolvedor que acabou de ser analisado no faz uso de um circuito interpolador
eletrnico. Desse modo, s possvel quadruplicar a resoluo do encoder. Quando existe a
necessidade de se aumentar ainda mais a resoluo, um circuito interpolador deve ser includo 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
atravs da inverso do sinal sin. Nesse exemplo, so mostradas quatro sadas, que possibilitaro
um aumento de oito vezes na resoluo. Generalizando, para N sadas, a resoluo ser
multiplicada por 2N. As sadas, antes de passarem pelos quadradores, tambm so senides
aproximadas, mas diferem em fase de acordo com sua posio na cadeia de resistores. Nesse
ponto, (WOOLVET, 1977) afirma que o desempenho global do sistema poderia ser aperfeioado
-sin
quadrador
cos
quadrador
quadrador
sin
quadrador
43
D
C
B
A
caso fossem utilizadas formas de onda aproximadamente triangulares, o que pode ser feito
modificando-se o arranjo mecnico. Voltando ao exemplo, cada uma das quatro senides da sada
passa por um circuito quadrador, dando origem aos sinais digitais A, B, C e D. Esses sinais
digitais so combinados logicamente dois a dois, com o objetivo de se obter oito sinais digitais
defasados de 1/8 do perodo (45 eltricos). A combinao dos sinais, mais uma vez, pode ser
implementada eletronicamente ou programada em um microcontrolador. A Figura 3.5 mostra um
exemplo dessa combinao de sinais, exibindo as formas de onda. Como esperado, um perodo
dos sinais A, B, C e D corresponde a meio perodo do sinal relacionado ao LSB de um encoder
absoluto. Neste exemplo, a associao 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 trs novos bits que, por sua vez, determinam oito novas posies absolutas
dentro da posio absoluta limitada pelo LSB. Assim, a resoluo aumenta oito vezes e os trs
novos bits passam a ser os bits menos significativos.
Considerando um encoder incremental, a Figura 3.5 exibe a seqncia de pulsos obtida a
partir dos oito sinais derivados da combinao de A, B, C e D. A seqncia de pulsos possui oito
pulsos por perodo de A (ou B, C, D), que indicam um deslocamento fsico oito vezes menor do
que o indicado sem o uso do resolvedor eletrnico. Portanto, a resoluo torna-se oito vezes
maior. Assim como no caso do sistema resolvedor sem interpolador, a determinao dessa
seqncia de pulsos (sinal de contagem) e do sinal de direo pode ser feita atravs de software
quando se utiliza um microcontrolador, ou atravs de circuitos eletrnicos constitudos de
multivibradores monoestveis e de portas lgicas quando no se utiliza um microcontrolador. No
caso dos circuitos eletrnicos, seu funcionamento deve ser anlogo ao descrito para o sistema
resolvedor sem interpolador. Os multivibradores monoestveis devem ser disparados pelas bordas
de subida dos oito sinais derivados da combinao de A, B, C e D, dando origem seqncia de
pulsos, cujas larguras devem ser menores do que as larguras desses oito sinais que efetuaram o
disparo. Relembrando, isso garante a existncia de um pulso a cada transio (mudana de
posio) e no simplesmente um sinal contnuo.
O circuito interpolador apresentado um circuito bem simples, porm, hoje j existem
circuitos interpoladores bem mais sofisticados, inclusive na forma de circuitos integrados. A
Figura 3.6 exibe trs exemplos com diferentes fatores de interpolao, como pode ser visto pelas
formas de onda. Maiores detalhes podem ser encontrados no respectivo (DATASHEET - RLS).
44
LSB
(encoder absoluto)
A
B
C
D
AB
BC
CD
AD
AB
BC
CD
AD
Pulsos
(encoder incremental)
45
fotodetector
(a)
fotodetector
(b)
fotodetector
(c)
46
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)
6
5
4
3
2
1
0
sin(+72)
6
5
4
3
2
1
0
sin(+135)
sin(+108)
sin(+144)
(b)
sin()
sin()
sin(+36)
sin(+45)
sin(+72)
sin(+90)
sin(+108)
sin(+135)
sin(+144)
(c)
48
Neste caso, as grades so utilizadas para facilitar a captura da luminosidade, alm de estarem
alinhadas com os setores de um dos discos.
Para um nmero N de dispositivos de leitura, a resoluo do encoder multiplicada por 2N.
No exemplo onde o nmero de dispositivos de leitura N = 4, obtm-se quatro sinais senoidais
igualmente defasados de 45, que propiciaro um aumento de 8 vezes na resoluo. Cada um
desses quatro sinais senoidais passa por um circuito quadrador, originando os mesmos quatro
sinais digitais (A, B, C e D) que provm das quatro sadas do circuito interpolador eletrnico
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 eletrnico, e est sintetizado na Figura 3.5.
Quando se buscam grandes aumentos na resoluo, um sistema resolvedor eletrnico
mais recomendado do que um sistema resolvedor ptico, pois este ltimo comea a ficar mais
complexo fsica e geometricamente, medida que cresce o nmero de dispositivos de leitura.
49
(a)
(b)
50
(b) Absolutos.
SLW
(soda lime)
SL
(white crown)
LE-30
(baixa expanso)
QZ
(quartzo )
73
1
15
1
10
-
70
8
9
12
1
60
5
15
20
-
100
-
94
542
1.52
7200
12
10
2.50
93
533
1.52
7340
15
10
2.56
37
686
1.53
7540
15
10
2.58
5
1120
1.46
7410
18
10
2.20
51
Expanso, m
Diferena de temperatura, C
Figura 4.2 - Expanso em funo do tipo de vidro, tamanho e temperatura. (ELLIOTT, 1985).
composio, o quartzo o vidro que menos se expande com o aumento da temperatura, porm,
o que possui o maior custo. A Figura 4.3, tambm adaptada de (ELLIOTT, 1985), apresenta a
relao entre a porcentagem de transmisso e o comprimento de onda para os diferentes tipos de
vidro. Todos eles tm transmisso superior a 90% para comprimentos de onda a partir do
espectro visvel (aprox. 4000 = 400nm). O quartzo, desejvel por razes de estabilidade
trmica, mantm transmisso de aproximadamente 90% para comprimentos de onda na direo
do ultravioleta intenso (menores comprimentos de onda). Essa caracterstica faz com que o
quartzo seja muito utilizado em aplicaes de imagem com ultravioleta intenso, como em
mscaras de alguns tipos de fotolitografia. Nesses casos, o quartzo garante ainda um aumento da
vida til da mscara. O quartzo tambm o mais resistente s solues utilizadas para a limpeza
do vidro. Diante das comparaes, possvel entender porqu o quartzo o vidro mais indicado
para aplicaes que envolvem grande preciso, como no caso de discos de encoders pticos, e
Transmisso, %
Comprimento de onda,
Figura 4.3 - Transmisso em funo 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
obteno de um disco de vidro a ser transformado num disco de encoder:
O processo pode variar de acordo com o fabricante, com operaes de inspeo e limpeza
podendo ser efetuadas em pontos diferentes. Cada etapa caracterizada por um equipamento
especial e cada fabricante desenvolve sua prpria tcnica para otimizar o processo.
53
54
Aplicao da resina
Fotoresina
Resina e-beam
Vidro
Vidro
t2
t3
Mscara
Revelao do padro
Fotoresina
negativa
Fotoresina
positiva
Resina e-beam
negativa
Resina e-beam
positiva
(a)
(b)
Figura 4.4 - Etapas iniciais do processo de lift-off. (a) Gravao do padro na resina com
radiao UV selecionada por uma mscara. (b) Gravao do padro na resina com
direcionamento do feixe de eltrons (e-beam).
Cada resina tem sua respectiva soluo reveladora, a qual tem a propriedade de dissolver as reas
que foram expostas radiao, no caso de uma resina positiva, e de dissolver as reas no
expostas, no caso de uma resina negativa. Ver Figura 4.4.
Aps a exposio e a revelao, o perfil obtido distinto para resinas positivas e para
resinas negativas. Elas apresentam comportamento diferente tanto na disperso da radiao em
seu interior, quanto na interao com a soluo reveladora. Os perfis em resinas positivas podem
ser controlados atravs da dose de exposio radiao e do tempo de revelao, como pode ser
visto no item (a) da Figura 4.5, adaptada de (MADOU, 1997). Altas doses de exposio e rpida
55
Dose de
exposio
Tempo de contato
com o revelador
Dose de
exposio
Alta
Baixo
Alta
Mdia
Mdio
Mdia
Baixa
Alto
Baixa
(b)
(b)
(a)
Figura 4.5 - Perfis aps a exposio radiao e revelao. (a) Resina positiva. (b) Resina
negativa.
revelao em resinas positivas so 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 deposio de metal sobre as paredes da resina, possibilitando o contato seguinte das
paredes da resina com o solvente removedor. Resinas negativas no apresentam o mesmo
controle sobre os perfis, acarretando apenas em pequenas variaes nas dimenses, quando da
mudana das condies de exposio e revelao. 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 tcnicas 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 tcnica consiste em aplicar sobre a superfcie da resina, antes da
revelao, uma substncia que diminui a taxa de dissoluo da resina na soluo reveladora. Tal
substncia causar a diminuio na dissoluo somente da camada superior da resina, ou seja, a
poro da resina que entrou em contato com a substncia. No caso apresentado, a substncia o
clorobenzeno e um exemplo do perfil obtido reproduzido na Figura 4.6. Nela possvel
observar as rebarbas que permaneceram aps a revelao e que cobrem as paredes da resina.
Figura 4.6 - Perfil obtido com a aplicao de clorobenzeno sobre uma resina positiva antes da
revelao. (PATEL et al, acesso em 2007).
56
57
campo eltrico. Os tomos ionizados de alta energia incidem sobre a meta, que um pedao de
metal (cromo) presente no catodo. A energia incidente deve ser suficiente para romper as ligaes
entre os tomos de cromo, expelindo-os na direo do anodo. Este fenmeno lembra o que
acontece quando se atira uma pedra com fora em uma poa dgua. Assim, o cromo
pulverizado sobre o anodo, onde est localizado o substrato que recebe a deposio. O substrato,
no caso o disco com o padro desenhado em resina, deve ser mantido aquecido moderadamente
durante a pulverizao, tomando-se o cuidado de no atingir uma temperatura que comprometa as
propriedades da resina. A pulverizao proporciona uma boa adeso do cromo sobre o vidro, j
que os tomos de cromo o atingem com muita energia. Segundo (ELLIOTT, 1985), essa adeso
cerca de dez vezes maior do que a do processo de evaporao. Outras vantagens a considerar so
as altas taxas de deposio e a alta homogeneidade da deposio.
O processo de evaporao tambm acontece a presses muito baixas, neste caso, facilitando
a evaporao do metal (cromo) ao reduzir a temperatura necessria para tal. Existem diversos
mecanismos para se conseguir a evaporao do cromo, como, por exemplo, a utilizao de um fio
de cromo sobre um filamento, cuja passagem de corrente eltrica fornece calor para a fuso e a
evaporao deste fio de cromo. O vapor de cromo ento depositado sobre o disco com o padro
desenhado em resina. Como mencionado anteriormente, a adeso do cromo sobre o vidro num
processo de evaporao menor do que num processo de pulverizao, j que na evaporao os
tomos de cromo atingem o substrato com baixa energia relativamente. Para melhorar a adeso,
costuma-se aquecer o substrato mais do que num processo de pulverizao. Desse modo, no caso
do disco, aumenta-se a energia na superfcie do vidro, fortalecendo as ligaes cromo-vidro.
Tambm necessrio garantir que o aquecimento do disco no danifique a resina. O processo de
evaporao considerado um processo a quente e o processo de pulverizao pode ser
considerado um processo a frio. A Figura 4.7, presente em (PATEL et al, acesso em 2007), ilustra
o resultado da deposio de uma pelcula de metal sobre um substrato, por evaporao do metal.
Figura 4.7 - Resultado obtido com a deposio de uma pelcula de metal sobre um substrato, via
processo de evaporao do metal. (PATEL et al, acesso em 2007).
58
Deposio do cromo
Cromo
Remoo da resina
59
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%
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
programa em MATLAB, Nlinhas = 36.
60
Criao do
padro com
auxlio de um PC
Impresso do
padro em
papel branco
Xerocpia do padro
sobre uma transparncia
e recorte adequado
Fixao da transparncia
recortada utilizando CDs
transparentes
Figura 4.10 - Exemplo de tcnica para construo de um disco de encoder ptico para fins
didticos empregando materiais de baixo custo.
61
62
1) Cada parte do sistema deve girar em seu rolamento sem deslocamento radial do eixo de
rotao, isto , sem movimentao lateral;
2) O sistema de eixo conectando o componente de interesse ao encoder deveria ser rgido
toro;
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 prprio sistema de
rolamento, isto , uma velocidade de junta constante e precisa exigida;
4) O espaamento 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 rotao
passando perpendicularmente atravs de seu centro;
6) O dispositivo de leitura deveria ler a escala sem paralaxe ou outro erro geomtrico e ser
rigidamente montado na estrutura no rotativa do encoder.
63
Dispositivo
de leitura
Componente
de interesse
Rolamento
do encoder
Rolamento do
componente
Acoplamento
Disco do
encoder
Eixo do
encoder
Rolamento do
componente
Eixo do
componente
Se algum dos pr-requisitos listados no for cumprido, haver diferenas entre a posio
angular do componente de interesse e aquela indicada pelo encoder. Por meio da investigao de
cada uma dessas potenciais fontes de erro, possvel determinar suas contribuies individuais e,
conseqentemente, obter o erro total associado ao sistema. Ainda em (ELLIN, acesso em 2007),
pode-se encontrar anlises nesse sentido. Parte delas sero levantadas a seguir.
Efeito de desvios em rolamentos:
O termo desvio descreve uma variedade de atributos que resultam num deslocamento radial
(ou translao lateral) do eixo de rotao do encoder e/ou do componente, provocados em sua
maioria por deficincias nos rolamentos. Inclui jogo e harmnicas (ex. imperfeies das
esferas/roletes), mas no 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
improvvel que seja menor do que 1 m. Como o sistema do encoder pode ler a posio de
sua escala rotativa com pelo menos um dcimo 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 relao entre o deslocamento radial, a repetibilidade e a posio angular depender:
- das dimenses relativas do curso interno e externo do rolamento (onde se movimentam as
esferas/roletes);
- do nmero e dimetro das esferas/roletes;
- do ajuste do sistema de rolamentos.
Para sistemas de alta preciso, prefervel o uso de rolamentos a ar. Os deslocamentos
radiais podem ser reduzidos a sub-microns pela correta seleo da rigidez radial do rolamento.
64
ngulo de
fase 1
Azimute zero
nominal
Centro de
rotao
r0
Excentricidade a1
Centro da escala
65
Considerando uma escala perfeitamente circular de raio r0, ao invs de mont-la para que
gire sobre sua linha de centro nominal, ela montada para girar sobre um outro ponto a uma
distncia a1 da nominal e a um ngulo de fase 1, conforme esquematizado na Figura 5.2,
tambm traduzida de (ELLIN, acesso em 2007). A um ngulo azimute arbitrrio 1, a distncia do
centro de rotao 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 revoluo, com
uma amplitude igual excentricidade. Para adicionar os efeitos da distoro de escala, a forma
global do disco pode ser considerada como a soma de uma srie de ondas senoidais de diferentes
freqncias n, fases n e amplitudes an, tal que o raio da escala a um ngulo azimute dado por
R0 = r0 a1 cos( 1 ) a2 cos(2 2 ) a3 cos(3 3 ) ... a n cos(n n ) .
(5.2)
Pode ser mostrado que o mximo erro circunferencial En induzido por uma distoro de
amplitude an variando de maneira senoidal, com ciclo de n vezes por revoluo dado por
En =
an
.
n
(5.3)
66
Disco/escala
do encoder
ngulo de
inclinao
A Figura 5.3, novamente traduzida de (ELLIN, acesso em 2007), ilustra essa condio.
Vista de lado, a cada rotao, seria possvel observar o movimento senoidal axial na periferia da
escala do encoder. A inclinao promove trs mecanismos de erro distintos. O primeiro est
associado distncia e ao ngulo relativo entre a periferia da escala e o dispositivo de leitura fixo
axialmente. O segundo est associado forma elptica que a escala assume quando vista de
frente, levando a erros que variam duas vezes por revoluo. O terceiro mecanismo s
pertinente quando a escala fabricada com graduaes axiais marginalmente oblquas (fora de
esquadro). Todos estes efeitos da inclinao tambm podem ser superados por meio de tcnicas
de compensao, 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 tambm contribui para o erro total.
Os erros induzidos por dispositivos de leitura mais significativos so:
- Erro de sub-diviso: surge da no linearidade na interpolao, a qual requerida nos casos
em que se deseja aumentar a resoluo do encoder. O erro de sub-diviso 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 distncia entre a escala e o dispositivo de leitura pode mudar devido, por
exemplo, excentricidade do disco ou variao da temperatura. Logo, erros sero 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 rgida e segura do
dispositivo de leitura e da marca de referncia vital para medies angulares repetidas e
precisas.
67
Variando certos parmetros (relacionados aos trs fatores), a tcnica e o sistema utilizados
geram resultados analticos, os quais so comparados com os resultados obtidos em um encoder
real com parmetros idnticos. Confirmando-se que os resultados analticos so muito prximos
dos resultados reais, possvel testar um encoder em relao a um parmetro definido, j que sua
resposta deve seguir a resposta analtica. 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 princpio de funcionamento do
encoder ptico incremental rotativo, representado na Figura 5.4. A luz, a partir do LED, atravessa
o disco pelo espaamento entre as reas opacas, isto , pelas reas translcidas, e detectada pela
rea ativa do fotodetector.
reas
opacas
Graduaes
LED
Fotodetector
Eixo de rotao
Disco
graduado
L: comprimento
Figura 5.4 - Princpio de um encoder ptico incremental rotativo. (MATSUZOE et al, 2001).
68
reas opacas
Comprimento
da onda
(c)
(c)
(b)
Amplitude
Sinal de sada
Fotodetector
rea ativa
(b)
(a)
(a)
Offset
ngulo de rotao do disco
Lente objetiva
Unidade de
processamento
de imagem
Cmera
CCD
LED
PC
Posio de formao de
imagem da lente objetiva
Disco graduado
L: comprimento
Figura 5.6 - Sistema implementado para a realizao da anlise. (MATSUZOE et al, 2001).
69
g(X0,Y0)
g(a,b)
Modelo do fotodetector
Direo radial
g(c,d)
x
Direo de rotao
Figura 5.7 - Imagem da intensidade de luz a uma posio 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 posio onde L = 0,1 mm. As reas escuras so aquelas cobertas pelas reas opacas do
disco, enquanto que as reas claras so aquelas iluminadas. O modelo do fotodetector representa
a rea ativa do fotodetector que est sendo iluminada. Ignorando o efeito da comunicao cruzada
entre cada rea ativa do fotodetector e possveis efeitos de suas reas no ativas, o sinal de sada
do fotodetector ser proporcional s reas ativas iluminadas. Em outras palavras, o sinal de sada
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 direo da seta maior, mostrada na Figura 5.7, baseado no movimento relativo entre o
disco e o fotodetector. O sinal de sada do fotodetector determinado repetindo este clculo para
cada movimento de giro do disco, mais especificamente, toda vez que o modelo do fotodetector
se mover 1 pixel na direo indicada pela seta. A Figura 5.8 mostra o resultado analtico obtido
empregando esta tcnica. O eixo vertical indica a amplitude normalizada, e o eixo horizontal
indica o movimento do modelo do fotodetector em pixels. O resultado analtico um sinal de
sada senoidal (no triangular), incluindo o efeito da difrao e disperso da luz em direo
oblqua, porque a imagem baseada na intensidade de luz a uma posio onde L = 0,1 mm.
70
Amplitude normalizada
Movimento do modelo do fotodetector (pixels)
Amplitude normalizada
(modelo) fica cada vez mais longe da fonte de luz, no caso o LED, que permanece fixo.
L = 0,0 mm
L = 0,1 mm
L = 0,2 mm
L = 0,3 mm
Movimento do modelo do fotodetector (pixels)
(a)
(b)
Figura 5.9 - Influncia da distncia entre o fotodetector e o disco graduado. (a) Imagens obtidas.
(b) Resultado analtico do sinal de sada. (MATSUZOE et al, 2001).
71
Amplitude normalizada
Figura 5.10 - Influncia da distncia entre o fotodetector e o disco graduado. Resultado das
medies do sinal de sada do fotodetector em um encoder real. (MATSUZOE et al, 2001).
Para comparar com o resultado analtico, foram realizadas medies da amplitude do sinal
de sada do fotodetector de um encoder real, para os mesmos Ls. O resultado destas medies,
obtidas por (MATSUZOE et al, 2001), mostrado na Figura 5.10. O eixo vertical tambm est
normalizado para o caso onde L = 0,0 mm. Pela simples comparao das Figuras 5.9 (b) e 5.10,
se v que os resultados analticos so muito prximos dos resultados reais medidos.
Influncia da razo entre a largura da rea ativa do fotodetector e o espaamento das
graduaes do disco:
Esta razo 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 tambm foi gerado o resultado analtico do sinal de sada. A Figura 5.11 exibe essas
imagens e o resultado analtico. O eixo vertical da Figura 5.11 (b) est normalizado para um duty
Amplitude normalizada
Modelo do
fotodetector
(b)
(a)
Figura 5.11 - Influncia da razo entre a largura da rea ativa do fotodetector e o espaamento
das graduaes do disco. (a) Imagens obtidas. (b) Resultado analtico do sinal de sada.
(MATSUZOE et al, 2001).
72
Amplitude normalizada
Figura 5.12 - Influncia da razo entre a largura da rea ativa do fotodetector e o espaamento
das graduaes do disco. Resultado das medies do sinal de sada do fotodetector em um
encoder real. (MATSUZOE et al, 2001).
de 100% com L = 0,0 mm. A influncia da difrao e da direo oblqua da luz vinda do LED
diminuda, quando a largura da rea ativa menor do que o espaamento das graduaes do
disco. Por exemplo, com base na Figura 5.11 (b), a amplitude do sinal de sada aumenta de 66%
(83% - 17% = 66%) para 89% (94% - 5% = 89%), com a reduo do duty de 100 para 40%.
Novamente, para comparar com o resultado analtico, (MATSUZOE et al, 2001) realizou
medies em fotodetectores de encoders reais, preparados com duty de 100 e 70%. O duty de
40% no foi medido/implementado por questes de custo. A Figura 5.12 mostra o resultado
destas medies. O eixo vertical est normalizado para um duty de 100% com L = 0,0 mm. A
comparao das Figuras 5.11 (b) e 5.12, nos casos onde o duty 100 e 70%, mais uma vez
confirmam que os resultados analticos so muito prximos dos resultados reais medidos.
Influncia da concentricidade entre o fotodetector e o disco graduado:
A posio correta do fotodetector aquela na qual a linha de centro de cada rea ativa,
quando estendida na direo do centro do encoder (SP), o intercepta. Alm disso, deve interceptar
o centro de rotao do disco graduado (SS), isto , SP e SS devem ser coincidentes, como
ilustrado na Figura 5.13 (a). Se a posio relativa de SP e SS for levemente alterada em x e em y,
o fotodetector e o disco graduado inclinam-se um em relao 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 analtico foi obtido atravs 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 analtico obtido podem ser
73
Linha de centro
da rea ativa
(b) SS e SP no coincidentes
Figura 5.13 - Posio 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 atenuao de amplitude, resultante da variao da
concentricidade, muito menor do que a atenuao resultante da variao dos dois fatores
anteriormente analisados. Isto pode ser visto pelos resultados analticos, j que os resultados reais
Modelo do
fotodetector
Amplitude normalizada
(b)
(a)
74
75
Encoder
de menor
resoluo
Encoder
de maior
resoluo
(referncia)
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
76
6. Materiais e Mtodos
Neste captulo, sero apresentados os detalhes para a construo de um kit de encoder
didtico. O mesmo ser composto por um encoder ptico incremental rotativo baseado no efeito
moir e por um sistema informtico que efetua a aquisio das posies do encoder em um dado
movimento, com a determinao da respectiva velocidade. Tal sistema informtico, desenvolvido
em MATLAB, ainda permitir a realizao de um teste para verificar a preciso do encoder
didtico com ajuda de um encoder comercial de maior resoluo (encoder de referncia).
77
90
(a)
(b)
(c)
Figura 6.1 - Mtodo escolhido para gerao do efeito moir e obteno de dois sinais defasados
de 90 eltricos. (a) Disco mvel com 32 pares de setores translcido-opaco. (b) Disco esttico
com 33 pares de setores translcido-opaco. (c) Sobreposio dos discos.
resolvedor eletrnico (via software) para aumento em 4 vezes da resoluo. Deste modo, a
resoluo final ser de 128 pulsos por revoluo, que um valor na base 2 como na maioria dos
encoders. Tambm pode ser levantado como justificativa o fato de que o teste de preciso a ser
realizado sobre o encoder didtico feito com a ajuda de um encoder de referncia com 1024
PPR, valor exatamente 8 vezes maior do que 32*4 = 128 PPR.
A Figura 6.1 sintetiza o mtodo escolhido para gerao do efeito moir e para a obteno
de dois sinais defasados eletricamente de 90.
Tendo em mente a utilizao de materiais de baixo custo e a utilizao dos equipamentos
disponveis no laboratrio de mecatrnica, o kit de encoder foi mecanicamente projetado e
construdo com os seguintes componentes:
- 1 base metlica, Figura 6.2, com eixo central acoplado a um motor CC e a um encoder de
referncia com 1024 PPR. Mdulo presente no laboratrio;
- 1 eixo de plstico, Figura 6.3, obtido a partir do eixo presente em tubos de CDs virgens;
- 1 suporte confeccionado em papelo, Figura 6.4, para fixar os fotodiodos (receptores);
- 1 suporte confeccionado em papelo, Figura 6.5, para fixar os LEDs infravermelho
(emissores);
- 3 CDs de plstico transparente, Figura 6.6, presentes em tubos de CDs virgens;
78
79
Figura 6.6 - Croqui dos CDs de plstico transparente. Dext = 120mm. D int = 15mm.
80
81
Antes de apresentar como foi feita a montagem do encoder didtico a partir de seus
componentes, convm mostrar as etapas de sub-montagem nas quais os fotodiodos e os LEDs
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 distncia de 9 setores translcidos no disco esttico, ver Figura
6.1 (b). Voltando Figura 6.13, os terminais dos fotodiodos foram soldados a fios de conexo 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
A Figura 6.14 mostra que os dois LEDs infravermelho tambm 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 conexo 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) tambm
foram soldados, respectivamente para cada LED, aos fios de cor laranja e azul.
A montagem do encoder didtico 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 descrio sobre cada etapa dada a seguir:
2 - Fixar o eixo de plstico no eixo central da base metlica por meio dos 4 parafusos
retirados anteriormente e com o uso dos 4 pares de arruelas. Fixar os dois suportes metlicos, um
em cada lado da base, por meio dos outros 4 parafusos retirados na etapa 1. Em cada suporte
metlico, fixar uma cantoneira metlica que possui furos usando 2 parafusos e suas porcas.
Figura 6.15 (b);
83
(a)
(b)
(c)
(d)
(e)
(f)
84
85
R=
VCC VLED 5 2
3
=
=
= 150 .
ILED
0,02 0,02
(6.1)
ILED =
VCC VLED 5 2
3
=
= 16,7 mA .
=
R
180 180
(6.2)
O resistor a ser colocado em srie com cada fotodiodo teve seu valor estabelecido
experimentalmente, atravs 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 resistncia testada, comeando com as maiores, foi feita a
aproximao do LED infravermelho em relao ao fotodiodo a uma distncia de 10mm, distncia
esta similar distncia prevista na montagem do encoder. Alm disso, foi medida a tenso no
ponto C procurando-se obter um valor o mais prximo possvel de 5 V. O resistor de 1 k
atendeu bem as exigncias, gerando uma tenso aproximada de 4,3 V no ponto C.
86
O passo seguinte foi transformar o sinal analgico em digital, ou seja, transformar o sinal
de tenso no ponto C, que varia de um mnimo (luz bloqueada) a um mximo (luz incidente) e
volta a um mnimo, em uma onda quadrada. Para isso foi utilizado um circuito quadrador, como
apresentado na seo 2.4.2 (Encoder ptico Incremental). O circuito quadrador escolhido foi o
schmitt trigger, cujas caractersticas so 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 clculo no era garantia de funcionamento na prtica. O
ponto de partida adotado foi a escolha de R3 como o resistor de maior valor, minimizando a
diferena 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
Vin A
Vin B
Vout A
Vout B
Figura 6.19 - Circuito para ligao e condicionamento dos sinais dos fotodiodos e dos LEDs
infravermelho, incluindo a pinagem do CI LM324.
88
DB9 Fmea
Encoder de
Referncia
DB9 Macho
A_RES
B
5 VCC
B_RES
5 VCC
Protoboard
GND
GND
O kit tambm conta com um encoder de referncia (1024 PPR) acoplado ao mesmo eixo do
encoder didtico. O encoder de referncia faz parte do mdulo utilizado como base para o
encoder didtico e sua ligao at a protoboard foi realizada com fios e um conector DB9. Essa
ligao esquematizada na Figura 6.20, onde A_RES significa o canal A do encoder de
referncia (canal A de maior RESoluo) e B_RES o canal B do encoder de referncia.
A alimentao do encoder didtico e do encoder de referncia, Figura 6.19 e 6.20, bem
como o envio de seus respectivos sinais A e B ao microcontrolador, foram feitas atravs de um
conector de expanso. A Figura 6.21 traz um esquema do conector de expanso, que ser
conectado placa de desenvolvimento mdulo II.
Conector de
Expanso
18
17
18
5 Vcc
17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
GND 3.3V RD7 RC5 RD6 RC4 RD5 RC3 RD4 RC2 RD3 RB0 RD2 RA2 RD1 RE2 RD0
5 Vcc
GND
CANAL
B
CANAL
A
A_RES
Mdulo II
B_RES
Protoboard
89
Segmento
A
B
C
D
E
F
G
DP
90
Tabela 6.2 - Correspondncia entre as vias de seleo dos displays e os terminais do PIC.
PIC
RB7
RB6
RB5
RB4
Display
DS1 (milhar)
DS2 (centena)
DS3 (dezena)
DS4 (unidade)
- Os dois LEDs utilizados esto ligados, respectivamente, nos terminais RB2 e RB3 do
microcontrolador;
- A placa de desenvolvimento mdulo II possui driver interno para adequar os nveis de tenso do
microcontrolador (TTL) aos padres da RS232 (+12V e 12V). A comunicao 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 expanso permitiu realizar as seguintes
ligaes entre os canais dos encoders e os terminais do microcontrolador:
- Encoder didtico: Canal A (AA, no soft. emb.) => RC4
- Encoder de referncia: Canal A (A_RES) => RA2
91
Leitura canais A e B
AB
canais
11
10
Considera
manuteno
do estado
(CLK := 0)
canais
01
01
00
Considera
mudana
errada de
estado
(CLK := 0,
ERR++)
Considera
diminuio
de posio
(U_D := 0,
CLK := 1)
Considera
aumento
de posio
(U_D := 1,
CLK := 1)
Considera
manuteno
do estado
(CLK := 0)
Considera
mudana
errada de
estado
(CLK := 0,
ERR++)
Considera
manuteno
do estado
(CLK := 0)
11
Considera
diminuio
de posio
(U_D := 0,
CLK := 1)
Leitura canais A e B
Leitura canais A e B
AB
canais
Considera
aumento
de posio
(U_D := 1,
CLK := 1)
Considera
aumento
de posio
(U_D := 1,
CLK := 1)
ESTADO 2
10
11
00
10
ESTADO 0
AB
Leitura canais A e B
AB
canais
01
Considera
mudana
errada de
estado
(CLK := 0,
ERR++)
01
00
Considera
diminuio
de posio
(U_D := 0,
CLK := 1)
Considera
diminuio
de posio
(U_D := 0,
CLK := 1)
10
Considera
aumento
de posio
(U_D := 1,
CLK := 1)
ESTADO 1
11
Considera
mudana
errada de
estado
(CLK := 0,
ERR++)
ESTADO 3
92
00
Considera
manuteno
do estado
(CLK := 0)
incio
zera sistema;
zera posio absoluta/acumulada;
zera posio atual;
l estado inicial do encoder;
seno (CLK=0)
seno
seno (U_D=0)
ento
ento
ento
seno
ento
seno
ento
seno
ento
mostra posio atual nos displays de 7 segmentos, ou mostra run caso no tenha havido a 1 mudana de estado;
seno
ento
seno (CLK=0)
ento
93
le_est_atual_RES(); break;
break;
break;
break;
O caractere Z zera os parmetros do sistema. O caractere E faz com que seja enviado
pela porta serial, do PIC para a interface em MATLAB, o valor aproximado de mudanas erradas
de estado. O caractere T configura para modo de teste de preciso. O caractere F finaliza o
modo teste de preciso.
94
Encoder
de menor
resoluo
Encoder de
maior
resoluo
(referncia)
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
95
No caso do encoder didtico construdo, sua resoluo final com resolvedor foi de 128
PPR. O encoder de referncia utilizado para realizar o teste de preciso possui 1024 PPR e, como
no teve sua resoluo aumentada via resolvedor, no foi necessrio utilizar o canal B. A
contagem de pulsos foi realizada somente com a leitura do canal A.
Como j adiantado, o programa tambm transmite, quando solicitado via interface em
MATLAB (caractere E), o valor aproximado de mudanas erradas de estado do encoder
didtico. Tais mudanas esto destacadas em vermelho na Figura 6.23 e normalmente no
acontecem, a menos que o encoder didtico seja girado com extrema velocidade, superando o
tempo de processamento do sistema (limitado pela transmisso serial). Foi elaborado um cdigo
para a transmisso do valor aproximado destes erros, sendo a seqncia 1 2 3 TAB
interpretada na interface como a no existncia de mudanas erradas de estado.
A inicializao do processador/microcontrolador foi realizada seguindo as informaes
presentes no datasheet do PIC16F877A (DATASHEET MICROCHIP, acesso em 2007). Convm
enfatizar a configurao da transmisso/recepo serial, j que este recurso foi bastante explorado
no projeto. O modo de transmisso utilizado foi o assncrono no formato de um start bit, oito bits
de dados e um stop bit. A taxa de transmisso/recepo 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).
Configurao dos bits para o TXSTA:
96
Sabendo-se que o microcontrolador est preparado para trabalhar numa freqncia de clock
de 4 MHz, que o bit BRGH foi configurado em 1 (altas velocidades) e que a taxa desejada de
9600 bps, pelas indicaes da Figura 6.26, o valor decimal de SPBRG deve ser igual a 25.
Logo, SPBRG = 25 = 0x19.
97
os
quais
originaram
os
arquivos
encoderGUI128.m,
98
(a)
(b)
(c)
(d)
(e)
(f)
Figura 6.27 - Desenvolvimento da interface com o usurio - GUI. (a)(c)(e) Fase de construo.
(b)(d)(f) Exemplos de utilizao.
99
%9600 bps
%8 bits DEFAULT
%0x09 = caracter TAB
%600 segundos
Envia, pela serial, a quantidade de pulsos por leitura selecionada (por exemplo 1)
fprintf(s,'1')
100
Enquanto o nmero de leituras de posio for menor que o nmero de leituras desejadas
L a posio atual via serial
POS=fscanf(s,'%d')
Caso o usurio tenha escolhido FAZER TESTE, tambm ser executada uma seqncia
de comandos, resumidos a seguir e que se encontram no arquivo encoderGUI128.m (Anexo V):
%9600 bps
%8 bits DEFAULT
%0x09 = caracter TAB
%600 segundos
Envia, pela serial, a quantidade de pulsos por leitura selecionada (por exemplo 1)
fprintf(s,'1')
101
Enquanto o nmero de leituras de posio for menor que o nmero de leituras desejadas
L, via serial, a posio atual e a contagem de pulsos do encoder de referncia no intervalo
POS=fscanf(s,'%d')
QDE_PULSOS_INTERV=fscanf(s,'%d')
Torna as variveis globais para poderem ser utilizadas por outros arquivos M
Chama a tela de resultados do teste de preciso, arquivos encoderTESTE128, Figura 6.27 (f).
102
arquivo em Excel, clicando no boto EXPORTAR P/ EXCEL. Aqui foi utilizado o comando
xlswrite do MATLAB. Os resultados so gravados no arquivo encoder_aquisicao.xls, que
criado para armazenar os dados. O cdigo do arquivo M associado com a tela de resultados da
aquisio est presente no Anexo VI.
Agora falando sobre a tela de resultados do teste de preciso, Figura 6.27 (f), ela tambm
mostra dois grficos com a opo de seleo da informao a ser plotada {Posio x Nmero da
leitura, Qde de pulsos no intervalo x Nmero da leitura}. A posio mostrada em pulsos e a
quantidade de pulsos no intervalo mostrada em pulsos do encoder de referncia. A mesma tela
indica a quantidade de mudanas erradas de estado do encoder didtico que podem ter ocorrido
durante o ensaio. Ela tambm permite exportar os resultados para um arquivo em Excel, clicando
no
boto
EXPORTAR
P/
EXCEL.
Os
resultados
so
gravados
no
arquivo
103
104
Figura 6.28 - Tela principal da interface com o usurio do kit de encoder didtico.
As prximas duas sees apresentam em detalhes cada um dos tipos possveis de ensaio.
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 posio atual a cada N
pulsos do encoder didtico, 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 posio atual que devero 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 didtico para a concluso do ensaio.
17 - Logo abaixo, clicar no boto FAZER AQUISIO. Observar a mensagem run nos
displays de 7 segmentos. Girar o encoder para qualquer um dos lados. Observar que a primeira
posio 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 trmino do movimento total, o MATLAB abre automaticamente uma janela com os
resultados da aquisio. A qualquer instante, se ocorrer algum erro no MATLAB, deve-se fechlo e retomar os passos do procedimento a partir do passo 11.
18 - Conferir os resultados do ensaio. A tela de resultados da aquisio traz dois grficos com
opo de seleo da informao a ser plotada {Posio x Nmero da leitura, Velocidade x
Nmero da leitura, Posio x Tempo, Velocidade x Tempo}. A posio mostrada em pulsos, a
velocidade em pulsos/seg, e o tempo em segundos. A mesma tela indica a quantidade de
mudanas erradas de estado do encoder didtico que podem ter ocorrido durante o ensaio.
Normalmente esse valor sempre zero. Ela tambm permite exportar os resultados para um
arquivo em Excel, clicando no boto EXPORTAR P/ EXCEL. Os resultados so gravados no
arquivo encoder_aquisicao.xls, que criado no diretrio corrente para armazenar os dados.
Para retornar tela principal, clicar em FECHAR AQUISIO.
106
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 posio atual a cada N
pulsos do encoder didtico, sendo N o valor selecionado. Junto com cada leitura, tambm
enviada a quantidade de pulsos do encoder de referncia 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 posio atual que devero 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 didtico para a concluso do ensaio.
17 - Logo abaixo, clicar no boto 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 posio atual a ser mostrada nos displays 000.
Continuar movimentando at completar o movimento total em graus indicado no passo 16. Ao
trmino do movimento total, o MATLAB abre automaticamente uma janela com os resultados do
teste de preciso. 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 preciso traz dois grficos
com opo de seleo da informao a ser plotada {Posio x Nmero da leitura, Qde de pulsos
no intervalo x Nmero da leitura}. A posio mostrada em pulsos e a quantidade de pulsos no
intervalo mostrada em pulsos do encoder de referncia [pulsos>RES]. A preciso do encoder
didtico verificada atravs do grfico de Qde de pulsos no intervalo x Nmero da leitura.
Quanto mais constante o grfico, maior a preciso, isto , o encoder est realmente mais
prximo de onde ele diz que est. Caso tenha sido selecionada, no passo 14, uma quantidade de
pulsos por leitura igual a 1, o mesmo grfico deve ser aproximadamente constante e centrado no
valor 8. Isso porque cada leitura feita corresponde a um nico pulso do encoder didtico (128
PPR) e porque, no intervalo entre dois pulsos seus, ocorrem 8 pulsos do encoder de referncia
(1024 PPR), j que este possui resoluo 8 vezes maior. Por conseqncia, caso a quantidade de
pulsos por leitura tenha sido selecionada em 2 ou 4, o grfico deve ser centrado, respectivamente,
em 16 ou 32 pulsos do encoder de referncia [pulsos>RES].
A mesma tela indica ainda a quantidade de mudanas erradas de estado do encoder didtico
que podem ter ocorrido durante o ensaio. Normalmente esse valor sempre zero. Ela tambm
permite exportar os resultados para um arquivo em Excel, clicando no boto EXPORTAR P/
EXCEL. Os resultados so gravados no arquivo encoder_testeprecisao.xls, que criado no
diretrio corrente para armazenar os dados. Para retornar tela principal, clicar em FECHAR
TESTE.
108
7. Resultados e Discusso
Este captulo apresenta os resultados da construo do kit de encoder didtico, bem como
os resultados de experimentos realizados com ele. Tambm traz algumas discusses acerca dos
resultados obtidos.
109
O resultado obtido com o projeto e montagem da eletrnica do kit (Seo 6.2) e com o
desenvolvimento do software embarcado (Seo 6.3) ilustrado pela Figura 7.2. Nela, possvel
observar a protoboard, onde foi montado o circuito de condicionamento dos sinais vindos dos
LEDs infravermelho e dos fotodiodos presentes no encoder didtico. Pode-se ver a ligao do
encoder de referncia protoboard atravs de um conector DB9. Tambm possvel enxergar o
conector de expanso ligando a protoboard ao mdulo II. No mdulo II, est o PIC 16F877A,
onde foi gravado o software embarcado. Nota-se os quatro displays de 7 segmentos, onde
mostrada a posio atual do encoder didtico. Em baixo dos displays, esto os dois LEDs que
indicam o estado atual, e, por fim, nota-se o cabo serial, que conectado ao PC responsvel pela
interface com o usurio. Os objetivos desta etapa foram atingidos, j que toda a eletrnica
envolvida permitiu o funcionamento do kit de encoder. Por se tratar de um projeto didtico, pdese utilizar os recursos e facilidades do mdulo II. Alm do mais, o kit tambm ficou bem flexvel
quanto a mudanas, possibilitando a incluso de novos circuitos para outras aplicaes.
Uma limitao em relao ao software embarcado desenvolvido est ligada ao tempo de
transmisso de dados pela porta serial. Durante o movimento do encoder didtico, o
microcontrolador est constantemente enviando dados, via serial, para o PC que est rodando a
interface com o usurio. Esta transmisso (9600bps) lenta quando comparada com os tempos de
processamento do microcontrolador. Assim, a velocidade de giro do encoder no pode ser muito
elevada, pois poderiam haver, fisicamente, mudanas de estado do encoder, que no seriam
110
detectadas pelo microcontrolador, enquanto ainda est havendo a transmisso de dados anteriores
pela serial. Uma aplicao que no necessitasse da constante transmisso da posio do encoder
via serial no sofreria este tipo de limitao. Convm citar tambm que, dependendo da posio
de parada do encoder didtico (na transio dos sinais), pode haver a transio de estados
alternadamente entre dois estados adjacentes, causando a transmisso alternada de duas posies
adjacentes para interface. Isto s ocorre porque foi definido que uma mudana de estado no
encoder didtico o gatilho para a transmisso da posio, via serial, interface.
A Figura 7.3 traz o resultado obtido aps o desenvolvimento da interface com o usurio
(Seo 6.4) utilizando o recurso GUIDE do MATLAB. Nela, possvel visualizar um PC
executando, em MATLAB, a interface grfica do usurio (GUI) do kit de encoder. Aqui, o
objetivo tambm foi atingido, que era construir uma interface intuitiva e de fcil usabilidade,
permitindo ao usurio a realizao de ensaios e a verificao 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 no influenciou na leitura dos resultados, apenas na sua
apresentao. Uma outra questo a ser levantada em relao ao desenvolvimento de uma
interface em MATLAB est ligada quantidade de arquivos. Para cada tela da interface so
necessrios dois arquivos, um arquivo .m e um arquivo .fig. Uma interface com muitas telas
e/ou recursos implicaria em um nmero exagerado de arquivos, o que no foi o caso da interface
desenvolvida para o kit de encoder. Uma soluo poderia ser o desenvolvimento da interface em
um ambiente de programao que gerasse um nico arquivo executvel (.exe), porm o mesmo
seria fechado ao usurio. Em outras palavras, uma interface em MATLAB pode ser alterada e
editada mais facilmente, j que seu desenvolvimento e execuo ocorrem no mesmo ambiente.
(a)
(b)
112
Ainda na Figura 7.4 (a), agora no grfico de baixo, possvel observar os valores de
posio lidos contra o tempo. Este grfico 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
inclinao 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 oscilaes ocorrem devido aos pequenos intervalos de
tempo que so usados na determinao da velocidade instantnea. No canto inferior direito da
tela, foi indicado que no houve mudanas erradas de estado do encoder didtico.
(a)
(b)
113
Na mesma Figura 7.5 (a), agora no grfico de baixo, pode-se visualizar os valores de
posio lidos contra o tempo. Este grfico possui forma exponencial devido ao movimento do
encoder ter sido feito com velocidade baixa no incio 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 prxima a 80 pulsos por
segundo. No canto inferior direito da tela, tambm foi indicado que no houve mudanas erradas
de estado.
(a)
(b)
114
Ainda na Figura 7.6 (a), agora no grfico de baixo, possvel observar os valores de
posio lidos contra o tempo. Este grfico 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
inclinaes 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 inverso de sentido, cresceu
negativamente, e permaneceu entre 30 e 40 pulsos por segundo (sentido contrrio). No canto
inferior direito da tela, tambm foi indicado que no houve mudanas erradas de estado.
(b)
(a)
Figura 7.7 - Resultados do ensaio IV. (a) Grficos. (b) Dados exportados para o excel.
115
Os resultados obtidos so apresentados nos itens (a) e (b) da Figura 7.7. Em (a), no grfico
de cima, pode-se ver os valores de posio do encoder didtico lidos contra o nmero da leitura.
Como a quantidade de pulsos por leitura foi selecionada em 1 e cada pulso est relacionado com
uma posio, a inclinao da reta vale 1, ou seja, o valor do eixo Y igual ao valor do eixo X. A
reta parte de zero porque a posio 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 seleo inicial da quantidade de leituras desejadas,
correspondendo a um movimento de 45, tanto do encoder didtico (128 PPR), quanto do encoder
de referncia (1024 PPR).
Continuando na Figura 7.7 (a), agora no grfico de baixo, pode-se observar a quantidade de
pulsos do encoder de referncia [pulsos>RES] que ocorreram entre cada leitura de posio do
encoder didtico (intervalo entre duas leituras consecutivas). Como esperado, o grfico se
apresentou aproximadamente constante e centrado em 8, j que a quantidade de pulsos por leitura
foi selecionada em 1 e a resoluo do encoder de referncia 8 vezes maior do que a resoluo
do encoder didtico. A quantidade de pulsos no intervalo relacionada leitura 0 deve ser
ignorada, j que no existe ainda nenhuma leitura de posio feita, logo no possvel
caracterizar um intervalo. Sendo assim, e com ajuda dos dados exportados para Excel, Figura 7.7
(b), a mdia dos valores da quantidade de pulsos no intervalo ficou em 7,9 [pulsos>RES], muito
prximo 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 resoluo do encoder didtico 8 * 0,3516 = 2,8125 como esperado (360 / 128PPR
= 2,8125), e que sua preciso de, no mnimo, 4 * 0,3516 1,4. No canto inferior direito
da tela, tambm foi indicado que no houve mudanas erradas de estado.
116
O grfico de cima da Figura 7.8 decrescente, mostrando que o encoder didtico foi girado
no sentido negativo. Considerando o grfico de baixo, a anlise dos resultados neste caso
anloga ao ensaio anterior. A nica diferena que o nmero de leituras realizadas foi de 128,
correspondendo a uma revoluo completa do encoder.
117
118
119
120
Referncias Bibliogrficas
Amidror, Isaac. The Theory of the Moir Phenomenon. Boston: Kluwer Academic Publishers,
2000, 474p.
Catlogo
Heidenhain.
Rotary
Encoders
Catalog.
Disponvel
em:
<http://
www.heidenhain.com/?/c:2243;177,Documentation+Portal:846/c:2238;177,Services+and+
Documentation:2243/c:846;177,Brochures%2FCD-ROM%2FDVD:813.html> => 349_529
_26_15078.pdf. Acesso em: 13 mar. 2007.
Catlogo Turck. Linear and Rotary Position Products. Disponvel em: <http://www.turckusa.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. Disponvel 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.197198.
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 usurio - placa de desenvolvimento - mdulo 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.
Palls-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. Disponvel 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
% Programa que ilustra o fenomeno do batimento utilizando duas ondas
clear all; close all; clc;
%t=0:0.001:1; % cria um vetor de tempo (desconsiderado)
t=0;
x=0:0.001:1;
%x=0;
A=1;
w2=1;
figure(1)
plot(x,y1,'b')
legend('y1')
axis([0 1 -4 4])
figure(2)
plot(x,y2,'k')
legend('y2')
axis([0 1 -4 4])
figure(3)
plot(x,y,'r')
legend('y=y1+y2')
axis([0 1 -4 4])
figure(4)
plot(x,y1,'b',x,y2,'k',x,y,'r')
legend('y1','y2','y=y1+y2')
axis([0 1 -4 4])
124
Anexo II
% Programa que ilustra o fenomeno do batimento utilizando duas grades de linhas retas
clear all; close all; clc;
n1=352;
n2=350;
figure(1)
[AX,H1,H2]=plotyy(x1,X1,x2,X2,'stem','stem')
set(H1,'Color','k','Marker','none')
set(H2,'Color','k','Marker','none')
set(AX(1),'yColor','k')
set(AX(2),'yColor','k')
Anexo III
% Programa que auxilia na criao de uma grade circular de linhas radiais
clear all; close all; clc;
Nlinhas=100;
% define o numero de linhas radiais da grade
Ntotal=2*Nlinhas;
% define o numero de linhas+espaamentos
for i=1:Ntotal
x(i)=1;
end
f=figure(1);
h=pie(x);
set(f,'Color','w')
for i=1:4:(2*Ntotal)
% formata as propriedades de cor
set(h(i),'FaceColor','k')
set(h(i+1),'Color','w')
end
for i=3:4:(2*Ntotal)
% formata as propriedades de cor
set(h(i),'FaceColor','w')
set(h(i+1),'Color','w')
end
zoom(1.5)
% aumenta a figura da grade
125
Anexo IV
/*
Universidade Estadual de Campinas
Faculdade de Engenharia Mecnica
Curso de Engenharia de Controle e Automao
TG II - Encoder ptico
2o Semestre de 2007
Professor Orientador: Luiz Otvio Saraiva Ferreira
Aluno: Victor Adriano Turchetti RA: 025366
Arquivo: Encoder.h
Autor: Victor A. Turchetti
Data: 14/11/2007
Verso: 1.0
*/
//*****************************************************************************
/* Funo que transmite caractere pela serial */
/* O argumento de entrada o caractere a ser transmitido */
/* No tem argumento de saida */
//----------------------------------------------------------------------------void transmite(char DADO_TX)
{
while (TXFLAG == 0)
{
};
TXREG = DADO_TX;
}
//*****************************************************************************
/* Funo que recebe caractere pela serial */
/* No tem argumento de entrada, e o argumento de saida caractere ASCII */
/* recebido ou o nmero 0 em caso de nenhum caractere recebido */
//----------------------------------------------------------------------------char recebe(void)
{
if (RXFLAG == 0)
{ return 0;
}
else
{ return RCREG;
}
}
//*****************************************************************************
/* Funo 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
}
}
}
//*****************************************************************************
/* Funo que l estado do canal A do encoder de referncia, quando em modo teste */
//----------------------------------------------------------------------------void le_est_atual_RES(void)
{
if(A_RES)
{ EST_ATUAL_RES = 1; // Canal A em nvel alto, A_RES=1
}
else
{ EST_ATUAL_RES = 0; // Canal A em nvel baixo, A_RES=0
}
}
//*****************************************************************************
/* Funo que incrementa a posio do encoder em mdulo */
//----------------------------------------------------------------------------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; // Posio zerada ao passar de 999 em mdulo
}
}
}
}
//*****************************************************************************
/* Funo que decrementa a posio do encoder em mdulo */
//----------------------------------------------------------------------------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;
}
}
}
}
//*****************************************************************************
/* Funo 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;
}
//*****************************************************************************
/* Funo que informa a quantidade aproximada de mudanas 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 mudanas 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 mudanas 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 mudanas erradas
transmite(0x09);
// Transmite o caracter TAB pela serial (caracter terminador)
}
else
{ transmite('9'); transmite('9'); transmite('9'); // 999 <=> ocorreram 20 ou mais mudanas erradas
transmite(0x09);
// Transmite o caracter TAB pela serial (caracter terminador)
}
}
}
}
else
{ transmite('1'); transmite('2'); transmite('3'); // 123 <=> NO ocorreram mudanas erradas de estado
transmite(0x09);
// Transmite o caracter TAB pela serial (caracter terminador)
}
}
//*****************************************************************************
/* Funo que verifica o pedido solicitado pelo usurio 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;
}
}
//*****************************************************************************
/* Funo que trata as mudanas de estado */
//----------------------------------------------------------------------------void trata_mud_est(void)
{
switch(EST_ATUAL)
{
case (0): switch(EST_ANTES)
{
127
posio (U_D = 0)
posio (U_D = 1)
o estado
1; break;
}
break;
case (1): switch(EST_ANTES)
{
case (3): U_D = 1; CLK = 1; break; // Aumenta
case (0): U_D = 0; CLK = 1; break; // Diminui
case (1): CLK = 0; break;
// Manteve
default: CLK = 0; QDE_EST_ERR = QDE_EST_ERR +
}
break;
posio (U_D = 1)
posio (U_D = 0)
o estado
1; break;
posio (U_D = 1)
posio (U_D = 0)
o estado
1; break;
posio (U_D = 0)
posio (U_D = 1)
o estado
1; break;
default: break;
}//fim switch
}
//*****************************************************************************
/* Funo que trata as mudanas de estado do canal A do encoder de referncia */
//----------------------------------------------------------------------------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;
default: CLK = 0; break;
}//fim switch
}
//*****************************************************************************
/* Funo 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 posio negativa
{ PORTD = TABELA_7SEG[16];
// Prepara sinal de menos '-' no display7seg
}
else
{ PORTD = 0;
// No acender nada no de display7seg
}
RB7 = 1;
// Acende o sinal de menos '-', ou nada, no display7seg
CONTADOR_SINAL = CONTADOR_SINAL + 1;
if(CONTADOR_SINAL >= 3)
{ CONTADOR_SINAL = 0;
EH_VEZ = 1;
// vez de acender a centena
RB7 = 0;
// Apaga o sinal de menos '-', ou nada, no display7seg
}
break;
case (1): if(EH_PRIM_CLK == 1)
{ PORTD = TABELA_7SEG[17];
}
else
{ PORTD = TABELA_7SEG[POS_CEN];
}
// Prepara letra
'r' no display7seg
RB6 = 1;
// Acende a centena no display7seg
CONTADOR_CEN = CONTADOR_CEN + 1;
if(CONTADOR_CEN >= 3)
{ CONTADOR_CEN = 0;
EH_VEZ = 2;
// vez de acender a dezena
RB6 = 0;
// Apaga a centena no display7seg
}
break;
128
// Prepara letra
'u' no display7seg
RB5 = 1;
// Acende a dezena no display7seg
CONTADOR_DEZ = CONTADOR_DEZ + 1;
if(CONTADOR_DEZ >= 3)
{ CONTADOR_DEZ = 0;
EH_VEZ = 3;
// vez de acender a unidade
RB5 = 0;
// Apaga a dezena no display7seg
}
break;
case (3): if(EH_PRIM_CLK == 1)
{ PORTD = TABELA_7SEG[19];
// Prepara letra 'n' no display7seg
}
else
{ PORTD = TABELA_7SEG[POS_UNID]; // Prepara unidade no display7seg
}
RB4 = 1;
// Acende a unidade no display7seg
CONTADOR_UNID = CONTADOR_UNID + 1;
if(CONTADOR_UNID >= 3)
{ CONTADOR_UNID = 0;
EH_VEZ = 0;
// vez de acender o sinal de menos
RB4 = 0;
// Apaga a unidade no display7seg
}
break;
default: break;
}//fim switch
}
/*
Universidade Estadual de Campinas
Faculdade de Engenharia Mecnica
Curso de Engenharia de Controle e Automao
TG II - Encoder ptico
2o Semestre de 2007
Professor Orientador: Luiz Otvio Saraiva Ferreira
Aluno: Victor Adriano Turchetti RA: 025366
Arquivo: Encoder.c
Autor: Victor A. Turchetti
Data: 14/11/2007
Verso: 1.0
*/
/*
O encoder didtico ser chamado aqui somente de encoder.
O encoder comercial de 1024 PPR ser chamado aqui de encoder de referncia.
*/
#include <io16f877a.h> // Definio dos registradores do PIC16F877a
#include <stdlib.h>
// Definio das funes padro do ANSI C
#include <inpic.h>
// Definio das funes intrnsecas do compilador
// Atribui nomes aos flags de controle da transmisso/recepo pela porta serial
#define TXFLAG TXIF
// Flag de esvaziamento de TXREG
#define RXFLAG RCIF
// Flag de chegada de byte pela serial
// Definio das entradas mapeadas no conector de expanso do kit MODULO II da MOSAICO
#define AA RC4
// Canal A do encoder, Pino 12 do conector de expanso
#define BB RC5
// Canal B do encoder, Pino 14 do conector de expanso
#define A_RES RA2
#define B_RES RE2
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
Variveis de estado
Variveis de controle de contagem
Contagem comea zerada, portanto no tem sinal negativo
Contagem da posio acumulada do encoder em pulsos, 16 bits (0-65.535)
Contagem da posio do encoder em centenas de pulsos
Contagem da posio do encoder em dezenas de pulsos
Contagem da posio do encoder em unidades de pulsos
Varivel utilizada para que aps o 1.o clock a posio assuma zero
Varivel utilizada na recepo serial dos pedidos do usurio
Varivel utilizada para multiplexar o acendimento dos displays7seg
Controla tempo de acendimento do display7seg que representa o "-"
Controla tempo de acendimento do display7seg que representa a centena
Controla tempo de acendimento do display7seg que representa a dezena
Controla tempo de acendimento do display7seg que representa a unidade
Qde de mudanas de estado erradas do encoder
129
char
char
char
char
EH_TESTE = 0;
// Modo teste quando EH_TESTE = 1 a pedido do usurio via serial
EST_ANTES_RES, EST_ATUAL_RES; // Variveis de estado do canal A do encoder de referncia (A_RES)
INTERV_UNID = 0;
// Qde de pulsos gerados pelo encoder de referncia no intervalo
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 usurio
//*****************************************************************************
/* 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]
};
#include "Encoder.h"
//*****************************************************************************
//
Funo Principal
//----------------------------------------------------------------------------void main(void)
{
// A diretiva da linha abaixo define os bits de configurao do processador. No caso abaixo a depurao
// 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 opo WRT_ENABLE_OFF no compatvel com 16F877a
__set_configuration_word(CP_OFF&CPD_OFF&DEBUG_ON&LVP_OFF&BODEN_OFF&PWRTE_ON&WDT_OFF&XT_OSC);
/* INICIALIZAO DO PROCESSADOR - INCIO */
ADCON1 = 0x07; // 0b.0000.0111 ,
PORTC = 0x00; // Zeramento para
TRISC = 0xB0; // 0b.1011.0000 ,
//
//
//
//
//
//
//
PORTB = 0x00;
TRISB = 0x03;
// Zeramento para
// 0b.0000.0011 ,
//
//
//
//
//
//
//
evitar rudos
RB0 = entrada digital
RB1 = entrada digital
RB2 = sada digital, LED L3
RB3 = sada digital, LED L4
RB4 = sada digital, seleciona
RB5 = sada digital, seleciona
RB6 = sada digital, seleciona
RB7 = sada digital, seleciona
//
//
//
//
//
//
evitar rudos
entradas kit mosaico, e RA2 = entrada digital sinal A_RES
evitar rudos
RD7..RD0 sadas p/ segmentos do display7seg
evitar rudos
RE2 = entrada digital sinal B_RES
PORTA
TRISA
PORTD
TRISD
PORTE
TRISE
=
=
=
=
=
=
0x00;
0xFF;
0x00;
0x00;
0x00;
0x04;
Zeramento para
0b.1111.1111 ,
Zeramento para
0b.0000.0000 ,
Zeramento para
0b.0000.0100 ,
display7seg
display7seg
display7seg
display7seg
unid
dez
cen
sinal
/* PROCESSOS - INCIO */
le_est_atual(); // Faz uma leitura inicial do estado do encoder
while(1)
// Lao principal infinito
{
verif_pedido();
130
EST_ANTES = EST_ATUAL;
le_est_atual();
switch(EST_ATUAL)
{
case (0): RB2 =
case (1): RB2 =
case (2): RB2 =
case (3): RB2 =
default: break;
}
RB3
RB3
RB3
RB3
=
=
=
=
0;
1;
0;
1;
break;
break;
break;
break;
trata_mud_est();
if(CLK == 1) // Quando preciso incrementar/decrementar
{
if(EH_PRIM_CLK == 1) // Caso for o primeiro clock
{ transmite(POS_CEN + 0x30); transmite(POS_DEZ + 0x30); transmite(POS_UNID + 0x30);
// Transmite o valor 000 em ASCII pela serial
transmite(0x09);
// Transmite o caracter TAB pela serial (caracter terminador)
if(EH_TESTE == 1) // Caso em modo teste
{ transmite(INTERV_DEZ + 0x30); transmite(INTERV_UNID + 0x30);
transmite(0x09);
// Transmite o caracter TAB pela serial (caracter terminador)
INTERV_UNID = 0; INTERV_DEZ = 0;
}
EH_PRIM_CLK = 0;
}
else // No o primeiro clock
{
if(U_D == 1) // Quando a posio aumenta
{ POS_ACUM = POS_ACUM + 1;
if(POS_ACUM > 32768) // Checa o sentido
{ EH_POSITIVO = 0;
}
else
{ EH_POSITIVO = 1;
}
if((EH_POSITIVO == 1)&&(POS_ACUM != 0))
{ incrementa();
}
else // nmero negativo
{ decrementa();
}
}
else // U_D == 0, logo quando a posio diminui
{ POS_ACUM = POS_ACUM - 1;
if(POS_ACUM > 32768) // Checa o sentido
{ EH_POSITIVO = 0;
}
else
{ EH_POSITIVO = 1;
}
if(EH_POSITIVO == 1)
{ decrementa();
}
else // nmero negativo
{ incrementa();
}
}//fim else U_D == 0
CONTA_PULSOS = CONTA_PULSOS + 1; // Incrementa controle de pulsos por valor enviado
if(CONTA_PULSOS == PULS_POR_VAL_ENV)
{
if(EH_POSITIVO == 0)
// Indica que a posio 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 posio 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 else no o primeiro clock
}//fim if(CLK == 1)
trata_display7seg(); // Sempre executa
if(EH_TESTE == 1)
131
{ EST_ANTES_RES = EST_ATUAL_RES;
le_est_atual_RES();
trata_mud_est_RES();
if(CLK == 1)
// O clock agora do encoder de referncia
{
INTERV_UNID = INTERV_UNID + 1;
if(INTERV_UNID == 10)
{ INTERV_UNID = 0;
INTERV_DEZ = INTERV_DEZ + 1;
if(INTERV_DEZ == 10)
{ INTERV_DEZ = 0;
// Supondo no mais que 99 pulsos gerados pelo encoder de referncia
}
// no intervalo entre dois valores enviados do encoder sob teste
}
}
}
}//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
% Copyright 2002-2003 The MathWorks, Inc.
% Edit the above text to modify the response to help encoderGUI128
% Last Modified by GUIDE v2.5 28-Set-2007 14:02:04
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @encoderGUI128_OpeningFcn, ...
'gui_OutputFcn', @encoderGUI128_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 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)
set(handles.puls_por_leit_AQUIS,'String',1); %configura valores default
set(handles.qde_leit_desej_AQUIS,'String',16);
set(handles.puls_por_leit_TES,'String',1);
set(handles.qde_leit_desej_TES,'String',16);
132
set(handles.TOTGRAUSaquis,'String','45');
set(handles.TOTGRAUStes,'String','45');
% Choose default
handles.output =
% Update handles
guidata(hObject,
%##########################################################################
% --- 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)
% Get default command line output from handles structure
varargout{1} = handles.output;
%##########################################################################
% --- 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)
% Hints: contents = get(hObject,'String') returns popupmenuPPLAQUI contents as cell array
%
contents{get(hObject,'Value')} returns selected item from popupmenuPPLAQUI
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val}; %verifica opo no popup menu qde de pulsos por leitura - aquisiao
case ' 1'
set(handles.puls_por_leit_AQUIS,'String',1);
PPLaquis=1;
case ' 2'
set(handles.puls_por_leit_AQUIS,'String',2);
PPLaquis=2;
case ' 4'
set(handles.puls_por_leit_AQUIS,'String',4);
PPLaquis=4;
otherwise
end
LDaquis=str2double(get(handles.qde_leit_desej_AQUIS,'String'));
TOTGRAUSaq=2.8125*PPLaquis*LDaquis;
%determina o movimento total em graus
strTOTGRAUSaq=num2str(TOTGRAUSaq);
strTOTGRAUSaq=strcat(strTOTGRAUSaq,'');
set(handles.TOTGRAUSaquis,'String',strTOTGRAUSaq);
%##########################################################################
% --- 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
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%##########################################################################
% --- 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)
% Hints: contents = get(hObject,'String') returns popupmenuLDAQUI contents as cell array
%
contents{get(hObject,'Value')} returns selected item from popupmenuLDAQUI
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val}; %verifica opo no popup menu qde de leituras desejadas - aquisiao
case ' 16'
set(handles.qde_leit_desej_AQUIS,'String',16);
LDaquis=16;
case ' 32'
set(handles.qde_leit_desej_AQUIS,'String',32);
LDaquis=32;
case ' 64'
set(handles.qde_leit_desej_AQUIS,'String',64);
LDaquis=64;
case ' 128'
set(handles.qde_leit_desej_AQUIS,'String',128);
LDaquis=128;
otherwise
end
PPLaquis=str2double(get(handles.puls_por_leit_AQUIS,'String'));
TOTGRAUSaq=2.8125*PPLaquis*LDaquis;
%determina o movimento total em graus
strTOTGRAUSaq=num2str(TOTGRAUSaq);
strTOTGRAUSaq=strcat(strTOTGRAUSaq,'');
set(handles.TOTGRAUSaquis,'String',strTOTGRAUSaq);
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
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%##########################################################################
% --- 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)
%***** INICIALIZA PORTA SERIAL *****
s=serial('COM1');
fclose(s);
s.BaudRate=9600;
%9600 bps
s.DataBits=8;
%8 bits DEFAULT
s.Terminator=9;
%0x09 = caracter TAB
s.Timeout=600;
%600 segundos
fopen(s)
PPL_AQUIS=get(handles.puls_por_leit_AQUIS,'String');
switch PPL_AQUIS
case '1'
fprintf(s,'1'); %envia pela serial pedido do usurio(pulsos por leitura)
case '2'
fprintf(s,'2'); %envia pela serial pedido do usurio(pulsos por leitura)
case '4'
fprintf(s,'4'); %envia pela serial pedido do usurio(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
fprintf(s,'Z');
n=0;
134
N(1)=0;
for i=2:1:n
t(i)=etime(datevec(H(i)),t_ref);
N(i)=i-1;
end
%***** FORMATA O VETOR DE VELOCIDADE *****
grafVEL=0;
passo=2; %define a cada qtos pontos de posiao se baseia o calculo da velocidade
for k=1:passo:(n-passo)
VEL=(grafPOS(k+passo)-grafPOS(k))/(t(k+passo)-t(k)); %pulsos/seg
grafVEL=[grafVEL VEL];
end
for k=0:1:length(grafVEL)-1
nVEL(k+1)=k*passo;
tVEL(k+1)=t(k*passo+1);
end
%***** VARIVEIS GLOBAIS *****
global nG;
nG=n;
global NG;
NG=N;
global grafPOSG;
grafPOSG=grafPOS;
global tG;
tG=t;
global nVELG;
nVELG=nVEL;
global grafVELG;
grafVELG=grafVEL;
global tVELG;
tVELG=tVEL;
global EST_ERRG;
EST_ERRG=EST_ERR;
XX=encoderAQUIS128; %chama a figura de resultados da aquisio
%##########################################################################
% --- 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)
% Hints: contents = get(hObject,'String') returns popupmenuPPLTES contents as cell array
%
contents{get(hObject,'Value')} returns selected item from popupmenuPPLTES
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val}; %verifica opo no popup menu qde de pulsos por leitura - teste
case ' 1'
set(handles.puls_por_leit_TES,'String',1);
PPLtes=1;
case ' 2'
set(handles.puls_por_leit_TES,'String',2);
PPLtes=2;
case ' 4'
set(handles.puls_por_leit_TES,'String',4);
PPLtes=4;
otherwise
end
LDtes=str2double(get(handles.qde_leit_desej_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 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
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%##########################################################################
% --- 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)
% Hints: contents = get(hObject,'String') returns popupmenuLDTES contents as cell array
%
contents{get(hObject,'Value')} returns selected item from popupmenuLDTES
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val}; %verifica opo no popup menu qde de leituras desejadas - teste
case ' 16'
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
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%##########################################################################
% --- 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)
%***** INICIALIZA PORTA SERIAL *****
s=serial('COM1');
fclose(s);
s.BaudRate=9600;
%9600 bps
s.DataBits=8;
%8 bits DEFAULT
s.Terminator=9;
%0x09 = caracter TAB
s.Timeout=600;
%600 segundos
fopen(s)
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 usurio(pulsos por leitura)
PPL_TESG=1;
case '2'
fprintf(s,'2'); %envia pela serial pedido do usurio(pulsos por leitura)
PPL_TESG=2;
case '4'
fprintf(s,'4'); %envia pela serial pedido do usurio(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;
%***** LAO DE LEITURA DA PORTA SERIAL *****
while (n<qde_leit_desej+1) %([leituras])
POS=fscanf(s,'%d') %leitura da posiao atual do encoder didtico pela serial
QDE_PULSOS_INTERV=fscanf(s,'%d') %leitura da contagem de pulsos do canal
%%A do encoder de referncia no intervalo entre duas transmisses de
%%posio do encoder didtico
grafPOS(n+1)=POS; %vetor de posioes atuais
grafPULS(n+1)=QDE_PULSOS_INTERV; %vetor de contagem de pulsos no intervalo
n=n+1;
end %fim while
136
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
% Copyright 2002-2003 The MathWorks, Inc.
% Edit the above text to modify the response to help encoderAQUIS128
% Last Modified by GUIDE v2.5 28-Set-2007 16:50:41
% Begin initialization code - DO NOT
gui_Singleton = 1;
gui_State = struct('gui_Name',
'gui_Singleton',
'gui_OpeningFcn',
EDIT
mfilename, ...
gui_Singleton, ...
@encoderAQUIS128_OpeningFcn, ...
137
138
ylim('auto')
xlabel('Nmero 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('Posio [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
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%##########################################################################
% --- 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)
% Hints: contents = get(hObject,'String') returns popupmenuGRAF2 contents as cell array
%
contents{get(hObject,'Value')} returns selected item from popupmenuGRAF2
global nG NG grafPOSG tG nVELG grafVELG tVELG;
axes(handles.GRAF2);
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val}; %verifica opo no popup menu e plota no grfico 2
case ' Posicao x Tempo'
plot(tG,grafPOSG,'.-b')
xlim([0 tG(nG)])
ylim('auto')
xlabel('Tempo [s]')
ylabel('Posio [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('Nmero da leitura')
ylabel('Posio [pulsos]')
grid
case ' Velocidade x Numero da leitura'
plot(nVELG,grafVELG,'.-','Color',[0,0.25,0])
xlim([0 nG-1])
ylim('auto')
xlabel('Nmero 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
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
% Copyright 2002-2003 The MathWorks, Inc.
% Edit the above text to modify the response to help encoderTESTE128
% Last Modified by GUIDE v2.5 28-Set-2007 13:48:30
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @encoderTESTE128_OpeningFcn, ...
'gui_OutputFcn', @encoderTESTE128_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{:});
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;
axes(handles.GRAF1); %plota, inicialmente, posio x nmero da leitura
plot(NG,grafPOSG,'.-','Color',[0,0.25,0])
xlim([0 nG-1])
ylim('auto')
xlabel('Nmero da leitura')
ylabel('Posio [pulsos]')
grid
axes(handles.GRAF2); %plota, inicialmente, qde de pulsos no intervalo x nmero da leitura
plot(NG,grafPULSG,'.-b')
xlim([0 nG-1])
ylim([0 16*PPL_TESG])
xlabel('Nmero da leitura')
ylabel('Qde de pulsos no intervalo [pulsos>RES]')
grid
switch EST_ERRG %interpretao e indicao do valor aproximado de mud err de estado
case 123
set(handles.ESTERR_TES,'String','= 0');
case 55
set(handles.ESTERR_TES,'String','< 5');
case 111
set(handles.ESTERR_TES,'String','< 10');
case 222
set(handles.ESTERR_TES,'String','< 20');
otherwise
set(handles.ESTERR_TES,'String','> 20');
end
% Choose default command line output for encoderTESTE128
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
%##########################################################################
% --- 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)
% Get default command line output from handles structure
varargout{1} = handles.output;
%##########################################################################
% --- 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)
% Hints: contents = get(hObject,'String') returns popupmenuGRAF1 contents as cell array
%
contents{get(hObject,'Value')} returns selected item from popupmenuGRAF1
global PPL_TESG;
global nG NG grafPOSG grafPULSG;
axes(handles.GRAF1);
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val}; %verifica opo no popup menu e plota no grfico 1
case ' Posicao x Numero da leitura'
plot(NG,grafPOSG,'.-','Color',[0,0.25,0])
xlim([0 nG-1])
ylim('auto')
xlabel('Nmero da leitura')
ylabel('Posio [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('Nmero 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
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%##########################################################################
% --- 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)
% Hints: contents = get(hObject,'String') returns popupmenuGRAF2 contents as cell array
%
contents{get(hObject,'Value')} returns selected item from popupmenuGRAF2
global PPL_TESG;
global nG NG grafPOSG grafPULSG;
axes(handles.GRAF2);
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val}; %verifica opo no popup menu e plota no grfico 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('Nmero 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('Nmero da leitura')
ylabel('Posio [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
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%##########################################################################
% --- 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={'LEITURA'};
%exporta dados para arquivo em excel
xlswrite('encoder_testeprecisao.xls',nome,'Plan1','A2');
xlswrite('encoder_testeprecisao.xls',NG','Plan1','A4');
nome={'POS [pulsos]'};
xlswrite('encoder_testeprecisao.xls',nome,'Plan1','C2');
xlswrite('encoder_testeprecisao.xls',grafPOSG','Plan1','C4');
nome={'QDE NO INTERV [pulsos>RES]'};
xlswrite('encoder_testeprecisao.xls',nome,'Plan1','E2');
xlswrite('encoder_testeprecisao.xls',grafPULSG','Plan1','E4');
set(handles.pushbuttonEXPORT,'ForegroundColor',[0.51,0.51,0.51]);
142