kit didático para estudo de encoders ópticos

152
ES951 / ES952 - TRABALHO DE GRADUAÇÃO “Estudo de Encoders Ópticos Baseados no Efeito Moiré e Projeto de um Kit de Encoder Didático” Aluno: Victor Adriano Turchetti RA: 025366 Orientador: Prof. Dr. Luiz Otávio Saraiva Ferreira NOVEMBRO - 2007 UNIVERSIDADE ESTADUAL DE CAMPINAS Faculdade de Engenharia Mecânica Engenharia de Controle e Automação

Upload: vuongdiep

Post on 08-Jan-2017

222 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Kit didático para estudo de encoders ópticos

ES951 / ES952 - TRABALHO DE GRADUAÇÃO

“Estudo de Encoders Ópticos Baseados no Efeito Moiré e Projeto de um Kit de Encoder Didático”

Aluno: Victor Adriano Turchetti RA: 025366 Orientador: Prof. Dr. Luiz Otávio Saraiva Ferreira

NOVEMBRO - 2007

UNIVERSIDADE ESTADUAL DE CAMPINAS

Faculdade de Engenharia Mecânica

Engenharia de Controle e Automação

Page 2: Kit didático para estudo de encoders ópticos

i

UNICAMP

FACULDADE DE ENGENHARIA MECÂNICA

COORDENAÇÃO DE GRADUAÇÃO ENGENHARIA DE CONTROLE E AUTOMAÇÃO

ES952 - TRABALHO DE GRADUAÇÃO II 2o semestre de 2007

ALUNO: RA:

TÍTULO:

NOTAS DA BANCA MEMBRO (1)

MEMBRO (2)

ORIENTADOR

Conteúdo do Trabalho

Apresentação do Trabalho

Seminário de Apresentação Atr ibu ir conce i to : Exce lente , B om , Regu lar , Insuf ic iente

NOTA GLOBAL At r ibu i r no ta de 0-10 (nota mín ima para aprovação: 5 ,0 )

Campinas, de de

_________________________________ _________________________________ Prof. Prof. Membro (1) Membro (2) Carimbo e Assinatura Carimbo e Assinatura _________________________________ _________________________________ Prof. Prof. Dr. Eurípides G. de Oliveira Nóbrega

Orientador Coordenador de Graduação Carimbo e Assinatura Carimbo e Assinatura

MÉDIA F INAL

Page 3: Kit didático para estudo de encoders ópticos

ii

Agradecimentos

Gostaria de agradecer ao professor Luiz Otávio Saraiva Ferreira pelas orientações prestadas

e pela disponibilidade de atendimento para esclarecer dúvidas. Gostaria de agradecer ao Marcílio

e ao Paulo Lamim, que contribuíram quando da utilização do laboratório de mecatrônica.

Gostaria também de deixar um agradecimento aos meus pais, pelo apoio e suporte constantes.

Page 4: Kit didático para estudo de encoders ópticos

iii

Resumo

O presente trabalho traz, inicialmente, um estudo sobre encoders ópticos baseados no efeito

moiré, apresentando os princípios de funcionamento, discutindo sistemas para aumentar a

resolução (sistemas resolvedores), mostrando as técnicas de fabricação de discos e abordando

questões relacionadas a erros e testes de encoders. Em seguida, apresenta o desenvolvimento de

um kit de encoder composto por um encoder didático de baixo custo (128 PPR), um encoder de

referência (1024 PPR), uma interface eletrônica com microcontrolador e uma interface gráfica do

usuário em MATLAB. O encoder didático é desenvolvido utilizando o efeito moiré para gerar a

defasagem de 90º elétricos entre seus canais A e B. Para isso, são utilizados dois discos, um

móvel com 32 pares de setores translúcido-opaco e outro estático com 33 pares. A diferença de 1

par de setores translúcido-opaco permite a obtenção da defasagem de 90º elétricos por meio do

posicionamento de dispositivos de leitura a 90º angulares. A resolução do encoder obtida

fisicamente (32 PPR) é ampliada (128 PPR) com a utilização de um resolvedor eletrônico via

software, implementado em um microcontrolador. O microcontrolador também é utilizado para a

transmissão de dados, via serial, a um PC executando a interface gráfica do usuário (GUI). A

GUI criada em MATLAB permitiu caracterizar o funcionamento do encoder didático através de

dois tipos de experimentos: aquisição da posição e teste de precisão. Nos experimentos de

aquisição da posição, o encoder didático foi movimentado nos dois sentidos e com velocidades

diferentes, fazendo com que os dados de posição fossem lidos e armazenados em MATLAB,

onde foram determinadas as velocidades. Cada experimento teve os resultados apresentados na

forma gráfica, refletindo, coerentemente, o movimento físico imposto ao encoder didático. Nos

experimentos de teste de precisão, o encoder didático foi movimentado juntamente com um

encoder de referência. Além das leituras da posição do encoder didático, o MATLAB recebeu as

quantidades de pulsos do encoder de referência que ocorreram entre cada duas leituras do

encoder didático. Os resultados dos experimentos também foram apresentados graficamente,

onde foi possível inferir a respeito da precisão do encoder didático, que ficou em ± 1,4º , metade

de sua resolução (360º / 128PPR = 2,8º).

Palavras-chave: encoder óptico, efeito moiré, encoder incremental, encoder absoluto, resolvedor,

fabricação de discos de encoder, erros de encoder, teste de encoder, kit didático, PIC, MATLAB.

Page 5: Kit didático para estudo de encoders ópticos

iv

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.

Page 6: Kit didático para estudo de encoders ópticos

v

Índice 1. Introdução ................................................................................................................................... 1

2. Princípio de Funcionamento de Encoders Ópticos ..................................................................... 2 2.1 O Efeito Moiré .......................................................................................................................... 2 2.2 Batimentos ................................................................................................................................ 9 2.3 Introdução aos Sistemas de Medição ...................................................................................... 16 2.3.1 Sistemas de Medição ........................................................................................................... 16 2.3.2 Transdutores ........................................................................................................................ 18 2.4 Encoders ................................................................................................................................. 20 2.4.1 Fundamentos do Encoder Incremental ................................................................................ 20 2.4.2 Encoder Óptico Incremental ................................................................................................ 23 2.4.3 Fundamentos do Encoder Absoluto ..................................................................................... 31 2.4.4 Encoder Óptico Absoluto .................................................................................................... 37

3. Resolvedores ............................................................................................................................. 39 3.1 Resolvedores Eletrônicos ....................................................................................................... 39 3.2 Resolvedores Ópticos ............................................................................................................. 47

4. Técnicas de Fabricação de Discos e Réguas de Encoders Ópticos .......................................... 50 4.1 Técnica Industrial Utilizando o Processo de Lift-off ............................................................. 50 4.1.1 Preparação Inicial do Disco ................................................................................................. 51 4.1.2 Processo de Lift-off ............................................................................................................. 53 4.2 Técnica para Fins Didáticos Utilizando Materiais de Baixo Custo ........................................ 60

5. Erros e Testes de Encoders Ópticos .......................................................................................... 62 5.1 Erros Associados a Encoders Ópticos Incrementais Rotativos .............................................. 62 5.2 Testes de Encoders Ópticos Incrementais Rotativos .............................................................. 68

6. Materiais e Métodos ................................................................................................................. 6.1 Projeto e Montagem da Mecânica do Kit de Encoder ............................................................ 6.2 Projeto e Montagem da Eletrônica do Kit de Encoder ........................................................... 6.3 Desenvolvimento do Software Embarcado ............................................................................ 6.4 Desenvolvimento da Interface com o Usuário ....................................................................... 6.5 Manual de Experimentos ...................................................................................................... 6.5.1 Aquisição da Posição e Determinação da Velocidade ....................................................... 6.5.2 Teste de Precisão Utilizando um Encoder de Referência ..................................................

7. Resultados e Discussão ........................................................................................................... 7.1 Construção do Kit de Encoder .............................................................................................. 7.2 Experimentos de Aquisição da Posição ................................................................................ 7.3 Experimentos de Teste de Precisão ......................................................................................

8. Conclusões e Sugestões para Próximos Trabalhos ................................................................. 76 Referências Bibliográficas .......................................................................................................... 77 Anexos ........................................................................................................................................ 79

1

2 2 9

16 16 18 20 20 23 31 37

39 39 47

50 50 51 53 60

62 62 68

77 77 86 91 98

104 105 107

109 109 112 115

119 121 124

Page 7: Kit didático para estudo de encoders ópticos

vi

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 espaçamento e um ângulo 2α entre elas ................................................................................................................................... 6 Figura 2.5 - Padrões moiré causados pela sobreposição de duas grades de linhas retas ................ 7 Figura 2.6 - Geometria utilizada para determinar o espaçamento 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 gráfico .. 12 Figura 2.9 - Exemplo de batimento gerado pela sobreposição de duas grades. Uma grade com n1 = 352 linhas e outra com n2 = 350 linhas ..................................................................................... 13 Figura 2.10 - Exemplo de batimento gerado pela sobreposição de duas grades. Uma grade com n1=354 linhas e outra com n2=350 linhas .................................................................................... 13 Figura 2.11 - Exemplo de batimento gerado pela sobreposição de duas grades. Uma grade com n1=358 linhas e outra com n2=350 linhas .................................................................................... 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 sobreposição de duas grades circulares. Uma grade com Nlinhas=100 e outra com Nlinhas=101 ...................................................................... 15 Figura 2.15 - Exemplo de batimento gerado pela sobreposição de duas grades circulares. Uma grade com Nlinhas=100 e outra com Nlinhas=102 ...................................................................... 16 Figura 2.16 - Exemplo de batimento gerado pela sobreposição de duas grades circulares. Uma grade com Nlinhas=100 e outra com Nlinhas=104 ...................................................................... 16 Figura 2.17 - Estrutura geral de um sistema de medição e controle ............................................. 17 Figura 2.18 - Princípio 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 - Determinação da direção de movimento utilizando um flip-flop tipo D ................ 22 Figura 2.21 - Esquema de encoder com disco constituído de setores transparentes e opacos ...... 23 Figura 2.22 - Esquema de encoder com régua constituída de setores refletivos e não refletivos . 24 Figura 2.23 - Máscara, em (a), com quatro janelas dispostas de modo a gerar uma defasagem de 90º elétricos entre os sinais das fotocélulas, em (b) ..................................................................... 25 Figura 2.24 - Canais A e B ........................................................................................................... 25 Figura 2.25 - Grades com mesmo espaçamento dos setores presentes no elemento móvel ......... 26 Figura 2.26 - Máscara com quatro grades dispostas de modo a gerar uma defasagem de 90º elétricos entre os sinais dos fotodetectores, no caso fotocélulas .................................................. 27 Figura 2.27 - Máscara com grade inclinada em relação aos setores presentes no elemento móvel, gerando uma franja moiré ............................................................................................................. 27 Figura 2.28 - Dispositivos de leitura distribuídos verticalmente para obter os sinais defasados . 28 Figura 2.29 - Sobreposição de elementos com diferença de 1 par ............................................... 28 Figura 2.30 - Sobreposição de elementos com diferença de 1 par e após o deslocamento relativo equivalente a um setor/espaçamento ............................................................................................ 29 Figura 2.31 - Exemplos comerciais de encoders ópticos incrementais lineares .......................... 30

2 3 4

6 7 8

11 12

13

13

14 15 15

15

16

16 17 21 22 22 23 24

25 25 26

27

27 28 28

29 30

Page 8: Kit didático para estudo de encoders ópticos

vii

Figura 2.32 - Encoder óptico incremental rotativo ....................................................................... 30 Figura 2.33 - Encoder absoluto ..................................................................................................... 31 Figura 2.34 - Circuitos para conversão do código Gray para o código binário natural ................ 34 Figura 2.35 - Exemplo de mecanismo multi-revoluções .............................................................. 36 Figura 2.36 - Esquema básico de um encoder óptico absoluto .................................................... 37 Figura 2.37 - Sistemas básicos de focalização ............................................................................. 38 Figura 2.38 - Exemplos comerciais de encoders ópticos absolutos rotativos .............................. 38 Figura 3.1 - Obtenção de dois sinais senoidais defasados de 90º elétricos .................................. 41 Figura 3.2 - Transformação senóide / onda quadrada .................................................................. 41 Figura 3.3 - Formas de onda de um sistema resolvedor sem interpolador eletrônico .................. 42 Figura 3.4 - Circuito interpolador eletrônico ............................................................................... 43 Figura 3.5 - Formas de onda de um sistema resolvedor com interpolador eletrônico. A resolução obtida neste exemplo é oito vezes maior ..................................................................................... 45 Figura 3.6 - Exemplos comerciais de circuito interpolador eletrônico ........................................ 46 Figura 3.7 - Obtenção de N sinais senoidais igualmente defasados, N = 4 (esq) e N = 5 (dir) ... 48 Figura 4.1 - Exemplos de discos de encoders ópticos .................................................................. 50 Figura 4.2 - Expansão em função do tipo de vidro, tamanho e temperatura ................................ 52 Figura 4.3 - Transmissão em função do comprimento de onda para diferentes tipos de vidro .... 52 Figura 4.4 - Etapas iniciais do processo de lift-off ...................................................................... 55 Figura 4.5 - Perfis após a exposição à radiação e revelação ........................................................ 56 Figura 4.6 - Perfil obtido com a aplicação de clorobenzeno sobre uma resina positiva antes da revelação ...................................................................................................................................... 56 Figura 4.7 - Resultado obtido com a deposição de uma película de metal sobre um substrato, via processo de evaporação do metal ................................................................................................. 58 Figura 4.8 - Etapas finais do processo de lift-off ......................................................................... 59 Figura 4.9 - Exemplo de disco incremental obtido com programa em MATLAB, Nlinhas=36 .. 60 Figura 4.10 - Exemplo de técnica para construção de um disco de encoder óptico para fins didáticos empregando materiais de baixo custo ........................................................................... 61 Figura 5.1 - Sistema genérico com encoder ................................................................................. 64 Figura 5.2 - Excentricidade .......................................................................................................... 65 Figura 5.3 - Inclinação do disco/escala ........................................................................................ 67 Figura 5.4 - Princípio de um encoder óptico incremental rotativo ............................................... 68 Figura 5.5 - Relação fotodetector-graduações e amplitude do sinal de saída do fotodetector ..... 69 Figura 5.6 - Sistema implementado para a realização da análise ................................................. 69 Figura 5.7 - Imagem da intensidade de luz a uma posição L = 0,1 mm ....................................... 70 Figura 5.8 - Resultado analítico do sinal de saída do modelo do fotodetector ............................. 71 Figura 5.9 - Influência da distância entre o fotodetector e o disco graduado ............................... 71 Figura 5.10 - Influência da distância entre o fotodetector e o disco graduado. Resultado das medições do sinal de saída do fotodetector em um encoder real .................................................. 72 Figura 5.11 - Influência da razão entre a largura da área ativa do fotodetector e o espaçamento das graduações do disco ............................................................................................................... 72 Figura 5.12 - Influência da razão entre a largura da área ativa do fotodetector e o espaçamento das graduações. Resultado das medições do sinal de saída do fotodetector em um encoder real .. 73 Figura 5.13 - Posição relativa entre o fotodetector e o disco graduado ........................................ 74 Figura 5.14 - Influência da concentricidade entre o fotodetector e o disco graduado .................. 74 Figura 5.15 - Teste de precisão de um encoder de menor resolução utilizando um encoder de referência ....................................................................................................................................... 76

30 31 34 36 37 38 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

Page 9: Kit didático para estudo de encoders ópticos

viii

Figura 6.1 - Método escolhido para geração do efeito moiré ....................................................... Figura 6.2 - Croqui da base metálica ............................................................................................ Figura 6.3 - Croqui do eixo de plástico ......................................................................................... 34 Figura 6.4 - Croqui do suporte de papelão para fixar os fotodiodos ............................................ Figura 6.5 - Croqui do suporte de papelão para fixar os LED´s infravermelho ........................... 37 Figura 6.6 - Croqui dos CD´s de plástico transparente ................................................................ Figura 6.7 - Croqui do disco incremental em transparência com 33 pares de setores .................. Figura 6.8 - Croqui do disco incremental em transparência com 32 pares de setores .................. 34 Figura 6.9 - Croqui dos suportes metálicos .................................................................................. Figura 6.10 - Croqui das cantoneiras metálicas com rasgos ........................................................ 37 Figura 6.11 - Croqui das cantoneiras metálicas com furos .......................................................... Figura 6.12 - Croqui de um conjunto de componentes ................................................................ Figura 6.13 - Croqui da sub-montagem dos fotodiodos no suporte ............................................. 34 Figura 6.14 - Croqui da sub-montagem dos LED´s infravermelho no suporte ............................ Figura 6.15 - Croquis das etapas de montagem do encoder didático ........................................... 37 Figura 6.16 - Circuito para ligação de um par emissor-receptor .................................................. Figura 6.17 - Circuito quadrador .................................................................................................. Figura 6.18 - Defasagem de 90º elétricos entre os sinais dos pares emissor-receptor ................. 34 Figura 6.19 - Circuito para ligação e condicionamento dos sinais dos fotodiodos e dos LED’s infravermelho, incluindo a pinagem do CI LM324 ...................................................................... Figura 6.20 - Ligação do encoder de referência ........................................................................... 37 Figura 6.21 - Conector de expansão ligando a protoboard ao módulo II ..................................... Figura 6.22 - Formas de onda de um sistema resolvedor sem interpolador eletrônico ................ Figura 6.23 - Diagrama SDL para o encoder didático ................................................................. 34 Figura 6.24 - Fluxograma simplificado de funcionamento do software embarcado ................... Figura 6.25 - Teste de precisão de um encoder de menor resolução utilizando um encoder de referência ..................................................................................................................................... 37 Figura 6.26 - Registradores de configuração da transmissão/recepção serial ............................. Figura 6.27 - Desenvolvimento da interface com o usuário – GUI ............................................. Figura 6.28 - Tela principal da interface com o usuário do kit de encoder didático .................. 34 Figura 7.1 - Mecânica do kit de encoder didático construído ..................................................... Figura 7.2 - Eletrônica do kit de encoder didático construído .................................................... Figura 7.3 - GUI do kit de encoder didático construído ............................................................. 34 Figura 7.4 - Resultados do ensaio I ............................................................................................ Figura 7.5 - Resultados do ensaio II ........................................................................................... Figura 7.6 - Resultados do ensaio III .......................................................................................... Figura 7.7 - Resultados do ensaio IV ......................................................................................... Figura 7.8 - Resultados do ensaio V ........................................................................................... Figura 7.9 - Resultados do ensaio VI ......................................................................................... Figura 7.10 - Resultados do ensaio VII ......................................................................................

78 79 79 80 80 80 80 81 81 81 81 82 82 83 84 87 87 88

88 89 89 92 92 93

95 97 99

105 109 110 111 112 113 114 115 117 118 118

Page 10: Kit didático para estudo de encoders ópticos

ix

Lista de Tabelas

Tabela 2.1 - Códigos comuns em discos de encoders absolutos .................................................. 32 Tabela 2.2 - Código binário natural e código Gray ...................................................................... 35 Tabela 2.3 - Exemplo de código Gray deslocado em 3 unidades ................................................ 36 Tabela 4.1 - Características dos principais tipos de vidro ............................................................ 51 Tabela 6.1 - Correspondência entre os segmentos dos displays e os terminais do PIC ............... 51 Tabela 6.2 - Correspondência entre as vias de seleção dos displays e os terminais do PIC ........ 51

32 35 36 51 90 91

Page 11: Kit didático para estudo de encoders ópticos

1

1. Introdução

Os encoders ópticos são dispositivos amplamente utilizados em aplicações que exigem o

controle de posição e velocidade, tais como em robôs industriais e máquinas ferramentas. Grande

parte deste tipo de encoder se baseia no efeito moiré, um efeito muito interessante proveniente da

sobreposição de estruturas repetitivas. Um estudo sobre encoders ópticos, além fornecer uma

base teórica para a utilização dos mesmos, permitirá o conhecimento dos princípios e tecnologias

envolvidas. O complemento do estudo através de um projeto prático de um kit de encoder

didático servirá para consolidar estes conhecimentos e outros adquiridos durante a graduação em

engenharia mecatrônica.

Page 12: Kit didático para estudo de encoders ópticos

2

2. Princípio de Funcionamento de Encoders Ópticos

Este capítulo apresenta os conceitos básicos para a compreensão do funcionamento de

encoders ópticos. Ele começa discutindo e analisando matematicamente o efeito moiré, que surge

da sobreposição de estruturas repetitivas e encontra aplicações em diversas áreas. Em seguida,

aborda o fenômeno do batimento associado ao efeito moiré, através do equacionamento e da

apresentação de exemplos. O capítulo faz ainda uma breve introdução aos sistemas de medição,

destacando sua função e debatendo o conceito de transdutor. Finalmente, são apresentados os

fundamentos dos encoders incrementais e absolutos, dando maior ênfase aos encoders ópticos.

2.1 O Efeito Moiré

Seguramente, todos já se depararam com o efeito moiré em algum momento. Ele está

presente em situações do dia-a-dia e pode trazer curiosidade àqueles que o observam. Exemplos

clássicos do efeito moiré surgem quando uma cortina se sobrepõe à outra e enxerga-se através

delas (também se aplica a tecidos), quando é possível ver um lado treliçado de uma ponte na

frente do outro, ou simplesmente quando colocamos dois pentes de cabelo frente-a-frente. Em

todos esses casos são observados padrões constituídos de áreas mais claras e mais escuras. A

Figura 2.1, retirada de (POST et al, 1994), ilustra o caso dos dois pentes e também mostra o

efeito da sobreposição de duas peneiras finas.

Figura 2.1 - Efeito moiré. (a) Sobreposição de duas peneiras. (b) Sobreposição de dois pentes. (POST et al, 1994).

(a)

(b)

Page 13: Kit didático para estudo de encoders ópticos

3

Em (AMIDROR, 2000) é possível encontrar uma descrição sobre a origem do efeito moiré.

Ele nada mais é do que um “fenômeno que ocorre quando estruturas repetitivas do mesmo tipo

(como retículos, telas ou grades) são sobrepostas e visualizadas”. Consiste então, de um novo

padrão de áreas claras e escuras alternadas (franjas moiré), que são observadas apenas com a

sobreposição, ou seja, não aparecem em nenhuma das estruturas originais isoladamente.

Segundo (AMIDROR, 2000), o termo moiré é proveniente da França, onde ele

originariamente se referia a um tipo especial de seda que possuía como característica um padrão

alternado e ondulado. Muitas vezes, tal tecido era colocado em duas camadas para se fazer

determinada roupa, de modo que o movimento dessa roupa no corpo da pessoa criasse um

movimento relativo dos tecidos, gerando um efeito visual bem interessante, o efeito moiré. É dito

que esse efeito em roupas já era utilizado pelos chineses desde os tempos antigos. Diante desses

relatos, vale ressaltar que o termo moiré não se refere ao nome de um cientista que estudou o

efeito moiré. Portanto, não é necessário que se inicie a escrita desse termo com letra maiúscula.

O efeito moiré pode ser aplicado em inúmeros campos do conhecimento e tecnologia. Isso

ocorre graças à grande sensibilidade aos menores deslocamentos das estruturas sobrepostas. São

exemplos de aplicações descritas em (POST et al, 1994) e (AMIDROR, 2000) a medição de

deformações em objetos (deslocamentos no plano e fora dele), a medição de ângulos e

movimentos muito pequenos, alinhamento óptico, cristalografia, documentos anti-falsificação,

arte e diversão. Amostras do efeito moiré em cores, exibidas em (AMIDROR, 2000), podem ser

observadas na Figura 2.2, onde se vê um misto de arte e diversão. Convém lembrar que o efeito

moiré pode ser indesejado em algumas situações como, por exemplo, na imagem de monitores de

computadores e principalmente na área de impressão e reprodução colorida.

(a)

(b)

(c)

Figura 2.2 - Efeito moiré em cores. (a) Padrão RGB. (b) Verde e branco. (c) Vermelho e branco. (AMIDROR, 2000).

Page 14: Kit didático para estudo de encoders ópticos

4

Como foi dito anteriormente, a sobreposição de estruturas repetitivas é responsável pelo

aparecimento do efeito moiré, que surge da distribuição geométrica de áreas claras e escuras. As

áreas onde os elementos escuros das estruturas originais ficam exatamente uns sobre os outros

aparecem mais claras. Quando esses elementos escuros ficam uns entre os outros, ocorre um

maior preenchimento de espaços e essa região tende a se tornar mais escura. A Figura 2.3,

adaptada de (AMIDROR, 2000), mostra o surgimento das áreas claras e escuras (franjas moiré).

Em (CREATH et al, 1992), encontra-se uma análise que apresenta como calcular o padrão

moiré para qualquer sobreposição de estruturas repetitivas (grades). A análise começa ao se

definir a “função transmissão de intensidade para duas grades ),(1 yxf e ),(2 yxf , dadas por

∑∞

=

+=1

1111 )],(cos[),(n

n yxnbayxf φ

∑∞

=

+=1

2222 )],(cos[),(m

m yxmbayxf φ , (2.1)

onde ),( yxφ é a função que descreve a forma básica das linhas da grade. Para a freqüência

fundamental, ),( yxφ é 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, 1ib é o único termo não nulo.

Quando essas duas grades são sobrepostas, a função transmissão de intensidade resultante é

dada pelo produto

Escuro

Escuro Claro

Claro

Claro

Figura 2.3 - Surgimento das franjas moiré. (AMIDROR, 2000).

Page 15: Kit didático para estudo de encoders ópticos

5

.)],(cos[)],(cos[)],(cos[)],(cos[

),(),(

1 12121

1112

122121

21

∑∑∑∑∞

=

=

=

=

+++

=

m nmn

nn

mm yxmyxnbbyxnbayxmbaaa

yxfyxf

φφφφ

(2.2)

Os três primeiros termos da Equação 2.2 fornecem informações que podem ser

determinadas observando os dois padrões separadamente. O último termo é o termo de interesse,

e pode ser reescrito como

)],(),(cos[2

14 212111 yxyxbbTermo φφ −=

;)],(),(cos[2

1

1 12121∑∑

=

=

−+m n

mn yxmyxnbb φφ

n e m ambos ≠ 1

.)],(),(cos[2

1

1 12121 xyxmyxnbb

m nmn∑∑

=

=

++ φφ (2.3)

Esta expressão mostra que ao se sobrepor duas grades, a soma e a diferença entre as duas

grades é obtida. O primeiro termo da Equação 2.3 representa a diferença entre o padrão

fundamental e as duas grades. Ele pode ser usado para predizer o padrão moiré mostrado na

Figura 2.4. Assumindo que as duas grades estão orientadas com um ângulo α2 entre elas e com o

eixoy do sistema de coordenadas biseccionando esse ângulo, as duas funções das grades ),(1 yxφ

e ),(2 yxφ podem ser escritas como

)sincos(2

),(1

1 ααλπφ yxyx +=

e

,)sincos(2

),(2

2 ααλπφ yxyx −= (2.4)

onde 1λ e 2λ são os espaçamentos entre as linhas das duas grades.

Page 16: Kit didático para estudo de encoders ópticos

6

A Equação 2.4 pode ser reescrita como

,sin4

cos2

),(),( 21 αλπα

λπφφ yxyxyx

beat

+=− (2.5)

onde λ é a média dos espaçamentos entre as linhas, e beatλ é o comprimento de onda de

batimento entre as duas grades, dado por

12

21

λλλλλ−

=beat . (2.6)

Usando a Equação 2.3, as franjas moiré serão as linhas cujos centros satisfazem a equação

πφφ 2),(),( 21 Myxyx =− . (2.7)

Três casos separados para o efeito moiré podem ser considerados. Quando λλλ == 21 , o primeiro

termo da Equação 2.5 é zero, e os centros das franjas são dados por

,sin2 αλ yM = (2.8)

Figura 2.4 - Efeito moiré entre duas grades de linhas retas com mesmo espaçamento e um ângulo 2α entre elas. (CREATH et al, 1992).

2α x

λ / 2 sinα

Plano de Observação

y

Page 17: Kit didático para estudo de encoders ópticos

7

onde M é um inteiro correspondendo à ordem da franja. Como esperado, a Equação 2.8 é a

equação de linhas horizontais igualmente espaçadas, como pode ser visto na Figura 2.4.

O outro caso simples ocorre quando as grades estão em paralelo, ou seja, 0=α . Isso faz

com que o segundo termo da Equação 2.5 seja anulado. As franjas moiré, nesse caso, serão as

linhas que satisfazem

xM beat =λ . (2.9)

Essas franjas são igualmente espaçadas e são linhas verticais paralelas ao eixo y .

Para o caso mais geral, onde as duas grades têm diferentes espaçamentos entre linhas e o ângulo

entre as grades é diferente de zero, a equação para as franjas moiré será

ααλλλ sin2cos yxMbeat

+= . (2.10)

Essa é a equação de linhas retas cujo espaçamento e orientação é dependente da diferença relativa

entre os espaçamentos das duas grades e do ângulo entre as grades. A Figura 2.5 mostra os

padrões moiré para esses três casos.

Inclinado Mesma Freqüência

Não Inclinado Freqüências Diferentes

Inclinado Freqüências Diferentes

y

y

y

Figura 2.5 - Padrões moiré causados pela sobreposição de duas grades de linhas retas. (CREATH et al, 1992).

Page 18: Kit didático para estudo de encoders ópticos

8

A orientação e o espaçamento das franjas moiré para o caso geral podem ser determinados

a partir da geometria mostrada na Figura 2.6. A distância AB pode ser escrita em termos dos

espaçamentos das duas grades,

)sin()sin(21

αθλ

αθλ

+=

−=AB , (2.11)

onde θ é o ângulo que as franjas moiré fazem com o eixoy . Depois de rearranjar os termos, o

ângulo de orientação das franjas θ é dado por

−+=

21

21tantanλλλλαθ . (2.12)

Quando 0=α e 21 λλ ≠ , o0=θ , e quando 21 λλ = com 0≠α , o90=θ como esperado. O

espaçamento das franjas perpendicular às linhas das franjas pode ser encontrado igualando as

quantidades para a distância DE ,

y

x

α α

θ

λ1 λ2

A B

D

E C Franjas moiré

Grades

Figura 2.6 - Geometria utilizada para determinar o espaçamento e o ângulo das franjas moiré. Uso de duas grades de freqüências diferentes e inclinadas entre si. (CREATH et al, 1992).

Page 19: Kit didático para estudo de encoders ópticos

9

)sin(2sin

1

αθαλ

+== C

DE , (2.13)

onde C é o espaçamento da franjas. Após rearranjar os termos tem-se,

+=ααθλ

2sin)sin(

1C . (2.14)

Substituindo a orientação das franjas θ , o espaçamento da franjas pode ser encontrado em termos

dos espaçamentos das grades e do ângulo entre as grades,

212

222

21

)2cos(2sin λαλαλλλ

−+=C . (2.15)

No limite quando 0=α e 21 λλ ≠ , o espaçamento da franjas se iguala à beatλ , e no limite quando

λλλ == 21 e 0≠α , o espaçamento das franjas vale )sin2(/ αλ . Conhecendo 1λ , consegue-se

determinar 2λ e α a partir da medição do espaçamento e orientação das franjas”.

2.2 Batimentos

O fenômeno conhecido como batimento, associado ao efeito moiré, é proveniente da

sobreposição de duas grades, de diferentes espaçamentos (freqüências espaciais) e com linhas

paralelas entre si. Para efeito de análise, as duas grades serão consideradas como duas ondas

distintas de mesma amplitude. Pode-se então aplicar o princípio da sobreposição de ondas para

obter uma equação que represente os batimentos. Baseado em (HECHT, 2002), é possível iniciar

a análise sobre os batimentos com a definição das equações das duas ondas,

)cos( 111 txkAy ω−=

)cos( 222 txkAy ω−= , (2.16)

Page 20: Kit didático para estudo de encoders ópticos

10

onde A é a amplitude das ondas, ik é a freqüência espacial eiω é a freqüência temporal. A onda

resultante da sobreposição das ondas 1y e 2y é dada por

)]cos()[cos()cos()cos( 2211221121 txktxkAtxkAtxkAyyy ωωωω −+−=−+−=+= , (2.17)

e que pode ser escrita na forma

−−−

+−+= ])()[(

2

1cos])()[(

2

1cos2 21212121 txkktxkkAy ωωωω (2.18)

com base na identidade trigonométrica

)(2

1cos)(

2

1cos2coscos βαβαβα −+=+ . (2.19)

Rearranjando a Equação 2.18 tem-se que

−−−

+−+= txkk

txkk

Ay2

)(

2

)(cos

2

)(

2

)(cos2 21212121 ωωωω

, (2.20)

onde se nota a presença de termos que contêm a soma das freqüências e de termos que contêm a

subtração das freqüências, tanto no tempo quanto no espaço. Para existir o batimento, os valores

das respectivas freqüências devem ser diferentes, mas próximos um do outro ( 21 kk ≅ e 21 ωω ≅ ).

A freqüência de batimento é definida como a diferença dessas freqüências ( 21 kk − ou 21 ωω − ).

A seguir será apresentado um exemplo para visualização do fenômeno do batimento. O exemplo

foi realizado no MATLAB 7.0 e seu código se encontra no Anexo I.

Supondo as duas ondas 1y e 2y , definidas na Equação 2.16, com 1=A , 24.21 π=k ,

20.22 π=k , 121 == ωω , e para um instante de tempo qualquer, que no caso foi 0=t , a onda

resultante é dada por

Page 21: Kit didático para estudo de encoders ópticos

11

)4cos()44cos(22

)2024(2cos

2

)2024(2cos2 xxxxy ππππ =

+= , (2.21)

onde é possível notar valores distintos no argumento dos cossenos. O cosseno cujo argumento é

proveniente da subtração de freqüências (π4 ) irá modular a amplitude do sinal de maior

freqüência ( π44 ). É justamente essa modulação que causa o aparecimento dos batimentos. A

Figura 2.7 apresenta os gráficos das ondas individualmente. As três ondas plotadas no mesmo

gráfico podem ser observadas na Figura 2.8. A freqüência de batimento neste exemplo é dada por

Figura 2.7 - Exemplo de batimento. (a) Onda y1. (b) Onda y2. (c) Onda resultante y=y1+y2.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4

-3

-2

-1

0

1

2

3

4

y1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4

-3

-2

-1

0

1

2

3

4

y2

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4

-3

-2

-1

0

1

2

3

4

y=y1+y2

(a)

(b)

(c)

Page 22: Kit didático para estudo de encoders ópticos

12

fkk .24.220.224.221 ππππ ==−=− . Nota-se que o valor de f é 4 , exatamente o número de

batimentos gerados, os quais podem ser vistos no gráfico (c) da Figura 2.7.

Para o caso da sobreposição de duas grades de linhas retas paralelas entre si, o espaçamento

entre linhas de uma grade tem valor bem próximo do espaçamento entre linhas da outra grade,

mas são valores diferentes. A mesma análise pode ser feita considerando o número de linhas de

cada grade que existem num mesmo intervalo de posição. Em ambos os casos há uma diferença

entre as freqüências espaciais. Continuando, quando há sobreposição de duas grades com essas

características, o fenômeno do batimento surge associado ao efeito moiré. Os batimentos nesse

caso são observados na forma de franjas moiré. O programa presente no Anexo II, desenvolvido

em MATLAB, ilustra bem o fenômeno do batimento. O programa gera e sobrepõe duas grades de

linhas retas paralelas entre si. O espaçamento de cada grade é definido pelo número de linhas a

serem criadas num mesmo intervalo de posição (eixo x). Três exemplos serão apresentados. O

primeiro exemplo gera uma grade com 3521=n linhas e outra com 3502 =n linhas. A

sobreposição dessas grades é mostrada na Figura 2.9. No segundo exemplo, apresentado na

Figura 2.10, utiliza-se 3541=n e 3502 =n . O terceiro exemplo, com 3581=n e 3502 =n , pode

ser visto na Figura 2.11. Como esperado, a diferença 21 nn − é igual ao número de batimentos

(franjas moiré).

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4

-3

-2

-1

0

1

2

3

4

y1

y2y=y1+y2

Figura 2.8 - Exemplo de batimento. Ondas y1, y2, e resultante y=y1+y2 num mesmo gráfico.

Page 23: Kit didático para estudo de encoders ópticos

13

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.2

0.4

0.6

0.8

1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.2

0.4

0.6

0.8

1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.2

0.4

0.6

0.8

1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.2

0.4

0.6

0.8

1

Figura 2.9 - Exemplo de batimento gerado pela sobreposição de duas grades. Uma grade com 3521=n linhas e outra com 3502 =n linhas.

Figura 2.10 - Exemplo de batimento gerado pela sobreposição de duas grades. Uma grade com 3541=n linhas e outra com 3502 =n linhas.

Page 24: Kit didático para estudo de encoders ópticos

14

Os batimentos associados ao efeito moiré podem ser visualizados de um outro modo. Eles

também surgem com a sobreposição de duas grades circulares com número diferente de linhas

radiais. O programa (em MATLAB) apresentado no Anexo III auxilia na criação de grades

circulares de linhas radiais. O número de linhas da grade é definido na variável Nlinhas.

Exemplos de grades geradas podem ser vistas nas Figuras 2.12 e 2.13, com 100=Nlinhas e

101=Nlinhas respectivamente. Essas duas grades, quando sobrepostas, originam a Figura 2.14,

onde visivelmente se observa uma área mais clara e outra mais escura, representando um

batimento. Considerando agora a sobreposição de uma grade circular com 100=Nlinhas e outra

com 102=Nlinhas , obtém-se a Figura 2.15. Nesse caso aparecem duas áreas claras e duas

escuras, em outras palavras, dois batimentos. Mais uma vez, o número de batimentos corresponde

à diferença entre o número de linhas de uma grade e o número de linhas da outra grade. Essa

correspondência sempre ocorre e está relacionada com a freqüência espacial. Sendo assim, se a

diferença entre o número de linhas fosse 4, o número de batimentos observados também seria 4.

Esse último caso é mostrado na Figura 2.16.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.2

0.4

0.6

0.8

1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.2

0.4

0.6

0.8

1

Figura 2.11 - Exemplo de batimento gerado pela sobreposição de duas grades. Uma grade com 3581=n linhas e outra com 3502 =n linhas.

Page 25: Kit didático para estudo de encoders ópticos

15

Figura 2.12 - Exemplo de grade circular de linhas radiais com 100=Nlinhas .

Figura 2.13 - Exemplo de grade circular de linhas radiais com 101=Nlinhas .

Figura 2.14 - Exemplo de batimento gerado pela sobreposição de duas grades circulares. Uma grade com 100=Nlinhas e outra com 101=Nlinhas .

Page 26: Kit didático para estudo de encoders ópticos

16

2.3 Introdução aos Sistemas de Medição

2.3.1 Sistemas de Medição

Como é apresentado em (PALLÁS-ARENY et al, 1991), um sistema de medição tem a

função de associar um número (valor) a uma grandeza (propriedade ou qualidade) de um objeto

Figura 2.15 - Exemplo de batimento gerado pela sobreposição de duas grades circulares. Uma grade com 100=Nlinhas e outra com 102=Nlinhas .

Figura 2.16 - Exemplo de batimento gerado pela sobreposição de duas grades circulares. Uma grade com 100=Nlinhas e outra com 104=Nlinhas .

Page 27: Kit didático para estudo de encoders ópticos

17

ou evento, a fim de descrevê-lo. Deve haver uma correspondência entre as quantidades numéricas

medidas e as propriedades descritas. Sistemas de medição podem ser utilizados para

monitoramento de processos, como a medição de temperatura, de volume de líquidos, ou de

dados clínicos. Também podem ser utilizados no controle de processos, como no controle de

nível de um tanque, ou no controle de posição de uma esteira. Por fim, sistemas de medição

podem auxiliar na engenharia experimental, como no estudo de distribuição de temperaturas num

objeto com formato irregular, ou na determinação da distribuição de forças num teste de colisão

de um veículo, exemplos de (PALLÁS-ARENY et al, 1991). A Figura 2.17, traduzida do mesmo

livro, mostra o fluxo de dados em um sistema de medição e controle. Em uma medição, é

imprescindível que haja a aquisição das informações por um sensor ou transdutor, mas também é

necessário que ocorra o processamento dessas informações e a apresentação dos resultados numa

forma que o ser humano possa perceber.

Figura 2.17 - Estrutura geral de um sistema de medição e controle. (PALLÁS-ARENY et al, 1991).

Transdutor Condicionamento do sinal

Transmissão dos dados

Controlador

Alarmes

Display

Objetivos

Supervisor

Controle manual

Transmissão de ordens

Condicionamento do sinal

Atuador

Sistema, planta ou processo Perturbações

Page 28: Kit didático para estudo de encoders ópticos

18

2.3.2 Transdutores

Como (PALLÁS-ARENY et al, 1991) define, “um transdutor é um dispositivo que

converte um sinal de uma forma física para um sinal correspondente que possui forma física

diferente”. Da definição percebe-se que um transdutor é uma espécie de conversor de energia,

como o autor mesmo afirma. Sendo assim, o sinal de entrada deve necessariamente ter esforço e

fluxo, componentes que multiplicados originam a potência. Ele lembra que, no entanto, em

sistemas de medição, um desses componentes presentes no sinal medido tem valor desprezível,

de modo que somente o outro componente é medido. Por exemplo, ao realizar uma medição de

força, o deslocamento (e velocidade) do transdutor é desprezado. Quando é medida uma corrente

elétrica, a queda de tensão no amperímetro deve ser próxima de zero. Vale ressaltar que um

transdutor sempre irá consumir uma pequena parte da potência. Logo, deve-se garantir que a ação

de medir não perturbe excessivamente o sistema que está sendo medido. Caso contrário, essa

interferência pode levar a um erro na medição.

Existem seis tipos principais de sinais segundo (PALLÁS-ARENY et al, 1991): mecânico,

térmico, magnético, elétrico, óptico e químico. Ele considera um transdutor qualquer dispositivo

que transforma um tipo de sinal num outro tipo, independentemente do tipo de sinal da saída.

Mas avisa que, na prática, somente os dispositivos que geram um sinal elétrico na saída são

chamados de transdutores. Isso se deve ao fato de sinais elétricos serem utilizados na maioria dos

sistemas de medição. Ele apresenta ainda uma série de vantagens para o uso de sistemas

eletrônicos de medição:

“1) Transdutores elétricos podem ser desenvolvidos para medir qualquer propriedade não

elétrica, selecionando um material apropriado. Qualquer variação em um parâmetro não elétrico

leva a uma variação em um parâmetro elétrico, devido à estrutura eletrônica do material.

2) Energia não é consumida do processo que está sendo medido porque os sinais na saída

do transdutor podem ser amplificados. Com amplificadores eletrônicos, é fácil a obtenção de

ganhos no sinal que ultrapassam 1010 num único estágio.

Page 29: Kit didático para estudo de encoders ópticos

19

3) Um número cada vez maior de diferentes circuitos integrados estão disponíveis para o

condicionamento de sinais eletrônicos. Inclusive existem transdutores que já incorporam esse

condicionamento do sinal.

4) Existem muitas opções para a exibição ou registro de informações via meios

eletrônicos. Essas opções permitem lidar não somente com dados numéricos, mas também com

textos, gráficos e diagramas.

5) A transmissão do sinal é mais versátil para sinais elétricos. Sinais mecânicos,

hidráulicos, ou pneumáticos podem ser mais apropriados em algumas circunstâncias, como em

ambientes onde está presente a radiação ionizante ou onde a atmosfera é explosiva. Mas os sinais

elétricos têm substituído a maioria dos sinais não elétricos”.

Reforça afirmando que “um transdutor é um dispositivo que retira energia do sistema que

ele mede para gerar um sinal de saída que pode ser convertido num sinal elétrico, o qual

corresponde à quantidade medida”. Cita que algumas vezes os termos sensor e transdutor são

utilizados como sinônimos, embora sensor esteja mais ligado à capacidade de adquirir

informações não percebidas pelos sentidos humanos, e transdutor esteja ligado apenas ao fato de

converter tipos de sinais. Conclui dizendo que “a distinção entre transdutor de entrada (sinal

físico / sinal elétrico) e transdutor de saída (sinal elétrico / exibição ou atuação) raramente é feita

nos dias de hoje. E a tendência, particularmente em robótica, é em direção ao uso do termo

sensor para se referir a um transdutor de entrada, e o uso do termo atuador para se referir a um

transdutor de saída”.

Os tópicos seguintes farão uma abordagem sobre o encoder, considerado um transdutor

digital, segundo (De SA, 1990). Embora o encoder possa fazer uso de um outro transdutor

internamente (ex. célula fotoelétrica), o dispositivo como um todo pode ser chamado de

transdutor, pois converte um sinal de posição/deslocamento em um sinal elétrico. Além disso,

com o condicionamento apropriado do sinal (ex. transformação de senóide para onda quadrada),

o encoder pode ser considerado um transdutor digital, assim como fez (De SA, 1990).

Page 30: Kit didático para estudo de encoders ópticos

20

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 posição, a direção, a

velocidade e a aceleração do sistema ao qual o encoder está acoplado. Encoders apresentam

muitas aplicações, as mais comuns são: em eixos de robôs, em eixos de máquinas-ferramenta, em

plotters (mesas XY), em mesas rotativas, no controle de velocidade e posição de motores

elétricos, no posicionamento de antenas, telescópios e radares. Eles também podem ser aplicados

na medição de qualquer grandeza que pode ser convertida num deslocamento, como por exemplo,

na medição do nível de um líquido usando uma bóia ou na determinação da direção do vento

usando uma biruta. Encoders são classificados funcionalmente em dois tipos: incremental ou

absoluto.

2.4.1 Fundamentos do Encoder Incremental

Baseado em (PALLÁS-ARENY et al, 1991), pode-se dizer que um encoder incremental

consiste basicamente de uma régua linear ou um disco, o qual é acoplado ao sistema que se

deseja “medir”. Uma régua é utilizada num encoder incremental linear, e um disco num encoder

incremental rotativo. Como discutido antes, a régua deve possuir a menor massa possível, ou se

for um disco, ter a menor inércia possível. Com isso, deseja-se interferir minimamente no sistema

a ser medido. A régua ou o disco deve possuir uma trilha com dois tipos de setores que tenham

uma propriedade que permita diferenciá-los. Tais setores geralmente são dispostos de forma

alternada e eqüidistante, como mostra a Figura 2.18, traduzida do livro citado. A figura mostra o

princípio de um encoder incremental, que ainda não é um encoder propriamente dito. Se uma

mudança em tal propriedade é percebida por um dispositivo de leitura, então um incremento na

posição resultará em pulso na saída. O autor cita que as propriedades físicas usadas para

diferenciar os setores podem ser do tipo magnética, elétrica e óptica, mas que em todos os casos a

saída básica é na forma de um trem de pulsos elétricos com ciclo de trabalho (duty cycle) de 50%.

Ele menciona a simplicidade e a economia desse método, mas alerta sobre alguns inconvenientes.

Page 31: Kit didático para estudo de encoders ópticos

21

Primeiro em relação à perda de informação da posição sempre que ocorrer a falta de alimentação

elétrica, segundo em relação à necessidade da utilização de contadores up-down para fazer a

integração com os circuitos externos, e por fim, principalmente em relação à impossibilidade de

se determinar a direção do movimento. A determinação da direção do movimento requer o uso de

um outro dispositivo de leitura, ou ainda de um elemento adicional (régua ou disco). Nesses casos

tem-se um encoder propriamente dito, ou seja, com detecção de movimento e direção.

Independentemente da natureza da propriedade utilizada para diferenciar os setores da

régua ou do disco, a mecânica do posicionamento dos dois dispositivos de leitura combinado com

o posicionamento dos elementos móveis (réguas ou discos) é a responsável pela defasagem de

90º elétricos existente entre os dois sinais fornecidos por um encoder incremental. A eletrônica

embarcada trata os sinais e os coloca em forma de pulsos (onda quadrada). Diz-se então, que

esses dois sinais, usualmente chamados de canal A e canal B, estão em quadratura. Normalmente

um encoder incremental possui uma marcação (na régua ou no disco) indicando a posição

absoluta “zero”. Nesse caso, é preciso a utilização de um terceiro dispositivo de leitura. O mesmo

irá fornecer o sinal de “zero”, chamado de Z, e que na maioria das vezes consiste de um pulso

com fase idêntica à fase do canal A. A Figura 2.19 apresenta o comportamento desses três sinais.

Figura 2.18 - Princípio de encoder incremental rotativo e encoder incremental linear. (PALLÁS-ARENY et al, 1991).

Eixo

Rotação Disco

Dispositivo de leitura fixo

Setores eqüidistantes

Régua

Acoplamento

Movimento linear

Page 32: Kit didático para estudo de encoders ópticos

22

Alguns encoders incrementais oferecem a opção das saídas complementares, A, B e Z, que

podem ser utilizadas para diminuir a sensibilidade a ruídos de medição.

A direção do movimento pode ser obtida de diversas formas. A mais simples utiliza um

flip-flop do tipo D (Data), onde o canal A é ligado na entrada D e o canal B no clock. O esquema

pode ser visto na Figura 2.20. Notar que o flip-flop é sensível à borda de subida. A saída Q será

1, nível lógico alto, quando o canal A estiver 90º elétricos adiantado em relação ao canal B

(sentido da esquerda p/ direita na Figura 2.19). A saída Q será 0, nível lógico baixo, quando o

canal A estiver 90º elétricos atrasado em relação ao canal B (sentido da direita p/ esquerda na

Figura 2.19). Portanto, a direção será dada pelo nível lógico presente na saída Q. Cada nível

lógico estará associado a uma direção fisicamente (ex. giro horário / anti-horário). O trem de

pulsos para ser utilizado em um circuito de contagem pode vir do canal A ou do canal B.

A

B

Z

90º

Figura 2.19 - Sinais fornecidos por um encoder incremental. Canais A e B em quadratura.

CLK

D A

B

Q = 1 , Canal A adiantado de 90º em relação ao canal B Q = 0 , Canal A atrasado de 90º em relação ao canal B

Figura 2.20 - Determinação da direção de movimento utilizando um flip-flop tipo D.

Page 33: Kit didático para estudo de encoders ópticos

23

A resolução de um encoder incremental linear é dada em pulsos por unidade de

comprimento, ou simplesmente pela distância (µm) correspondente a um único incremento/pulso.

Já a resolução de um encoder rotativo é dada em pulsos por revolução (PPR), mas também pode

ser dada na forma do ângulo correspondente a um único incremento/pulso.

2.4.2 Encoder Óptico Incremental

Em encoders ópticos, a propriedade física utilizada para diferenciar os setores de uma régua

ou um disco é a óptica. Réguas ou discos de encoders ópticos incrementais podem ser

constituídos de setores translúcidos e opacos ou de setores refletivos e não refletivos. Nos dois

casos, os dispositivos de leitura são compostos por uma fonte emissora de luz, geralmente um

LED, e por um detector de luz (fotodetector), que pode ser um LDR, uma célula fotoelétrica, um

fototransistor ou um fotodiodo. Pode ou não haver elementos de focalização (lentes). Quando

setores translúcidos e opacos são utilizados, o elemento móvel (régua ou disco) deve estar

posicionado entre o emissor e o detector de luz. O elemento é comumente feito de vidro

transparente e os setores opacos são obtidos através da deposição de cromo. Um esquema de um

encoder óptico incremental rotativo desse tipo pode ser visto na Figura 2.21, traduzida do

(CATÁLOGO TURCK, acesso em 2007). Quando setores refletivos e não refletivos são

utilizados, o emissor e detector devem ser posicionados do mesmo lado. A Figura 2.22, traduzida

do (CATÁLOGO RENISHAW, acesso em 2007), mostra um esquema de encoder óptico

incremental linear que usa essa técnica.

Figura 2.21 - Esquema de um encoder com disco constituído de setores transparentes e opacos. (CATÁLOGO TURCK, acesso em 2007).

Placa PCB

Sensor

Disco

Máscara

LED

Page 34: Kit didático para estudo de encoders ópticos

24

Nos dois casos, de acordo com (PALLÁS-ARENY et al, 1991), os problemas associados

são aqueles advindos da sujeira do ambiente, das limitações de temperatura e tempo de resposta

dos componentes optoeletrônicos, e da possível vibração dos elementos de focalização.

Como já foi dito, um encoder incremental precisa fornecer dois sinais (canal A e canal B)

com 90º elétricos de defasagem, a qual é obtida pela mecânica do posicionamento dos

dispositivos de leitura e elementos móveis. Essa mecânica para obtenção da defasagem pode ser

implementada de diversas formas. Alguns métodos serão apresentados a seguir e independem se

os setores são do tipo translúcido/opaco ou do tipo refletivo/não refletivo.

O primeiro método consiste na utilização de uma máscara fixa contendo quatro janelas de

espaçamentos idênticos ao espaçamento de um único setor. Na direção de cada janela é

posicionado um fotodetector, que neste exemplo é uma célula fotoelétrica. As quatro janelas são

dispostas de tal modo que os sinais na saída das quatro fotocélulas estão defasados de 90º

elétricos entre si. Esses sinais de tensão são aproximadamente senoidais, pois o movimento

relativo da régua ou disco em relação à máscara faz com que a luminosidade em cada janela varie

de um mínimo até um máximo. Lembrando que a luminosidade pode ser transmitida ou refletida.

A Figura 2.23, traduzida de (WOOLVET, 1977), ilustra essa técnica e exibe os sinais na saída

das células fotoelétricas. O sinal E11 está 180º elétricos defasado em relação ao sinal E12, assim

como o sinal E21 está 180º elétricos defasado em relação ao sinal E22. Cada par de sinais E11 / E12

e E21 / E22 terá suas componentes de tensão somadas, gerando dois sinais, aqui chamados de a e b.

Figura 2.22 - Esquema de um encoder com régua constituída de setores refletivos e não refletivos. (CATÁLOGO RENISHAW, acesso em 2007).

LED

Máscara do dispositivo de leitura

Grade

Lente

Fotodetector

Marca de referência óptica IN-TRAC®

Régua

Page 35: Kit didático para estudo de encoders ópticos

25

Esses dois sinais, ainda senoidais, já estão defasados de 90º elétricos entre si. Logo, é necessário

o uso de circuitos quadradores para se obter sinais de onda quadrada. Uma vez obtido os dois

sinais de onda quadrada, tem-se os canais A e B. A Figura 2.24, baseada em (WOOLVET, 1977),

esquematiza o circuito de condicionamento dos sinais e mostra as formas de onda envolvidas.

Dependendo do componente fotodetector, pode ser preciso ainda amplificar ou inverter os sinais.

Figura 2.23 - Máscara, em (a), com quatro janelas dispostas de modo a gerar uma defasagem de 90º elétricos entre os sinais das fotocélulas, em (b). (WOOLVET, 1977).

Figura 2.24 - Canais A e B. (a) Condicionamento eletrônico. (b) Formas de onda.

(a)

(b)

E11

E12

quadrador a A

E21 quadrador b B

- +

- +

- +

E22 - +

(a) (b)

máscara

régua

movimento da régua

saída da célula

deslocamento da régua

a

b

A

B

Page 36: Kit didático para estudo de encoders ópticos

26

Segundo (PALLÁS-ARENY et al, 1991), encoders ópticos fornecem as maiores resoluções

e o fator limitante é o tamanho do fotodetector, principalmente neste método apresentado. Nele, a

luminosidade é dependente do posicionamento de um único setor, tornando o sistema mais

suscetível a erros de contagem devido a interferências ou contaminação das janelas. Os métodos

seguintes buscam contornar esse problema fazendo uso do efeito moiré médio, ao mesmo tempo

em que conseguem maiores resoluções.

Um método possível consiste também na utilização de uma máscara fixa, só que ao invés

de ter quatro janelas, ela possui quatro grades com regiões translúcidas e opacas alternadas. O

espaçamento das grades é exatamente igual ao espaçamento dos setores da régua ou disco, como

mostrado na Figura 2.25, adaptada de (PALLÁS-ARENY et al, 1991). Na direção de cada grade

é posicionado um fotodetector, o qual receberá a máxima luminosidade quando a grade estiver

perfeitamente alinhada com os setores do elemento móvel (régua ou disco). Quando o elemento é

movido de meio incremento, ou seja, quando é percorrido um setor, a luminosidade decresce até

atingir um mínimo. Nesse instante, o alinhamento faz com que a luminosidade seja totalmente

bloqueada. Vários incrementos consecutivos geram um sinal luminoso praticamente senoidal, que

será convertido em sinal elétrico pelo fotodetector. Em todo o tempo, o fotodetector recebe a

luminosidade média, não mais dependendo da luminosidade correspondente a um único setor. As

quatro grades existentes na máscara também são dispostas fisicamente com o intuito de se obter

quatro sinais defasados eletricamente de 90º entre si, como pode ser observado na Figura 2.26,

traduzida de (WOOLVET, 1977). O condicionamento dos sinais pode ser feito de forma similar

àquela apresentada, e, caso os fotodetectores sejam células fotoelétricas, o esquema eletrônico é

idêntico ao apresentado no item (a) da Figura 2.24.

Figura 2.25 - Grades com mesmo espaçamento dos setores presentes no elemento móvel. (a) Setores translúcidos / opacos. (b) Setores refletivos / não refletivos. (PALLÁS-ARENY et al, 1991).

(a) (b)

LED Elemento móvel

Grade

Fotodetector

LED

Elemento móvel

Grade

Fotodetector

Page 37: Kit didático para estudo de encoders ópticos

27

Um outro método para detecção da direção de movimento e para a geração de sinais

defasados é discutido por (PALLÁS-ARENY et al, 1991) e (WOOLVET, 1977). O método

também é fundamentado no efeito moiré, mais precisamente nas franjas moiré. Novamente é

utilizada uma máscara fixa, que nesse caso contém apenas uma única grade com regiões

translúcidas e opacas alternadas. Além disso, a grade deve estar inclinada em relação aos setores

da régua ou disco, como pode ser visto na Figura 2.27, traduzida de (PALLÁS-ARENY et al,

1991). Se a inclinação α é tal que dp /tan =α , um deslocamento relativo p resultará num

deslocamento vertical d de uma franja moiré horizontal (franja escura). Se a inclinação relativa

for n vezes maior, aparecerão n franjas moiré horizontais. O sentido de movimento (para cima

ou para baixo) das franjas moiré horizontais depende do sentido do deslocamento do elemento

que se move (para esquerda ou para direita, giro horário ou giro anti-horário). Considerando a

régua da Figura 2.27, se ela se deslocar para a esquerda, a franja moiré se movimentará para cima.

Figura 2.26 - Máscara com quatro grades dispostas de modo a gerar uma defasagem de 90º elétricos entre os sinais dos fotodetectores, no caso fotocélulas. Utiliza o efeito moiré originado da sobreposição de grades igualmente espaçadas. (WOOLVET, 1977).

Figura 2.27 - Máscara com grade inclinada em relação aos setores presentes no elemento móvel, gerando uma franja moiré. (PALLÁS-ARENY et al, 1991).

Fotocélulas

Régua

Máscara

p = afastamento (pitch)

Elemento móvel

d

Page 38: Kit didático para estudo de encoders ópticos

28

Se o deslocamento da régua for para a direita, a franja se movimentará para baixo. Nesse método,

os dispositivos de leitura devem ser posicionados perpendicularmente em relação ao

deslocamento do elemento móvel, como ilustrado na Figura 2.28, traduzida de (WOOLVET,

1977). Na figura, observa-se a existência de quatro células fotoelétricas, as quais estão

distribuídas novamente com a finalidade de se gerar quatro sinais defasados de 90º elétricos. O

condicionamento dos sinais pode ser realizado da mesma maneira já abordada.

Um último método, aqui discutido, não se utiliza de máscara para gerar o efeito moiré. O

efeito surge da sobreposição de dois elementos, um estático e outro móvel. A condição é que a

diferença entre o número de pares de setores translúcido-opaco do elemento estático e do

elemento móvel seja 1. Em outras palavras, se o elemento estático tiver N pares de setores

translúcido-opaco, o elemento móvel deverá ter 1−N pares, ou vice-versa. A diferença de 1 é

justamente para o aparecimento de um único batimento associado ao efeito moiré. A Figura 2.29

mostra exatamente esse comportamento utilizando réguas e discos.

Figura 2.28 - Dispositivos de leitura distribuídos verticalmente para obter os sinais defasados. Utiliza o efeito moiré originado da sobreposição de grades inclinadas entre si. (WOOLVET, 1977).

Figura 2.29 - Sobreposição de elementos com diferença de 1 par. (a) Duas réguas. (b) Dois discos.

(a) (b)

1 2 3 4

1

2

4

3

Fotocélulas

Régua

Máscara

Setores

Page 39: Kit didático para estudo de encoders ópticos

29

Nela pode-se observar o aparecimento uma região mais clara e uma região mais escura.

Dispositivos de leitura, com ou sem auxílio de grades para leitura, são posicionados nas direções

indicadas de 1 a 4, mais uma vez resultando em quatro sinais defasados de 90º elétricos entre si.

A cada deslocamento relativo entre os elementos equivalente a um setor/espaçamento, tem-se a

luminosidade oposta à anterior em cada dispositivo de leitura. Isso pode ser verificado fazendo a

comparação da Figura 2.29 com a Figura 2.30. Logo, um deslocamento relativo equivalente a

dois setores/espaçamentos fará com que a luminosidade em cada dispositivo de leitura varie de

um valor inicial até um valor final e volte ao valor inicial, correspondendo a um pulso, ou

melhor, um incremento.

Os métodos apresentados fazem uso de quatro dispositivos de leitura, os quais fornecem

quatro sinais defasados de 90º elétricos. Estes sinais são combinados eletronicamente para gerar

dois sinais de onda quadrada, o canal A e o canal B, minimizando erros mecânicos. É possível

obter diretamente esses dois canais a partir de apenas dois dispositivos de leitura, desde que esses

dispositivos estejam posicionados de modo a garantir a defasagem de 90º e que seus sinais

tenham amplitude suficiente para detecção, a partir da luminosidade existente.

Como já foi citado, encoders ópticos possuem as maiores resoluções. Mesmo assim,

existem técnicas para aumentar sua resolução, como a utilização de resolvedores eletrônicos ou a

utilização de mais dispositivos de leitura para se obter sinais com defasagens diferentes

(resolvedores ópticos). Técnicas estas que serão estudadas no capítulo seguinte.

(a) (b)

1 2 3 4

Figura 2.30 - Sobreposição de elementos com diferença de 1 par e após o deslocamento relativo equivalente a um setor/espaçamento. (a) Duas réguas. (b) Dois discos.

1

2

4

3

Page 40: Kit didático para estudo de encoders ópticos

30

Para efeito de ilustração, a Figura 2.31 mostra exemplos comerciais de encoders ópticos

incrementais lineares presentes no (CATÁLOGO RENISHAW, acesso em 2007). A Figura 2.32

mostra exemplos de encoders ópticos incrementais rotativos e um desenho de encoder em corte,

ambos do (CATÁLOGO TURCK, acesso em 2007).

Figura 2.31 - Exemplos comerciais de encoders ópticos incrementais lineares. (CATÁLOGO RENISHAW, acesso em 2007).

Figura 2.32 - Encoder óptico incremental rotativo. (a) Exemplos comerciais. (b) Desenho em corte. (CATÁLOGO TURCK, acesso em 2007).

(a)

(b)

Movimento mecânico rotativo

Entrada 5-30 VDC

Sinais de saída

Page 41: Kit didático para estudo de encoders ópticos

31

2.4.3 Fundamentos do Encoder Absoluto

A principal característica que diferencia um encoder absoluto de um encoder incremental é

que o encoder absoluto nunca perde a posição real em que se encontra, mesmo ocorrendo uma

eventual queda da tensão de alimentação. Enquanto que a posição de um encoder incremental é

dada pela contagem de pulsos a partir de uma referência, normalmente a marcação de “zero”, a

posição de um encoder absoluto é obtida pela leitura de um código gravado no elemento móvel

(régua ou disco). Tal código determina vários conjuntos de sinais, sendo que cada conjunto

representa unicamente uma possível posição. A Figura 2.33 (a), adaptada de (PALLÁS-ARENY

et al, 1991), exibe um exemplo de código gravado num disco. Um encoder absoluto é dito linear

quando o elemento móvel é uma régua, e é dito rotativo quando o elemento móvel é um disco. As

análises seguintes serão baseadas em um disco, mas podem ser estendidas para uma régua.

O código gravado no elemento móvel deve ser formado por dois tipos de regiões contendo

uma propriedade que as diferencie. A cada tipo de região será associado um valor binário, 0 ou 1.

A propriedade em questão pode ser elétrica, magnética ou óptica. Quando a propriedade é a

elétrica, o encoder absoluto utiliza escovas fixas como dispositivos de leitura e utiliza um disco

contendo áreas condutoras e não condutoras, como esquematizado na Figura 2.33 (b), traduzida

de (HOESCHELE, 1968). Nesse caso, deverá haver contato entre as escovas fixas e o disco móvel.

Figura 2.33 - Encoder absoluto. (a) Exemplo de um disco. (PALLÁS-ARENY et al, 1991). (b) Esquema de um encoder absoluto por contato. (HOESCHELE, 1968).

(a) (b)

Rotação

Comum

Eixo

Escovas fixas Linha de leitura

Áreas condutoras

Page 42: Kit didático para estudo de encoders ópticos

32

Quando a propriedade é a magnética, não há o contato, e os dispositivos de leitura são ímas

envolvidos por espiras que sentem a variação do fluxo magnético provocada pela presença de

áreas magnéticas e não magnéticas, codificadas no disco. Maiores detalhes desses dois casos

podem ser encontrados em (WOOLVET, 1977). Em relação ao uso da propriedade óptica,

também não existe o contato entre dispositivos de leitura e disco. Esse caso será tratado mais

adiante, mas cabe antecipar que os dispositivos de leitura são pares emissor/receptor de luz, e o

disco é codificado em áreas translúcidas e opacas.

O código presente no disco associa a cada posição um conjunto de N sinais que são lidos

pelos N dispositivos de leitura. Cada conjunto de N sinais é um conjunto de N bits, que

variam de acordo com a resolução do encoder absoluto. Por exemplo, considerando um encoder

com 10=N bits, a quantidade de posições codificadas é dada por 102422 10 ==N . Esse valor

corresponde à resolução do encoder, que normalmente é potência de 2 ou múltiplo de 360. Os

sinais de saída em encoders comerciais estão disponíveis na forma paralela ou em algum padrão

serial do tipo RS ou SSI. Os bits mais significativos estão associados aos dispositivos de leitura

posicionados mais próximos do centro do disco, ou seja, nas trilhas mais internas.

Existem diferentes tipos de código que podem ser gravados em um disco de encoder

absoluto. O código binário natural é o mais fácil de ser interpretado por circuitos eletrônicos

