Páginas

sábado, 4 de setembro de 2010

Automacao / Encoders

Hoje discutiremos um assunto que vai de encontro a alguns projetos futuros,
e de alguma forma deve ajudar ao meu amigo de infância. Renato.
alguns desses conceitos vão nos ajudar a elaborar projetos mais avançados no futuro.  


ENCODERS


Este é sem dúvida nenhuma um dos equipamentos mais usados em Automação Industrial e Mecatrônica, pois com ele conseguimos converter movimentos angulares e lineares em informações úteis à nossa máquina ou processo. Neste artigo vamos abordar alguns dos tipos de encoders, seu princípio de funcionamento e suas aplicações.
Basicamente o encoder é um transdutor que converte um movimento angular ou linear em uma série de pulsos digitais elétricos. Esses pulsos gerados podem ser usados para determinar velocidade, taxa de aceleração, distância, rotação, posição ou direção.

Das principais aplicações dos encoders são, podemos destacar:



  • - em eixos de Máquinas Ferramentas NC e CNC;
  • - em eixos de Robôs;
  • - controle de velocidade e posicionamento de motores elétricos;
  • - posicionamento de antenas parabólicas, telescópios e radares;
  • - mesas rotativas; e
  • - medição das grandezas acima mencionadas de forma direta ou indireta.
Olhando por dentro o sistema de leitura é baseado em um disco (encoder rotativo), formado por janelas radiais transparentes e opacas alternadas. Este é iluminado perpendicularmente por uma fonte de luz infravermelha, quando então, as imagens das janelas transparentes são projetadas no receptor. O receptor converte essas janelas de luz em pulsos elétricos conforme os desenho das figuras 1 e 2. Os encoders podem ser divididos em encoders incrementais e absolutos.


fig 1.


Fig 2.


ENCODERS INCREMENTAIS



Vamos la então, o encoder incremental fornece normalmente dois pulsos quadrados defasados em 90º, que são chamados normalmente de canal A e canal B. A leitura de somente um canal fornece apenas a velocidade, enquanto que a leitura dos dois canais fornece também o sentido do movimento.

Um outro sinal chamado de Z ou zero também está disponível e ele dá a posição absoluta "zero" do encoder. Este sinal é um pulso quadrado em que a fase e a largura são as mesmas do canal A.

Então posso dizer, que com um pouco de raciocínio lógico, qualquer programador pode fazer uma lógica
Sim um programa que  baseado nesses 3 canais, Armazene os dados de contagem, registrando a posição do eixo, parece facil, mais devemos seguir alguns detalhes:
somar sentido horario; diminuir sentido anti horario; 
 Esta lançado o desafio! pro meu amigo renato rsrsrsrs
  • A  = I0.0
  • B  = I0.1
  • Z  = I0.2
Possa registrar os pulsos, acrescentando e diminuindo de acordo com o sentido de rotação de seu eixo.
  • Por hoje aguardo o resultado deste desafio, os leitores, podem fazer em qualquer lógica,arduino, s7200, em lader ou lista.postem pois e praticando que se aprende!

Veja o exemplo da figura 3.


Figura 3 - Representação gráfica dos sinais A, B e Z de um encoder incremental.
A resolução de um encoder incremental é dada por pulsos/revolução (normalmente chamado de PPR), isto é, o encoder gera uma certa quantidade de pulsos elétricos por uma revolução dele próprio (no caso de um encoder rotativo).


Para determinar a resolução basta dividir o número de pulsos por 360º, por exemplo, um encoder fornecendo 1024 pulsos/ revolução, geraria um pulso elétrico a cada 0,35º mecânicos.


A precisão do encoder incremental depende de fatores mecânicos, elétricos e ambientais, que são: erros na escala das janelas do disco, excentricidade do disco, excentricidade das janelas, erro introduzido na leitura eletrônica dos sinais, temperatura de operação e nos próprios componentes transmissores e receptores de luz.


Normalmente, nos encoders incrementais são disponibilizados além dos sinais A, B e Z, também os sinais complementares, /A, /B e /Z .
Encoder Incremental




ENCODERS ABSOLUTOS


O princípio de funcionamento de um encoder absoluto e de um encoder incremental é bastante similar, isto é, ambos utilizam o princípio das janelas transparentes e opacas, com estas interrompendo um feixe de luz e transformando pulsos luminosos em pulsos elétricos.

Adicionar legenda
O encoder absoluto possui um importante diferencial em relação ao encoder incremental: a posição do encoder incremental é dada por pulsos a partir do pulso zero, enquanto a posição do encoder absoluto é determinada pela leitura de um código e este é único para cada posição do seu curso; consequentemente os encoders absolutos não perdem a real posição no caso de uma eventual queda da tensão de alimentação (até mesmo se deslocados). Quando voltar a energia ao sistema, a posição é atualizada e disponibilizada para o mesmo (graças ao código gravado no disco do encoder) e, com isso, não se precisa ir até a posição zero do encoder para saber a sua localização como é o caso do incremental.


