H P S P I N E l e t r ô n i c a D i g i t a l e P r o g r a m a ç ã o d e M i c r o c o n t r o l a d o r e s P I C |
HOME PROJETOS PROGRAMAÇÃO |
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.
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 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 |
|
|
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 |
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 |
![]() |