simples, e não requer nenhum tipo de conversão para se determinar a posição real do encoder, e

conseqüentemente, a posição real do sistema ao qual ele está acoplado. O código BCD (Binary

Coded Decimal) também pode ser empregado. Ambos os códigos podem ser analisados na

Tabela 2.1, adaptada de (PALLÁS-ARENY et al, 1991).

Tabela 2.1 - Códigos comuns em discos de encoders absolutos. (PALLÁS-ARENY et al, 1991).

Númerodecimal

Código Padrão

Binário natural

Dezena Unidade

Código

Dezena Unidade

Padrão

BCD Gray

Código Padrão

Page 43: Kit didático para estudo de encoders ópticos

33

Após uma rápida inspeção tanto no código binário natural quanto no código BCD, nota-se

que em cada mudança de valor, equivalente num disco a uma mudança de posição, ocorre a

inversão de um ou mais bits. As mudanças que envolvem a inversão de mais de um bit por vez

são críticas. Elas exigem um perfeito alinhamento das trilhas do disco, caso contrário, podem

causar ambigüidade. O exemplo a seguir, modificado de (PALLÁS-ARENY et al, 1991), explica

bem isso. Considere um encoder absoluto de 10 bits com código binário natural. As posições 0, 1,

2, 3 e 4 são dadas por

Posição 0 0 0 0 0 0 0 0 0 0 0

Posição 1 0 0 0 0 0 0 0 0 0 1

Posição 2 0 0 0 0 0 0 0 0 1 0

Posição 3 0 0 0 0 0 0 0 0 1 1

Posição 4 0 0 0 0 0 0 0 1 0 0

Supondo que os dispositivos de leitura estejam ligeiramente desalinhados, por exemplo, os dois

primeiros estejam um pouco adiantados. Então, a saída lida após um movimento da posição 3

para a posição 4 seria 0 0 0 0 0 0 0 0 0 0, que representa a posição 0.

Para evitar essa ambigüidade, vários métodos foram desenvolvidos. Um deles consiste em

um código cíclico contínuo onde há a inversão de somente um bit a cada mudança de valor. O

código Gray é o exemplo mais comum desse tipo de código, e também pode ser analisado na

Tabela 2.1. Outros métodos podem eliminar a ambigüidade sem a necessidade da inversão de um

único bit por vez, são exemplos as lógicas V-scan e U-scan, detalhadas em (HOESCHELE, 1968)

e (WOOLVET, 1977).

A utilização do código Gray exige a interpretação dos sinais de saída, seja para determinar

a posição real ou para uso aritmético. Segundo (HOESCHELE, 1968), o código Gray deve ser

traduzido para o sistema binário natural ou para um algum sistema numérico aplicável. A

tradução para o sistema binário natural pode ser feita por um circuito eletrônico simples, como o

reproduzido na Figura 2.34, mas também pode ser programada em um computador. A expressão

Booleana para a conversão do código Gray para binário é

( ) ( )nnnnn BGBGB ⋅+⋅= −−− 111 , (2.22)

Page 44: Kit didático para estudo de encoders ópticos

34

onde =B o bit binário ( nnB 2= ),

=G o bit Gray correspondente,

=−1n o próximo bit menos significativo.

Com uma análise mais profunda do código de Gray, pode-se verificar que a propriedade de

inversão de um único bit por vez só vale completamente quando o número total de valores é

potência de 2. Quando o número total de valores não satisfaz essa relação, como múltiplos de

360, a propriedade não é obedecida na transição do maior valor para o valor zero, e vice-versa.

Ver Tabela 2.2. Por exemplo, se o número total de valores for 10, que não é potência de 2, as

mudanças entre 9 e 0 (1101 e 0000 em Gray) provocam a inversão de 3 bits de uma só vez.

Uma maneira de contornar esse problema é causando um deslocamento D a partir do valor

zero no código Gray. Seu valor pode ser determinado por

2

2 TOTn N

D−

= , (2.23)

onde =TOTN o número total de valores,

=n2 o valor que é potência de 2 imediatamente após o TOTN .

Figura 2.34 - Circuitos para conversão do código Gray para o código binário natural. (a) Utilizando portas lógicas elementares. (b) Utilizando portas XOR. (HOESCHELE, 1968).

(a) (b)

Page 45: Kit didático para estudo de encoders ópticos

35

DECIMAL BINÁRIO GRAY

0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1

2 0 0 0 1 0 0 0 0 1 1 3 0 0 0 1 1 0 0 0 1 0

4 0 0 1 0 0 0 0 1 1 0

5 0 0 1 0 1 0 0 1 1 1

6 0 0 1 1 0 0 0 1 0 1 7 0 0 1 1 1 0 0 1 0 0

8 0 1 0 0 0 0 1 1 0 0

9 0 1 0 0 1 0 1 1 0 1

10 0 1 0 1 0 0 1 1 1 1

11 0 1 0 1 1 0 1 1 1 0

12 0 1 1 0 0 0 1 0 1 0

13 0 1 1 0 1 0 1 0 1 1

14 0 1 1 1 0 0 1 0 0 1

15 0 1 1 1 1 0 1 0 0 0

16 1 0 0 0 0 1 1 0 0 0

17 1 0 0 0 1 1 1 0 0 1

18 1 0 0 1 0 1 1 0 1 1

19 1 0 0 1 1 1 1 0 1 0

20 1 0 1 0 0 1 1 1 1 0

21 1 0 1 0 1 1 1 1 1 1

22 1 0 1 1 0 1 1 1 0 1

23 1 0 1 1 1 1 1 1 0 0

24 1 1 0 0 0 1 0 1 0 0

25 1 1 0 0 1 1 0 1 0 1

26 1 1 0 1 0 1 0 1 1 1

27 1 1 0 1 1 1 0 1 1 0

28 1 1 1 0 0 1 0 0 1 0

29 1 1 1 0 1 1 0 0 1 1

30 1 1 1 1 0 1 0 0 0 1

31 1 1 1 1 1 1 0 0 0 0

Voltando ao exemplo cujo número total de valores 10=TOTN , o deslocamento a partir do

zero é calculado como:

326

21016

2102

22 4

==−=−=−= TOTn N

D . (2.24)

O efeito do deslocamento pode ser observado na Tabela 2.3, onde a transição crítica 0-9 foi

substituída pela transição 3-12, não crítica.

Tabela 2.2 - Código binário natural e código Gray. A transição para o valor zero com a mudança de um único bit só ocorre quando o número total de valores é potência de 2.

Page 46: Kit didático para estudo de encoders ópticos

36

DECIMAL BINÁRIO GRAY

0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1

2 0 0 1 0 0 0 1 1

3 0 0 1 1 0 0 1 0 4 0 1 0 0 0 1 1 0

5 0 1 0 1 0 1 1 1

6 0 1 1 0 0 1 0 1

7 0 1 1 1 0 1 0 0

8 1 0 0 0 1 1 0 0

9 1 0 0 1 1 1 0 1

10 1 0 1 0 1 1 1 1

11 1 0 1 1 1 1 1 0

12 1 1 0 0 1 0 1 0

13 1 1 0 1 1 0 1 1 14 1 1 1 0 1 0 0 1

15 1 1 1 1 1 0 0 0

A resolução de um encoder absoluto aumenta à medida que cresce o número de bits

considerados, ou seja, que cresce o número de dispositivos de leitura e o número de trilhas. O

fator limitante é o tamanho e a inércia do disco. Um método para aumentar a resolução seria

incluir uma trilha radial na periferia do disco, possibilitando a leitura de sinais defasados, os quais

comporiam um resolvedor eletrônico ou um resolvedor óptico. Uma maneira diferente para

aumentar a “resolução” é acoplar o disco a um conjunto de engrenagens, de tal forma que a cada

revolução completa do disco, uma posição é avançada na engrenagem seguinte, e assim por

diante. Várias engrenagens encadeadas possibilitam multiplicar o número total de posições.

Portanto, o número total de posições está relacionado com o número de rotações do disco. Assim,

a “resolução” é aumentada, embora a resolução final (dentro de uma única revolução) ainda

dependa exclusivamente do disco. Encoders absolutos rotativos desse tipo são chamados de

encoders de multi-revoluções (multi-turn), enquanto que os que não possuem engrenagens são

chamados de encoders de uma única revolução (single-turn). A Figura 2.35, do (CATÁLOGO

TURCK, acesso em 2007), ilustra um mecanismo multi-revoluções.

Tabela 2.3 - Exemplo de código Gray deslocado em 3 unidades. Número total de valores 10=TOTN .

Figura 2.35 - Exemplo de mecanismo multi-revoluções. (CATÁLOGO TURCK, acesso em 2007).

Page 47: Kit didático para estudo de encoders ópticos

37

2.4.4 Encoder Óptico Absoluto

Hoje em dia, a maioria dos encoders absolutos faz uso de princípios ópticos e fotoelétricos.

Falando especificamente de encoders absolutos rotativos, que são os mais comuns, eles possuem

um disco constituído de áreas translúcidas e opacas. A distribuição dessas áreas sobre o disco é

definida de acordo com o código utilizado. Normalmente o disco é feito de vidro transparente e o

código é gravado na superfície através da deposição de cromo, que não permite a passagem de

luz. Segundo (WOOLVET, 1977), esses encoders possuem ainda uma fonte de luz, um sistema

de focalização e um conjunto de fotodetectores dispostos radialmente. Esses elementos podem ser

vistos na Figura 2.36, traduzida do mesmo livro, onde os fotodetectores são fotocélulas. O autor

ressalta a importância da qualidade do disco na performance do encoder. O disco deve ter um alto

grau de precisão e possuir trilhas com arestas agudas, minimizando ruídos durante as transições

0-1 e 1-0.

Ainda segundo (WOOLVET, 1977), a fonte de luz utilizada pode ser uma pequena lâmpada

com filamento de tungstênio ou um dispositivo do estado sólido como, por exemplo, um LED. A

Figura 2.37, também traduzida do livro, ilustra dois sistemas básicos de focalização utilizando

uma lâmpada pequena como fonte de luz. A Figura 2.37 (a) mostra uma lente focalizando a luz

sobre o disco e os fotodetectores expostos à luminosidade através de uma fenda estreita,

precisamente posicionada na linha de leitura. A Figura 2.37 (b) mostra um arranjo alternativo,

onde uma lente cilíndrica é incluída no sistema com o objetivo de “linearizar” o feixe de luz na

direção da linha de leitura.

Figura 2.36 - Esquema básico de um encoder óptico absoluto. (WOOLVET, 1977).

Lâmpada

Fotocélulas

Fenda

Page 48: Kit didático para estudo de encoders ópticos

38

O número de fotodetectores corresponde ao número de bits de um encoder óptico absoluto.

Os sinais elétricos provenientes desses fotodetectores devem ser condicionados eletronicamente,

resultando em sinais digitais, os quais são fornecidos em paralelo (uma saída para cada bit) ou em

algum padrão serial (uma única saída para todos os bits).

Exemplos comerciais de encoders ópticos absolutos rotativos podem ser vistos na Figura

2.38, presente no (CATÁLOGO TURCK, acesso em 2007).

Figura 2.37 - Sistemas básicos de focalização. (a) Utilização de uma fenda na linha de leitura. (b) Utilização de uma lente cilíndrica para focalizar a luz na linha de leitura. (WOOLVET, 1977).

(a) (b)

Lâmpada Fotocélulas

Fenda

Lâmpada Fotocélulas Lente

cilíndrica

Figura 2.38 - Exemplos comerciais de encoders ópticos absolutos rotativos. (CATÁLOGO TURCK, acesso em 2007).

Page 49: Kit didático para estudo de encoders ópticos

39

3. Resolvedores

Neste capítulo, serão apresentados dois tipos de sistemas resolvedores, que nada mais são

do que sistemas que permitem aumentar a resolução de um encoder, seja ele incremental ou

absoluto, a partir de sinais defasados adequadamente. O primeiro tipo de sistema resolvedor a ser

analisado é o resolvedor eletrônico, cujo princípio para obtenção de sinais defasados está na

utilização de um circuito interpolador eletrônico. O resolvedor óptico é o outro tipo de sistema

resolvedor que será discutido. Nele, os sinais defasados provêm da existência e posicionamento

de vários dispositivos de leitura.

3.1 Resolvedores Eletrônicos

Um resolvedor eletrônico é um sistema que possibilita o aumento da resolução de um

encoder (incremental ou absoluto, linear ou rotativo) a partir da utilização de dois sinais senoidais

defasados de 90º elétricos entre si. Esses dois sinais (sin e cos) são gerados pelo próprio encoder,

através do arranjo mecânico entre os dispositivos de leitura e o elemento móvel (régua ou disco).

Na maioria das vezes, o sistema resolvedor é composto ainda por um circuito interpolador

eletrônico, o qual é responsável pela obtenção de um número maior de sinais senoidais defasados.

Cada sinal senoidal passa por um circuito quadrador para se tornar digital (onda quadrada). A

combinação lógica entre esses sinais digitais possibilita o aumento da resolução do encoder. Em

um encoder incremental, aumenta-se o número de pulsos gerados durante um deslocamento físico

na posição. No caso de um encoder absoluto, há um acréscimo no número de bits menos

significativos, levando ao aumento do número total de bits.

Considerando que o elemento móvel seja do tipo incremental, de acordo com (WOOLVET,

1977), os dispositivos de leitura fixos são capazes de fornecer sinais de saída aproximadamente

senoidais, quando da movimentação do elemento. Com uma pequena modificação na geometria

óptica e na forma dos setores presentes na régua ou no disco, é possível produzir uma onda

senoidal praticamente perfeita.

As análises seguintes serão realizadas com base num disco, mas sua aplicação em réguas

pode ser feita de forma análoga sem maiores dificuldades.

Page 50: Kit didático para estudo de encoders ópticos

40

Encoders incrementais já possuem um disco do tipo incremental, ou seja, com uma trilha

radial constituída de dois tipos de setores, por exemplo, opacos e translúcidos. Para um encoder

absoluto, é necessário incluir na periferia do disco uma trilha radial, cujo espaçamento dos

setores deve ser metade do espaçamento dos setores da trilha mais externa (relativa ao bit menos

significativo). Em ambos os discos, dispositivos de leitura são posicionados na trilha radial para

se obter dois sinais senoidais defasados de 90º elétricos entre si, chamados de sin (seno) e cos

(cosseno). Em alguns casos, dois ou mais dispositivos de leitura juntamente com circuitos para

efetuar a média são utilizados para determinar cada sinal, minimizando erros mecânicos.

Na presente análise, será considerado o uso de apenas um dispositivo de leitura para gerar o

sinal sin e um dispositivo de leitura para gerar o sinal cos. A Figura 3.1 ilustra esse início de

análise. No item (a), tem-se um exemplo de um disco de encoder óptico incremental, onde uma

máscara com duas grades é utilizada para originar a defasagem dos sinais sin e cos. No item (b),

pode ser visto um exemplo de um disco de encoder óptico absoluto de 7 bits, onde foi incluída

uma trilha radial na periferia. Também é utilizada uma máscara com duas grades para originar a

defasagem dos sinais. Em (c), observa-se a sobreposição de dois discos incrementais, cuja

diferença no número de pares translúcido-opaco é 1. Aqui, os 90º elétricos estão relacionados

com os 90º angulares. Portanto, os dois dispositivos de leitura são posicionados a 90º angulares

um do outro, dando origem aos sinais sin e cos. Duas grades são utilizadas, neste caso, para

facilitar a captura da luminosidade, além de estarem alinhadas com os setores de um dos discos.

Uma vez obtidos os sinais senoidais sin e cos, a próxima etapa do sistema resolvedor seria

o uso de um circuito interpolador eletrônico. No entanto, ainda sem a presença de tal circuito,

consegue-se construir um resolvedor capaz de multiplicar por 4 a resolução do encoder. Isso é

feito, primeiramente, com a transformação dos sinais sin e cos em sinais de onda quadrada, por

meio de circuitos quadradores (ex. Schmitt triggers). Um esquema dessa transformação é

mostrado na Figura 3.2. Os dois sinais digitais resultantes A e B são combinados logicamente

para se obter quatro sinais digitais defasados de 1/4 do período (90º elétricos). A Figura 3.3 exibe

as formas de onda referentes a um exemplo de combinação lógica, a qual pode ser implementada

eletronicamente ou programada em um microcontrolador.

Na mesma figura, nota-se que, para um encoder absoluto, um período dos sinais A e B

corresponde à meio período do sinal relacionado ao bit menos significativo (LSB). O mesmo

provém da trilha mais externa do disco, não considerando a trilha radial acrescentada na periferia.

Page 51: Kit didático para estudo de encoders ópticos

41

sin

cos

Figura 3.1 - Obtenção de dois sinais senoidais defasados de 90º elétricos. (a) Disco incremental com máscara. (b) Disco absoluto com trilha periférica e máscara. (c) Sobreposição de dois discos incrementais com diferença de 1 no número de pares de setores translúcido-opaco.

(c)

(b) (a)

6 5 4 3 2

1 0

sin

cos

sin

cos

quadrador A

quadrador B

sin

cos

(a) (b)

Figura 3.2 - Transformação senóide / onda quadrada. (a) Esquema. (b) Formas de onda.

sin

cos

A

B

Page 52: Kit didático para estudo de encoders ópticos

42

Ainda considerando a Figura 3.3 e no caso de um encoder absoluto, pode-se fazer a seguinte

associação de sinais com bits: AB 00 , AB 01 , AB 10 , AB 11 , obtendo-se dois

novos bits, ou seja, originando quatro novas posições absolutas dentro da posição absoluta

limitada pelo bit menos significativo (LSB). Portanto, a resolução do encoder se torna quatro

vezes maior, já que o número total de bits é acrescido de 2. Conseqüentemente, os dois novos bits

passam a ser agora os bits menos significativos do encoder.

Para um encoder incremental, a mesma Figura 3.3 mostra que, a partir dos quatro sinais

obtidos via combinação lógica dos sinais A e B, é possível gerar uma seqüência de pulsos com

quatro pulsos por período de A (ou B). Sabendo-se que um período de A corresponde a um

incremento físico na posição do disco (limitado por um setor/espaçamento), cada um dos quatro

pulsos indica um deslocamento físico quatro vezes menor. Logo, a resolução é quatro vezes maior.

A

B

LSB (encoder absoluto)

AB

AB

AB

AB

Pulsos (encoder incremental)

Figura 3.3 - Formas de onda de um sistema resolvedor sem interpolador eletrônico. A resolução obtida é quatro vezes maior.

Page 53: Kit didático para estudo de encoders ópticos

43

O sinal de contagem (seqüência de pulsos) bem como o sinal de direção podem ser determinados

via software, quando da utilização de um microcontrolador. Caso este não seja utilizado, a

determinação do sinal de contagem e do sinal de direção é feita eletronicamente por circuitos

compostos de multivibradores monoestáveis e de portas lógicas. Os multivibradores

monoestáveis são disparados pelas bordas de subida dos quatro sinais advindos da combinação de

A e B, e dão origem à seqüência de pulsos, cujas larguras são menores do que as larguras desses

quatro sinais que efetuaram o disparo. Ver último gráfico da Figura 3.3. Isso é necessário para

gerar um pulso a cada transição (mudança de posição) e não um sinal contínuo.

O sistema resolvedor que acabou de ser analisado não faz uso de um circuito interpolador

eletrônico. Desse modo, só é possível quadruplicar a resolução do encoder. Quando existe a

necessidade de se aumentar ainda mais a resolução, um circuito interpolador deve ser incluído no

sistema. Segundo (WOOLVET, 1977), o circuito interpolador mais simples consiste de uma rede

de resistores conforme apresenta a Figura 3.4, adaptada do mesmo livro. Na figura, o circuito tem

como entradas os dois sinais já conhecidos (sin e cos) e um sinal -sin, que é facilmente obtido

através da inversão do sinal sin. Nesse exemplo, são mostradas quatro saídas, que possibilitarão

um aumento de oito vezes na resolução. Generalizando, para N saídas, a resolução será

multiplicada por 2N. As saídas, antes de passarem pelos quadradores, também são senóides

aproximadas, mas diferem em fase de acordo com sua posição na cadeia de resistores. Nesse

ponto, (WOOLVET, 1977) afirma que o desempenho global do sistema poderia ser aperfeiçoado

sin

cos

-sin

quadrador A

quadrador B

quadrador C

quadrador D

Figura 3.4 - Circuito interpolador eletrônico.

Page 54: Kit didático para estudo de encoders ópticos

44

caso fossem utilizadas formas de onda aproximadamente triangulares, o que pode ser feito

modificando-se o arranjo mecânico. Voltando ao exemplo, cada uma das quatro senóides da saída

passa por um circuito quadrador, dando origem aos sinais digitais A, B, C e D. Esses sinais

digitais são combinados logicamente dois a dois, com o objetivo de se obter oito sinais digitais

defasados de 1/8 do período (45º elétricos). A combinação dos sinais, mais uma vez, pode ser

implementada eletronicamente ou programada em um microcontrolador. A Figura 3.5 mostra um

exemplo dessa combinação de sinais, exibindo as formas de onda. Como esperado, um período

dos sinais A, B, C e D corresponde a meio período do sinal relacionado ao LSB de um encoder

absoluto. Neste exemplo, a associação de sinais com bits para o encoder absoluto é: AB 000 ,

BC 001 , CD 010 , AD 011 , AB 100 , BC 101 , CD 110 , AD 111 ,

obtendo-se agora três novos bits que, por sua vez, determinam oito novas posições absolutas

dentro da posição absoluta limitada pelo LSB. Assim, a resolução aumenta oito vezes e os três

novos bits passam a ser os bits menos significativos.

Considerando um encoder incremental, a Figura 3.5 exibe a seqüência de pulsos obtida a

partir dos oito sinais derivados da combinação de A, B, C e D. A seqüência de pulsos possui oito

pulsos por período de A (ou B, C, D), que indicam um deslocamento físico oito vezes menor do

que o indicado sem o uso do resolvedor eletrônico. Portanto, a resolução torna-se oito vezes

maior. Assim como no caso do sistema resolvedor sem interpolador, a determinação dessa

seqüência de pulsos (sinal de contagem) e do sinal de direção pode ser feita através de software

quando se utiliza um microcontrolador, ou através de circuitos eletrônicos constituídos de

multivibradores monoestáveis e de portas lógicas quando não se utiliza um microcontrolador. No

caso dos circuitos eletrônicos, seu funcionamento deve ser análogo ao descrito para o sistema

resolvedor sem interpolador. Os multivibradores monoestáveis devem ser disparados pelas bordas

de subida dos oito sinais derivados da combinação de A, B, C e D, dando origem à seqüência de

pulsos, cujas larguras devem ser menores do que as larguras desses oito sinais que efetuaram o

disparo. Relembrando, isso garante a existência de um pulso a cada transição (mudança de

posição) e não simplesmente um sinal contínuo.

O circuito interpolador apresentado é um circuito bem simples, porém, hoje já existem

circuitos interpoladores bem mais sofisticados, inclusive na forma de circuitos integrados. A

Figura 3.6 exibe três exemplos com diferentes fatores de interpolação, como pode ser visto pelas

formas de onda. Maiores detalhes podem ser encontrados no respectivo (DATASHEET - RLS).

Page 55: Kit didático para estudo de encoders ópticos

45

Figura 3.5 - Formas de onda de um sistema resolvedor com interpolador eletrônico. A resolução obtida neste exemplo é oito vezes maior.

A

B

LSB (encoder absoluto)

CD

AD

AB

BC

C

D

CD

AD

AB

BC

Pulsos (encoder incremental)

Page 56: Kit didático para estudo de encoders ópticos

46

Figura 3.6 - Exemplos comerciais de circuito interpolador eletrônico. (a) Fatores de interpolação 1, 2, 5, ou 10. (DATASHEET RLS - INTERPOLADOR RLXA2510, acesso em 2007). (b) Fatores de interpolação 1, 2, 3, 4, 5, 8, ou 10. (DATASHEET RLS - INTERPOLADOR RLX40i, acesso em 2007). (c) Fatores de interpolação 5, 10, ou 25. (DATASHEET RLS - INTERPOLADOR RLX100, acesso em 2007).

(a)

(b)

(c)

fotodetector

fotodetector

fotodetector

Page 57: Kit didático para estudo de encoders ópticos

47

Teoricamente, a utilização de um circuito interpolador eletrônico em um sistema resolvedor

poderia aumentar a resolução do encoder infinitamente. Na prática, sabe-se que isso é impossível,

devido às limitações de hardware ou de software.

3.2 Resolvedores Ópticos

Um resolvedor óptico é um sistema que possibilita o aumento da resolução de um encoder

(incremental ou absoluto, linear ou rotativo) a partir da utilização de vários sinais senoidais

igualmente defasados, provenientes do posicionamento de vários dispositivos de leitura. O

posicionamento desses vários dispositivos de leitura tem a mesma função do circuito interpolador

em um resolvedor eletrônico, que é a geração de senóides defasadas adequadamente. Cada sinal

senoidal passa por um circuito quadrador, tornando-se um sinal digital. Do mesmo modo que em

um resolvedor eletrônico, a combinação lógica entre esses sinais digitais possibilita o aumento da

resolução do encoder. Num encoder incremental, aumenta-se o número de pulsos gerados durante

um incremento físico na posição, e num encoder absoluto, aumenta-se o número de bits menos

significativos, levando ao aumento do número total de bits.

Assim como já foi discutido, para a obtenção de um sinal aproximadamente senoidal, é

preciso que o elemento móvel do encoder seja do tipo incremental. Elemento móvel que aqui,

para efeito de análise, é um disco. Em um encoder absoluto, surge a necessidade da inclusão de

uma trilha radial periférica, cujo espaçamento dos setores deve ser metade do espaçamento dos

setores da trilha mais externa (relativa ao bit menos significativo).

Os N dispositivos de leitura são posicionados na trilha radial para se obter N sinais

senoidais igualmente defasados, como esquematizado na Figura 3.7 para N = 4, discos à

esquerda, e para N = 5, discos à direita. No item (a), tem-se um exemplo de um disco de encoder

óptico incremental, onde uma máscara com N grades é utilizada para originar a defasagem dos

sinais senoidais. No item (b), pode ser visto um exemplo de um disco de encoder óptico absoluto

de 7 bits, onde foi incluída uma trilha radial na periferia. Também é utilizada uma máscara com

N grades para originar a defasagem dos sinais. Em (c), observa-se a sobreposição de dois discos

incrementais, cuja diferença no número de pares é 1. Aqui, as defasagens elétricas estão

relacionadas com as defasagens angulares. Portanto, os N dispositivos de leitura são posicionados

a 180/N graus angulares um do outro, dando origem aos N sinais senoidais igualmente defasados.

Page 58: Kit didático para estudo de encoders ópticos

48

sin(θ)

sin(θ+45º)

6 5 4 3 2 1 0

sin(θ+90º)

sin(θ+135º)

sin(θ)

sin(θ+45º)

sin(θ+90º)

sin(θ+135º)

sin(θ)

sin(θ+45º)

sin(θ+90º)

sin(θ+135º)

sin(θ)

sin(θ+36º)

6 5 4 3 2 1 0

sin(θ+72º)

sin(θ+108º)

sin(θ+144º)

sin(θ)

sin(θ+36º)

sin(θ+72º)

sin(θ+108º)

sin(θ+144º)

Figura 3.7 - Obtenção de N sinais senoidais igualmente defasados, N = 4 (esq) e N = 5 (dir). (a) Disco incremental com máscara. (b) Disco absoluto com trilha periférica e máscara. (c) Sobreposição de dois discos incrementais com diferença de 1 no número de pares.

(b)

(a)

sin(θ)

sin(θ+36º)

sin(θ+72º)

sin(θ+108º)

sin(θ+144º)

(c)

Page 59: Kit didático para estudo de encoders ópticos

49

Neste caso, as grades são utilizadas para facilitar a captura da luminosidade, além de estarem

alinhadas com os setores de um dos discos.

Para um número N de dispositivos de leitura, a resolução do encoder é multiplicada por 2N.

No exemplo onde o número de dispositivos de leitura é N = 4, obtém-se quatro sinais senoidais

igualmente defasados de 45º, que propiciarão um aumento de 8 vezes na resolução. Cada um

desses quatro sinais senoidais passa por um circuito quadrador, originando os mesmos quatro

sinais digitais (A, B, C e D) que provêm das quatro saídas do circuito interpolador eletrônico

mostrado na Figura 3.4. O condicionamento seguinte dos sinais, tanto para um encoder absoluto

quanto para um encoder incremental, é realizado da mesma maneira como foi apresentado para o

resolvedor eletrônico, e está sintetizado na Figura 3.5.

Quando se buscam grandes aumentos na resolução, um sistema resolvedor eletrônico é

mais recomendado do que um sistema resolvedor óptico, pois este último começa a ficar mais

complexo física e geometricamente, à medida que cresce o número de dispositivos de leitura.

Page 60: Kit didático para estudo de encoders ópticos

50

4. Técnicas de Fabricação de Discos e Réguas de Encoders Ópticos

Este capítulo apresenta duas técnicas de fabricação de elementos móveis de encoders

ópticos. A primeira técnica a ser apresentada é a técnica utilizada industrialmente. Nela, será

discutida a preparação inicial do elemento, comparando materiais e suas propriedades. Também

serão descritas todas as etapas do processo de lift-off para gravação dos setores/trilhas em cromo

sobre o elemento móvel. A outra técnica apresentada neste capítulo emprega materiais de baixo

custo e é dedicada à construção de um disco de encoder óptico para fins didáticos.

4.1 Técnica Industrial Utilizando o Processo de Lift-off

Em sua maioria, discos e réguas de encoders ópticos (incrementais ou absolutos)

disponíveis comercialmente são feitos de vidro transparente. Os setores/trilhas opacas são

gravadas sobre a superfície do vidro, através da deposição de uma película de cromo. Essa

gravação é realizada pelo processo de lift-off, o qual também é utilizado na preparação de

máscaras usadas na fabricação de circuitos impressos por fotolitografia. A Figura 4.1, retirada de

(CATÁLOGO HEIDENHAIN, acesso em 2007), mostra exemplos de discos de encoders ópticos

incrementais em (a), e absolutos em (b).

Figura 4.1 - Exemplos de discos de encoders ópticos. (a) Incrementais. (b) Absolutos. (CATÁLOGO HEIDENHAIN, acesso em 2007).

(a) (b)

Page 61: Kit didático para estudo de encoders ópticos

51

Na seqüência, será descrito o processo de fabricação de um disco de encoder óptico, já que

o processo é o mesmo para a fabricação de uma régua. O que podem variar são detalhes

relacionados à diferença de formatos entre os elementos.

4.1.1 Preparação Inicial do Disco

O vidro transparente utilizado para fabricar o disco pode ter diferentes composições e

propriedades, de acordo com o tipo de vidro escolhido. Em (ELLIOTT, 1985), pode-se encontrar

uma comparação entre os principais tipos de vidro. A Tabela 4.1, adaptada do mesmo livro,

resume as diferenças na composição química e nas propriedades físicas. Nota-se que todos os

tipos são compostos majoritariamente por dióxido de silício (SiO2), sendo o quartzo praticamente

SiO2 puro. Também nota-se que o quartzo é o vidro que possui a menor expansão térmica, tanto

que é classificado como um material de expansão térmica ultra baixa. O vidro LE-30 (silicato de

boro) tem uma expansão térmica superior ao quartzo, mas relativamente baixa, sendo

classificado, portanto, como vidro de baixa expansão. A Figura 4.2 compara a expansão em

micrômetros com a variação da temperatura para três tipos de vidro, e para discos de ensaio de

vidro com quatro tamanhos diferentes: 6, 5, 4 e 3 polegadas (in). O vidro soda-lime é o que

apresenta a maior expansão com a temperatura, mas é também o de menor custo. O vidro de

silicato de boro tem preços não muito superiores aos do soda-lime e apresenta baixa expansão

com a variação da temperatura, como já foi dito. Por possuir pouco ou quase nenhum sódio na

Tipo de Vidro

Característica SLW (soda lime)

SL (white crown)

LE-30 (baixa expansão)

QZ (quartzo )

Composição Química, % SiO2 73 70 60 100 B2O3 1 - 5 - Al2O3 - - 15 - Na2O 15 8 - - K2O 1 9 - - CaO, MgO 10 12 20 - Outros - 1 - - Propriedades Físicas Expansão Térmica (10-7) 94 93 37 5 Temperatura de Transformação, ºC 542 533 686 1120 Índice de Refração, ND 1.52 1.52 1.53 1.46 Módulo de Young, kg/mm2 7200 7340 7540 7410 Resistividade Elétrica, Ω.cm 1012 1015 1015 1018 Gravidade Específica 2.50 2.56 2.58 2.20

Tabela 4.1 - Características dos principais tipos de vidro. (ELLIOTT, 1985).

Page 62: Kit didático para estudo de encoders ópticos

52

composição, o quartzo é o vidro que menos se expande com o aumento da temperatura, porém, é

o que possui o maior custo. A Figura 4.3, também adaptada de (ELLIOTT, 1985), apresenta a

relação entre a porcentagem de transmissão e o comprimento de onda para os diferentes tipos de

vidro. Todos eles têm transmissão superior a 90% para comprimentos de onda a partir do

espectro visível (aprox. 4000Å = 400nm). O quartzo, desejável por razões de estabilidade

térmica, mantém transmissão de aproximadamente 90% para comprimentos de onda na direção

do ultravioleta intenso (menores comprimentos de onda). Essa característica faz com que o

quartzo seja muito utilizado em aplicações de imagem com ultravioleta intenso, como em

máscaras de alguns tipos de fotolitografia. Nesses casos, o quartzo garante ainda um aumento da

vida útil da máscara. O quartzo também é o mais resistente às soluções utilizadas para a limpeza

do vidro. Diante das comparações, é possível entender porquê o quartzo é o vidro mais indicado

para aplicações que envolvem grande precisão, como no caso de discos de encoders ópticos, e

que sofrem processos físico-químicos durante o processo de fabricação.

Figura 4.2 - Expansão em função do tipo de vidro, tamanho e temperatura. (ELLIOTT, 1985). E

xpan

são,

µm

Diferença de temperatura, ºC

Figura 4.3 - Transmissão em função do comprimento de onda para diferentes tipos de vidro. (ELLIOTT, 1985).

Comprimento de onda, Å

Tra

nsm

issã

o, %

Page 63: Kit didático para estudo de encoders ópticos

53

De acordo com (ELLIOTT, 1985), pode-se resumir em nove etapas o processo para

obtenção de um disco de vidro a ser transformado num disco de encoder:

1. Misturar e fundir a matéria prima (SiO2, B2O3, Na2O, CaO, ...)

2. Dar forma de chapas/lâminas de vidro

3. Cortar em forma de disco

4. Aplainar

5. Polir

6. Limpar

7. Inspecionar a superfície

8. Verificar a planicidade

9. Disco de vidro preparado

O processo pode variar de acordo com o fabricante, com operações de inspeção e limpeza

podendo ser efetuadas em pontos diferentes. Cada etapa é caracterizada por um equipamento

especial e cada fabricante desenvolve sua própria técnica para otimizar o processo.

4.1.2 Processo de Lift-off

O processo de lift-off é um processo utilizado para a deposição de uma película (desenho

padronizado) de metal sobre um substrato. No caso de um disco de encoder, o metal é o cromo e

o substrato é o disco de vidro. Tal processo possui vantagens sobre processos corrosivos físicos

e/ou químicos, como a vantagem de não necessitar da corrosão do metal depositado e a de evitar

a corrosão indesejada (under-etching).

Baseado em (MADOU, 1997), o primeiro passo do processo de lift-off na fabricação de um

disco de encoder é a aplicação de uma camada fina de resina sobre a superfície do disco de vidro,

geralmente quartzo, o qual foi previamente preparado e limpo. A resina pode ser fotosensível,

isto é, sensível à radiação UV, ou pode ser sensível a um feixe de elétrons (e-beam), dependendo

da forma de radiação a ser utilizada para gravar o padrão do desenho. A resina é composta por

um polímero orgânico (resina base) e por um solvente, podendo ainda conter um sensibilizador.

O polímero muda a estrutura quando exposto à radiação, o sensibilizador controla as reações

Page 64: Kit didático para estudo de encoders ópticos

54

químicas na fase polimérica, e o solvente permite espalhar o polímero sobre a superfície do

substrato. Continuando o processo, a solução viscosa de resina é colocada no centro do disco e o

mesmo é posto a girar a altas taxas de rotação. A força centrífuga espalha uma fina camada de

resina uniformemente sobre o disco. A espessura da camada é controlada e depende da

velocidade de rotação, da concentração da solução e da viscosidade intrínseca. Após a rotação, a

camada de resina ainda contém vestígios do solvente, o qual é eliminado através do aquecimento

adequado do conjunto disco-resina. Esse aquecimento, por sinal, melhora a adesão entre eles.

É importante dizer que as resinas são classificadas em dois tipos, a chamada resina positiva

e a chamada resina negativa. Se a resina é positiva, a reação química durante a exposição à

radiação enfraquece as cadeias de polímeros, aumentado sua solubilidade em soluções com

substâncias reveladoras. Se a resina é negativa, a reação fortalece as cadeias de polímeros,

tornando a área exposta à radiação menos solúvel em soluções reveladoras.

O padrão desejado a ser gravado no disco do encoder com a película de cromo (ex. padrão

incremental com marcação de zero, padrão absoluto em código Gray) deve ser o mesmo padrão a

ser gravado na resina. A gravação do padrão na resina é feita, considerando o tipo de resina,

através da exposição à radiação (radiação UV ou feixe de elétrons) das áreas da resina que

determinarão o padrão desejado. No caso da utilização de uma fonte de radiação UV, essas áreas

podem ser selecionadas por uma máscara contendo o padrão desejado. A máscara é semelhante à

empregada no processo de fotolitografia para fabricação de circuitos integrados, e também é

composta de quartzo com regiões opacas de metal depositado na superfície. Neste caso, todas as

áreas expostas da fotoresina recebem radiação ao mesmo tempo, como pode ser observado no

item (a) da Figura 4.4. Agora, no caso da utilização de um feixe de elétrons para gravação do

padrão na resina, as áreas a serem expostas são selecionadas pelo direcionamento do feixe de

elétrons. O equipamento que gera e controla o feixe de elétrons recebe o desenho do padrão

desejado através de um sistema CAD. O feixe é então direcionado de modo a contornar o

desenho do padrão, gravando-o sobre a resina e-beam. Assim, as áreas selecionadas são expostas

ao feixe de elétrons em instantes diferentes durante o percurso do feixe, como representado pelos

tempos t1, t2 e t3 no item (b) da Figura 4.4.

Neste ponto do processo de lift-off, tem-se um disco com o padrão desejado gravado na

resina na forma de áreas latentes. Essas áreas são reveladas por meio da imersão do disco em

uma solução reveladora, ou borrifando essa solução sobre a face do disco que contém a resina.

Page 65: Kit didático para estudo de encoders ópticos

55

Cada resina tem sua respectiva solução reveladora, a qual tem a propriedade de dissolver as áreas

que foram expostas à radiação, no caso de uma resina positiva, e de dissolver as áreas não

expostas, no caso de uma resina negativa. Ver Figura 4.4.

Após a exposição e a revelação, o perfil obtido é distinto para resinas positivas e para

resinas negativas. Elas apresentam comportamento diferente tanto na dispersão da radiação em

seu interior, quanto na interação com a solução reveladora. Os perfis em resinas positivas podem

ser controlados através da dose de exposição à radiação e do tempo de revelação, como pode ser

visto no item (a) da Figura 4.5, adaptada de (MADOU, 1997). Altas doses de exposição e rápida

Vidro

Fotoresina

Radiação UV

Máscara

Fotoresina positiva

Fotoresina negativa

Vidro

Resina e-beam

Feixe de elétrons (e-beam)

Resina e-beam positiva

Resina e-beam negativa

Aplicação da resina

Gravação do padrão na resina

Revelação do padrão

Figura 4.4 - Etapas iniciais do processo de lift-off. (a) Gravação do padrão na resina com radiação UV selecionada por uma máscara. (b) Gravação do padrão na resina com direcionamento do feixe de elétrons (e-beam).

(b) (a)

t1 t2 t3

Page 66: Kit didático para estudo de encoders ópticos

56

revelação em resinas positivas são ideais para um bom processo de lift-off, pois originam um

perfil com paredes inclinadas no sentido de cobrir as arestas em contato com o substrato. Isso

evitará a deposição de metal sobre as paredes da resina, possibilitando o contato seguinte das

paredes da resina com o solvente removedor. Resinas negativas não apresentam o mesmo

controle sobre os perfis, acarretando apenas em pequenas variações nas dimensões, quando da

mudança das condições de exposição e revelação. Observar item (b) da Figura 4.5.

Diante do apresentado, os processos de lift-off utilizam resinas positivas para gerar um

perfil de paredes inclinadas conforme descrito. Existem algumas técnicas para tornar os outros

perfis mais adequados ao processo de lift-off, como, por exemplo, a apresentada por (PATEL et

al, acesso em 2007). A técnica consiste em aplicar sobre a superfície da resina, antes da

revelação, uma substância que diminui a taxa de dissolução da resina na solução reveladora. Tal

substância causará a diminuição na dissolução somente da camada superior da resina, ou seja, a

porção da resina que entrou em contato com a substância. No caso apresentado, a substância é o

clorobenzeno e um exemplo do perfil obtido é reproduzido na Figura 4.6. Nela é possível

observar as rebarbas que permaneceram após a revelação e que cobrem as paredes da resina.

(a)

Dose de exposição

Alta

Média

Baixa

Tempo de contato com o revelador

Baixo

Médio

Alto

(b)

Figura 4.5 - Perfis após a exposição à radiação e revelação. (a) Resina positiva. (b) Resina negativa.

(b)

Dose de exposição

Alta

Média

Baixa

Figura 4.6 - Perfil obtido com a aplicação de clorobenzeno sobre uma resina positiva antes da revelação. (PATEL et al, acesso em 2007).

Page 67: Kit didático para estudo de encoders ópticos

57

Voltando a abordar especificamente as resinas, um tipo de resina positiva muito conhecida

e utilizada é a PMMA (poly-[methyl-metacrylate]). A resina PMMA é sensível à radiação UV

intensa e sensível ao feixe de elétrons. Também é sensível a outras formas de radiação, como

feixe de íons e raios-X. Tem como propriedades a boa transparência, resistência ao UV, boa

resistência abrasiva, dureza, rigidez, baixa absorção de água e baixa emissão de fumaça. Um

outro exemplo de resina positiva é a PBS (poly-[butene-1-sulfone]). Maiores detalhes sobre

resinas podem ser encontrados em (MADOU, 1997) e em (ELLIOTT, 1985).

Neste ponto do processo de lift-off, após a etapa de revelação, o disco do encoder apresenta

o padrão desejado desenhado por meio de áreas cobertas por resina e de áreas removidas

(dissolvidas) de resina. As áreas da superfície do vidro que não deverão receber uma película de

cromo são as áreas que estão cobertas pela resina, ou seja, o cromo será depositado sobre a

resina, durante a deposição. As áreas da superfície do vidro que deverão receber uma película de

cromo são as áreas reveladas, isto é, aquelas que tiveram a camada de resina dissolvida. A etapa

seguinte do processo de lift-off para fabricação de um disco de encoder consiste, portanto, na

deposição de uma película de cromo.

Segundo (ELLIOTT, 1985), existem diversos métodos utilizados para depositar uma

película de metal sobre um substrato de vidro. Eles são divididos em métodos a vácuo (baixa

pressão) e métodos que não utilizam vácuo. Os principais métodos de deposição a vácuo são os

métodos de pulverização (sputtering) e evaporação, muito comuns para depositar cromo. Dentre

os métodos que não são a vácuo, destaca-se a deposição química a vapor (CVD). No caso de um

disco de encoder em um processo de lift-off, a deposição de uma película de cromo é realizada a

vácuo por pulverização ou por evaporação. Os equipamentos para deposição a vácuo podem

apresentar diferentes características, porém, um equipamento básico deve conter: uma área onde

o vácuo possa ser gerado; software e hardware para controle de parâmetros (ex. nível de vácuo,

espessura da camada depositada); uma bomba de vácuo; e hardware para deposição de material.

A seguir, serão descritos os processos a vácuo de pulverização e evaporação, começando pelo

primeiro.

A pulverização é baseada no princípio da descarga elétrica entre dois eletrodos. O processo

ocorre a baixas pressões, permitindo a expulsão de átomos do metal no catodo em direção ao

anodo. Quando a câmara de vácuo termina de ser evacuada a um nível apropriado, íons de um gás

inerte são introduzidos na câmara. Estes são rapidamente ionizados quando da aplicação de um

Page 68: Kit didático para estudo de encoders ópticos

58

campo elétrico. Os átomos ionizados de alta energia incidem sobre a meta, que é um pedaço de

metal (cromo) presente no catodo. A energia incidente deve ser suficiente para romper as ligações

entre os átomos de cromo, expelindo-os na direção do anodo. Este fenômeno lembra o que

acontece quando se atira uma pedra com força em uma poça d’água. Assim, o cromo é

pulverizado sobre o anodo, onde está localizado o substrato que recebe a deposição. O substrato,

no caso o disco com o padrão desenhado em resina, deve ser mantido aquecido moderadamente

durante a pulverização, tomando-se o cuidado de não atingir uma temperatura que comprometa as

propriedades da resina. A pulverização proporciona uma boa adesão do cromo sobre o vidro, já

que os átomos de cromo o atingem com muita energia. Segundo (ELLIOTT, 1985), essa adesão é

cerca de dez vezes maior do que a do processo de evaporação. Outras vantagens a considerar são

as altas taxas de deposição e a alta homogeneidade da deposição.

O processo de evaporação também acontece a pressões muito baixas, neste caso, facilitando

a evaporação do metal (cromo) ao reduzir a temperatura necessária para tal. Existem diversos

mecanismos para se conseguir a evaporação do cromo, como, por exemplo, a utilização de um fio

de cromo sobre um filamento, cuja passagem de corrente elétrica fornece calor para a fusão e a

evaporação deste fio de cromo. O vapor de cromo é então depositado sobre o disco com o padrão

desenhado em resina. Como mencionado anteriormente, a adesão do cromo sobre o vidro num

processo de evaporação é menor do que num processo de pulverização, já que na evaporação os

átomos de cromo atingem o substrato com baixa energia relativamente. Para melhorar a adesão,

costuma-se aquecer o substrato mais do que num processo de pulverização. Desse modo, no caso

do disco, aumenta-se a energia na superfície do vidro, fortalecendo as ligações cromo-vidro.

Também é necessário garantir que o aquecimento do disco não danifique a resina. O processo de

evaporação é considerado um processo a quente e o processo de pulverização pode ser

considerado um processo a frio. A Figura 4.7, presente em (PATEL et al, acesso em 2007), ilustra

o resultado da deposição de uma película de metal sobre um substrato, por evaporação do metal.

Figura 4.7 - Resultado obtido com a deposição de uma película de metal sobre um substrato, via processo de evaporação do metal. (PATEL et al, acesso em 2007).

Page 69: Kit didático para estudo de encoders ópticos

59

Na figura, é possível observar que as rebarbas impediram a deposição de metal sobre as

paredes da resina. A Figura 4.8 esquematiza a deposição, dentro do processo de lift-off, para o

caso de uma resina positiva com perfis inclinados e sem a presença de rebarbas.

A última etapa do processo de lift-off para fabricação de um disco de encoder é a remoção

da resina que ainda permanece sobre o disco. Isso é feito através da imersão do mesmo em uma

solução contendo um solvente removedor apropriado para a resina utilizada. A acetona é um tipo

de solvente barato e que remove um grande número de resinas. A remoção se inicia pelas paredes

da resina, as quais não foram cobertas pela película de cromo e que, portanto, podem entrar em

contato com o solvente. Após a total remoção da resina, tem-se um disco de vidro com o padrão

desejado gravado em sua superfície na forma de uma película de cromo. O processo é finalizado

com o uso de soluções para limpeza e com a posterior secagem do disco. Ao término do processo

de lift-off, o disco está pronto para ser montado junto com os outros componentes de um encoder

óptico.

Resina positiva

Vidro

Revelação do padrão

Deposição do cromo

Remoção da resina

Figura 4.8 - Etapas finais do processo de lift-off.

Cromo

Page 70: Kit didático para estudo de encoders ópticos

60

4.2 Técnica para Fins Didáticos Utilizando Materiais de Baixo Custo

Uma maneira de compreender melhor o funcionamento de um encoder óptico é através da

construção e utilização de um modelo didático deste encoder. Nesse sentido, a construção de seu

componente principal (elemento móvel) é uma tarefa a ser realizada. Mantendo o enfoque em um

encoder rotativo, as etapas seguintes descrevem uma técnica simples e barata de se obter um

disco de encoder óptico para fins didáticos.

A primeira etapa é a criação do desenho do padrão a ser representado no disco, isto é,

desenhar os setores/trilhas que formam um padrão incremental ou um padrão absoluto. Um

computador pessoal munido de algum software gráfico auxilia bastante na criação de padrões

precisos e alinhados, além de oferecer certa flexibilidade na modificação de características desses

padrões (ex. número de setores em disco incremental). Um exemplo deste tipo de auxílio é o

programa, desenvolvido em MATLAB, presente no Anexo III. Tal programa gera um disco

incremental com o número de pares de setores translúcido-opaco definido na variável Nlinhas. As

linhas aparecem na cor preta e os espaçamentos na cor branca, como ilustrado na Figura 4.9 com

Nlinhas = 36.

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%1%

Figura 4.9 - Exemplo de disco incremental obtido com programa em MATLAB, Nlinhas = 36.

Page 71: Kit didático para estudo de encoders ópticos

61

A segunda etapa consiste em reproduzir o desenho do padrão em uma folha de papel

branco. Isso é facilmente conseguido através da impressão do desenho por uma impressora

comum. Um detalhe importante a ser observado é o diâmetro do padrão impresso, que deve ser

compatível com modelo didático a ser construído. Um padrão impresso com 12 cm de diâmetro é

ideal quando se utilizam CD´s transparentes para montar o disco. Esses CD´s serão discutidos

mais adiante.

Na terceira etapa, deseja-se obter um padrão com setores opacos e espaçamentos

translúcidos. Para conseguir isso, é possível xerocopiar o padrão impresso em papel sobre uma

transparência. Assim, o padrão fica desenhado sobre a transparência, onde as áreas que eram da

cor preta passam a ser opacas e as áreas que eram brancas tornam-se translúcidas. A

transparência é recortada no formato do disco e é feito um furo central, que no caso do uso de

CD´s tem diâmetro de 1,5 cm.

A última etapa é a colocação da transparência recortada em um sistema rígido, o qual

possibilitará o movimento de rotação. Esse sistema rígido pode ser um único disco translúcido,

fino e rígido, onde a transparência é colada sobre ele. Para uma maior flexibilidade, é mais

conveniente posicionar a transparência entre dois discos translúcidos, finos e rígidos, que podem

ser unidos pelo furo central, evitando o uso de cola. Em ambos os casos, há uma dificuldade na

obtenção de discos com as características mencionadas, logo o uso de CD´s transparentes é

justificado. Esses CD´s são facilmente obtidos, estando presentes em todos os tubos de CD´s

virgens disponíveis comercialmente. A Figura 4.10 ilustra um resumo de todas as etapas

descritas.

Figura 4.10 - Exemplo de técnica para construção de um disco de encoder óptico para fins didáticos empregando materiais de baixo custo.

Criação do padrão com

auxílio de um PC

Impressão do padrão em

papel branco

Xerocópia do padrão sobre uma transparência

e recorte adequado

Fixação da transparência recortada utilizando CD´s

transparentes

Page 72: Kit didático para estudo de encoders ópticos

62

5. Erros e Testes de Encoders Ópticos

Este capítulo traz estudos sobre erros e testes de encoders ópticos, enfocando os

incrementais rotativos. Começa com a discussão de termos e erros associados a esse tipo de

encoder e sua montagem. Mostra o efeito de alguns fatores na amplitude do sinal de saída e

termina descrevendo uma técnica para a realização de testes de precisão.

5.1 Erros Associados a Encoders Ópticos Incrementais Rotativos

Antes de se iniciar a abordagem sobre os erros associados a encoders ópticos incrementais

rotativos, convém diferenciar os termos resolução, precisão e repetibilidade. Como (GORDON,

acesso em 2007) afirma, esses três termos muitas vezes são confundidos, chegando até mesmo a

serem utilizados como sinônimos. Ele faz as seguintes definições:

“A resolução é uma medida de quantos pulsos por unidade de distância o encoder gera, ou,

inversamente, o tamanho do passo medido. Em encoders rotativos, a resolução é expressa em

unidades de ângulo (graus-minutos-segundos, graus decimais, grados, ou radianos) ou em

número de pulsos por revolução (PPR, ou pulsos/rev). Geralmente, quando um número binário de

pulsos por revolução é desejado, o termo bit é usado para indicar a resolução da maior potência

de 2; por exemplo, um encoder de 16 bits gera 216 = 65.536 pulsos/rev. A resolução é o

parâmetro mais básico de um encoder; é impossível especificar um encoder sem definir sua

resolução.

A precisão é uma medida de onde o encoder diz que ele está versus onde ele realmente

está, ou de qual é a contagem comparada com o que ela deveria ser. É quase sempre expressa em

unidades de ângulo, embora alguns componentes de erro podem, às vezes, serem expressos em

graus elétricos, sendo necessário converter para unidades angulares antes de somá-los com outras

fontes. O uso do termo erro é quase sempre uma indicação de que a precisão do encoder está

sendo discutida. Ambos a precisão e o erro expressam a diferença entre a posição indicada e a

posição real, mas com conotação ligeiramente diferente: a precisão é quão perto a leitura indicada

está da posição real, enquanto que o erro é quão longe a leitura indicada está da posição real.

Assim, uma precisão maior é melhor, mas um erro maior não.

Page 73: Kit didático para estudo de encoders ópticos

63

Enquanto a resolução do encoder é permanentemente fixa desde a fabricação do disco, os

erros do encoder podem variar em função de fatores ambientais, como a temperatura, carga no

eixo, e condições de serviço. Isso não significa que o número de pulsos por revolução é alterado.

Isso ocorreria somente como resultado de um dano severo ou contaminação de seus

componentes, tais como o disco ou o rolamento. Resolução e precisão não estão diretamente

relacionados. Em encoders de alta performance, o erro pode chegar a muitos pulsos, ou pode ser

uma pequena fração de um único pulso, dependendo das necessidades da aplicação.

A repetibilidade é uma medida de qual é a leitura neste instante, comparada com o que ela

era da última vez, para o movimento na mesma direção. Dependendo da aplicação, pode ser

importante distinguir entre repetibilidade de longo período e de curto período. Ela é expressa em

unidades de ângulo, assim como a precisão. É necessário entender a aplicação para saber o quê

especificar. Caso se deseje controlar a trajetória de uma aeronave, por exemplo, a precisão será

crítica, mas caso se deseje ensinar a um robô tarefas repetitivas, a repetibilidade pode ser mais

importante do que a precisão”.

De acordo com (ELLIN, acesso em 2007), para a saída de um sistema com encoder óptico

incremental rotativo, como ilustrado na Figura 5.1, refletir o movimento real do componente, são

necessários os seguintes pré-requisitos:

1) Cada parte do sistema deve girar em seu rolamento sem deslocamento radial do eixo de

rotação, isto é, sem movimentação lateral;

2) O sistema de eixo conectando o componente de interesse ao encoder deveria ser rígido à

torção;

3) O acoplamento deveria garantir que o movimento angular do encoder girando em seu

rolamento fosse o mesmo que o do componente de interesse girando em seu próprio sistema de

rolamento, isto é, uma velocidade de junta constante e precisa é exigida;

4) O espaçamento dos setores/linhas ao longo do disco do encoder deveria ser uniforme e o

dispositivo de leitura deveria interpolar entre eles de modo linear;

5) O disco (escala) do encoder deveria ser verdadeiramente circular com o eixo de rotação

passando perpendicularmente através de seu centro;

6) O dispositivo de leitura deveria ler a escala sem paralaxe ou outro erro geométrico e ser

rigidamente montado na estrutura não rotativa do encoder.

Page 74: Kit didático para estudo de encoders ópticos

64

Se algum dos pré-requisitos listados não for cumprido, haverá diferenças entre a posição

angular do componente de interesse e aquela indicada pelo encoder. Por meio da investigação de

cada uma dessas potenciais fontes de erro, é possível determinar suas contribuições individuais e,

conseqüentemente, obter o erro total associado ao sistema. Ainda em (ELLIN, acesso em 2007),

pode-se encontrar análises nesse sentido. Parte delas serão levantadas a seguir.

Efeito de desvios em rolamentos:

O termo desvio descreve uma variedade de atributos que resultam num deslocamento radial

(ou translação lateral) do eixo de rotação do encoder e/ou do componente, provocados em sua

maioria por deficiências nos rolamentos. Inclui jogo e harmônicas (ex. imperfeições das

esferas/roletes), mas não excentricidade. A magnitude do deslocamento radial de um eixo girando

em rolamentos de esferas/roletes é afetado pelo projeto e ajuste desse sistema de rolamentos, mas

é improvável que seja menor do que ±1 µm. Como o sistema do encoder pode ler a posição de

sua escala rotativa com pelo menos um décimo desse valor, pode ser visto que os erros causados

por desvios em rolamentos podem se sobrepor àqueles causados pelo restante de um sistema bem

projetado. A relação entre o deslocamento radial, a repetibilidade e a posição angular dependerá:

- das dimensões relativas do curso interno e externo do rolamento (onde se movimentam as

esferas/roletes);

- do número e diâmetro das esferas/roletes;

- do ajuste do sistema de rolamentos.

Para sistemas de alta precisão, é preferível o uso de rolamentos a ar. Os deslocamentos

radiais podem ser reduzidos a sub-microns pela correta seleção da rigidez radial do rolamento.

Dispositivo de leitura

Disco do encoder

Rolamento do encoder

Acoplamento

Rolamento do componente Rolamento do

componente

Componente de interesse

Eixo do encoder

Eixo do componente

Figura 5.1 - Sistema genérico com encoder. (ELLIN, acesso em 2007).

Page 75: Kit didático para estudo de encoders ópticos

65

Efeito de erros de acoplamento:

A Figura 5.1 mostra um sistema com um encoder rotativo com seu próprio rolamento

conectado ao componente de interesse, através de um acoplamento. Isso pode ser uma vantagem,

pois somente os desvios no rolamento do encoder irão afetar a precisão da medição angular.

Entretanto, essa vantagem deve ser considerada com cuidado, já que desvios nos rolamentos

principais irão afetar a precisão de posicionamento, se o sistema é projetado para retornar as

coordenadas polares de um ponto no componente de interesse.

O acoplamento por si só pode ter um impacto significativo na precisão do sistema,

apresentando problemas como:

- Folgas: qualquer folga irá introduzir diferenças na posição angular indicada, considerando

a direção de rotação, e tem o impacto mais significativo na repetibilidade do sistema.

- Rigidez torsional: o acoplamento pode não ser tão rígido quanto o eixo que ele conecta,

podendo, então, ser afetado pela vibração/ressonância do sistema. Erros dinâmicos acabam sendo

induzidos, resultando em problemas de performance.

- Erros angulares: a maioria dos acoplamentos pode, sob certas condições de alinhamento,

introduzir erros angulares entre o eixo motor e o eixo movido.

Efeito da distorção e excentricidade do disco/escala:

Caso seja necessário se obter uma medição angular precisa, uma escala com graduação

linear deve ser posicionada a uma distância adequada do eixo de rotação. Variações no raio,

como a causada pela excentricidade de uma escala perfeitamente circular, podem gerar erros que

variam uma vez por revolução. Estes se combinam com os outros erros que variam duas ou mais

vezes por revolução, os quais são resultado da distorção da escala.

Figura 5.2 - Excentricidade. (ELLIN, acesso em 2007).

Azimute zero nominal

Ângulo de fase Ф1

Centro de rotação

Excentricidade a 1

Centro da escala

r0

Page 76: Kit didático para estudo de encoders ópticos

66

Considerando uma escala perfeitamente circular de raio r0, ao invés de montá-la para que

gire sobre sua linha de centro nominal, ela é montada para girar sobre um outro ponto a uma

distância a1 da nominal e a um ângulo de fase Ф1, conforme esquematizado na Figura 5.2,

também traduzida de (ELLIN, acesso em 2007). A um ângulo azimute arbitrário θ1, a distância do

centro de rotação à periferia da escala R0 será dada por

)cos( 1100 φθ −−= arR . (5.1)

O raio verdadeiro irá, portanto, variar de maneira senoidal uma vez por revolução, com

uma amplitude igual à excentricidade. Para adicionar os efeitos da distorção de escala, a forma

global do disco pode ser considerada como a soma de uma série de ondas senoidais de diferentes

freqüências n, fases Фn e amplitudes an, tal que o raio da escala a um ângulo azimute θ é dado por

)cos(...)3cos()2cos()cos( 33221100 nn naaaarR φθφθφθφθ −−−−−−−−−= . (5.2)

Pode ser mostrado que o máximo erro circunferencial En induzido por uma distorção de

amplitude an variando de maneira senoidal, com ciclo de n vezes por revolução é dado por

n

aE n

n =± . (5.3)

Como uma verificação simples, uma excentricidade (isto é n = 1) de 1 µm induzirá um erro

linear senoidal na circunferência de ± 1 µm.

Assim, pode ser notado que distorções de ordens maiores na escala terão um efeito

progressivamente cada vez menor na precisão da escala. Nota-se também que as menores

harmônicas terão impacto significativo. Felizmente, erros induzidos por excentricidade e

distorção são controlados por meio de técnicas de compensação, sendo a mais eficaz a utilização

de múltiplos dispositivos de leitura.

Efeito da inclinação do disco/escala:

Esta é a condição onde a escala do encoder está montada concentricamente com o

componente de interesse, mas tem seu eixo geométrico inclinado em relação ao eixo de rotação.

Page 77: Kit didático para estudo de encoders ópticos

67

A Figura 5.3, novamente traduzida de (ELLIN, acesso em 2007), ilustra essa condição.

Vista de lado, a cada rotação, seria possível observar o movimento senoidal axial na periferia da

escala do encoder. A inclinação promove três mecanismos de erro distintos. O primeiro está

associado à distância e ao ângulo relativo entre a periferia da escala e o dispositivo de leitura fixo

axialmente. O segundo está associado à forma elíptica que a escala assume quando vista de

frente, levando a erros que variam duas vezes por revolução. O terceiro mecanismo só é

pertinente quando a escala é fabricada com graduações axiais marginalmente oblíquas (fora de

esquadro). Todos estes efeitos da inclinação também podem ser superados por meio de técnicas

de compensação, como o uso de dois ou mais dispositivos de leitura diametralmente opostos.

Efeito de erros induzidos por dispositivos de leitura:

Até agora, procurou-se concentrar na escala do encoder e em seus mecanismos de erro, mas

a escala é somente parte do encoder. O dispositivo de leitura também contribui para o erro total.

Os erros induzidos por dispositivos de leitura mais significativos são:

- Erro de sub-divisão: surge da não linearidade na interpolação, a qual é requerida nos casos

em que se deseja aumentar a resolução do encoder. O erro de sub-divisão é afetado pelo

alinhamento, ajuste e limpeza da escala, por isso é importante manter o encoder bem abrigado e o

dispositivo de leitura bem alinhado.

- Paralaxe: a distância entre a escala e o dispositivo de leitura pode mudar devido, por

exemplo, à excentricidade do disco ou à variação da temperatura. Logo, erros serão induzidos,

exceto se o dispositivo de leitura estiver corretamente alinhado com a linha de centro da escala

circular.

- Estabilidade da montagem: este pode parecer óbvio, mas a montagem rígida e segura do

dispositivo de leitura e da marca de referência é vital para medições angulares repetidas e

precisas.

Figura 5.3 - Inclinação do disco/escala. (ELLIN, acesso em 2007).

Ângulo de inclinação

Disco/escala do encoder

Page 78: Kit didático para estudo de encoders ópticos

68

5.2 Testes de Encoders Ópticos Incrementais Rotativos

Em (MATSUZOE et al, 2001), encontra-se uma análise que verifica a influência de três

fatores na amplitude do sinal gerado em encoders ópticos incrementais rotativos. Os fatores são:

1) a distância entre o fotodetector (dispositivo de leitura) e o disco graduado (escala);

2) a razão entre a largura da área ativa do fotodetector e o espaçamento das graduações do

disco;

3) a concentricidade entre o fotodetector e o disco graduado.

Variando certos parâmetros (relacionados aos três fatores), a técnica e o sistema utilizados

geram resultados analíticos, os quais são comparados com os resultados obtidos em um encoder

real com parâmetros idênticos. Confirmando-se que os resultados analíticos são muito próximos

dos resultados reais, é possível testar um encoder em relação a um parâmetro definido, já que sua

resposta deve seguir a resposta analítica. Em outras palavras, o sinal senoidal gerado pelo

fotodetector do encoder deve ser comparado com o sinal previsto analiticamente.

Primeiramente, (MATSUZOE et al, 2001) apresenta o princípio de funcionamento do

encoder óptico incremental rotativo, representado na Figura 5.4. A luz, a partir do LED, atravessa

o disco pelo espaçamento entre as áreas opacas, isto é, pelas áreas translúcidas, e é detectada pela

área ativa do fotodetector.

Figura 5.4 - Princípio de um encoder óptico incremental rotativo. (MATSUZOE et al, 2001).

Fotodetector

L

Áreas opacas

Graduações

LED

Eixo de rotação

Disco graduado

L: comprimento

Page 79: Kit didático para estudo de encoders ópticos

69

A relação entre a rotação do disco graduado e a área ativa do fotodetector é mostrada na

Figura 5.5. Ao girar o disco, pode-se ver que a amplitude do sinal de saída do fotodetector varia

de um mínimo (a) até um máximo (c), tomando a forma de uma onda triangular. Esta forma de

onda triangular é teórica, já que o sinal de saída real do fotodetector fica sujeito a distorções e

atenuações de amplitude causadas pelos três fatores mencionados anteriormente.

O sistema implementado em (MATSUZOE et al, 2001) para detectar a intensidade de luz

que atravessa o disco graduado, é esquematizado na Figura 5.6. O sistema é composto por um

LED, um disco graduado, uma lente, uma câmera CCD, um processador de imagem e um

computador pessoal. A luz proveniente do LED atravessa o disco graduado pelas áreas

translúcidas e é detectada pela câmera CCD através da lente.

Figura 5.5 - Relação fotodetector-graduações e amplitude do sinal de saída do fotodetector. (MATSUZOE et al, 2001).

Figura 5.6 - Sistema implementado para a realização da análise. (MATSUZOE et al, 2001).

Áreas opacas

Fotodetector Área ativa

(a) Coberta por áreas opacas

(b) Semicoberta por áreas opacas

(c) Detecta a luz completamente

Comprimento da onda

Offset

Ângulo de rotação do disco

Sin

al d

e sa

ída

Am

plitude

(a)

(b) (b)

(a)

(c) (c)

LED

Disco graduado

L: comprimento

L Lente objetiva

Câmera CCD

PC

Unidade de processamento

de imagem

Posição de formação de imagem da lente objetiva

Page 80: Kit didático para estudo de encoders ópticos

70

A Figura 5.7 apresenta a imagem obtida pelo sistema. A imagem indica a intensidade de luz

em uma posição onde L = 0,1 mm. As áreas escuras são aquelas cobertas pelas áreas opacas do

disco, enquanto que as áreas claras são aquelas iluminadas. O modelo do fotodetector representa

a área ativa do fotodetector que está sendo iluminada. Ignorando o efeito da comunicação cruzada

entre cada área ativa do fotodetector e possíveis efeitos de suas áreas não ativas, o sinal de saída

do fotodetector será proporcional às áreas ativas iluminadas. Em outras palavras, o sinal de saída

do fotodetector é computado pela integral do modelo do fotodetector na imagem, ou seja,

∫∫= ),( yxgIn . (5.4)

Aqui, g(x,y) é a imagem presente na Figura 5.7 e In é o valor da integral calculada pelas

coordenadas de g(a,b) e g(c,d). Assim, quando o disco graduado gira, o modelo do fotodetector

se move na direção da seta maior, mostrada na Figura 5.7, baseado no movimento relativo entre o

disco e o fotodetector. O sinal de saída do fotodetector é determinado repetindo este cálculo para

cada movimento de giro do disco, mais especificamente, toda vez que o modelo do fotodetector

se mover 1 pixel na direção indicada pela seta. A Figura 5.8 mostra o resultado analítico obtido

empregando esta técnica. O eixo vertical indica a amplitude normalizada, e o eixo horizontal

indica o movimento do modelo do fotodetector em pixels. O resultado analítico é um sinal de

saída senoidal (não triangular), incluindo o efeito da difração e dispersão da luz em direção

oblíqua, porque a imagem é baseada na intensidade de luz a uma posição onde L = 0,1 mm.

Figura 5.7 - Imagem da intensidade de luz a uma posição L = 0,1 mm. (MATSUZOE et al, 2001).

Modelo do fotodetector g(a,b)

g(c,d)

y

x Direção de rotação

Dire

ção

radi

al

g(X0,Y0)

Page 81: Kit didático para estudo de encoders ópticos

71

Com a técnica e o sistema apresentados, (MATSUZOE et al, 2001) passa a discutir a

influência no sinal de saída dos três fatores levantados no início, começando pela distância entre

o fotodetector e o disco graduado. Alguns de seus resultados serão expostos a seguir.

Influência da distância entre o fotodetector e o disco graduado:

Esta distância é o comprimento L indicado nas Figuras 5.4 e 5.6. Foram obtidas imagens

com L = 0,0 mm, L = 0,1 mm, L = 0,2 mm e L = 0,3 mm, as quais geraram o resultado analítico

do sinal de saída. Tais imagens e o resultado analítico podem ser observados na Figura 5.9 (a) e

(b), respectivamente. Quando L = 0,0 mm, as cristas e vales do sinal de saída são mais agudos do

que quando L = 0,3 mm. Isso se deve à menor influência da difração e da direção oblíqua da luz

vinda do LED, quando L fica menor. O eixo vertical da Figura 5.9 (b) foi normalizado pela

amplitude do caso onde L = 0,0 mm. A amplitude cai com o aumento de L, pois o fotodetector

(modelo) fica cada vez mais longe da fonte de luz, no caso o LED, que permanece fixo.

Movimento do modelo do fotodetector (pixels)

Am

plitu

de n

orm

aliz

ada

Figura 5.8 - Resultado analítico do sinal de saída do modelo do fotodetector. (MATSUZOE et al, 2001).

L = 0,0 mm L = 0,1 mm L = 0,2 mm L = 0,3 mm

Figura 5.9 - Influência da distância entre o fotodetector e o disco graduado. (a) Imagens obtidas. (b) Resultado analítico do sinal de saída. (MATSUZOE et al, 2001).

(a)

Am

plitu

de n

orm

aliz

ada

Movimento do modelo do fotodetector (pixels)

(b)

Page 82: Kit didático para estudo de encoders ópticos

72

Para comparar com o resultado analítico, foram realizadas medições da amplitude do sinal

de saída do fotodetector de um encoder real, para os mesmos L’s. O resultado destas medições,

obtidas por (MATSUZOE et al, 2001), é mostrado na Figura 5.10. O eixo vertical também está

normalizado para o caso onde L = 0,0 mm. Pela simples comparação das Figuras 5.9 (b) e 5.10,

se vê que os resultados analíticos são muito próximos dos resultados reais medidos.

Influência da razão entre a largura da área ativa do fotodetector e o espaçamento das

graduações do disco:

Esta razão é referida como duty, por (MATSUZOE et al, 2001). Neste caso, foram obtidas

imagens com duty de 100, 70 e 40%, ambas para o mesmo valor de L = 0,2 mm. A partir dessas

imagens também foi gerado o resultado analítico do sinal de saída. A Figura 5.11 exibe essas

imagens e o resultado analítico. O eixo vertical da Figura 5.11 (b) está normalizado para um duty

Am

plitu

de n

orm

aliz

ada

Movimento relativo entre o fotodetector e o disco (mm)

Figura 5.10 - Influência da distância entre o fotodetector e o disco graduado. Resultado das medições do sinal de saída do fotodetector em um encoder real. (MATSUZOE et al, 2001).

Figura 5.11 - Influência da razão entre a largura da área ativa do fotodetector e o espaçamento das graduações do disco. (a) Imagens obtidas. (b) Resultado analítico do sinal de saída. (MATSUZOE et al, 2001).

(a) (b)

Am

plitu

de n

orm

aliz

ada

Movimento do modelo do fotodetector (pixels)

Modelo do fotodetector

Page 83: Kit didático para estudo de encoders ópticos

73

de 100% com L = 0,0 mm. A influência da difração e da direção oblíqua da luz vinda do LED é

diminuída, quando a largura da área ativa é menor do que o espaçamento das graduações do

disco. Por exemplo, com base na Figura 5.11 (b), a amplitude do sinal de saída aumenta de 66%

(83% - 17% = 66%) para 89% (94% - 5% = 89%), com a redução do duty de 100 para 40%.

Novamente, para comparar com o resultado analítico, (MATSUZOE et al, 2001) realizou

medições em fotodetectores de encoders reais, preparados com duty de 100 e 70%. O duty de

40% não foi medido/implementado por questões de custo. A Figura 5.12 mostra o resultado

destas medições. O eixo vertical está normalizado para um duty de 100% com L = 0,0 mm. A

comparação das Figuras 5.11 (b) e 5.12, nos casos onde o duty é 100 e 70%, mais uma vez

confirmam que os resultados analíticos são muito próximos dos resultados reais medidos.

Influência da concentricidade entre o fotodetector e o disco graduado:

A posição correta do fotodetector é aquela na qual a linha de centro de cada área ativa,

quando estendida na direção do centro do encoder (SP), o intercepta. Além disso, deve interceptar

o centro de rotação do disco graduado (SS), isto é, SP e SS devem ser coincidentes, como

ilustrado na Figura 5.13 (a). Se a posição relativa de SP e SS for levemente alterada em x e em y,

o fotodetector e o disco graduado inclinam-se um em relação ao outro, e o disco graduado fica

impossibilitado de cobrir completamente a área ativa, como mostra a Figura 5.13 (b). Nela, θ é

calculado por tan-1(x/R), com R >> y sendo o raio do disco graduado.

O resultado analítico foi obtido através de imagens onde θ = 1º e θ = 2,4º, conseguidos com

o desvio entre SP e SS de x = 0.2 mm e x = 0.5 mm, respectivamente. Em ambos os casos, o raio

do disco tinha 12 mm. Um exemplo de imagem captada e o resultado analítico obtido podem ser

Figura 5.12 - Influência da razão entre a largura da área ativa do fotodetector e o espaçamento das graduações do disco. Resultado das medições do sinal de saída do fotodetector em um encoder real. (MATSUZOE et al, 2001).

Movimento relativo entre o fotodetector e o disco (mm)

Am

plitu

de n

orm

aliz

ada

Page 84: Kit didático para estudo de encoders ópticos

74

vistos na Figura 5.14. O eixo vertical está normalizado pela amplitude relacionada a θ = 0º.

Segundo (MATSUZOE et al, 2001), a atenuação de amplitude, resultante da variação da

concentricidade, é muito menor do que a atenuação resultante da variação dos dois fatores

anteriormente analisados. Isto pode ser visto pelos resultados analíticos, já que os resultados reais

para a influência do fator concentricidade não foram levantados.

(a) SS e SP coincidentes (b) SS e SP não coincidentes

“Centro” do fotodetector (SP)

Centro de rotação do disco (SS)

Linha de centro da área ativa

Figura 5.13 - Posição relativa entre o fotodetector e o disco graduado. (MATSUZOE et al,

2001).

Figura 5.14 - Influência da concentricidade entre o fotodetector e o disco graduado. (a) Exemplo de imagem captada. (b) Resultado analítico do sinal de saída. (MATSUZOE et al,

2001).

Modelo do fotodetector

Am

plitu

de n

orm

aliz

ada

Movimento do modelo do fotodetector (pixels)

(a) (b)

Page 85: Kit didático para estudo de encoders ópticos

75

Falando agora especificamente sobre o teste de precisão de um encoder óptico incremental

rotativo, (GORDON, acesso em 2007) menciona que uma maneira de medir sua precisão é

girando o encoder a uma velocidade muito bem controlada, e medindo o intervalo de tempo entre

as sucessivas transições do sinal de saída. Diz que a eletrônica moderna permite que esse

intervalo de tempo seja medido corretamente, mas que é impossível separar variações na

velocidade de erros na posição do encoder, principalmente em encoders de alta resolução. O

aperfeiçoado controle de velocidade, presente nos dias atuais, permite que esta técnica seja

utilizada em encoders de baixa e moderada resolução, porém os de alta resolução necessitam de

uma técnica mais direta para medir os erros de posição.

Ainda em (GORDON, acesso em 2007), é apresentado um equipamento denominado

METRA – Master Encoder for Testing Rotary Accuracy. O dispositivo central do METRA é um

encoder óptico com 20 polegadas de diâmetro, montado sobre um eixo com rolamentos a ar. Uma

técnica de múltiplos dispositivos de leitura elimina, virtualmente, todos os erros. O METRA tem

resolução de 221 pulsos/rev, ou seja, 2.097.152 pulsos/rev. Para medir a precisão, o encoder a ser

testado é acoplado ao METRA com muita perfeição. Ao serem girados juntos, a informação da

posição do METRA é usada para “interrogar” o encoder sob teste, a uma taxa de 2.097.152 vezes

por revolução. Desta maneira, esse teste verifica a localização de cada estado da saída do encoder

sob teste, e também não depende de suposições estatísticas baseadas num conjunto incompleto de

dados.

O princípio do METRA pode ser empregado para testar a precisão de um encoder de menor

resolução via utilização de um encoder de maior resolução (encoder de referência), bastando

acoplar os dois para que girem solidariamente e analisando suas saídas. Por exemplo,

considerando a Figura 5.15, se a cada pulso do encoder de menor resolução (A, B, C, ...)

corresponder sempre 8 pulsos do encoder de referência, pode-se dizer que a precisão do encoder

de menor resolução é mantida dentro de um ângulo equivalente a um pulso do encoder de

referência. Mas, pode-se observar que ao pulso B correspondem, erroneamente, 9 pulsos do

encoder de referência. Assim sendo, neste trecho, a posição real de um componente acoplado ao

encoder de menor resolução é ligeiramente diferente da indicada por este encoder. Em outras

palavras, sua precisão é menor neste trecho.

Page 86: Kit didático para estudo de encoders ópticos

76

Figura 5.15 - Teste de precisão de um encoder de menor resolução utilizando um encoder de referência.

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9

A B Encoder de menor resolução

Encoder de maior resolução

(referência) 1 2 3 4 5 6 7 8

C

Page 87: Kit didático para estudo de encoders ópticos

77

6. Materiais e Métodos

Neste capítulo, serão apresentados os detalhes para a construção de um kit de encoder

didático. O mesmo será composto por um encoder óptico incremental rotativo baseado no efeito

moiré e por um sistema informático que efetua a aquisição das posições do encoder em um dado

movimento, com a determinação da respectiva velocidade. Tal sistema informático, desenvolvido

em MATLAB, ainda permitirá a realização de um teste para verificar a precisão do encoder

didático com ajuda de um encoder comercial de maior resolução (encoder de referência).

6.1 Projeto e Montagem da Mecânica do Kit de Encoder

Conforme apresentado na seção 2.4.2 (Encoder Óptico Incremental), existem diversas

maneiras de se utilizar o efeito moiré num encoder incremental para a obtenção de dois sinais

defasados de 90º elétricos. O método escolhido para ser utilizado no encoder didático foi aquele

que gera o efeito moiré a partir da sobreposição de dois discos, um estático e um móvel. Além

disso, a diferença entre o número de pares de setores translúcido-opaco de um disco para o outro

deve ser igual a 1, levando à formação de um batimento. Essa escolha foi feita considerando a

facilidade de se conseguir a defasagem de 90º elétricos por meio do posicionamento de

dispositivos de leitura a 90º angulares entre si. Também foi considerada a menor complexidade

de seu sistema óptico, o que permitiu a utilização de materiais de baixo custo.

Baseando-se no método escolhido e sem considerar o uso de resolvedores, a resolução do

encoder é definida pelo número de pares de setores translúcido-opaco do disco móvel. Optou-se

por um disco móvel com 32 pares de setores translúcido-opaco. Isto se justifica, primeiramente,

pelo fato de terem sido utilizados CD´s transparentes para confecção dos discos, o que

determinou a largura dos setores translúcidos e opacos na periferia do disco. Essa largura deveria

ser compatível com o tamanho dos dispositivos de leitura, garantindo a detecção do sinal

luminoso e a geração de um sinal elétrico com amplitude suficiente. Para tal foram utilizados

LED’s infravermelho (emissor) e fotodiodos (receptor) de 5mm. A opção de um disco móvel com

32 pares de setores translúcido-opaco também é justificada pelo fato de que será utilizado um

Page 88: Kit didático para estudo de encoders ópticos

78

resolvedor eletrônico (via software) para aumento em 4 vezes da resolução. Deste modo, a

resolução final será de 128 pulsos por revolução, que é um valor na base 2 como na maioria dos

encoders. Também pode ser levantado como justificativa o fato de que o teste de precisão a ser

realizado sobre o encoder didático é feito com a ajuda de um encoder de referência com 1024

PPR, valor exatamente 8 vezes maior do que 32*4 = 128 PPR.

A Figura 6.1 sintetiza o método escolhido para geração do efeito moiré e para a obtenção

de dois sinais defasados eletricamente de 90º.

Tendo em mente a utilização de materiais de baixo custo e a utilização dos equipamentos

disponíveis no laboratório de mecatrônica, o kit de encoder foi mecanicamente projetado e

construído com os seguintes componentes:

- 1 base metálica, Figura 6.2, com eixo central acoplado a um motor CC e a um encoder de

referência com 1024 PPR. Módulo presente no laboratório;

- 1 eixo de plástico, Figura 6.3, obtido a partir do eixo presente em tubos de CD´s virgens;

- 1 suporte confeccionado em papelão, Figura 6.4, para fixar os fotodiodos (receptores);

- 1 suporte confeccionado em papelão, Figura 6.5, para fixar os LED´s infravermelho

(emissores);

- 3 CD´s de plástico transparente, Figura 6.6, presentes em tubos de CD´s virgens;

Figura 6.1 - Método escolhido para geração do efeito moiré e obtenção de dois sinais defasados de 90º elétricos. (a) Disco móvel com 32 pares de setores translúcido-opaco. (b) Disco estático com 33 pares de setores translúcido-opaco. (c) Sobreposição dos discos.

(a) (b) (c)

= 1 LED infravermelho + 1 fotodiodo

90º

Page 89: Kit didático para estudo de encoders ópticos

79

- 1 padrão de disco incremental em transparência, Figura 6.7, com 33 pares de setores

translúcido-opaco. Obtido segundo o método apresentado na seção 4.2 (Técnica para Fins

Didáticos Utilizando Materiais de Baixo Custo);

- 1 padrão de disco incremental em transparência, Figura 6.8, com 32 pares de setores

translúcido-opaco. Obtido segundo o método apresentado na seção 4.2 (Técnica para Fins

Didáticos Utilizando Materiais de Baixo Custo);

- 2 suportes metálicos, Figura 6.9, para fixação na base e fixação/ajuste das cantoneiras;

- 4 cantoneiras metálicas com rasgos, Figura 6.10, para fixação dos suportes em papelão e

do disco estático;

- 4 cantoneiras metálicas com furos, Figura 6.11, para fixação dos suportes em papelão e do

disco estático;

- 2 fotodiodos de 5mm (corpo branco), 2 LED´s infravermelho de 5mm (corpo azul), 2

anéis o’ring de 15mm, 4 pares de arruelas pequenas, 8 parafusos com porca M3, Figura 6.12;

- Fios para conexão, estanho para soldagem, fita isolante e espaguetes para isolação

elétrica. Todos aplicados aos terminais dos LED´s e fotodiodos.

Figura 6.2 - Croqui da base metálica.

Figura 6.3 - Croqui do eixo de plástico.

Page 90: Kit didático para estudo de encoders ópticos

80

Figura 6.5 - Croqui do suporte de papelão para fixar os LED´s infravermelho.

Figura 6.4 - Croqui do suporte de papelão para fixar os fotodiodos.

Figura 6.6 - Croqui dos CD´s de plástico transparente. Dext = 120mm. D int = 15mm.

Figura 6.7 - Croqui do disco incremental em transparência com 33 pares de setores.

Page 91: Kit didático para estudo de encoders ópticos

81

Figura 6.8 - Croqui do disco incremental em transparência com 32 pares de setores.

Figura 6.9 - Croqui dos suportes metálicos.

Figura 6.10 - Croqui das cantoneiras metálicas com rasgos.

Figura 6.11 - Croqui das cantoneiras metálicas com furos.

Page 92: Kit didático para estudo de encoders ópticos

82

Antes de apresentar como foi feita a montagem do encoder didático a partir de seus

componentes, convém mostrar as etapas de sub-montagem nas quais os fotodiodos e os LED’s

infravermelho foram fixados em seus respectivos suportes.

Os dois fotodiodos tiveram seus terminais dobrados e encaixados no rasgo presente no

suporte, como ilustrado na Figura 6.13. Eles foram posicionados aproximadamente a 90º

angulares um do outro, dados pela distância de 9 setores translúcidos no disco estático, ver Figura

6.1 (b). Voltando à Figura 6.13, os terminais dos fotodiodos foram soldados a fios de conexão na

parte inferior do suporte. Os terminais catodo (K), identificados pelo chanfro no corpo dos

componentes, foram soldados aos fios de cor branco-marrom num fotodiodo e branco-verde no

outro. Os terminais anodo (A) foram soldados, respectivamente para cada fotodiodo, aos fios de

cor marrom e verde.

Figura 6.12 - Croqui de um conjunto de componentes.

Figura 6.13 - Croqui da sub-montagem dos fotodiodos no suporte.

Page 93: Kit didático para estudo de encoders ópticos

83

A Figura 6.14 mostra que os dois LED´s infravermelho também tiveram seus terminais

dobrados e encaixados no rasgo presente no suporte. Eles foram posicionados aproximadamente a

90º angulares um do outro, buscando o alinhamento com os fotodiodos fixados no outro suporte.

Mais uma vez os terminais foram soldados a fios de conexão na parte inferior do suporte. Os

terminais catodo (K), identificados pelo chanfro no corpo dos componentes, foram soldados aos

fios de cor branco-laranja num LED e branco-azul no outro. Os terminais anodo (A) também

foram soldados, respectivamente para cada LED, aos fios de cor laranja e azul.

A montagem do encoder didático foi realizada seguindo as etapas apresentadas pelos

croquis da Figura 6.15. Tais croquis foram elaborados no AutoCAD 2006, assim como todos os

croquis anteriores. Uma breve descrição sobre cada etapa é dada a seguir:

1 - Retirar os 8 parafusos da base metálica (4 das extremidades e 4 do eixo central). Figura

6.15 (a);

2 - Fixar o eixo de plástico no eixo central da base metálica por meio dos 4 parafusos

retirados anteriormente e com o uso dos 4 pares de arruelas. Fixar os dois suportes metálicos, um

em cada lado da base, por meio dos outros 4 parafusos retirados na etapa 1. Em cada suporte

metálico, fixar uma cantoneira metálica que possui furos usando 2 parafusos e suas porcas.

Figura 6.15 (b);

Figura 6.14 - Croqui da sub-montagem dos LED´s infravermelho no suporte.

Page 94: Kit didático para estudo de encoders ópticos

84

Figura 6.15 - Croquis das etapas de montagem do encoder didático.

(a) (b)

(c) (d)

(e) (f)

Page 95: Kit didático para estudo de encoders ópticos

85

3 - Posicionar o suporte com os LED´s infravermelho sobre as cantoneiras. Em cada lado,

encaixar uma cantoneira que possui rasgos sobre a cantoneira que já está presa, de modo que o

suporte de papelão fique entre elas. Fazer o alinhamento e apertar os parafusos/porcas. Inserir um

anel o’ring no eixo de plástico, servindo de apoio para a fixação do disco móvel. A posição do

anel deve ser ajustada para que não haja contato entre o disco móvel e o corpo dos LED´s

infravermelho. Figura 6.15 (c);

4 - Posicionar sobre o anel o’ring, nesta seqüência, um CD transparente, o padrão de disco

incremental em transparência de 32 pares de setores translúcido-opaco e outro CD transparente.

Inserir outro anel o’ring no eixo de plástico, comprimindo e alinhando o conjunto que agora

forma o disco móvel. Figura 6.15 (d);

5 - Colocar sobre o disco móvel, nesta seqüência, um CD transparente, o padrão de disco

incremental em transparência de 33 pares de setores translúcido-opaco e o suporte com os

fotodiodos. Em cada suporte metálico, fixar uma cantoneira metálica que possui furos usando 2

parafusos e suas porcas. Em cada cantoneira recém fixada, encaixar (por baixo) uma cantoneira

que possui rasgos, de forma que o CD, a transparência e o suporte de papelão fiquem

comprimidos entre os dois tipos de cantoneira. Antes de dar o aperto final nos parafusos/porcas,

deve-se ajustar este conjunto (disco estático e suporte com fotodiodos) para que não fique em

contato com o disco móvel, mas também não muito afastado, já que a luz emitida pelos LED’s

infravermelho deve ser captada pelos fotodiodos. Ainda antes de apertar os parafusos/porcas,

deve-se alinhar cada fotodiodo com um setor translúcido do disco estático. A distância entre os

dois fotodiodos é dada por 9 setores translúcidos do disco estático, determinando os 90º

angulares. Figura 6.15 (e);

6 - Fazer ajustes finais e alinhamento preciso dos pares emissor-receptor. Os fios de

conexão saem pela parte traseira do encoder. Figura 6.15 (f).

Page 96: Kit didático para estudo de encoders ópticos

86

6.2 Projeto e Montagem da Eletrônica do Kit de Encoder

Continuando com o método escolhido, que gera o efeito moiré a partir da sobreposição de

dois discos, um estático e um móvel, cuja diferença no número de pares de setores translúcido-

opaco é igual a 1, foi necessário transformar o sinal luminoso dos dispositivos de leitura em sinal

elétrico. O primeiro passo foi a criação do circuito para ligação dos fotodiodos e dos LED’s

infravermelho.

Considerando que a tensão de alimentação era de 5 VCC, que a queda de tensão sobre os

LED´s infravermelho era de 2 V, e que sua corrente não pudesse ultrapassar 20 mA, o resistor a

ser ligado em série com cada LED infravermelho foi dimensionado utilizando a seguinte

equação:

Ω==−=−= 15002,0

3

02,0

25

ILED

VLEDVCCR . (6.1)

Foi escolhido um resistor comercial de 180 Ω, determinando uma corrente de:

mAR

VLEDVCCILED 7,16

180

3

180

25 ==−=−= . (6.2)

O resistor a ser colocado em série com cada fotodiodo teve seu valor estabelecido

experimentalmente, através da montagem do circuito mostrado na Figura 6.16. Observar que o

LED infravermelho é polarizado diretamente, enquanto que o fotodiodo é polarizado

inversamente. A cada valor de resistência testada, começando com as maiores, foi feita a

aproximação do LED infravermelho em relação ao fotodiodo a uma distância de 10mm, distância

esta similar à distância prevista na montagem do encoder. Além disso, foi medida a tensão no

ponto “C” procurando-se obter um valor o mais próximo possível de 5 V. O resistor de 1 kΩ

atendeu bem as exigências, gerando uma tensão aproximada de 4,3 V no ponto “C”.

Page 97: Kit didático para estudo de encoders ópticos

87

O passo seguinte foi transformar o sinal analógico em digital, ou seja, transformar o sinal

de tensão no ponto “C”, que varia de um mínimo (luz bloqueada) a um máximo (luz incidente) e

volta a um mínimo, em uma onda quadrada. Para isso foi utilizado um circuito quadrador, como

apresentado na seção 2.4.2 (Encoder Óptico Incremental). O circuito quadrador escolhido foi o

schmitt trigger, cujas características são trazidas na Figura 6.17, modificada de (SCHMITT

TRIGGER, acesso em 2007). O valor dos resistores segue um compromisso e seu

dimensionamento exato somente via cálculo não era garantia de funcionamento na prática. O

ponto de partida adotado foi a escolha de R3 como o resistor de maior valor, minimizando a

diferença entre v2 e v2’. O valor escolhido para R3 foi de 10 kΩ. Adotando Vref = Vcc = 5 V,

ligando o ponto “C” do circuito anterior a Vin , foram realizados alguns ensaios com diferentes

valores de R1 e R2, ambos menores que 10 kΩ.

Figura 6.16 - Circuito para ligação de um par emissor-receptor (LED infravermelho-fotodiodo).

Figura 6.17 - Circuito quadrador. (SCHMITT TRIGGER, acesso em 2007).

Page 98: Kit didático para estudo de encoders ópticos

88

Os ensaios envolveram um circuito para cada par emissor-receptor, já posicionados à 90º

angulares um do outro conforme montagem da seção anterior. Um cenário que se adequou bem à

necessidade de um nível de tensão TTL alto em Vout, quando da transição para nível alto (luz

incidente), foi obtido com R1 = 560 Ω e R2 = 1 kΩ. Com esses resistores, as tensões foram as

seguintes: Vout = GND (nível baixo), Vout = 3,5 V (nível alto, interpretado como 5 V TTL), v2 =

1,9 V (calculado) e v2’ = 1,6 V (calculado). Esse cenário também garantiu a defasagem de 90º

elétricos entre os sinais digitais de cada para emissor-receptor, quando da rotação do eixo do

encoder. A Figura 6.18 ilustra esses sinais.

O circuito completo para ligação e condicionamento dos sinais dos fotodiodos e dos

LED’s infravermelho é mostrado na Figura 6.19. Ele foi montado com os seguintes componentes:

- 2 fotodiodos de 5mm e 2 LED´s infravermelho de 5mm, já posicionados mecanicamente no

encoder didático e com fios soldados a seus terminais;

- 2 resistores de 180 Ω, 2 resistores de 560 Ω, 2 resistores de 10 kΩ e 4 resistores de 1 kΩ;

- 1 circuito integrado LM324 com quatro amplificadores operacionais;

- 1 protoboard, fios e grampos metálicos para conexões.

Figura 6.18 - Defasagem de 90º elétricos entre os sinais dos pares emissor-receptor.

Vout B

Vout A

V in A

V in B

Figura 6.19 - Circuito para ligação e condicionamento dos sinais dos fotodiodos e dos LED’s infravermelho, incluindo a pinagem do CI LM324.

Page 99: Kit didático para estudo de encoders ópticos

89

O kit também conta com um encoder de referência (1024 PPR) acoplado ao mesmo eixo do

encoder didático. O encoder de referência faz parte do módulo utilizado como base para o

encoder didático e sua ligação até a protoboard foi realizada com fios e um conector DB9. Essa

ligação é esquematizada na Figura 6.20, onde A_RES significa o canal A do encoder de

referência (canal A de maior RESolução) e B_RES o canal B do encoder de referência.

A alimentação do encoder didático e do encoder de referência, Figura 6.19 e 6.20, bem

como o envio de seus respectivos sinais A e B ao microcontrolador, foram feitas através de um

conector de expansão. A Figura 6.21 traz um esquema do conector de expansão, que será

conectado à placa de desenvolvimento módulo II.

Figura 6.20 - Ligação do encoder de referência.

Encoder de Referência

A

B

GND

5 VCC

DB9 Fêmea DB9 Macho

A_RES

B_RES

GND

5 VCC Protoboard

18 5 Vcc

17 GND

16 3.3V

15 RD7

14 RC5

13 RD6

12 RC4

11 RD5

10 RC3

9 RD4

8 RC2

7 RD3

6 RB0

5 RD2

4 RA2

3 RD1

2 RE2

1 RD0

Protoboard

5 Vcc

GND

CANAL

B

CANAL

A

A_RES

B_RES

Conector de Expansão

Módulo II 18

17

2

1

Figura 6.21 - Conector de expansão ligando a protoboard ao módulo II.

Page 100: Kit didático para estudo de encoders ópticos

90

Como dito anteriormente, o tratamento dos sinais provenientes do encoder didático e do

encoder de referência foi feito num microcontrolador, no caso, um PIC16F877A da Microchip.

Este microcontrolador está presente na placa de desenvolvimento módulo II, disponível no

laboratório de mecatrônica. Os recursos do módulo II utilizados no kit de encoder foram:

- PIC16F877A, onde foi gravado o software embarcado que trata os sinais do kit de encoder e os

sinais vindos da interface em MATLAB (porta serial do PC);

- 4 Displays de 7 segmentos, onde é indicada a posição atual (em pulsos) do encoder didático;

- 2 LED´s, onde é indicado o estado atual do encoder didático, isto é, o nível lógico momentâneo

do canal A e do canal B;

- Conector de expansão contendo 15 I/O’s (Figura 6.21), que serve de ligação entre os pinos do

microcontrolador presente no módulo II e a protoboard, onde estão concentrados os sinais dos

encoders;

- Comunicação serial RS232, utilizada para enviar e receber dados entre o microcontrolador e o

PC que está rodando a interface em MATLAB de aquisição de posição ou teste de precisão;

- Entrada de gravação in-circuit, para conexão com a placa ICD2 da LabTools. O ICD2 é uma

interface de gravação de programas no microcontrolador via porta USB do PC;

Algumas informações de hardware do módulo II (MANUAL MOSAICO, 2007) são

apresentadas a seguir:

- O microcontrolador PIC16F877A está configurado para trabalhar numa freqüência de clock de

4 MHz;

- Os quatro displays de 7 segmentos possuem os respectivos segmentos conectados entre si, ou

seja, de maneira a se fazer uma varredura de displays. A conexão com o microcontrolador segue

a Tabela 6.1. As vias de seleção de cada um dos displays seguem a Tabela 6.2.

PIC Segmento RD0 A RD1 B RD2 C RD3 D RD4 E RD5 F RD6 G RD7 DP

Tabela 6.1 - Correspondência entre os segmentos dos displays e os terminais do PIC.

Page 101: Kit didático para estudo de encoders ópticos

91

PIC Display RB7 DS1 (milhar) RB6 DS2 (centena) RB5 DS3 (dezena) RB4 DS4 (unidade)

- Os dois LED’s utilizados estão ligados, respectivamente, nos terminais RB2 e RB3 do

microcontrolador;

- A placa de desenvolvimento módulo II possui driver interno para adequar os níveis de tensão do

microcontrolador (TTL) aos padrões da RS232 (+12V e –12V). A comunicação é feita com 2

vias, a via de TX está ligada ao terminal RC6 e a via de RX está ligada ao terminal RC7 do

microcontrolador.

De acordo com a Figura 6.21, o conector de expansão permitiu realizar as seguintes

ligações entre os canais dos encoders e os terminais do microcontrolador:

- Encoder didático: Canal A (AA, no soft. emb.) => RC4 Canal B (BB, no soft. emb.) => RC5

- Encoder de referência: Canal A (A_RES) => RA2 Canal B (B_RES) => RE2

6.3 Desenvolvimento do Software Embarcado

O software embarcado no microcontrolador foi desenvolvido em linguagem C, no ambiente

de programação IAR Embedded Workbench. O código completo se encontra no Anexo IV. O

desenvolvimento partiu do pressuposto de que a resolução do encoder didático deveria ser

aumentada em 4 vezes, ou seja, passaria de 32 PPR para 128 PPR. O método utilizado para isso

foi discutido na seção 3.1 (Resolvedores Eletrônicos), cuja representação foi mostrada na Figura

3.3, reproduzida aqui na Figura 6.22. O sistema resolvedor foi implementado via software,

tratando cada combinação dos canais A e B do encoder didático como um estado. Assim, AB

corresponde ao estado 0, AB ao estado 1, AB ao estado 2 e AB ao estado 3. O software está

sempre fazendo a leitura dos canais A e B, determinando assim seu estado atual. Também está

sempre comparando o estado atual com o estado anterior para que, numa eventual mudança,

consiga identificar se necessita incrementar ou decrementar a posição. Desse modo, é possível

estabelecer o sentido de rotação do encoder didático. A Figura 6.23 ilustra o modelo de estados

discutido até agora através de um diagrama SDL.

Tabela 6.2 - Correspondência entre as vias de seleção dos displays e os terminais do PIC.

Page 102: Kit didático para estudo de encoders ópticos

92

ESTADO 0

ESTADO 2

ESTADO 1

canais

A B

Leitura canais A e B

Figura 6.22 - Formas de onda de um sistema resolvedor sem interpolador eletrônico. A resolução obtida é quatro vezes maior.

Figura 6.23 – Diagrama SDL para o encoder didático.

Considera mudança errada de

estado (CLK := 0, ERR++)

Considera aumento

de posição (U_D := 1, CLK := 1)

Considera diminuição de posição (U_D := 0, CLK := 1)

Considera manutenção do estado (CLK := 0)

Considera mudança errada de

estado (CLK := 0, ERR++)

Considera aumento

de posição (U_D := 1, CLK := 1)

Considera manutenção do estado (CLK := 0)

canais

A B

Leitura canais A e B

canais

A B

Leitura canais A e B

Considera mudança errada de

estado (CLK := 0, ERR++)

canais

A B

Leitura canais A e B

Considera diminuição de posição (U_D := 0, CLK := 1)

Considera aumento

de posição (U_D := 1, CLK := 1)

Considera mudança errada de

estado (CLK := 0, ERR++)

Considera manutenção do estado (CLK := 0)

Considera diminuição de posição (U_D := 0, CLK := 1)

Considera aumento

de posição (U_D := 1, CLK := 1)

Considera diminuição de posição (U_D := 0, CLK := 1)

Considera manutenção do estado (CLK := 0)

ESTADO 3 (AB = 11)

ESTADO 2 (AB = 10)

ESTADO 1 (AB = 01)

ESTADO 0 (AB = 00)

01

10

11

00

10

11

01

00

01

10

00

11

11

10

00

01

ESTADO 3

Page 103: Kit didático para estudo de encoders ópticos

93

início

zera sistema; zera posição absoluta/acumulada; zera posição atual; lê estado inicial do encoder;

verifica pedido do usuário vindo da interface; armazena estado; lê novo estado atual; mostra estado atual via LED´s; trata mudanças de estado de acordo com a Figura 6.23;

se houve mudança de estado (CLK=1)

se for a 1ª mudança de estado (primeiro CLK)

então

então

transmite posição 000 para a interface;

se estiver em modo teste então

transmite valor da contagem de pulsos do encoder de referência no intervalo; zera esta contagem;

senão

senão

se posição aumenta (U_D=1) então senão (U_D=0)

incrementa posição absoluta/acumulada; checa sentido; se positivo, incrementa posição atual; se negativo, decrementa posição atual;

decrementa posição absoluta/acumulada; checa sentido; se positivo, decrementa posição atual; se negativo, incrementa posição atual;

se qde pulsos/CLKs for igual a qde desejada de pulsos por valor enviado

então senão

transmite posição atual para a interface;

se estiver em modo teste então

transmite valor da contagem de pulsos do encoder de referência no intervalo; zera esta contagem;

senão

senão (CLK=0)

mostra posição atual nos displays de 7 segmentos, ou mostra ‘run’ caso não tenha havido a 1ª mudança de estado;

se estiver em modo teste então

armazena estado do canal A do encoder de referência; lê novo estado atual do canal A do encoder de referência; trata mudanças de estado do canal A do encoder de referência => borda descida => CLK=1 => sem resolvedor;

senão

se houve mudança de est do canal A do encoder de referência (CLK=1)

então

incrementa contagem de pulsos do encoder de referência no intervalo;

senão (CLK=0)

Figura 6.24 - Fluxograma simplificado de funcionamento do software embarcado.

Page 104: Kit didático para estudo de encoders ópticos

94

A Figura 6.24 apresenta um fluxograma simplificado que resume o funcionamento do

software embarcado. O fluxograma é baseado no código completo que se encontra no Anexo IV.

Como dito, o programa está sempre lendo os canais A e B do encoder didático e

identificando se houve ou não mudanças de estado. O estado atual é indicado através dos dois

LED`s mais à direita presentes no módulo II. A cada mudança de estado do encoder didático, o

programa identifica também o sentido de giro (aumentando ou diminuindo a posição) e mostra a

posição atual através dos quatro displays de 7 segmentos do módulo II. O acendimento dos

displays foi feito por meio de sua multiplexação no tempo. O display mais à esquerda mostra o

sinal de menos, caso a posição atual seja negativa, ou não mostra nada, caso a posição seja

positiva. Os outros três displays mostram a posição atual, em pulsos (mudanças de estado),

partindo de 000. Lembrando que a posição 000 só é mostrada a partir da detecção da primeira

mudança de estado do encoder didático. Antes disso é exibida a mensagem ‘run’.

O programa também está sempre verificando os pedidos do usuário, que são caracteres

recebidos no PIC pela porta serial e que são enviados a partir da interface do usuário em

MATLAB. Alguns caracteres foram escolhidos para representar cada pedido que é feito na

interface. Assim, um caractere é transmitido da interface para o programa com o intuito de

configurar um ou mais parâmetros do programa. A função que verifica os pedidos do usuário é

mostrada a seguir:

void verif_pedido(void) CHAR_RX = recebe(); switch(CHAR_RX) case ('Z'): zera(); break; case ('E'): info_err(); break; case ('T'): zera(); EH_TESTE = 1; le_est_atua l_RES(); break; case ('F'): EH_TESTE = 0; break; case ('1'): PULS_POR_VAL_ENV = 1; break; case ('2'): PULS_POR_VAL_ENV = 2; break; case ('4'): PULS_POR_VAL_ENV = 4; break; default: break;

O caractere ‘Z’ “zera” os parâmetros do sistema. O caractere ‘E’ faz com que seja enviado

pela porta serial, do PIC para a interface em MATLAB, o valor aproximado de mudanças erradas

de estado. O caractere ‘T’ configura para modo de teste de precisão. O caractere ‘F’ finaliza o

modo teste de precisão.

Page 105: Kit didático para estudo de encoders ópticos

95

Os caracteres ‘1’, ‘2’ e ‘4’ configuram a variável que define quantos pulsos (mudanças de estado)

devem ocorrer para que um valor de posição atual seja enviado do PIC para a interface em

MATLAB. Quando configurada em ‘1’, a cada pulso do encoder didático é enviada sua posição

atual para a interface em MATLAB. Esse envio da posição atual é feito transmitindo-se, nesta

ordem, o caractere ASCII ‘-’ se for negativa, o caractere ASCII da posição em centenas, o

caractere ASCII da posição em dezenas, o caractere ASCII da posição em unidades e o caractere

ASCII ‘TAB’ como caractere terminador. A interface será configurada para interpretar o

caractere ‘TAB’ como terminador de forma que os caracteres enviados anteriormente sejam

convertidos em um único valor numérico de posição. Quando em modo teste de precisão, além do

programa transmitir a posição atual do encoder didático, ele transmite o valor da contagem de

pulsos do canal A do encoder de referência no intervalo entre duas transmissões de posição do

encoder didático. Por exemplo, se o programa estiver configurado para transmitir a posição a

cada pulso do encoder didático, em modo teste será transmitido também o valor da contagem de

pulsos do canal A do encoder de referência que ocorreram no intervalo entre dois pulsos

consecutivos do encoder didático. Este é o método para teste de precisão que foi apresentado no

final da seção 5.2 (Testes de Encoders Ópticos Incrementais Rotativos). Nele, é utilizado um

encoder de maior resolução (referência) para testar a precisão de um encoder de menor resolução.

O método consiste em verificar se a cada pulso do encoder de menor resolução (intervalo entre

dois pulsos consecutivos) corresponde uma quantidade de pulsos constante do encoder de

referência. A Figura 6.25 reproduz a Figura 5.15 como um exemplo do método utilizado. No

exemplo, o trecho/pulso B do encoder de menor resolução apresenta menor precisão, já que

corresponde a uma quantidade de pulsos do encoder de referência diferente de oito.

Figura 6.25 - Teste de precisão de um encoder de menor resolução utilizando um encoder de referência.

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9

A B Encoder de menor resolução

Encoder de maior

resolução (referência)

1 2 3 4 5 6 7 8

C

Page 106: Kit didático para estudo de encoders ópticos

96

No caso do encoder didático construído, sua resolução final com resolvedor foi de 128

PPR. O encoder de referência utilizado para realizar o teste de precisão possui 1024 PPR e, como

não teve sua resolução aumentada via resolvedor, não foi necessário utilizar o canal B. A

contagem de pulsos foi realizada somente com a leitura do canal A.

Como já adiantado, o programa também transmite, quando solicitado via interface em

MATLAB (caractere ‘E’), o valor aproximado de mudanças erradas de estado do encoder

didático. Tais mudanças estão destacadas em vermelho na Figura 6.23 e normalmente não

acontecem, a menos que o encoder didático seja girado com extrema velocidade, superando o

tempo de processamento do sistema (limitado pela transmissão serial). Foi elaborado um código

para a transmissão do valor aproximado destes erros, sendo a seqüência ‘1’ ‘2’ ‘3’ ‘TAB’

interpretada na interface como a não existência de mudanças erradas de estado.

A inicialização do processador/microcontrolador foi realizada seguindo as informações

presentes no datasheet do PIC16F877A (DATASHEET MICROCHIP, acesso em 2007). Convém

enfatizar a configuração da transmissão/recepção serial, já que este recurso foi bastante explorado

no projeto. O modo de transmissão utilizado foi o assíncrono no formato de um start bit, oito bits

de dados e um stop bit. A taxa de transmissão/recepção foi configurada em 9600 bps, a mesma a

ser configurada na interface em MATLAB. Os registradores configurados foram o TXSTA, o

RCSTA e SPBRG, conforme mostra a Figura 6.26, modificada de (DATASHEET MICROCHIP,

acesso em 2007).

Configuração dos bits para o TXSTA:

Bit 7 => CSRC => 0 => tanto faz em modo assíncrono

Bit 6 => TX9 => 0 => seleção de transmissão com oito bits de dados

Bit 5 => TXEN => 1 => habilitação de transmissão

Bit 4 => SYNC => 0 => modo assíncrono

Bit 3 => Sem função => 0

Bit 2 => BRGH => 1 => seleção de baud rate de alta velocidade (high speed)

Bit 1 => TRMT => 1 => status do shift register no esvaziamento

Bit 0 => TX9D => 0 => seria o nono bit de dado, mas está configurado para 8 bits

Logo, TXSTA = 0b.0010.0110 = 0x26.

Page 107: Kit didático para estudo de encoders ópticos

97

Configuração dos bits para o RCSTA:

Bit 7 => SPEN => 1 => habilita porta serial

Bit 6 => RX9 => 0 => seleção de recepção de oito bits de dados

Bit 5 => SREN => 0 => tanto faz em modo assíncrono

Bit 4 => CREN => 1 => habilita recepção contínua

Bit 3 => ADDEN => 0 => tanto faz em modo assíncrono com 8 bits de dados

Bit 2 => FERR => 0 => não considera erros de quadros (framing error)

Bit 1 => OERR => 0 => não considera erros de sobreposição de dados (overrun error)

Bit 0 => RX9D => 0 => seria o nono bit de dado recebido, mas está configurado para 8 bits

Logo, RCSTA = 0b.1001.0000 = 0x90.

Configuração do registrador SPBRG:

Sabendo-se que o microcontrolador está preparado para trabalhar numa freqüência de clock

de 4 MHz, que o bit BRGH foi configurado em 1 (altas velocidades) e que a taxa desejada é de

9600 bps, pelas indicações da Figura 6.26, o valor decimal de SPBRG deve ser igual a 25.

Logo, SPBRG = 25 = 0x19.

Figura 6.26 - Registradores de configuração da transmissão/recepção serial. (DATASHEET MICROCHIP, acesso em 2007).

Page 108: Kit didático para estudo de encoders ópticos

98

6.4 Desenvolvimento da Interface com o Usuário

A interface com o usuário foi desenvolvida em MATLAB, utilizando um recurso não muito

conhecido denominado GUIDE. O GUIDE (Graphical User Interface Development Environment

- Ambiente de Desenvolvimento de Interface Gráfica do Usuário) contém um conjunto de

ferramentas para criação de interfaces gráficas do usuário (GUI’s), sendo muito semelhante aos

ambientes visuais de programação como o Visual Basic e o Visual C++. Tais ferramentas

simplificam o processo de desenvolver e construir GUI’s. Utilizando o GUIDE do MATLAB é

possível:

- Fazer o layout da GUI: Através do GUIDE Layout Editor, é possível fazer o layout

facilmente clicando e arrastando componentes GUI como painéis, botões, textos e menus para a

área de layout. O resultado é salvo com a extensão “.fig”.

- Programar a GUI: O GUIDE gera automaticamente um arquivo M do MATLAB que

controla como a GUI opera. O arquivo M inicializa a GUI e contém o código de funcionamento

para todas as chamadas (comandos que são executados quando o usuário clica num componente

da GUI). Utilizando o M-file Editor (editor de arquivos M) do MATLAB, é possível adicionar

códigos nas chamadas a fim de obter as funções desejadas.

A interface com o usuário foi desenvolvida para permitir a aquisição das posições do

encoder didático em um dado movimento e para permitir a realização de um teste de precisão

deste encoder com ajuda de um encoder de referência. Em ambos os casos o usuário verificaria os

resultados dos ensaios/experimentos na forma gráfica, com opção de exportar os dados tabelados,

no caso, para o Excel.

Utilizando o GUIDE Layout Editor, foram criadas três telas que compõem a interface do

usuário. As mesmas podem ser vistas na Figura 6.27 (a) (c) (e) em fase de construção, e em (b)

(d) (f) em exemplos de como são utilizadas pelo usuário. Estas três telas têm os

respectivos layouts salvos nos arquivos “encoderGUI128.fig”, “encoderAQUIS128.fig” e

“encoderTESTE128.fig”, os quais originaram os arquivos M “encoderGUI128.m”,

“encoderAQUIS128.m” e “encoderTESTE128.m”. Os códigos dos arquivos M se encontram,

respectivamente, nos Anexos V, VI e VII deste trabalho.

Page 109: Kit didático para estudo de encoders ópticos

99

Figura 6.27 - Desenvolvimento da interface com o usuário - GUI. (a)(c)(e) Fase de construção. (b)(d)(f) Exemplos de utilização.

(a) (b)

(c) (d)

(e) (f)

Page 110: Kit didático para estudo de encoders ópticos

100

As telas associadas aos arquivos “encoderAQUIS128” e “encoderTESTE128”, Figura 6.27

(d) e (f), servem para a visualização e gravação dos dados obtidos. A tela principal, Figura 6.27

(b), é a tela que surge com a execução do arquivo “encoderGUI128.m” no prompt do MATLAB.

É a partir dela que o usuário obtém os dados vindos do kit de encoder. Ela é dividida em duas

partes: aquisição, do lado esquerdo, e teste de precisão, do lado direito. Em ambas o usuário pode

selecionar a quantidade de pulsos por leitura 1, 2, 4 e a quantidade de leituras desejadas 16,

32, 64, 128. O valor definido na quantidade de pulsos por leitura é o valor que irá configurar, via

porta serial, a variável no microcontrolador PIC que define quantos pulsos (mudanças de estado)

devem ocorrer no encoder didático para que um valor de posição atual seja enviado do PIC para a

interface em MATLAB. O valor definido na quantidade de leituras desejadas configura no

próprio código em MATLAB quantos valores de posição atual, vindos pela serial, devem ser

lidos num determinado ensaio/experimento com o encoder didático.

Feita a seleção da quantidade de pulsos por leitura e da quantidade de leituras desejadas, é

calculado e mostrado o movimento total, em graus, necessário para movimentar o encoder

didático até que a quantidade de leituras desejadas seja atingida, ou seja, em quantos graus o

encoder didático deve ser girado para completar determinado ensaio. Aqui foi considerada a

resolução de 128 PPR, levando a 2,8125º por pulso.

Ainda na tela principal, Figura 6.27 (b), o usuário pode agora clicar no botão “FAZER

AQUISIÇÃO” ou no botão “FAZER TESTE”.

Caso escolha “FAZER AQUISIÇÃO”, será executada uma seqüência de comandos,

resumidos a seguir e que se encontram no arquivo “encoderGUI128.m” (Anexo V):

Inicializa porta serial, tratada como um objeto em MATLAB

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)

Envia, pela serial, a quantidade de pulsos por leitura selecionada (por exemplo 1)

fprintf(s,'1')

Envia, pela serial, pedido de “zeramento” do sistema do encoder didático

fprintf(s,'Z')

Page 111: Kit didático para estudo de encoders ópticos

101

Enquanto o número de leituras de posição for menor que o número de leituras desejadas

Lê a posição atual via serial

POS=fscanf(s,'%d')

Lê a hora atual do PC e cria vetor com tempos

Cria vetor de posição atual

Envia, pela serial, pedido questionando sobre mudanças erradas de estado

fprintf(s,'E')

Lê, pela serial, o código que indica mudanças erradas de estado

EST_ERR=fscanf(s,'%d')

Libera porta serial

fclose(s) delete(s) clear s

Formata o vetor de tempo

Determina o vetor de velocidades

Torna as variáveis globais para poderem ser utilizadas por outros arquivos M

Chama a tela de resultados da aquisição, arquivos “encoderAQUIS128”, Figura 6.27 (d).

Caso o usuário tenha escolhido “FAZER TESTE”, também será executada uma seqüência

de comandos, resumidos a seguir e que se encontram no arquivo “encoderGUI128.m” (Anexo V):

Inicializa porta serial, tratada como um objeto em MATLAB

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)

Envia, pela serial, a quantidade de pulsos por leitura selecionada (por exemplo 1)

fprintf(s,'1')

Envia, pela serial, pedido de modo teste do encoder didático

fprintf(s,'T')

Page 112: Kit didático para estudo de encoders ópticos

102

Enquanto o número de leituras de posição for menor que o número de leituras desejadas

Lê, via serial, a posição atual e a contagem de pulsos do encoder de referência no intervalo

POS=fscanf(s,'%d') QDE_PULSOS_INTERV=fscanf(s,'%d')

Lê a hora atual do PC e cria vetor com tempos

Cria vetor de posição atual e vetor de contagem de pulsos do encoder de referência

Envia, pela serial, pedido para finalizar modo teste

fprintf(s,'F')

Envia, pela serial, pedido questionando sobre mudanças erradas de estado

fprintf(s,'E')

Lê, pela serial, o código que indica mudanças erradas de estado

EST_ERR=fscanf(s,'%d')

Libera porta serial

fclose(s) delete(s) clear s

Torna as variáveis globais para poderem ser utilizadas por outros arquivos M

Chama a tela de resultados do teste de precisão, arquivos “encoderTESTE128”, Figura 6.27 (f).

Em ambas as opções, “FAZER AQUISIÇÃO” ou “FAZER TESTE”, após clicar no botão,

o usuário deve observar os displays de 7 segmentos do módulo II, que devem mostrar a

mensagem ‘run’. O ensaio deve ser iniciado e, após a leitura da quantidade desejada de leituras, a

interface abrirá automaticamente a tela contendo os resultados, sejam eles de aquisição ou de

teste de precisão.

Falando sobre a tela de resultados da aquisição, Figura 6.27 (d), ela mostra dois gráficos

com a opção de seleção da informação a ser plotada Posição x Número da leitura, Velocidade x

Número da leitura, Posição x Tempo, Velocidade x Tempo. A posição é mostrada em pulsos, a

velocidade em pulsos/seg, e o tempo em segundos. A mesma tela indica a quantidade de

mudanças erradas de estado do encoder didático que podem ter ocorrido durante o ensaio.

Normalmente esse valor é sempre zero. Ela também permite exportar os resultados para um

Page 113: Kit didático para estudo de encoders ópticos

103

arquivo em Excel, clicando no botão “EXPORTAR P/ EXCEL”. Aqui foi utilizado o comando

xlswrite do MATLAB. Os resultados são gravados no arquivo “encoder_aquisicao.xls”, que é

criado para armazenar os dados. O código do arquivo M associado com a tela de resultados da

aquisição está presente no Anexo VI.

Agora falando sobre a tela de resultados do teste de precisão, Figura 6.27 (f), ela também

mostra dois gráficos com a opção de seleção da informação a ser plotada Posição x Número da

leitura, Qde de pulsos no intervalo x Número da leitura. A posição é mostrada em pulsos e a

quantidade de pulsos no intervalo é mostrada em pulsos do encoder de referência. A mesma tela

indica a quantidade de mudanças erradas de estado do encoder didático que podem ter ocorrido

durante o ensaio. Ela também permite exportar os resultados para um arquivo em Excel, clicando

no botão “EXPORTAR P/ EXCEL”. Os resultados são gravados no arquivo

“encoder_testeprecisao.xls”, que é criado para armazenar os dados. O código do arquivo M

associado com a tela de resultados do teste de precisão está presente no Anexo VII.

Page 114: Kit didático para estudo de encoders ópticos

104

6.5 Manual de Experimentos

O kit de encoder didático permite realizar dois tipos de ensaio: aquisição da posição, com a

determinação da velocidade; e teste de precisão, com ajuda de um encoder comercial de maior

resolução (encoder de referência). A realização destes ensaios se inicia com os procedimentos a

seguir, que são comuns para os dois tipos de ensaio.

1 - Conectar um cabo serial entre o módulo II e o PC a ser utilizado como interface.

2 - Conectar um cabo USB entre a placa de gravação ICD2 e o PC, e conectar a placa ICD2 ao

módulo II.

3 - Conectar o cabo de alimentação do módulo II e ligar a fonte em uma tomada 110V.

4 - Ligar o módulo II.

5 - Através do PC, gravar o programa do encoder no PIC utilizando o software MPLAB IDE. O

programa está contido nos arquivos “encoder.c” e “encoder.h”.

6 - Desligar o módulo II.

7 - Desconectar o cabo que ligava a placa ICD2 ao módulo II.

8 - Conectar a protoboard do kit de encoder ao módulo II, através do conector de expansão. Uma

extremidade de conector já esta conectada à protoboard. A outra extremidade deve ser conectada

ao módulo II, encaixando o conector de forma que a faixa vermelha do cabo fique à direita.

9 - Conectar a protoboard do kit de encoder ao encoder de referência (1024 PPR), através do

conector DB9 presente em ambos.

10 - Ligar o módulo II novamente.

11 - No PC, abrir o MATLAB e selecionar o diretório onde estão salvos os arquivos

“encoderGUI128.m”, “encoderGUI128.fig”, “encoderAQUIS128.m”, “encoderAQUIS128.fig”,

“encoderTESTE128.m” e “encoderTESTE128.fig”.

12 - Executar o arquivo “encoderGUI128.m”, entrando com encoderGUI128 no prompt de

comando.

13 - Maximizar a janela, que deverá aparecer como na Figura 6.28.

Page 115: Kit didático para estudo de encoders ópticos

105

As próximas duas seções apresentam em detalhes cada um dos tipos possíveis de ensaio.

6.5.1 Aquisição da Posição e Determinação da Velocidade

Neste tipo de ensaio, é possível verificar o funcionamento do encoder didático de 128 PPR

através de seu movimento. Durante o movimento, a cada pulso (mudança de estado) do encoder

didático, sua posição atual é incrementada ou decrementada de acordo com o sentido de rotação.

A posição atual começa em 000 e é indicada pelos 4 displays de 7 segmentos do módulo II. Os 2

LED´s mais à direita presentes no módulo II indicam o estado atual do encoder didático, ou seja,

os níveis lógicos momentâneos de seus canais A e B. Ainda durante o movimento do encoder

didático, a interface em MATLAB recebe as leituras de posição atual no tempo, gerando um

histórico de posição e velocidade do encoder didático para o movimento em questão.

Este tipo de ensaio é realizado continuando o procedimento apresentado anteriormente.

Figura 6.28 - Tela principal da interface com o usuário do kit de encoder didático.

Page 116: Kit didático para estudo de encoders ópticos

106

14 - Do lado esquerdo da tela da Figura 6.28, selecionar a quantidade de pulsos por leitura entre

1, 2 e 4. Este valor configura o kit de encoder para enviar uma leitura de posição atual a cada N

pulsos do encoder didático, sendo N o valor selecionado.

15 - Logo abaixo, selecionar a quantidade de leituras desejadas entre 16, 32, 64 e 128. Este valor

estabelece a quantidade de leituras que o MATLAB irá receber antes de apresentar os resultados,

ou seja, a quantidade de leituras de posição atual que deverão ser feitas durante o movimento do

encoder, caracterizando o ensaio.

16 - Logo abaixo, observar o valor do movimento total em graus. Este valor leva em conta os

dois valores escolhidos nos passos 14 e 15, e indica em quantos graus se deve girar fisicamente o

encoder didático para a conclusão do ensaio.

17 - Logo abaixo, clicar no botão “FAZER AQUISIÇÃO”. Observar a mensagem ‘run’ nos

displays de 7 segmentos. Girar o encoder para qualquer um dos lados. Observar que a primeira

posição atual a ser mostrada nos displays é 000. Continuar movimentando até completar o

movimento total em graus indicado no passo 16. Caso desejado, alternar o sentido de giro durante

o ensaio. Ao término do movimento total, o MATLAB abre automaticamente uma janela com os

resultados da aquisição. A qualquer instante, se ocorrer algum erro no MATLAB, deve-se fechá-

lo e retomar os passos do procedimento a partir do passo 11.

18 - Conferir os resultados do ensaio. A tela de resultados da aquisição traz dois gráficos com

opção de seleção da informação a ser plotada Posição x Número da leitura, Velocidade x

Número da leitura, Posição x Tempo, Velocidade x Tempo. A posição é mostrada em pulsos, a

velocidade em pulsos/seg, e o tempo em segundos. A mesma tela indica a quantidade de

mudanças erradas de estado do encoder didático que podem ter ocorrido durante o ensaio.

Normalmente esse valor é sempre zero. Ela também permite exportar os resultados para um

arquivo em Excel, clicando no botão “EXPORTAR P/ EXCEL”. Os resultados são gravados no

arquivo “encoder_aquisicao.xls”, que é criado no diretório corrente para armazenar os dados.

Para retornar à tela principal, clicar em “FECHAR AQUISIÇÃO”.

Page 117: Kit didático para estudo de encoders ópticos

107

6.5.2 Teste de Precisão Utilizando um Encoder de Referência

Neste tipo de ensaio, é possível verificar a precisão do encoder didático (128 PPR) através

de seu movimento conjunto com o encoder de referência (1024 PPR). Durante o movimento, a

cada pulso do encoder didático, sua posição atual é incrementada ou decrementada de acordo

com o sentido de rotação. A posição atual começa em 000 e é indicada pelos 4 displays de 7

segmentos do módulo II. Os 2 LED´s mais à direita presentes no módulo II indicam o estado

atual do encoder didático, ou seja, os níveis lógicos momentâneos de seus canais A e B. Ainda

durante o movimento do encoder didático, a interface em MATLAB recebe as leituras de suas

posições atuais. Como o encoder de referência também se move junto, a interface em MATLAB

também recebe leituras deste encoder simultaneamente. Neste caso, as leituras representam

quantos pulsos do encoder de referência ocorreram no intervalo entre duas leituras do encoder

didático. Assim, o ensaio gera um histórico de posição do encoder didático e um histórico

mostrando a quantidade de pulsos do encoder de referência que ocorreram em cada intervalo.

Neste último histórico, se a quantidade de pulsos do encoder de referência for igual em todos os

intervalos, pode-se dizer que o encoder didático apresenta precisão dentro de um ângulo

equivalente a um pulso do encoder de referência. Se houver variação na quantidade de pulsos do

encoder de referência nos intervalos, a precisão do encoder didático estará dentro do ângulo

equivalente a essa variação em pulsos do encoder de referência.

Este tipo de ensaio também é realizado continuando o procedimento apresentado no início.

14 - Do lado direito da tela da Figura 6.28, selecionar a quantidade de pulsos por leitura entre 1, 2

e 4. Este valor configura o kit de encoder para enviar uma leitura de posição atual a cada N

pulsos do encoder didático, sendo N o valor selecionado. Junto com cada leitura, também é

enviada a quantidade de pulsos do encoder de referência que ocorreram desde a leitura

imediatamente anterior.

15 - Logo abaixo, selecionar a quantidade de leituras desejadas entre 16, 32, 64 e 128. Este valor

estabelece a quantidade de leituras que o MATLAB irá receber antes de apresentar os resultados,

ou seja, a quantidade de leituras de posição atual que deverão ser feitas durante o movimento do

encoder, caracterizando o ensaio.

Page 118: Kit didático para estudo de encoders ópticos

108

16 - Logo abaixo, observar o valor do movimento total em graus. Este valor leva em conta os

dois valores escolhidos nos passos 14 e 15, e indica em quantos graus se deve girar fisicamente o

encoder didático para a conclusão do ensaio.

17 - Logo abaixo, clicar no botão “FAZER TESTE”. Observar a mensagem ‘run’ nos displays de

7 segmentos. Girar o encoder lentamente para qualquer um dos lados e manter o mesmo sentido

durante todo o ensaio. Observar que a primeira posição atual a ser mostrada nos displays é 000.

Continuar movimentando até completar o movimento total em graus indicado no passo 16. Ao

término do movimento total, o MATLAB abre automaticamente uma janela com os resultados do

teste de precisão. A qualquer instante, se ocorrer algum erro no MATLAB, deve-se fechá-lo e

retomar os passos do procedimento a partir do passo 11.

18 - Conferir os resultados do ensaio. A tela de resultados do teste de precisão traz dois gráficos

com opção de seleção da informação a ser plotada Posição x Número da leitura, Qde de pulsos

no intervalo x Número da leitura. A posição é mostrada em pulsos e a quantidade de pulsos no

intervalo é mostrada em pulsos do encoder de referência [pulsos>RES]. A precisão do encoder

didático é verificada através do gráfico de “Qde de pulsos no intervalo x Número da leitura”.

Quanto mais constante o gráfico, maior é a precisão, isto é, o encoder está realmente mais

próximo de onde ele diz que está. Caso tenha sido selecionada, no passo 14, uma quantidade de

pulsos por leitura igual a 1, o mesmo gráfico deve ser aproximadamente constante e centrado no

valor 8. Isso porque cada leitura feita corresponde a um único pulso do encoder didático (128

PPR) e porque, no intervalo entre dois pulsos seus, ocorrem 8 pulsos do encoder de referência

(1024 PPR), já que este possui resolução 8 vezes maior. Por conseqüência, caso a quantidade de

pulsos por leitura tenha sido selecionada em 2 ou 4, o gráfico deve ser centrado, respectivamente,

em 16 ou 32 pulsos do encoder de referência [pulsos>RES].

A mesma tela indica ainda a quantidade de mudanças erradas de estado do encoder didático

que podem ter ocorrido durante o ensaio. Normalmente esse valor é sempre zero. Ela também

permite exportar os resultados para um arquivo em Excel, clicando no botão “EXPORTAR P/

EXCEL”. Os resultados são gravados no arquivo “encoder_testeprecisao.xls”, que é criado no

diretório corrente para armazenar os dados. Para retornar à tela principal, clicar em “FECHAR

TESTE”.

Page 119: Kit didático para estudo de encoders ópticos

109

7. Resultados e Discussão

Este capítulo apresenta os resultados da construção do kit de encoder didático, bem como

os resultados de experimentos realizados com ele. Também traz algumas discussões acerca dos

resultados obtidos.

7.1 Construção do Kit de Encoder

O resultado obtido com o projeto e montagem da mecânica do kit (Seção 6.1) é mostrado

na Figura 7.1. Nela, pode-se visualizar o encoder didático que foi construído e montado sobre a

base metálica do módulo que contém um motor CC e o encoder de referência. É interessante

notar a utilização de materiais de baixo custo, como CD´s, transparências e suportes em papelão,

que viabilizaram a execução do projeto. O objetivo principal foi atingido, que era permitir a

captação de dois sinais defasados eletricamente em 90º com o movimento do encoder em torno

de seu eixo. Uma ressalva pode ser feita em relação ao procedimento de montagem mecânica e

ajustes. O procedimento aparenta ser trabalhoso e manual, o que pode ser justificado, em parte,

pela utilização de materiais de baixo custo, mas não oferece grandes dificuldades se realizado

com atenção.

Figura 7.1 - Mecânica do kit de encoder didático construído.

Page 120: Kit didático para estudo de encoders ópticos

110

O resultado obtido com o projeto e montagem da eletrônica do kit (Seção 6.2) e com o

desenvolvimento do software embarcado (Seção 6.3) é ilustrado pela Figura 7.2. Nela, é possível

observar a protoboard, onde foi montado o circuito de condicionamento dos sinais vindos dos

LED´s infravermelho e dos fotodiodos presentes no encoder didático. Pode-se ver a ligação do

encoder de referência à protoboard através de um conector DB9. Também é possível enxergar o

conector de expansão ligando a protoboard ao módulo II. No módulo II, está o PIC 16F877A,

onde foi gravado o software embarcado. Nota-se os quatro displays de 7 segmentos, onde é

mostrada a posição atual do encoder didático. Em baixo dos displays, estão os dois LED´s que

indicam o estado atual, e, por fim, nota-se o cabo serial, que é conectado ao PC responsável pela

interface com o usuário. Os objetivos desta etapa foram atingidos, já que toda a eletrônica

envolvida permitiu o funcionamento do kit de encoder. Por se tratar de um projeto didático, pôde-

se utilizar os recursos e facilidades do módulo II. Além do mais, o kit também ficou bem flexível

quanto a mudanças, possibilitando a inclusão de novos circuitos para outras aplicações.

Uma limitação em relação ao software embarcado desenvolvido está ligada ao tempo de

transmissão de dados pela porta serial. Durante o movimento do encoder didático, o

microcontrolador está constantemente enviando dados, via serial, para o PC que está rodando a

interface com o usuário. Esta transmissão (9600bps) é lenta quando comparada com os tempos de

processamento do microcontrolador. Assim, a velocidade de giro do encoder não pode ser muito

elevada, pois poderiam haver, fisicamente, mudanças de estado do encoder, que não seriam

Figura 7.2 - Eletrônica do kit de encoder didático construído.

Page 121: Kit didático para estudo de encoders ópticos

111

detectadas pelo microcontrolador, enquanto ainda está havendo a transmissão de dados anteriores

pela serial. Uma aplicação que não necessitasse da constante transmissão da posição do encoder

via serial não sofreria este tipo de limitação. Convém citar também que, dependendo da posição

de parada do encoder didático (na transição dos sinais), pode haver a transição de estados

alternadamente entre dois estados adjacentes, causando a transmissão alternada de duas posições

adjacentes para interface. Isto só ocorre porque foi definido que uma mudança de estado no

encoder didático é o gatilho para a transmissão da posição, via serial, à interface.

A Figura 7.3 traz o resultado obtido após o desenvolvimento da interface com o usuário

(Seção 6.4) utilizando o recurso GUIDE do MATLAB. Nela, é possível visualizar um PC

executando, em MATLAB, a interface gráfica do usuário (GUI) do kit de encoder. Aqui, o

objetivo também foi atingido, que era construir uma interface intuitiva e de fácil usabilidade,

permitindo ao usuário a realização de ensaios e a verificação dos resultados. O fato de a interface

ter sido desenvolvida no MATLAB exigiu que a mesma fosse executada dentro dele, o que torna

o processamento um pouco mais demorado, já que o MATLAB é um software “pesado” e com

uma infinidade de ferramentas. Este fato não influenciou na leitura dos resultados, apenas na sua

apresentação. Uma outra questão a ser levantada em relação ao desenvolvimento de uma

interface em MATLAB está ligada à quantidade de arquivos. Para cada tela da interface são

necessários dois arquivos, um arquivo “.m” e um arquivo “.fig”. Uma interface com muitas telas

e/ou recursos implicaria em um número exagerado de arquivos, o que não foi o caso da interface

desenvolvida para o kit de encoder. Uma solução poderia ser o desenvolvimento da interface em

um ambiente de programação que gerasse um único arquivo executável (“.exe”), porém o mesmo

seria “fechado” ao usuário. Em outras palavras, uma interface em MATLAB pode ser alterada e

editada mais facilmente, já que seu desenvolvimento e execução ocorrem no mesmo ambiente.

Figura 7.3 - GUI do kit de encoder didático construído.

Page 122: Kit didático para estudo de encoders ópticos

112

7.2 Experimentos de Aquisição da Posição

Seguindo os procedimentos apresentados na seção 6.5 (Manual de Experimentos) e 6.5.1

(Aquisição da Posição e Determinação da Velocidade), foram realizados alguns ensaios com o kit

de encoder didático.

I - Movimento do encoder no mesmo sentido e com velocidade aproximadamente constante.

Qde de pulsos por leitura: 1

Qde de leituras desejadas: 128

Movimento total: 360º

Os resultados obtidos são apresentados nos itens (a) e (b) da Figura 7.4. Em (a), no gráfico

de cima, pode-se ver os valores de posição do encoder lidos contra o número da leitura. Como a

quantidade de pulsos por leitura foi selecionada em 1 e cada pulso está relacionado com uma

posição, a inclinação da reta vale 1, ou seja, o valor do eixo Y é igual ao valor do eixo X. A reta

parte de zero porque a posição inicial sempre é nula. A reta é estritamente crescente e positiva,

pois, durante o ensaio, o encoder foi girado no mesmo sentido (positivo). Foram obtidas 128

leituras (eixo X), conforme seleção inicial da quantidade de leituras desejadas.

Figura 7.4 - Resultados do ensaio I. (a) Posição. (b) Velocidade.

(a) (b)

Page 123: Kit didático para estudo de encoders ópticos

113

Ainda na Figura 7.4 (a), agora no gráfico de baixo, é possível observar os valores de

posição lidos contra o tempo. Este gráfico possui forma linear devido ao movimento do encoder

ter sido feito com velocidade quase constante. O ensaio durou cerca de 3,5 segundos e a

inclinação da reta pode ser estimada facilmente em aproximadamente 40 pulsos por segundo.

Este valor corresponde à velocidade de giro do encoder, que foi determinada a cada duas leituras

e pode ser vista na Figura 7.4 (b). As oscilações ocorrem devido aos pequenos intervalos de

tempo que são usados na determinação da velocidade instantânea. No canto inferior direito da

tela, foi indicado que não houve mudanças erradas de estado do encoder didático.

II - Movimento do encoder no mesmo sentido e com velocidade crescente.

Qde de pulsos por leitura: 2

Qde de leituras desejadas: 64

Movimento total: 360º

Os resultados obtidos são apresentados nos itens (a) e (b) da Figura 7.5. Em (a), no gráfico

de cima, pode-se ver os valores de posição do encoder lidos contra o número da leitura. Como a

quantidade de pulsos por leitura foi selecionada em 2 e cada pulso está relacionado com uma

posição, a inclinação da reta vale 2, ou seja, o valor do eixo Y é duas vezes o valor do eixo X. A

reta é estritamente crescente e positiva, pois, durante o ensaio, o encoder foi girado no mesmo

sentido (positivo). Foram obtidas 64 leituras (eixo X), conforme seleção inicial.

Figura 7.5 - Resultados do ensaio II. (a) Posição. (b) Velocidade.

(a) (b)

Page 124: Kit didático para estudo de encoders ópticos

114

Na mesma Figura 7.5 (a), agora no gráfico de baixo, pode-se visualizar os valores de

posição lidos contra o tempo. Este gráfico possui forma exponencial devido ao movimento do

encoder ter sido feito com velocidade baixa no início e acelerado depois, onde permaneceu em

velocidade constante. O ensaio durou pouco mais de 3 segundos e a velocidade de giro do

encoder, que foi determinada a cada duas leituras, pode ser vista na Figura 7.5 (b). Nela, nota-se

que a velocidade partiu de zero, cresceu, e permaneceu constante próxima a 80 pulsos por

segundo. No canto inferior direito da tela, também foi indicado que não houve mudanças erradas

de estado.

III - Movimento do encoder com inversão de sentido e com velocidade aproximadamente

constante.

Qde de pulsos por leitura: 1

Qde de leituras desejadas: 128

Movimento total: 360º

Os resultados obtidos são apresentados nos itens (a) e (b) da Figura 7.6. Em (a), no gráfico

de cima, pode-se ver os valores de posição do encoder lidos contra o número da leitura. O gráfico

é uma reta que cresce positivamente até a posição 74 e depois decresce. Isso ocorreu porque,

durante o ensaio, o encoder foi girado no sentido positivo até a posição 74, quando então passou a

ser girado no sentido contrário. Foram obtidas 128 leituras (eixo X), conforme seleção inicial.

Figura 7.6 - Resultados do ensaio III. (a) Posição. (b) Velocidade.

(a) (b)

Page 125: Kit didático para estudo de encoders ópticos

115

Ainda na Figura 7.6 (a), agora no gráfico de baixo, é possível observar os valores de

posição lidos contra o tempo. Este gráfico possui forma linear devido ao movimento do encoder

ter sido feito com velocidade quase constante. O ensaio durou cerca de 3,5 segundos e as

inclinações da reta podem ser estimadas entre 30 e 40 pulsos por segundo. Estes valores

correspondem à velocidade de giro do encoder, que foi determinada a cada duas leituras e pode

ser vista na Figura 7.6 (b). Nela, nota-se que a velocidade partiu de zero, cresceu, permaneceu

entre 30 e 40 pulsos por segundo, passou por zero no instante da inversão de sentido, cresceu

negativamente, e permaneceu entre 30 e 40 pulsos por segundo (sentido contrário). No canto

inferior direito da tela, também foi indicado que não houve mudanças erradas de estado.

7.3 Experimentos de Teste de Precisão

Seguindo os procedimentos apresentados na seção 6.5 (Manual de Experimentos) e 6.5.2

(Teste de Precisão Utilizando um Encoder de Referência), foram realizados alguns ensaios com o

kit de encoder didático.

IV - Movimento do encoder no mesmo sentido e com baixa velocidade

Qde de pulsos por leitura: 1

Qde de leituras desejadas: 16

Movimento total: 45º

Figura 7.7 - Resultados do ensaio IV. (a) Gráficos. (b) Dados exportados para o excel.

(a) (b)

Page 126: Kit didático para estudo de encoders ópticos

116

Os resultados obtidos são apresentados nos itens (a) e (b) da Figura 7.7. Em (a), no gráfico

de cima, pode-se ver os valores de posição do encoder didático lidos contra o número da leitura.

Como a quantidade de pulsos por leitura foi selecionada em 1 e cada pulso está relacionado com

uma posição, a inclinação da reta vale 1, ou seja, o valor do eixo Y é igual ao valor do eixo X. A

reta parte de zero porque a posição inicial sempre é nula. A reta é estritamente crescente e

positiva, pois, durante o ensaio, o encoder foi girado no mesmo sentido (positivo). Foram obtidas

16 leituras (eixo X), conforme seleção inicial da quantidade de leituras desejadas,

correspondendo a um movimento de 45º, tanto do encoder didático (128 PPR), quanto do encoder

de referência (1024 PPR).

Continuando na Figura 7.7 (a), agora no gráfico de baixo, pode-se observar a quantidade de

pulsos do encoder de referência [pulsos>RES] que ocorreram entre cada leitura de posição do

encoder didático (intervalo entre duas leituras consecutivas). Como esperado, o gráfico se

apresentou aproximadamente constante e centrado em 8, já que a quantidade de pulsos por leitura

foi selecionada em 1 e a resolução do encoder de referência é 8 vezes maior do que a resolução

do encoder didático. A quantidade de pulsos no intervalo relacionada à leitura 0 deve ser

ignorada, já que não existe ainda nenhuma leitura de posição feita, logo não é possível

caracterizar um intervalo. Sendo assim, e com ajuda dos dados exportados para Excel, Figura 7.7

(b), a média dos valores da quantidade de pulsos no intervalo ficou em 7,9 [pulsos>RES], muito

próximo do valor 8 esperado. Analisando melhor os dados, pode-se verificar que, no trecho de

45º ensaiado, a quantidade de pulsos no intervalo esteve entre 4 e 12 [pulsos>RES], portanto 8 ±

4 [pulsos>RES]. Sabendo que 1 [pulso>RES] corresponde a 0,3516º (360º / 1024PPR), pode-se

tirar que a resolução do encoder didático é 8 * 0,3516º = 2,8125º como esperado (360º / 128PPR

= 2,8125º), e que sua precisão é de, no mínimo, ± 4 * 0,3516º ≅ ± 1,4º. No canto inferior direito

da tela, também foi indicado que não houve mudanças erradas de estado.

V - Movimento do encoder no mesmo sentido (negativo) e com baixa velocidade

Qde de pulsos por leitura: 1

Qde de leituras desejadas: 128

Movimento total: 360º

O resultado obtido é mostrado na Figura 7.8.

Page 127: Kit didático para estudo de encoders ópticos

117

O gráfico de cima da Figura 7.8 é decrescente, mostrando que o encoder didático foi girado

no sentido negativo. Considerando o gráfico de baixo, a análise dos resultados neste caso é

análoga ao ensaio anterior. A única diferença é que o número de leituras realizadas foi de 128,

correspondendo a uma revolução completa do encoder.

VI - Movimento do encoder no mesmo sentido e com baixa velocidade

Qde de pulsos por leitura: 2

Qde de leituras desejadas: 64

Movimento total: 360º

O resultado obtido neste ensaio é mostrado na Figura 7.9. Como a quantidade de pulsos por

leitura foi selecionada em 2, o intervalo entre duas leituras consecutivas conteve 2 pulsos do

encoder didático. Como teoricamente cada pulso do encoder didático está relacionado com 8

pulsos do encoder de referência, os intervalos deveriam apresentar 16 [pulsos>RES]. O gráfico de

baixo da Figura 7.9 mostra que as quantidades de “pulsos>RES” nos intervalos ficaram centrados

em 16, como esperado.

Figura 7.8 - Resultados do ensaio V.

Page 128: Kit didático para estudo de encoders ópticos

118

VII - Movimento do encoder no mesmo sentido e com baixa velocidade

Qde de pulsos por leitura: 4

Qde de leituras desejadas: 32

Movimento total: 360º

O resultado obtido neste ensaio é mostrado na Figura 7.10. Novamente, como a quantidade

de pulsos por leitura foi selecionada em 4, o intervalo entre duas leituras consecutivas conteve 4

pulsos do encoder didático. Como teoricamente cada pulso do encoder didático está relacionado

com 8 pulsos do encoder de referência, os intervalos deveriam apresentar 32 [pulsos>RES]. O

gráfico de baixo da Figura 7.10 mostra que as quantidades de “pulsos>RES” nos intervalos

ficaram centrados em 32, como esperado.

Figura 7.9 - Resultados do ensaio VI.

Figura 7.10 - Resultados do ensaio VII.

Page 129: Kit didático para estudo de encoders ópticos

119

8. Conclusões e Sugestões para Próximos Trabalhos

Foi realizado um estudo inicial sobre encoders ópticos baseados no efeito moiré,

apresentando os princípios de funcionamento, discutindo sistemas para aumentar a resolução

(sistemas resolvedores), mostrando as técnicas de fabricação de discos e abordando questões

relacionadas a erros e testes de encoders.

Em seguida, foi desenvolvido um kit de encoder composto por um encoder didático de

baixo custo (128 PPR), um encoder de referência (1024 PPR), uma interface eletrônica com

microcontrolador e uma interface gráfica do usuário em MATLAB. O encoder didático, de custo

estimado em 30 reais, foi desenvolvido utilizando o efeito moiré para gerar a defasagem de 90º

elétricos entre seus canais A e B. Para isso, foram utilizados dois discos, um móvel com 32 pares

de setores translúcido-opaco e outro estático com 33 pares. A diferença de 1 par de setores

translúcido-opaco permitiu a obtenção da defasagem de 90º elétricos por meio do posicionamento

de dispositivos de leitura a 90º angulares. A resolução do encoder obtida fisicamente (32 PPR) foi

ampliada (128 PPR) com a utilização de um resolvedor eletrônico via software, implementado

em um microcontrolador. O microcontrolador também foi utilizado para a transmissão de dados,

via serial, a um PC executando a interface gráfica do usuário (GUI). A GUI criada em MATLAB

permitiu caracterizar o funcionamento do encoder didático através de dois tipos de experimentos:

aquisição da posição e teste de precisão.

Nos experimentos de aquisição da posição, o encoder didático foi movimentado nos dois

sentidos e com velocidades diferentes, fazendo com que os dados de posição fossem lidos e

armazenados em MATLAB, onde foram determinadas as velocidades. Cada experimento teve os

resultados apresentados na forma gráfica, refletindo, coerentemente, o movimento físico imposto

ao encoder didático.

Nos experimentos de teste de precisão, o encoder didático foi movimentado juntamente

com um encoder de referência. Além das leituras da posição do encoder didático, o MATLAB

recebeu as quantidades de pulsos do encoder de referência que ocorreram entre cada duas leituras

do encoder didático. Os resultados dos experimentos também foram apresentados graficamente,

onde foi possível inferir a respeito da precisão do encoder didático, que ficou em ± 1,4º , metade

de sua resolução (360º / 128PPR = 2,8º).

Page 130: Kit didático para estudo de encoders ópticos

120

Considerando trabalhos futuros, poderiam ser construídos outros tipos de encoders

didáticos com a utilização do efeito moiré em suas diferentes variações, seja utilizando máscaras

ou modificando a disposição física de fotosensores para se obter sinais defasados em 90º elétricos

sem a necessidade de um disco extra. Poderiam ser introduzidos mais fotosensores, por exemplo,

para utilizar o efeito médio do sinal e minimizar a influência de erros mecânicos; e para servir

como leitor da posição zero, com a alteração do padrão incremental do reticulado para isso.

Poderiam ser construídos encoders ópticos lineares, novamente com suas diferentes variações.

Outra sugestão seria a construção de um encoder óptico absoluto, cujo padrão do disco é bem

interessante, embora não utilize o efeito moiré. Neste caso, seria possível o estudo do código de

Gray.

Também poderiam ser construídos encoders com diferentes resoluções, através do aumento

ou diminuição do número de setores dos discos. Aumentos na resolução poderiam ser obtidos

também com a implementação e utilização de resolvedores eletrônicos (rede de resistores e CI´s

comerciais) e de resolvedores ópticos (dispositivos de leitura em diferentes angulações).

Pode ser considerada como uma sugestão de melhoria a confecção de um circuito impresso

em substituição à protoboard e ao módulo II utilizados na interface eletrônica do projeto. O uso

de lógica programável também poderia ser explorada no futuro.

Uma outra sugestão para trabalhos futuros seria a utilização do encoder didático em uma

aplicação, onde seria possível realizar o controle digital do motor CC a ele acoplado. Também

seria interessante realizar a supervisão/monitoramento da posição em tempo real, ou seja,

utilizando ferramentas como o LabView ou o próprio simulink do MATLAB.

Page 131: Kit didático para estudo de encoders ópticos

121

Referências Bibliográficas

Amidror, Isaac. The Theory of the Moiré Phenomenon. Boston: Kluwer Academic Publishers,

2000, 474p.

Catálogo Heidenhain. Rotary Encoders Catalog. Disponível 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.

Catálogo Renishaw. Non-contact Encoder Systems Brochure. Disponível em: <http://www.

renishaw.com/UserFiles/acrobat/UKEnglish/L-9517-0165.pdf>. Acesso em: 13 mar. 2007.

Catálogo Turck. Linear and Rotary Position Products. Disponível em: <http://www.turck-

usa.com/Literature/B1025_Linear_Rotary_Position.pdf>. Acesso em: 13 mar. 2007.

Creath, K., Wyant, J. C. Moiré and Fringe Projection Techniques. In: Malacara, D. Optical Shop

Testing. 2.ed. New York: John Wiley & Sons, Inc., 1992, pp.653-675.

Datasheet Microchip. PIC16F87XA. Disponível em: <http://ww1.microchip.com/downloads/en/

DeviceDoc/39582b.pdf>. Acesso em: 10 abril 2007.

Datasheet RLS - Interpolador RLXA2510. Interpolation factors 1, 2, 5, or 10. Disponível em:

<http://www.rls.si/default.asp?prod=interpolators/RLXA2510dr.pdf>. Acesso em: 13 mar.

2007.

Datasheet RLS - Interpolador RLX40i. Interpolation factors 1, 2, 3, 4, 5, 8, or 10. Disponível em:

<http://www.rls.si/default.asp?prod=interpolators/RLX40iD01.pdf>. Acesso em: 13 mar.

2007.

Page 132: Kit didático para estudo de encoders ópticos

122

Datasheet RLS - Interpolador RLX100. Interpolation factors 5, 10, or 25. Disponível em:

<http://www.rls.si/default.asp?prod=interpolators/RLX100.pdf>. Acesso em: 13 mar. 2007.

De Sa, A. Principles of Electronic Instrumentation. 2.ed. London: Edward Arnold, 1990, pp.197-

198.

Ellin, A. The Accuracy of Angle Encoders. Disponível em: <http://www.renishaw.com/

UserFiles/acrobat/UKEnglish/EPD-TI-0001.pdf>. Acesso em: 13 mar. 2007.

Elliott, David J. Integrated Circuit Mask Technology. New York: McGraw-Hill, Inc., 1985, 287p.

Gordon, Gerald S. Let´s Talk Accuracy. Disponível em: <http://www.gpi-encoders.com/

Lets_Talk_Accuracy.pdf>. Acesso em: 13 mar. 2007.

Hecht, E. Óptica. 2.ed. Lisboa: Fundação Calouste Gulbenkian, 2002, pp.338-343.

Hoeschele, David F. Analog-to-Digital/Digital-to-Analog Conversion Techniques. New York:

John Wiley & Sons, Inc., 1968, pp.326-354.

Madou, Marc J. Fundamentals of Microfabrication. Boca Raton: CRC Press, 1997, pp.1-44.

Manual Mosaico. Guia do usuário - placa de desenvolvimento - módulo II. 2007, 23p.

Matsuzoe, Y., Tsuji, N. Breadboard system and techniques to optimize the optical system of an

encoder. Optical Engineering, v.40, (2), pp.283-288, 2001.

Pallás-Areny, R., Webster, J. G. Sensors and Signal Conditioning. New York: John Wiley &

Sons, Inc., 1991, pp.1-4, 300-309.

Patel, B., Sutton, A., George, L. Liftoff Process Using Positive Photoresist. Disponível em:

<http://cmos.mirc.gatech.edu/group/projects/liftoff.pdf>. Acesso em: 08 maio 2007.

Page 133: Kit didático para estudo de encoders ópticos

123

Post, D., Han, B., Ifju, P. High Sensitivity Moiré – Experimental Analysis for Mechanics and

Materials. New York: Springer-Verlag, Inc., 1994, 444p.

Schmitt Trigger. The Schmitt Trigger. Disponível em: <http://hyperphysics.phy-astr.gsu.edu/

hbase/electronic/schmitt.html >. Acesso em: 10 abril 2007.

Woolvet, G. A. Transducers in Digital Systems. London: Peter Peregrinus Ltd., 1977, 193p.

Page 134: Kit didático para estudo de encoders ópticos

124

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; % define um instante de tempo qualquer

x=0:0.001:1; % cria um vetor de posicao

%x=0; % define uma posicao qualquer (desconsiderado)

A=1; % define a amplitude das ondas

k1=2*pi*24; % frequencia espacial da onda 1 (2*pi*f)

k2=2*pi*20; % frequencia espacial da onda 2 (2*pi*f)

w1=1; % frequencia temporal da onda 1 (2*pi*f)

w2=1; % frequencia temporal da onda 2 (2*pi*f)

y1=A*cos(k1*x-w1*t); % equacao da onda 1

y2=A*cos(k2*x-w2*t); % equacao da onda 2

y=y1+y2; % equacao resultante da sobreposicao

figure(1) % gera o grafico da onda 1

plot(x,y1,'b')

legend('y1')

axis([0 1 -4 4])

figure(2) % gera o grafico da onda 2

plot(x,y2,'k')

legend('y2')

axis([0 1 -4 4])

figure(3) % gera o grafico da onda resultante

plot(x,y,'r')

legend('y=y1+y2')

axis([0 1 -4 4])

figure(4) % gera o grafico das ondas juntas

plot(x,y1,'b',x,y2,'k',x,y,'r')

legend('y1','y2','y=y1+y2')

axis([0 1 -4 4])

Page 135: Kit didático para estudo de encoders ópticos

125

Anexo II

% Programa que ilustra o fenomeno do batimento utilizando duas grades de linhas retas

clear all; close all; clc;

n1=352; % define o numero de linhas da grade 1

n2=350; % define o numero de linhas da grade 2

x1=linspace(0,1, n1); % cria n1 pontos (linearmente espaçados) entre 0 e 1

x2=linspace(0,1, n2); % cria n2 pontos (linearmente espaçados) entre 0 e 1

for i=1:n1 % cria n1 linhas retas verticais de amplitude 1

X1(i)=1;

end

for i=1:n2 % cria n2 linhas retas verticais de amplitude 1

X2(i)=1;

end

figure(1) % gera o grafico da sobreposicao das grades

[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 criação 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+espaçamentos for i=1:Ntotal % define a distribuicao de linhas/espaçamentos x(i)=1; end f=figure(1); h=pie(x); % cria a grade circular de linhas radiais set(f,'Color','w') % formata as propriedades de cor 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

Page 136: Kit didático para estudo de encoders ópticos

126

Anexo IV /* Universidade Estadual de Campinas Faculdade de Engenharia Mecânica Curso de Engenharia de Controle e Automação TG II - Encoder Óptico 2o Semestre de 2007 Professor Orientador: Luiz Otávio Saraiva Ferreir a Aluno: Victor Adriano Turchetti RA: 025366 Arquivo: Encoder.h Autor: Victor A. Turchetti Data: 14/11/2007 Versão: 1.0 */ //************************************************* **************************** /* Função que transmite caractere pela serial */ /* O argumento de entrada é o caractere a ser trans mitido */ /* Não tem argumento de saida */ //------------------------------------------------- ---------------------------- void transmite(char DADO_TX) while (TXFLAG == 0) ; TXREG = DADO_TX; //************************************************* **************************** /* Função que recebe caractere pela serial */ /* Não tem argumento de entrada, e o argumento de s aida é caractere ASCII */ /* recebido ou o número 0 em caso de nenhum caracte re recebido */ //------------------------------------------------- ---------------------------- char recebe(void) if (RXFLAG == 0) return 0; else return RCREG; //************************************************* **************************** /* Função que lê estado atual do encoder */ //------------------------------------------------- ---------------------------- void le_est_atual(void) if(AA) if(BB) EST_ATUAL = 3; // Estado atual = 3 => AA=1 e BB=1 else EST_ATUAL = 2; // Estado atual = 2 => AA=1 e BB=0 else if(BB) EST_ATUAL = 1; // Estado atual = 1 => AA=0 e BB=1 else EST_ATUAL = 0; // Estado atual = 0 => AA=0 e BB=0 //************************************************* **************************** /* Função que lê estado do canal A do encoder de re ferência, quando em modo teste */ //------------------------------------------------- ---------------------------- void le_est_atual_RES(void) if(A_RES) EST_ATUAL_RES = 1; // Canal A em nível alto, A_ RES=1 else EST_ATUAL_RES = 0; // Canal A em nível baixo, A _RES=0 //************************************************* **************************** /* Função que incrementa a posição do encoder em mó dulo */ //------------------------------------------------- ---------------------------- void incrementa(void) POS_UNID = POS_UNID + 1; if(POS_UNID == 10) POS_UNID = 0; POS_DEZ = POS_DEZ + 1; if(POS_DEZ == 10) POS_DEZ = 0; POS_CEN = POS_CEN + 1;

Page 137: Kit didático para estudo de encoders ópticos

127

if(POS_CEN == 10) POS_CEN = 0; POS_ACUM = 0; // Posição é ze rada ao passar de 999 em módulo //************************************************* **************************** /* Função que decrementa a posição do encoder em mó dulo */ //------------------------------------------------- ---------------------------- void decrementa(void) POS_UNID = POS_UNID - 1; if(POS_UNID == 255) POS_UNID = 9; POS_DEZ = POS_DEZ - 1; if(POS_DEZ == 255) POS_DEZ = 9; POS_CEN = POS_CEN - 1; if(POS_CEN == 255) POS_CEN = 9; //************************************************* **************************** /* Função que "zera" o sistema */ //------------------------------------------------- ---------------------------- void zera(void) POS_ACUM = 0; POS_CEN = 0; POS_DEZ = 0 ; POS_UNID = 0; EH_POSITIVO = 1; EH_PRIM_CLK = 1; QDE_EST_ERR = 0; INTERV_UNID = 0; INTERV_DEZ = 0; EH_TESTE = 0; CONTA_PULSO S = 0; //************************************************* **************************** /* Função que informa a quantidade aproximada de mu danças de estado erradas do encoder */ //------------------------------------------------- ---------------------------- void info_err(void) if(QDE_EST_ERR != 0) if(QDE_EST_ERR < 5) transmite('5'); transmite('5'); // 55 <=> oc orreram menos de 5 mudanças erradas transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador) else if(QDE_EST_ERR < 10) transmite('1'); transmite('1'); transmite( '1'); // 111 <=> ocorreram menos de 10 mudanças err adas transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador) else if(QDE_EST_ERR < 20) transmite('2'); transmite('2'); transmit e('2'); // 222 <=> ocorreram menos de 20 mudanças e rradas transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador) else transmite('9'); transmite('9'); transmit e('9'); // 999 <=> ocorreram 20 ou mais mudanças er radas transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador) else transmite('1'); transmite('2'); transmite('3') ; // 123 <=> NÃO ocorreram mudanças erradas de esta do transmite(0x09); // Transmite o caracter TAB pela serial (caracter terminador) //************************************************* **************************** /* Função que verifica o pedido solicitado pelo usu ário via interface em MATLAB */ //------------------------------------------------- ---------------------------- void verif_pedido(void) CHAR_RX = recebe(); switch(CHAR_RX) case ('Z'): zera(); break; case ('E'): info_err(); break; case ('T'): zera(); EH_TESTE = 1; le_est_atua l_RES(); break; // Inicia modo teste e já deixa zer ado case ('F'): EH_TESTE = 0; break; // Termina modo teste case ('1'): PULS_POR_VAL_ENV = 1; break; case ('2'): PULS_POR_VAL_ENV = 2; break; case ('4'): PULS_POR_VAL_ENV = 4; break; default: break; //************************************************* **************************** /* Função que trata as mudanças de estado */ //------------------------------------------------- ---------------------------- void trata_mud_est(void) switch(EST_ATUAL) case (0): switch(EST_ANTES)

Page 138: Kit didático para estudo de encoders ópticos

128

case (2): U_D = 0; CLK = 1; break ; // Diminui posição (U_D = 0) case (1): U_D = 1; CLK = 1; break ; // Aumenta posição (U_D = 1) case (0): CLK = 0; break; // Manteve o estado default: CLK = 0; QDE_EST_ERR = Q DE_EST_ERR + 1; break; break; case (1): switch(EST_ANTES) case (3): U_D = 1; CLK = 1; break ; // Aumenta posição (U_D = 1) case (0): U_D = 0; CLK = 1; break ; // Diminui posição (U_D = 0) case (1): CLK = 0; break; // Manteve o estado default: CLK = 0; QDE_EST_ERR = Q DE_EST_ERR + 1; break; break; case (2): switch(EST_ANTES) case (0): U_D = 1; CLK = 1; break ; // Aumenta posição (U_D = 1) case (3): U_D = 0; CLK = 1; break ; // Diminui posição (U_D = 0) case (2): CLK = 0; break; // Manteve o estado default: CLK = 0; QDE_EST_ERR = Q DE_EST_ERR + 1; break; break; case (3): switch(EST_ANTES) case (1): U_D = 0; CLK = 1; break ; // Diminui posição (U_D = 0) case (2): U_D = 1; CLK = 1; break ; // Aumenta posição (U_D = 1) case (3): CLK = 0; break; // Manteve o estado default: CLK = 0; QDE_EST_ERR = Q DE_EST_ERR + 1; break; break; default: break; //fim switch //************************************************* **************************** /* Função que trata as mudanças de estado do canal A do encoder de referência */ //------------------------------------------------- ---------------------------- void trata_mud_est_RES(void) switch(EST_ATUAL_RES) case (0): switch(EST_ANTES_RES) case (1): CLK = 1; break; // Dá o clk, borda de descida default: CLK = 0; break; break; default: CLK = 0; break; //fim switch //************************************************* **************************** /* Função que trata do acendimento dos displays de 7 segmentos */ //------------------------------------------------- ---------------------------- void trata_display7seg(void) switch(EH_VEZ) case (0): if(EH_POSITIVO == 0) // I ndica que a posição é negativa PORTD = TABELA_7SEG[16]; // P repara sinal de menos '-' no display7seg else PORTD = 0; // N ão acenderá nada no de display7seg RB7 = 1; // A cende 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; // A paga o sinal de menos '-', ou nada, no display7seg break; case (1): if(EH_PRIM_CLK == 1) PORTD = TABELA_7SEG[17]; // P repara letra 'r' no display7seg else PORTD = TABELA_7SEG[POS_CEN]; // P repara centena no display7seg RB6 = 1; // A cende 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; // A paga a centena no display7seg break;

Page 139: Kit didático para estudo de encoders ópticos

129

case (2): if(EH_PRIM_CLK == 1) PORTD = TABELA_7SEG[18]; // P repara letra 'u' no display7seg else PORTD = TABELA_7SEG[POS_DEZ]; // P repara dezena no display7seg RB5 = 1; // A cende 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; // A paga a dezena no display7seg break; case (3): if(EH_PRIM_CLK == 1) PORTD = TABELA_7SEG[19]; // P repara letra 'n' no display7seg else PORTD = TABELA_7SEG[POS_UNID]; // P repara unidade no display7seg RB4 = 1; // A cende 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; // A paga a unidade no display7seg break; default: break; //fim switch /* Universidade Estadual de Campinas Faculdade de Engenharia Mecânica Curso de Engenharia de Controle e Automação TG II - Encoder Óptico 2o Semestre de 2007 Professor Orientador: Luiz Otávio Saraiva Ferreir a Aluno: Victor Adriano Turchetti RA: 025366 Arquivo: Encoder.c Autor: Victor A. Turchetti Data: 14/11/2007 Versão: 1.0 */ /* O encoder didático será chamado aqui somente de e ncoder. O encoder comercial de 1024 PPR será chamado aqui de encoder de referência. */ #include <io16f877a.h> // Definição dos registrador es do PIC16F877a #include <stdlib.h> // Definição das funções pad rão do ANSI C #include <inpic.h> // Definição das funções int rínsecas do compilador // Atribui nomes aos flags de controle da transmiss ão/recepção pela porta serial #define TXFLAG TXIF // Flag de esvaziamento de T XREG #define RXFLAG RCIF // Flag de chegada de byte p ela serial // Definição das entradas mapeadas no conector de e xpansão do kit MODULO II da MOSAICO #define AA RC4 // Canal A do encoder, Pino 12 do conector de expansão #define BB RC5 // Canal B do encoder, Pino 14 do conector de expansão #define A_RES RA2 // Canal A do encoder de re solução maior, Pino 4 do conector de expansão #define B_RES RE2 // Canal B do encoder de re solução maior, Pino 2 do conector de expansão, NÃO UTILIZADO char EST_ANTES, EST_ATUAL; // Variáveis de estado char U_D, CLK; // Variáveis de controle de contagem char EH_POSITIVO = 1; // Contagem começa zerad a, portanto não tem sinal negativo unsigned int POS_ACUM = 0; // Contagem da posição a cumulada do encoder em pulsos, 16 bits (0-65.535) char POS_CEN = 0; // Contagem da posição d o encoder em centenas de pulsos char POS_DEZ = 0; // Contagem da posição d o encoder em dezenas de pulsos char POS_UNID = 0; // Contagem da posição d o encoder em unidades de pulsos char EH_PRIM_CLK = 1; // Variável utilizada pa ra que após o 1.o clock a posição assuma zero char CHAR_RX; // Variável utilizada na recepção serial dos pedidos do usuário char EH_VEZ = 0; // Variável utilizada pa ra multiplexar o acendimento dos displays7seg char CONTADOR_SINAL = 0; // Controla tempo de ace ndimento do display7seg que representa o "-" char CONTADOR_CEN = 0; // Controla tempo de ace ndimento do display7seg que representa a centena char CONTADOR_DEZ = 0; // Controla tempo de ace ndimento do display7seg que representa a dezena char CONTADOR_UNID = 0; // Controla tempo de ace ndimento do display7seg que representa a unidade char QDE_EST_ERR = 0; // Qde de mudanças de es tado erradas do encoder

Page 140: Kit didático para estudo de encoders ópticos

130

char EH_TESTE = 0; // Modo teste quando EH_ TESTE = 1 a pedido do usuário via serial char EST_ANTES_RES, EST_ATUAL_RES; // Variáveis de estado do canal A do encoder de referência (A_RES) char INTERV_UNID = 0; // Qde de pulsos gerados pelo encoder de referência no intervalo char INTERV_DEZ = 0; // entre dois valores en viados do encoder sob teste char CONTA_PULSOS = 0; // Faz o controle de pul sos desejados por valor enviado pela serial char PULS_POR_VAL_ENV = 1; // Qde de pulsos desejad os por valor enviado pela serial. Pode ser escolhid o pelo usuário //************************************************* **************************** /* TABELA PARA OS DISPLAYS DE 7 SEGMENTOS */ //------------------------------------------------- ---------------------------- const char TABELA_7SEG[21]= 0x3F, // 0h - 0 0x06, // 1h - 1 0x5B, // 2h - 2 0x4F, // 3h - 3 0x66, // 4h - 4 0x6D, // 5h - 5 0x7D, // 6h - 6 0x07, // 7h - 7 0x7F, // 8h - 8 0x6F, // 9h - 9 0x77, // Ah - A 0x7C, // Bh - b 0x39, // Ch - C 0x5E, // Dh - d 0x79, // Eh - E 0x71, // Fh - F 0x40, // Sinal de menos '-' // chamada: PORT D = TABELA_7SEG[16] 0x50, // Letra 'r' // chamada: PORTD = TABEL A_7SEG[17] 0x1C, // Letra 'u' // chamada: PORTD = TABEL A_7SEG[18] 0x54 // Letra 'n' // chamada: PORTD = TABEL A_7SEG[19] ; #include "Encoder.h" // Definição das funções uti lizadas no programa //************************************************* **************************** // Função Principal //------------------------------------------------- ---------------------------- void main(void) // A diretiva da linha abaixo define os bits de con figuração do processador. No caso abaixo a depuraçã o // com o ICD2BR está habilitada. Para desabilitá-la , troque DEBUG_ON por DEBUG_OFF. //__set_configuration_word(CP_OFF&CPD_OFF&DEBUG_ON& LVP_OFF&WRT_ENABLE_OFF&BODEN_OFF&PWRTE_ON&WDT_OFF&XT_OSC); // A opção WRT_ENABLE_OFF não é compatível com 16F8 77a __set_configuration_word(CP_OFF&CPD_OFF&DEBUG_ON& LVP_OFF&BODEN_OFF&PWRTE_ON&WDT_OFF&XT_OSC); /* INICIALIZAÇÃO DO PROCESSADOR - INÍCIO */ ADCON1 = 0x07; // 0b.0000.0111 , sem entradas ana lógicas PORTC = 0x00; // Zeramento para evitar ruídos TRISC = 0xB0; // 0b.1011.0000 , RC0 = saída digi tal // RC1 = saída digi tal // RC2 = saída digi tal // RC3 = saída digi tal // RC4 = entrada di gital, canal A do encoder // RC5 = entrada di gital, canal B do encoder // RC6 = saída TX d a porta serial // RC7 = entrada RX da porta serial PORTB = 0x00; // Zeramento para evitar ruídos TRISB = 0x03; // 0b.0000.0011 , RB0 = entrada di gital // RB1 = entrada di gital // RB2 = saída digi tal, LED L3 // RB3 = saída digi tal, LED L4 // RB4 = saída digi tal, seleciona display7seg unid // RB5 = saída digi tal, seleciona display7seg dez // RB6 = saída digi tal, seleciona display7seg cen // RB7 = saída digi tal, seleciona display7seg sinal PORTA = 0x00; // Zeramento para evitar ruídos TRISA = 0xFF; // 0b.1111.1111 , entradas kit mos aico, e RA2 = entrada digital sinal A_RES PORTD = 0x00; // Zeramento para evitar ruídos TRISD = 0x00; // 0b.0000.0000 , RD7..RD0 saídas p/ segmentos do display7seg PORTE = 0x00; // Zeramento para evitar ruídos TRISE = 0x04; // 0b.0000.0100 , RE2 = entrada di gital sinal B_RES /* Configuração da porta serial */ TXSTA = 0x26; // 0b.0010.0110 = Modo assíncrono 8 bits, baud rate high speed (BRGH=1) SPBRG = 0x19; // 0x19 = 25 em decimal => Taxa 96 00 bps p/ Fosc = 4 MHz => tab pg100 pdf RCSTA = 0x90; // 0b.1001.0000 = Habilita a trans missão/recepção serial TXIE = 0; // Desabilita interrupção chamada pela transmissão serial RCIE = 0; // Desabilita interrupção chamada pela recepção serial /* INICIALIZAÇÃO DO PROCESSADOR - FIM */ /* PROCESSOS - INÍCIO */ le_est_atual(); // Faz uma leitura inicial do est ado do encoder while(1) // Laço principal infinito verif_pedido();

Page 141: Kit didático para estudo de encoders ópticos

131

EST_ANTES = EST_ATUAL; // Armazena estado ime diatamente anterior le_est_atual(); // Lê o novo estado at ual switch(EST_ATUAL) // Indica o estado atu al via LED's case (0): RB2 = 0; RB3 = 0; break; case (1): RB2 = 0; RB3 = 1; break; case (2): RB2 = 1; RB3 = 0; break; case (3): RB2 = 1; RB3 = 1; break; default: break; trata_mud_est(); if(CLK == 1) // Quando é preciso incrementar/de crementar if(EH_PRIM_CLK == 1) // Caso for o primeiro c lock transmite(POS_CEN + 0x30); transmite(POS_D EZ + 0x30); transmite(POS_UNID + 0x30); // Transmite o val or 000 em ASCII pela serial transmite(0x09); // Transmite o car acter 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 car acter TAB pela serial (caracter terminador) INTERV_UNID = 0; INTERV_DEZ = 0; EH_PRIM_CLK = 0; else // Não é o primeiro clock if(U_D == 1) // Quando a posição aumenta POS_ACUM = POS_ACUM + 1; if(POS_ACUM > 32768) // Checa o sentido EH_POSITIVO = 0; else EH_POSITIVO = 1; if((EH_POSITIVO == 1)&&(POS_ACUM != 0)) incrementa(); else // É número negativo decrementa(); else // U_D == 0, logo quando a posição dim inui 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 // É número negativo incrementa(); //fim else U_D == 0 CONTA_PULSOS = CONTA_PULSOS + 1; // Increme nta controle de pulsos por valor enviado if(CONTA_PULSOS == PULS_POR_VAL_ENV) if(EH_POSITIVO == 0) // Indica que a posição é negativa transmite('-'); // Transmi te o caracter '-' em ASCII pela serial transmite(POS_CEN + 0x30); transmite(POS_ DEZ + 0x30); transmite(POS_UNID + 0x30); // Transmi te o valor da posição em ASCII pela serial transmite(0x09); // Transmi te o caracter TAB pela serial (caracter terminador) if(EH_TESTE == 1) transmite(INTERV_DEZ + 0x30); transmite (INTERV_UNID + 0x30); transmite(0x09); // Transmi te o caracter TAB pela serial (caracter terminador) INTERV_UNID = 0; INTERV_DEZ = 0; CONTA_PULSOS = 0; //fim else não é o primeiro clock //fim if(CLK == 1) trata_display7seg(); // Sempre executa if(EH_TESTE == 1) // Só executa se estiver e m modo teste

Page 142: Kit didático para estudo de encoders ópticos

132

EST_ANTES_RES = EST_ATUAL_RES; le_est_atual_RES(); trata_mud_est_RES(); if(CLK == 1) // O clock agora é do encod er de referência 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 não mais que 99 pulsos gerados pelo encoder de referência // no intervalo entr e 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 ENCO DERGUI128 or raises the existing % singleton*. % % H = ENCODERGUI128 returns the handle to a ne w ENCODERGUI128 or the handle to % the existing singleton*. % % ENCODERGUI128('CALLBACK',hObject,eventData,h andles,...) calls the local % function named CALLBACK in ENCODERGUI128.M w ith the given input arguments. % % ENCODERGUI128('Property','Value',...) create s a new ENCODERGUI128 or raises the % existing singleton*. Starting from the left , property value pairs are % applied to the GUI before encoderGUI128_Open ingFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to encoderGUI12 8_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Cho ose "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 hel p 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(varargin1) gui_State.gui_Callback = str2func(varargin1); end if nargout [varargout1: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 vi sible. function encoderGUI128_OpeningFcn(hObject, eventdat a, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % varargin command line arguments to encoderGUI12 8 (see VARARGIN) set(handles.puls_por_leit_AQUIS,'String',1); %conf igura 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);

Page 143: Kit didático para estudo de encoders ópticos

133

set(handles.TOTGRAUSaquis,'String','45º'); set(handles.TOTGRAUStes,'String','45º'); % Choose default command line output for encoderGUI 128 handles.output = hObject; % Update handles structure guidata(hObject, handles); %################################################## ######################## % --- Outputs from this function are returned to th e command line. function varargout = encoderGUI128_OutputFcn(hObjec t, eventdata, handles) % varargout cell array for returning output args ( see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % Get default command line output from handles stru cture varargout1 = handles.output; %################################################## ######################## % --- Executes on selection change in popupmenuPPLA QUI. function popupmenuPPLAQUI_Callback(hObject, eventda ta, handles) % hObject handle to popupmenuPPLAQUI (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % Hints: contents = get(hObject,'String') returns p opupmenuPPLAQUI contents as cell array % contentsget(hObject,'Value') returns sel ected item from popupmenuPPLAQUI val = get(hObject,'Value'); str = get(hObject, 'String'); switch strval; %verifica opção no popup menu qde de pulsos por leitura - aquisiçao 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 settin g all properties. function popupmenuPPLAQUI_CreateFcn(hObject, eventd ata, handles) % hObject handle to popupmenuPPLAQUI (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles empty - handles not created until afte r all CreateFcns called % Hint: popupmenu controls usually have a white bac kground on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUic ontrolBackgroundColor')); end %################################################## ######################## % --- Executes on selection change in popupmenuLDAQ UI. function popupmenuLDAQUI_Callback(hObject, eventdat a, handles) % hObject handle to popupmenuLDAQUI (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % Hints: contents = get(hObject,'String') returns p opupmenuLDAQUI contents as cell array % contentsget(hObject,'Value') returns sel ected item from popupmenuLDAQUI val = get(hObject,'Value'); str = get(hObject, 'String'); switch strval; %verifica opção no popup menu qde de leituras desejadas - aquisiçao 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);

Page 144: Kit didático para estudo de encoders ópticos

134

%################################################## ######################## % --- Executes during object creation, after settin g all properties. function popupmenuLDAQUI_CreateFcn(hObject, eventda ta, handles) % hObject handle to popupmenuLDAQUI (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles empty - handles not created until afte r all CreateFcns called % Hint: popupmenu controls usually have a white bac kground on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUic ontrolBackgroundColor')); end %################################################## ######################## % --- Executes on button press in pushbuttonAQUIS. function pushbuttonAQUIS_Callback(hObject, eventdat a, handles) % hObject handle to pushbuttonAQUIS (see GCBO) % eventdata reserved - to be defined in a future v ersion 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 us uário(pulsos por leitura) case '2' fprintf(s,'2'); %envia pela serial pedido do us uário(pulsos por leitura) case '4' fprintf(s,'4'); %envia pela serial pedido do us uário(pulsos por leitura) otherwise end LD_AQUIS=get(handles.qde_leit_desej_AQUIS,'String') ; switch LD_AQUIS case '16' qde_leit_desej=16; case '32' qde_leit_desej=32; case '64' qde_leit_desej=64; case '128' qde_leit_desej=128; otherwise end fprintf(s,'Z'); %zeramento do encoder didático ao iniciar, envia pela serial n=0; %***** LAÇO DE LEITURA DA PORTA SERIAL ***** while (n<qde_leit_desej+1) %([leituras]) (n<VALOR), VALOR-1==multiplo do passo POS=fscanf(s,'%d') %leitura da posiçao atual do e ncoder didático pela serial H(n+1)=rem(now,1); %vetor hora atual em número se rial grafPOS(n+1)=POS; %vetor de posiçoes atuais n=n+1; end %fim while %***** LIBERA PORTA SERIAL ***** fclose(s) delete(s) clear s %***** 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=10; %10 segundos fopen(s) fprintf(s,'E'); %questiona sobre mudanças erradas d e estado EST_ERR=fscanf(s,'%d') %leitura do código que indic a qde mud est erradas %***** LIBERA PORTA SERIAL ***** fclose(s) delete(s) clear s %***** FORMATA O VETOR DE TEMPO ***** t_ref=datevec(H(1)); t(1)=0;

Page 145: Kit didático para estudo de encoders ópticos

135

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 posiçao se b aseia 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 %***** VARIÁVEIS 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 d a aquisição %################################################## ######################## % --- Executes on selection change in popupmenuPPLT ES. function popupmenuPPLTES_Callback(hObject, eventdat a, handles) % hObject handle to popupmenuPPLTES (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % Hints: contents = get(hObject,'String') returns p opupmenuPPLTES contents as cell array % contentsget(hObject,'Value') returns sel ected item from popupmenuPPLTES val = get(hObject,'Value'); str = get(hObject, 'String'); switch strval; %verifica opção 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,'St ring')); 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 settin g all properties. function popupmenuPPLTES_CreateFcn(hObject, eventda ta, handles) % hObject handle to popupmenuPPLTES (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles empty - handles not created until afte r all CreateFcns called % Hint: popupmenu controls usually have a white bac kground on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUic ontrolBackgroundColor')); end %################################################## ######################## % --- Executes on selection change in popupmenuLDTE S. function popupmenuLDTES_Callback(hObject, eventdata , handles) % hObject handle to popupmenuLDTES (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % Hints: contents = get(hObject,'String') returns p opupmenuLDTES contents as cell array % contentsget(hObject,'Value') returns sel ected item from popupmenuLDTES val = get(hObject,'Value'); str = get(hObject, 'String'); switch strval; %verifica opção no popup menu qde de leituras desejadas - teste case ' 16'

Page 146: Kit didático para estudo de encoders ópticos

136

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,'St ring')); 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 settin g all properties. function popupmenuLDTES_CreateFcn(hObject, eventdat a, handles) % hObject handle to popupmenuLDTES (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles empty - handles not created until afte r all CreateFcns called % Hint: popupmenu controls usually have a white bac kground on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUic ontrolBackgroundColor')); end %################################################## ######################## % --- Executes on button press in pushbuttonTESTE. function pushbuttonTESTE_Callback(hObject, eventdat a, handles) % hObject handle to pushbuttonTESTE (see GCBO) % eventdata reserved - to be defined in a future v ersion 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 us uário(pulsos por leitura) PPL_TESG=1; case '2' fprintf(s,'2'); %envia pela serial pedido do us uário(pulsos por leitura) PPL_TESG=2; case '4' fprintf(s,'4'); %envia pela serial pedido do us uário(pulsos por leitura) PPL_TESG=4; otherwise end LD_TES=get(handles.qde_leit_desej_TES,'String'); switch LD_TES case '16' qde_leit_desej=16; case '32' qde_leit_desej=32; case '64' qde_leit_desej=64; case '128' qde_leit_desej=128; otherwise end fprintf(s,'T'); %ajusta para modo teste, zerando in clusive, envia pela serial n=0; %***** LAÇO DE LEITURA DA PORTA SERIAL ***** while (n<qde_leit_desej+1) %([leituras]) POS=fscanf(s,'%d') %leitura da posiçao atual do e ncoder didático pela serial QDE_PULSOS_INTERV=fscanf(s,'%d') %leitura da cont agem de pulsos do canal %%A do encoder de referência no intervalo entre d uas transmissões de %%posição do encoder didático grafPOS(n+1)=POS; %vetor de posiçoes atuais grafPULS(n+1)=QDE_PULSOS_INTERV; %vetor de conta gem de pulsos no intervalo n=n+1; end %fim while

Page 147: Kit didático para estudo de encoders ópticos

137

fprintf(s,'F'); %finaliza modo teste, envia pela se rial %***** LIBERA PORTA SERIAL ***** fclose(s) delete(s) clear s %***** 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=10; %10 segundos fopen(s) fprintf(s,'E'); %questiona sobre mudanças erradas d e estado EST_ERR=fscanf(s,'%d') %leitura do código que indic a qde mud est erradas %***** LIBERA PORTA SERIAL ***** fclose(s) delete(s) clear s %***** CRIA O EIXO DE LEITURAS ***** N(1)=0; for i=2:1:n N(i)=i-1; end %***** VARIÁVEIS GLOBAIS ***** global nG; nG=n; global NG; NG=N; global grafPOSG; grafPOSG=grafPOS; global grafPULSG; grafPULSG=grafPULS; global EST_ERRG; EST_ERRG=EST_ERR; YY=encoderTESTE128; %chama a figura de resultados d o teste de precisão %################################################## ######################## % --- Executes on button press in pushbuttonSAIR. function pushbuttonSAIR_Callback(hObject, eventdata , handles) % hObject handle to pushbuttonSAIR (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) delete(handles.figuraPRINC);

Anexo VI %################################################## ######################## function varargout = encoderAQUIS128(varargin) % ENCODERAQUIS128 M-file for encoderAQUIS128.fig % ENCODERAQUIS128, by itself, creates a new EN CODERAQUIS128 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',...) crea tes a new ENCODERAQUIS128 or raises the % existing singleton*. Starting from the left , property value pairs are % applied to the GUI before encoderAQUIS128_Op eningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to encoderAQUIS 128_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Cho ose "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 hel p encoderAQUIS128 % Last Modified by GUIDE v2.5 28-Set-2007 16:50:41 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @encoderAQUIS1 28_OpeningFcn, ...

Page 148: Kit didático para estudo de encoders ópticos

138

'gui_OutputFcn', @encoderAQUIS1 28_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1); end if nargout [varargout1:nargout] = gui_mainfcn(gui_State, varargin:); else gui_mainfcn(gui_State, varargin:); end % End initialization code - DO NOT EDIT %################################################## ######################## % --- Executes just before encoderAQUIS128 is made visible. function encoderAQUIS128_OpeningFcn(hObject, eventd ata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % varargin command line arguments to encoderAQUIS 128 (see VARARGIN) global nG NG grafPOSG tG EST_ERRG; axes(handles.GRAF1); %plota, inicialmente, posição x número da leitura plot(NG,grafPOSG,'.-','Color',[0,0.25,0]) xlim([0 nG-1]) ylim('auto') xlabel('Número da leitura') ylabel('Posição [pulsos]') grid axes(handles.GRAF2); %plota, inicialmente, posição x tempo plot(tG,grafPOSG,'.-b') xlim([0 tG(nG)]) ylim('auto') xlabel('Tempo [s]') ylabel('Posição [pulsos]') grid switch EST_ERRG %interpretação e indicação do valo r aproximado de mud err de estado case 123 set(handles.ESTERR_AQUIS,'String','= 0'); case 55 set(handles.ESTERR_AQUIS,'String','< 5'); case 111 set(handles.ESTERR_AQUIS,'String','< 10'); case 222 set(handles.ESTERR_AQUIS,'String','< 20'); otherwise set(handles.ESTERR_AQUIS,'String','> 20'); end % Choose default command line output for encoderAQU IS128 handles.output = hObject; % Update handles structure guidata(hObject, handles); %################################################## ######################## % --- Outputs from this function are returned to th e command line. function varargout = encoderAQUIS128_OutputFcn(hObj ect, eventdata, handles) % varargout cell array for returning output args ( see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % Get default command line output from handles stru cture varargout1 = handles.output; %################################################## ######################## % --- Executes on selection change in popupmenuGRAF 1. function popupmenuGRAF1_Callback(hObject, eventdata , handles) % hObject handle to popupmenuGRAF1 (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % Hints: contents = get(hObject,'String') returns p opupmenuGRAF1 contents as cell array % contentsget(hObject,'Value') returns sel ected item from popupmenuGRAF1 global nG NG grafPOSG tG nVELG grafVELG tVELG; axes(handles.GRAF1); val = get(hObject,'Value'); str = get(hObject, 'String'); switch strval; %verifica opção no popup menu e p lota no gráfico 1 case ' Posicao x Numero da leitura' plot(NG,grafPOSG,'.-','Color',[0,0.25,0]) xlim([0 nG-1]) ylim('auto') xlabel('Número da leitura') ylabel('Posição [pulsos]') grid case ' Velocidade x Numero da leitura' plot(nVELG,grafVELG,'.-','Color',[0,0.25,0]) xlim([0 nG-1])

Page 149: Kit didático para estudo de encoders ópticos

139

ylim('auto') xlabel('Número da leitura') ylabel('Velocidade [pulsos/seg]') grid case ' Posicao x Tempo' plot(tG,grafPOSG,'.-b') xlim([0 tG(nG)]) ylim('auto') xlabel('Tempo [s]') ylabel('Posição [pulsos]') grid case ' Velocidade x Tempo' plot(tVELG,grafVELG,'.-b') xlim([0 tG(nG)]) ylim('auto') xlabel('Tempo [s]') ylabel('Velocidade [pulsos/seg]') grid otherwise end %################################################## ######################## % --- Executes during object creation, after settin g all properties. function popupmenuGRAF1_CreateFcn(hObject, eventdat a, handles) % hObject handle to popupmenuGRAF1 (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles empty - handles not created until afte r all CreateFcns called % Hint: popupmenu controls usually have a white bac kground on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUic ontrolBackgroundColor')); end %################################################## ######################## % --- Executes on button press in pushbuttonfechaAQ UIS. function pushbuttonfechaAQUIS_Callback(hObject, eve ntdata, handles) % hObject handle to pushbuttonfechaAQUIS (see GC BO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) delete(handles.figuraAQUIS); %################################################## ######################## % --- Executes on selection change in popupmenuGRAF 2. function popupmenuGRAF2_Callback(hObject, eventdata , handles) % hObject handle to popupmenuGRAF2 (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % Hints: contents = get(hObject,'String') returns p opupmenuGRAF2 contents as cell array % contentsget(hObject,'Value') returns sel ected item from popupmenuGRAF2 global nG NG grafPOSG tG nVELG grafVELG tVELG; axes(handles.GRAF2); val = get(hObject,'Value'); str = get(hObject, 'String'); switch strval; %verifica opção no popup menu e p lota no gráfico 2 case ' Posicao x Tempo' plot(tG,grafPOSG,'.-b') xlim([0 tG(nG)]) ylim('auto') xlabel('Tempo [s]') ylabel('Posição [pulsos]') grid case ' Velocidade x Tempo' plot(tVELG,grafVELG,'.-b') xlim([0 tG(nG)]) ylim('auto') xlabel('Tempo [s]') ylabel('Velocidade [pulsos/seg]') grid case ' Posicao x Numero da leitura' plot(NG,grafPOSG,'.-','Color',[0,0.25,0]) xlim([0 nG-1]) ylim('auto') xlabel('Número da leitura') ylabel('Posição [pulsos]') grid case ' Velocidade x Numero da leitura' plot(nVELG,grafVELG,'.-','Color',[0,0.25,0]) xlim([0 nG-1]) ylim('auto') xlabel('Número da leitura') ylabel('Velocidade [pulsos/seg]') grid otherwise end %################################################## ######################## % --- Executes during object creation, after settin g all properties. function popupmenuGRAF2_CreateFcn(hObject, eventdat a, handles) % hObject handle to popupmenuGRAF2 (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB

Page 150: Kit didático para estudo de encoders ópticos

140

% handles empty - handles not created until afte r all CreateFcns called % Hint: popupmenu controls usually have a white bac kground on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUic ontrolBackgroundColor')); end %################################################## ######################## % --- Executes on button press in pushbuttonEXPORT. function pushbuttonEXPORT_Callback(hObject, eventda ta, handles) % hObject handle to pushbuttonEXPORT (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) global NG tG grafPOSG nVELG tVELG grafVELG; nome='LEITURA'; %exporta dados para arquivo em excel xlswrite('encoder_aquisicao.xls',nome,'Plan1','A2') ; xlswrite('encoder_aquisicao.xls',NG','Plan1','A4'); nome='TEMPO [s]'; xlswrite('encoder_aquisicao.xls',nome,'Plan1','C2') ; xlswrite('encoder_aquisicao.xls',tG','Plan1','C4'); nome='POS [pulsos]'; xlswrite('encoder_aquisicao.xls',nome,'Plan1','E2') ; xlswrite('encoder_aquisicao.xls',grafPOSG','Plan1', 'E4'); nome='LEITURA'; xlswrite('encoder_aquisicao.xls',nome,'Plan1','G2') ; xlswrite('encoder_aquisicao.xls',nVELG','Plan1','G4 '); nome='TEMPO [s]'; xlswrite('encoder_aquisicao.xls',nome,'Plan1','I2') ; xlswrite('encoder_aquisicao.xls',tVELG','Plan1','I4 '); nome='VEL [pulsos/s]'; xlswrite('encoder_aquisicao.xls',nome,'Plan1','K2') ; xlswrite('encoder_aquisicao.xls',grafVELG','Plan1', 'K4'); set(handles.pushbuttonEXPORT,'ForegroundColor',[0.5 1,0.51,0.51]);

Anexo VII %################################################## ######################## function varargout = encoderTESTE128(varargin) % ENCODERTESTE128 M-file for encoderTESTE128.fig % ENCODERTESTE128, by itself, creates a new EN CODERTESTE128 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',...) crea tes a new ENCODERTESTE128 or raises the % existing singleton*. Starting from the left , property value pairs are % applied to the GUI before encoderTESTE128_Op eningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to encoderTESTE 128_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Cho ose "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 hel p 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', @encoderTESTE1 28_OpeningFcn, ... 'gui_OutputFcn', @encoderTESTE1 28_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1); end if nargout [varargout1:nargout] = gui_mainfcn(gui_State, varargin:);

Page 151: Kit didático para estudo de encoders ópticos

141

else gui_mainfcn(gui_State, varargin:); end % End initialization code - DO NOT EDIT %################################################## ######################## % --- Executes just before encoderTESTE128 is made visible. function encoderTESTE128_OpeningFcn(hObject, eventd ata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % varargin command line arguments to encoderTESTE 128 (see VARARGIN) global PPL_TESG; global nG NG grafPOSG grafPULSG EST_ERRG; axes(handles.GRAF1); %plota, inicialmente, posição x número da leitura plot(NG,grafPOSG,'.-','Color',[0,0.25,0]) xlim([0 nG-1]) ylim('auto') xlabel('Número da leitura') ylabel('Posição [pulsos]') grid axes(handles.GRAF2); %plota, inicialmente, qde de p ulsos no intervalo x número da leitura plot(NG,grafPULSG,'.-b') xlim([0 nG-1]) ylim([0 16*PPL_TESG]) xlabel('Número da leitura') ylabel('Qde de pulsos no intervalo [pulsos>RES]') grid switch EST_ERRG %interpretação e indicação do valo r 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 encoderTES TE128 handles.output = hObject; % Update handles structure guidata(hObject, handles); %################################################## ######################## % --- Outputs from this function are returned to th e command line. function varargout = encoderTESTE128_OutputFcn(hObj ect, eventdata, handles) % varargout cell array for returning output args ( see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % Get default command line output from handles stru cture varargout1 = handles.output; %################################################## ######################## % --- Executes on selection change in popupmenuGRAF 1. function popupmenuGRAF1_Callback(hObject, eventdata , handles) % hObject handle to popupmenuGRAF1 (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % Hints: contents = get(hObject,'String') returns p opupmenuGRAF1 contents as cell array % contentsget(hObject,'Value') returns sel ected item from popupmenuGRAF1 global PPL_TESG; global nG NG grafPOSG grafPULSG; axes(handles.GRAF1); val = get(hObject,'Value'); str = get(hObject, 'String'); switch strval; %verifica opção no popup menu e p lota no gráfico 1 case ' Posicao x Numero da leitura' plot(NG,grafPOSG,'.-','Color',[0,0.25,0]) xlim([0 nG-1]) ylim('auto') xlabel('Número da leitura') ylabel('Posição [pulsos]') grid case ' Qde de pulsos no intervalo x Numero da l eitura' plot(NG,grafPULSG,'.-b') xlim([0 nG-1]) ylim([0 16*PPL_TESG]) xlabel('Número da leitura') ylabel('Qde de pulsos no intervalo [pulsos>RES]') grid otherwise end

Page 152: Kit didático para estudo de encoders ópticos

142

%################################################## ######################## % --- Executes during object creation, after settin g all properties. function popupmenuGRAF1_CreateFcn(hObject, eventdat a, handles) % hObject handle to popupmenuGRAF1 (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles empty - handles not created until afte r all CreateFcns called % Hint: popupmenu controls usually have a white bac kground on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUic ontrolBackgroundColor')); end %################################################## ######################## % --- Executes on button press in pushbuttonfechaTE ST. function pushbuttonfechaTEST_Callback(hObject, even tdata, handles) % hObject handle to pushbuttonfechaTEST (see GCB O) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) delete(handles.figuraTEST); %################################################## ######################## % --- Executes on selection change in popupmenuGRAF 2. function popupmenuGRAF2_Callback(hObject, eventdata , handles) % hObject handle to popupmenuGRAF2 (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles structure with handles and user data ( see GUIDATA) % Hints: contents = get(hObject,'String') returns p opupmenuGRAF2 contents as cell array % contentsget(hObject,'Value') returns sel ected item from popupmenuGRAF2 global PPL_TESG; global nG NG grafPOSG grafPULSG; axes(handles.GRAF2); val = get(hObject,'Value'); str = get(hObject, 'String'); switch strval; %verifica opção no popup menu e p lota no gráfico 2 case ' Qde de pulsos no intervalo x Numero da l eitura' plot(NG,grafPULSG,'.-b') xlim([0 nG-1]) ylim([0 16*PPL_TESG]) xlabel('Número da leitura') ylabel('Qde de pulsos no intervalo [pulsos>RES]') grid case ' Posicao x Numero da leitura' plot(NG,grafPOSG,'.-','Color',[0,0.25,0]) xlim([0 nG-1]) ylim('auto') xlabel('Número da leitura') ylabel('Posição [pulsos]') grid otherwise end %################################################## ######################## % --- Executes during object creation, after settin g all properties. function popupmenuGRAF2_CreateFcn(hObject, eventdat a, handles) % hObject handle to popupmenuGRAF2 (see GCBO) % eventdata reserved - to be defined in a future v ersion of MATLAB % handles empty - handles not created until afte r all CreateFcns called % Hint: popupmenu controls usually have a white bac kground on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUic ontrolBackgroundColor')); end %################################################## ######################## % --- Executes on button press in pushbuttonEXPORT. function pushbuttonEXPORT_Callback(hObject, eventda ta, handles) % hObject handle to pushbuttonEXPORT (see GCBO) % eventdata reserved - to be defined in a future v ersion 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','A 4'); nome='POS [pulsos]'; xlswrite('encoder_testeprecisao.xls',nome,'Plan1',' C2'); xlswrite('encoder_testeprecisao.xls',grafPOSG','Pla n1','C4'); nome='QDE NO INTERV [pulsos>RES]'; xlswrite('encoder_testeprecisao.xls',nome,'Plan1',' E2'); xlswrite('encoder_testeprecisao.xls',grafPULSG','Pl an1','E4'); set(handles.pushbuttonEXPORT,'ForegroundColor',[0.5 1,0.51,0.51]);