O código de saída é utilizado para definir a posição absoluta do encoder. O código mais empregado é o binário, pois este é facilmente manipulado por um circuito relativamente simples e, com isso, não se faz necessário nenhum tipo de conversão para se obter a posição real do encoder. O código é extraído diretamente do disco (que está em rotação). O sincronismo e a aquisição da posição no momento da variação entre dois códigos tornam-se muito difíceis. Se nós pegarmos como exemplo dois códigos consecutivos binários como 7 (0111) e 8 (1000), notaremos que a variação de zero para um e um para zero ocorre em todos os bits, e uma leitura feita no momento da transição pode resultar em um valor completamente errado (figura 4).

PS...  No proximo post Discutiremos sobre Códigos Binários ( Em Construção...)




Figura 4 - Zona de Múltiplas comutações em um encoder absoluto.


Para solucionar esse problema é utilizado um código binário chamado "Código Gray", que tem a particularidade de na comutação de um número para outro somente um bit ser alterado como podemos verificar na tabela abaixo.
Figura 5.
Podemos observar na figura acima, dois discos ópticos um com código binário e outro em código Gray. Sendo mais detalhista podemos concluir que o Código Gray é um código binário no qual um e apenas um bit da palavra binária é alterado para cada posição ou número sequencial. O fato de um só bit ser alterado por vez faz com que fique mais fácil para os módulos de entrada dos circuitos eletrônicos como por exemplo um CLP lerem estes dados e identificarem válidos e posições ambíguas, principalmente em dispositivos como encoders, que servem para indicar a posição angular de um eixo. 




Se compararmos como exemplo o código binário natural e o código Gray da figura 6 podemos observar que na transição da posição 7 para 8 o resultado será:

    Fig 6.
  • Código binário:
Todos os quatro bits do código binário foram alterados.


  • Código Gray:
Só o dígito mais significativo (MSB) se modificou.
Isso facilita bastante pois como muda apenas um bit, o número máximo de erro de ambiguidade seria apenas de uma contagem. Com isso o módulo de entrada leria somente (7)0100 ou (8)1100.


Então! Espero que estejam acompanhando e entendendo? Comentem pois assim saberei focar o assunto em suas necessidades. rsrsrsrsrs

Vamos em frente!


Vou por aqui, algo que pode ajudar no desafio acima.


Conversão de Código Gray para código binário:



A conversão do Código Gray para o código binário natural pode ser descrita como um processo de série de portas Exor. (OU Exclusivo)
Observe que o dígito mais significativo do Código Gray tem a mesma seqüência do bit mais significativo do código binário. No caso de quatro variáveis o dígito Binário(D) e Gray(D).
O bit imediatamente inferior em código binário ao bit mais significativo (MSB) pode ser obtido através de uma porta exor do Binário(D) e Gray (D).
Seguindo este raciocínio você pode obter o restante do código binário, como é mostrado na figura 7.
Fig 7.
O interessante é que este mesmo raciocínio pode ser invertido para gerar um Código Gray a partir de um código binário, como mostra a figura 8:
Fig 8.

Enfim acho que de código já chega!
Estou sem skype e msn, no momento minha única diversão é aqui. rsrsrsrs
  • Quero mais um exercício!
  • Façam um CKT equivalente aos da figura 7 e 8, usando o S7300, e postem  
A resolução de um encoder absoluto é dada por contagem/revolução, isto é, se ele tiver no seu disco (encoder rotativo) 12 faixas para o código Gray, então terá 212 combinações possíveis perfazendo um total de 4096 combinações. Fazendo algumas contas, concluiremos que o encoder gera uma combinação de códigos a cada 0,0879º ou 0º8m79s. Podemos verificar outras resoluções para encoders absolutos na tabela abaixo.


Tabela.



Os encoders absolutos podem ter sua resolução definida em uma única revolução (single turn) ou em várias revoluções (multi turn), ou seja, se um encoder é para uma revolução, a cada revolução o valor da contagem é reinicializado, ao contrário de um encoder para várias revoluções onde seu valor só é reinicializado depois de um certo número de voltas. Seguem na tabela abaixo algumas especificações de encoders absolutos.

 
Como poderão observar, existem resoluções múltiplas de 2 e também múltiplas de 360, portanto, a escolha de um ou de outro dependerá diretamente da sua aplicação.



Quando o número bits da resolução do encoder não é potência de 2, a propriedade de mudar somente um único bit deixa de ser verdadeira no código Gray. Por exemplo, se tivermos um encoder absoluto com 12 posições/revolução, o código é o ilustrado na tabela abaixo.






Como podemos notar na passagem da posição 11 para a posição 0, existe uma mudança de três bits e, como visto anteriormente, envolve erros de leitura que não são aceitáveis. Com o intuito de não perder a característica de mudança de somente um bit, é feito um “off-set” a partir do valor zero, que é calculado da seguinte forma:

N = X - NPOS / 2

Onde:

N é o valor do off-set.
X = 2 elevado a n = é o maior valor múltiplo de dois, logo após o NPOS.
NPOS é o número de posições do encoder absoluto.

Para o nosso exemplo temos (tabela abaixo):
N = (X - 12) / 2 = (16 - 12) / 2 = 2
X = 2 elevado a 4






Continua...

Um comentário:

  1. Muito bom o material, ajuda bastante.
    Gostaria de saber se você poderia me ajudar.
    Tenho um encoder incremental e preciso de duplicar o sinal dele, manda o mesmo sinal para um CLP e para uma placa de aqusição, so que não acho nenhum equipamento que possa fazer isso, você conhece algum? Obrigado

    ResponderExcluir

teste comentario