Encoder + Arduino, da forma correta

Encoders são dispositivos eletro-mecanicos utilizados como sensores de rotação. Talvez seu uso mais comum seja como controle de volume em sistemas de som, ou para menus. Também eram utilizados nos mouses antigos, ‘de bolinha’, para adquirir informação sobre a movimentação do mouse.

Eles geralmente são utilizados para substituir o potenciômetro, com a principal vantagem de não terem limite de curso: enquanto um potenciômetro têm até 10 voltas de curso, o mais comum sendo algo menos que uma volta (360 graus), o encoder pode girar indefinitivamente em ambas direções. Além disso o encoder é um dispositivo Incremental por natureza, enquanto o potenciômetro é Absoluto. Isso possibilita o uso de diversos métodos de controle para a mesma variável: você pode ter encoders em diferentes locais alterando o mesmo valor.

Quando desenvolvendo um painel de controle para uma máquina decidi que iria utilizar um encoder para alterar a velocidade de um motor. O CLP utilizado não possibilitava uso de encoders, então desenvolvi um projeto simples utilizando Arduino para ler o encoder e gerar pulsos para o CLP. Duas entradas digitais do CLP são utilizadas, cada pulso aumenta ou diminui a velocidade do motor em 1%. Uma das entradas aumenta e outra diminui a velocidade. Os leds indicam os pulsos.

Copiei o exemplo do site oficial do Arduino apenas para descobrir que ele não oferece o desempenho que eu procurava. Continuei minha procura na internet e testei ao menos 20 implementações diferentes. E de forma geral todas elas fedem. Foi quando encontrei um site em inglês que explica (e disponibiliza o código fonte) como implementar a leitura de um encoder da forma CORRETA.

Aos letrados em inglês sugiro a leitura: http://www.buxtronix.net/2011/10/rotary-encoders-done-properly.html

Como implementar o código:

  1.  Baixe o arquivo fornecido pelo autor do código em http://us.cactii.net/~bb/RotaryLib.zip.
  2. O arquivo contém três pastas. Eu prefiri usar o código como biblioteca, utilizando a pasta ‘Library’. Copie seu conteúdo e

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *