Os "encoders" são muito utilizados em Automação e Robótica. Com esses "sensores" é possível converter movimentos lineares ou angulares em informações para um sistema, permitindo-nos assim saber qual a posição atual do nosso robô, motor, ou qualquer que seja o dispositivo monitorado. Neste artigo trataremos não apenas da teoria, como também demonstraremos o uso de um "encoder" do tipo comercial e outro "made in home".

 

Nota: Este artigo saiu numa Mecatrônica Fácil de 2003

 

Os "encoders" são na verdade "transdutores" de movimento. Eles são capazes de converter movimentos lineares ou angulares em informações elétricas que podem, com o auxílio de um microcontrolador, ser transformadas em informações binárias e, consequentemente, trabalhadas por um "programa" que através de um algoritmo converta a informação passada em algo que possa ser entendido como: distância, velocidade, etc.

Parece complicado, mas imagine a seguinte situação: você desenvolveu um braço mecânico (robô manipulador) e enviou um certo comando para ele previamente gravado. Esse comando faz com ele posicione o braço a uma certa altura, para que ele possa "pegar" uma determinada peça (isso já com todos os ensaios, feitos). Mas, algo aconteceu e o braço ficou a alguns centímetros do "alvo". Se todo o processo for automatizado, todos os outros movimentos seguintes não serão mais precisos. A peça não será "apanhada" e nada mais parecerá funcionar.

Com o uso de um "encoder" você poderia facilmente resolver o problema. Ele informaria a posição, ou quantidade de passos executados. Seu programa compararia a resposta deste com o comando enviado ao braço. Se igual, tudo está bem. Se a informação do "encoder" fosse diferente, bastaria corrigir a posição do braço.

Tudo isso feito de maneira "on-line". Pode-se notar que com o uso dos "encoders" todo um processo mecânico ganha muito em precisão. Sua utilidade é tamanha que na indústria os "encoders" são utilizados em:

- Máquinas CNC;

- Eixos de robôs (cada um possui o seu);

- Controle de velocidade para motores; - Controle de sentido (posicionamento) de motores;

- Posicionamento de antenas, telescópios, radares, etc;

- Mesas "XY";

- E muitas outras.

Portanto, se o leitor pensa em desenvolver um sistema automatizado preciso, o emprego de "encoders" é altamente recomendável. Garante-se assim a precisão do sistema.

 

 

COMO FUNCIONAM

 

Os "encoders" possuem internamente um ou mais discos (máscaras) com furos e partes "sem furos". Entre esses discos, encontram-se transmissores e receptores IR (geralmente). A luz infravermelha, gerada pelo "transmissor", ao atravessar a máscara (parte com furo) encontra o "receptor". Este, com o apoio de um circuito eletrônico gera um pulso. Veja a figura 1.

 


 

 

 

A quantidade de pulsos em uma volta, nos "encoders" rotativos, demonstra a relação impulso/volta do mesmo. Quanto maior for esta relação (número de pulsos por volta) maior a precisão obtida com o "encoder" (graus mecânicos). Por exemplo, um "encoder" que gere 50 pulsos por volta teria a seguinte relação:

Impulso/volta = 360°/50 = 1 pulso a cada 7,2° mecânicos.

Ainda abordando seu funcionamento, vale salientar os incrementais e os absolutos.

 

 

ENCODERS INCREMENTAIS

 

Os "encoders incrementais" possuem em geral duas saídas: uma "A" e outra "B". Estas saídas são defasadas em 90°, ou seja, a saída "B" gera um pulso 90° atrasado em relação ao pulso gerado pela saída "A" quando em um sentido, e 90° adiantado quando em outro. Assim, podemos saber em que sentido nosso motor ou eixo está girando; observe a figura 2.

 


 

 

 

Este tipo de "encoder" possui normalmente uma outra saída, chamada de "Z" (zero). Ela gera um pulso quando o "encoder" atinge sua posição absoluta zero, ou seja, o ponto inicial. Esse pulso tem largura e fase iguais ao do canal A.

Podemos, assim, chamar este tipo de encoder de: "Encoder Incremental Bidirecional". O leitor deve estar se perguntando: "Existe um Encoder Incremental Unidirecional?" Sim, existe. Eles são usados geralmente com o propósito de medir a velocidade de um eixo (motor).

O leitor deve atentar ainda para o fato de que também é possível medir a velocidade de um eixo qualquer, com um "encoder" bidirecional. Quanto mais rápidos forem os pulsos (contagem do total passado pelo "encoder") maior será a velocidade. Dessa forma, podemos através de cálculos determinar e controlar a velocidade desejada. Também é possível determinar a velocidade utilizando o pulso enviado pelo sinal "zero".

 

 

Nota:

 

Veja que os "encoders", como já dito, são transdutores que informam sobre posição, -velocidade e sentido de um eixo. Deve-se entender que todo o controle sobre as "variáveis" já comentadas é feito pelo controlador principal (CLP, microcontrolador etc.) através de um programa. Os "encoders", por si só, não realizam este controle. Eles apenas enviam as informações necessárias, que após sua correta interpretação, permitirão o controle efetivo sobre o movimento desejado.

 

 

ENCODERS ABSOLUTOS

 

Os "encoders" absolutos operam de forma similar aos incrementais. Também possuem internamente máscaras que são atravessadas por sinais infravermelhos. A diferença básica está no tipo de sinal enviado. Ela é codificada para cada posição, ou seja, para cada posição, um "valor' binário é enviado. Frequentemente, utiliza-se o "Código Gray" para evitar erros de leitura. Esse código determina que na comutação de um código para outro (posição) apenas um bit seja alterado. Assim, evita-se leituras errôneas durante a transição.

Porém, a principal diferença entre os encoders incrementais e os absolutos está em sua aplicação. Um encoder incremental precisa ser posicionado em seu "zero" (lembram do sinal zero) para que seja possível contar os "passos" do movimento. Em um encoder absoluto, isso não é necessário, pois ele informa sua posição atual sempre. A maioria dos robôs manipuladores de alta precisão utilizam este tipo de encoder.

 

 

UM POUCO DE PRÁTICA

 

Neste artigo trataremos mais sobre os "encoders" incrementais bidirecionais. Podemos encontrar no mercado soluções relativamente baratas e já prontas. Com estes, é possível implementar (ou melhorar significativamente) um projeto de conclusão de Curso ou mesmo "aquele robô" já montado, ou que está para ser montado.

Um exemplo de um encoder comercial pode ser visto na figura 3. Esse encoder, fabricado pela "S&E Instrumentos de Testes e Medição LTDA", tem as seguintes características técnicas:

 

Mecânicas:

Invólucro: caixa e tampa em alumínio fundido.

Pintura: tinta especial de alta resistência:

Eixo: em aço, diâmetro 8 mm, acabamento oxidado em preto.

Mancais: rolamentos blindados auto lubrificados de alta rotação.

Momento de inércia do eixo: 25 g/cm.

Carga máxima radial no eixo: 2 kgf.

Carga máxima axial no eixo: 1 kgf.

Vibração máxima: 1 G na frequência de 10 a 1.000 Hz.

Velocidade máxima: 10.000 RPM.

Grau de proteção: IP 54.

Peso: 350 g.

 

Elétricas:

Alimentação: 12 Vcc, opcional 5 V e 24 V.

Consumo: 20 mA sem carga nas saídas.

Tipo de saída: transistor PNP coletor aberto.

Corrente na saída: limitada contra curto-circuito em 40 mA.

Nível de saída alto: tensão de alimentação - 0,7Volts.

Forma de onda do pulso: quadrada, relação entre os tempos 50% +/- 10%.

Tempo de transição para o nível alto: 1 µs (0,000001 segundos).

Tempo de transição para nível baixo: depende da capacitância da carga.

Frequência máxima de saída: 8.000 Hz.

Bidirecional: duas saídas defasadas em 90 graus +/- 20 graus.

Rigidez dielétrica caixa/circuito: 500 volts por 1 segundo.

Temperatura máxima de operação: 70 graus Celsius.

Cabo de ligação: capa PVC/PVC, bitola AWG 26 com malha de blindagem.

Comprimento do cabo: padrão 2 metros.

Relação impulsos/volta: versões para 1, 2, 3, 4, 5, 6, 10, 12, 15, 28, 30, 36, 50, 60, 80 e 100.

Definição do limite de velocidade:

 

RPM máx = [ 8000 Hz / (número impulsos / volta) ] x 60

 

As dimensões deste encoder podem ser vistas na figura 3. Podemos observar que não se trata de um equipamento grande, portanto, pode ser facilmente empregado em qualquer projeto de pequeno e médio porte sem maiores problemas.

 


 

 

 

 

APLICAÇÕES PRÁTICAS

 

Até o presente momento, demonstramos aqui nesta Revista alguns projetos que poderiam usufruir dos benefícios de um encoder como o apresentado. Um deles sem dúvida alguma é o RM-1 (Robô Manipulador"1"). Nosso projeto era bem simples e posicionava o "braço" com servos. Porém, não foi utilizado qualquer "sensor" de posicionamento. Para os leitores que pretendem montá-lo como projeto de finalização de Curso (técnico ou mesmo engenharia) uma ideia seria o uso de "encoders". Esta sofisticação traria ao robô mais precisão em seus movimentos, principalmente naqueles "gravados" e executados de forma sequencial.

