Como usar com Arduino – Módulo Encoder Rotativo KY-040

Como usar com Arduino – Módulo Encoder Rotativo KY-040

img00_como_usar_com_arduino_modulo_encoder_rotativo_ky_040_pulso_pwm_quadrado_botao_push

– Descrição:

Módulo Encoder Rotativo KY-040 é um componente de medição regular desenvolvido com a finalidade de converter movimentos rotativos (ou lineares) em impulsos elétricos de onda quadrada. Os impulsos elétricos produzidos pelo encoder podem ser interpretados por plataformas microcontroladas e estes impulsos produzem uma quantidade exata (de 20 pulsos por rotação) em cada volta.

Módulo Encoder Rotativo KY-040 tem a aparência de um potenciômetro, contudo seu funcionamento é diferente. Além disso, este encoder possui rotação contínua e tem um botão embutido em seu eixo, bastando pressionar o eixo para acionamento do botão.

– Especificações e características:

– Modelo: KY-040
– Tensão máxima: 5VDC
– Corrente máxima: 10mA
– Pulsos por rotação: 20
– Tipo de rotação: contínua
– Comprimento do eixo: 10mm
– Diâmetro do eixo: 5mm

– Aplicações:

Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário converter movimentos rotativos (ou lineares) em impulsos elétricos de onda quadrada.

– Proposta da prática:

Utilizar o Módulo Encoder Rotativo KY-040 em conjunto com o Arduino e mostrar no monitor serial do ambiente de programação do Arduino o sentido do giro do eixo e a posição atual do encoder.

– Lista dos itens necessários:

01 – Arduino com Cabo USB
01 – Módulo Encoder Rotativo KY-040
05 – Cabos Jumper macho-fêmea

– Esquema de ligação da prática:

img01_como_usar_com_arduino_modulo_encoder_rotativo_ky_040_pulso_pwm_quadrado_botao_push

– Tutorial de instalação e configuração do ambiente de programação do Arduino:

Arduino – Instalação e Configuração da IDE no Windows

– Código:

– Resultado final:

Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop

Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.

Obrigado e até a próxima!

Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.



Postagem anterior:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação, Técnico em Eletroeletrônica, Fundador e Diretor da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 9 comentários para esta postagem
  1. Giuliano Bortolassi às 22:12

    Primeiramente, obrigado por colocar o exemplo no seu site Euler Oliveira! Ajudou bastante no iníco das minhas tentativas. Você colocou de forma bem clara e tudo muito direto, sem lenga lenga! show de bola.

    Eu testei o código em um arduino Duemilanove com as ligações sugeridas aqui e também enfrentei o mesmo problema de duplicação… ou seja, eu girava para o sentido horário e eu sempre recebia duas mensagens: Sentido Horario + Sentido Anti Horario.

    Depois de pesquisar um pouco eu encontrei um material interessante e uma biblioteca bastante intuitiva para se usar esse decoder.

    Acho que o principal problema na abordagem proposta aqui é o uso dos pinos digitais para ler as portas DT e CLK. Eventualmente essa abordagem funciona, porém não é muito robusta (gera alguns comportamentos imprevisiveis).

    Nos outros materiais eu encontrei as portas DT e CLK sendo lidas como portas analógicas e apenas a porta do botão de click (SW) sendo lida como porta digital.

    Não sei se é permitido compartilhar link aqui, porém vou preferir desculpas depois do que pedir permissão agora.

    Os materiais que encontrei são os seguintes:

    http://www.mathertel.de/Arduino/RotaryEncoderLibrary.aspx (Explicação do desenvolvedor que criou a bilbioteca para o Rotary Encoder)

    https://www.arduinoecia.com.br/como-usar-encoder-rotativo-ky-040-arduino/ (Uma outra referência de uso do KY-040)

  2. CRISTIANO OLIVEIRA DA SILVA às 01:15

    Olá, tudo bem sou estudante de Eng. De software, ainda no começo e já revirei a internet para descobrir como fazer para, um motor conectado a um encoder incremental no eixo com ponte H, a ideia séria a seguinte, motor girar para o lado direito, depois para o outro esquerdo, e somaria estes dois valores indicado pelo encoder , e depois dividiria por dois, e então o motor se moveria para o resultado, o valor dividido, a posição de acordo com o encoder indicado, e possível isso,nem sei por onde começar

  3. C3bola às 16:59

    Não sei se é o código acima ou se é o Arduino, mas fica duplicando os valores

    • Euler Oliveira Autor às 18:09

      Olá C3bola.

      Agradeço pelo comentário!

      O código está OK.

      Todo material postado aqui no Blog é verificado e testado antes de ser disponibilizado na postagem. Inclusive no final da postagem tem um vídeo mostrando o resultado final da prática.

      • C3bola às 08:33

        Oi Euler, eu uso muito o material aqui do blog e realmente funciona. Eu comprei o Arduino Mega 2560 e o comportamento foi diferente, no simulador funciona perfeitamente.

        OBS. não é critica o comentário é mais para um help, eu fiz ctrl+c ctrl+v

        • Euler Oliveira Autor às 08:44

          Nesse caso teria que testar um outro encoder e ver se vai ocorrer o mesmo problema, pois em teoria independente se a placa é Uno ou mega, o funcionamento tem que ser igual ao mostrado no vídeo.

          • C3bola às 08:46

            Valeu Euler, vou pegar outro que tenho e fazer o teste, o ruim é que comprei um monte desse aqui na MasterWalker também

          • Euler Oliveira Autor às 08:52

            OK.

            Qualquer coisa é só retornar aqui e informar o resultado ou novas dúvidas se surgirem.

    • Daniel às 11:00

      @C3bola

      Existe um erro de sintaxe na linha 24. Não deve ter espaço em “contadorPos++;”

      Assim o código funciona perfeitamente. Se o problema persistir deve ser no seu circuito.