ROTARY ENCODER

O Rotary Encoder é um dispositivo mecânico que converte o movimentos de rotação de um eixo em pulsos elétricos que podem ser usados para medir a direção da rotação (sentido horário ou anti-horário), a velocidade de rotação ou a posição do eixo rotativo. Alguns Rotary Encoder já possuem botões para facilitar a comunicação com o microcontrolador, permitindo que, por exemplo, uma rotina seja chamada quando o eixo do Rotary Encoder atinja uma determinada posição.

Para conectar o Rotary Encoder no microcontrolador é necessário que seus pinos Data, Clock e Switch estejam conectados ao polo positivo da fonte (pull-up) através de resistores de 4K7 a 10K. O esquema elétrico abaixo, mostra como fazer uma placa para conectar os resistores no Rotary Encoder, onde as saídas Data, Clock e Switch devem ser levadas aos pinos de entrada do microcontrolador. A foto a direita mostra um desses dispositivos e a configuração de seus pinos.

Funcionamento

O funcionamento do Rotary Encoder é relativamente simples. Girando o eixo no sentido horário, o Rotary Encoder vai gerar dois sinais quadrados, conforme mostra a figura 2, onde o sinal amarelo representa o Data e o sinal azul o Clock. Esses dois sinais formam um padrão que pode ser reconhecido pelo programa do microcontrolador para saber em qual direção o eixo foi girado e, contando-se os pulsos recebidos, o programa pode saber, quantas voltas o eixo executou, bem como a velocidade de giro do eixo.

Do mesmo modo, giranto-se o eixo no sentido anti-horário, o Rotary Encoder vai gerar dois sinais quadrados, conforme mostra a figura 3, onde o sinal amarelo representa o Data e o sinal azul o Clock. Esses dois sinais formam um padrão que pode ser reconhecido pelo programa do microcontrolador para saber em qual direção o eixo foi girado e, contando-se os pulsos recebidos, o programa pode saber, também, quantas voltas o eixo executou.

Analisando o comportamento dos sinais

Analisando o comportamento dos sinais da figura 2, gerados pelo Rotary Encoder quando o eixo é girado no sentido horário, notamos que antes do movimento do eixo iniciar, os dois sinais se encontram no nível alto (1) e, quando o movimento do eixo inicia, o sinal Data (amarelo) cai ao nível baixo (0), seguido do sinal Clock (azul) que também cai ao nível baixo instantes depois. A leitura dos sinais deverá ser realizada pelo programa do microcontrolador enquanto o sinal Clock (azul) estiver no nível baixo (0). Esse padrão se repetirá enquanto o eixo estiver se movendo no sentido horário. A tabela abaixo mostra o padrão para identificação do sentido do giro do eixo no sentido horário.

DATA CLOCK
 0   1 
 0   0 
 1   0 
 1   1 

No sentido anti-horário, sinais mostrados na figura 3, notamos que antes do movimento do eixo iniciar, os dois sinais também se encontram no nível alto (1). Ao iniciar o movimentos no sentido anti-horário, o sinal Clock (azul) cai a nível baixo (0) seguido, em poucos instantes, pelo sinal Data (amarelo). Do mesmo modo explicado anteriormente, A leitura dos sinais deverá ser realizada enquanto o sinal Clock (azul) estiver no nível baixo (0) e esse padrão se repetirá enquanto o eixo estiver se movendo no sentido anti-horário. A tabela abaixo mostra o padrão para identificação do sentido do giro do eixo no sentido anti-horário.

DATA CLOCK
 1   0 
 0   0 
 0   1 
 1   1 


Formato dos sinais gerados pelo rotary encoder

Figura 2 - Sentido horário
Figura 3 - Sentido horário

Montagem de teste

Para testar o funcionamento do Rotary Encoder, monte o circuito da figura 4, usando um microcontrolador PIC16F628A.

Figura 4 - Circuito teste
Clique na figura para ampliar



Firmware para o microcontrolador

Baixar e salvar num diretório o arquivo ROTARY_LEDS.zip.

Descomprimir o arquivo e gravar o microcontrolador usando o arquivo 'rtyleds.hex'.

Após a gravação, testar o circuito girando o Rotary Encoder no sentido horário e verificar que contagem nos LEDs deverá aumentar.

Girando no sentido anti-horário a contagem deverá regredir.

Se o botão do Rotary Encoder for pressionado, os LEDs deverão piscar rapidamente.

No diretório de distribuição encontra-se a biblioteca de controle do Rotary Encoder 'rtyfuncs.inc' que é amplamente comentada e poderá ser analisada para compreender seu funcionamento.


Índice Alfabético dos Projetos




H P S P I N

Desde 04 de Março de 2010

Atualização: 17 de Sep de 2025