Sempre lembrando ao estudante e mesmo "hobista" que o conhecimento de soluções "prontas", encontradas no mercado, é de uso tanto em suas bancadas (projetos pessoais) como também em empresas. Devemos estar atentos para as novidades oferecidas. Saber como funcionam e também aplicá-las pode fazer a diferença na busca ou manutenção de um emprego.

Uma sugestão de uso e aprendizagem para este encoder pode ser observada na figura 4. Nela sugerimos uma montagem mecânica de posicionamento linear com um encoder do tipo rotativo, que pode ser utilizado em mesas "XY", por exemplo.

 


| Clique na imagem para ampliar |

 

 

Foi utilizado um parafuso de "40 cm", madeira para base, um motor de passo simples e um encoder modelo GI-BD-50-24V, saída PNP.

 

 

UM CIRCUITO BÁSICO

 

Como já é de praxe aqui na Revista Mecatrônica Fácil, procuramos trazer sempre ao nosso leitor um circuito simples para facilitar a fixação do que foi dito durante, digamos, nossa "introdução teórica".

O circuito pode ser analisado na figura 5 e é bem simples. Ele traz a ideia de um encoder incremental bidirecional (porém sem a linha de "zero") e é capaz de determinar a direção do "eixo" e até mesmo a velocidade deste, mas sem muita precisão (isso é apenas urna experiência, não um circuito definitivo).

Ele foi composto por dois sensores IR com receptor e transmissor no mesmo invólucro. Este tipo é facilmente encontrado em mouses e pode até ser "subtraído" de um, caso o leitor disponha de algum fora de uso (sucata).

Esses sensores são ligados de maneira que seus transmissores (LEDs IR) sempre estejam transmitindo. Os receptores tiveram suas entradas inseridas em um amplificador operacional LM358 (dois OPs em um único invólucro) configurado como amplificador não inversor. A função deste Cl é amplificar o sinal ao nível máximo de 5 volts.

Após a passagem do sinal, o mesmo é entregue a uma porta do tipo "Schmitt Trigger" para que possa ser transformada em forma "quadrada". Isso é necessário para que o sinal fique na forma ideal para qualquer microcontrolador, como um Basic Step ou mesmo MC, por exemplo.

A parte mecânica foi construída com papelão. Ela recebeu dois furos, por onde o sinal IR passará, gerando o pulso.

 


| Clique na imagem para ampliar |

 

 

 

A montagem

 

Nosso pequeno protótipo foi montado em uma matriz de contatos (figura 6). O leitor que desejar realizar outro tipo de montagem como, por exemplo, uma placa de circuito impresso ou mesmo placa padrão deverá fazê-lo usando as ferramentas e técnicas necessárias para tal. A revista publicou recentemente dois artigos muito interessantes, que poderão ajudá-lo nessa "empreitada": "Como, usar uma placa padrão - n°10 - Maio-Junho/2003" e "Como projetar e confeccionar placas de circuito impresso – n°12 - Setembro-Outubro/2003".

 


| Clique na imagem para ampliar |

 

 


 

 

A construção do disco (máscara) exige um certo cuidado. Os sensores devem ser montados de maneira a formarem um ângulo de 90° entre si. O disco deve ser posicionado de maneira que os furos possam ser utilizados pelos sensores. Veja a figura 7.

 


 

 

 

É possível verificar "virtualmente" a forma de onda (sinal "A" e sinal "B") através dos LEDs. LED apagado = sinal alto, LED aceso = sinal baixo.

 

 

Dica de uso

 

Para usar o "encoder" aqui descrito (ou mesmo o comercial que demonstramos) com um Basic Step, o leitor terá de ligar suas referidas saídas nos pinos de I/0 do Basic Step. O comando PULSIN pode informar o tamanho do pulso recebido:

PULSIN 0, 0, b0 (veja o help no compilador para este comando para entender melhor seu funcionamento).

Com esse comando é possível medir a velocidade de giro do motor, por exemplo. Para determinar o seu sentido, o leitor deverá construir uma sequência de "IF's", por exemplo.

O leitor pode notar que a rotina apresentada ao lado não é muito precisa. Ela testa os pinos para ver qual entra em modo ativo primeiro. Depois, aguarda o próximo e determina sua direção.

Para que a mesma funcione corretamente é importante que o disco seja posicionado de maneira: a "tampar" ambos os sensores. Somente quando o motor for ligado é que os sensores receberão os sinais. Isso se deve ao fato de não termos a linha de "zero" para informar a posição inicial.

 

 

CONCLUSÃO

 

O presente artigo trouxe ao leitor conhecimentos teóricos básicos sobre os "encoders". Uma pesquisa para aqueles que pretendem se aprofundar mais no assunto é sempre recomendada. A pequena experiência prática demonstrada pode ser empregada em vários projetos pelo leitor. Use sua imaginação e teste todas as possibilidades. Boas experiências e até a próxima!