Pular para o conteúdo principal

Teste do Encoder Rotativo KY-040

Neste artigo vamos mostrar um pequeno teste do uso do Encoder Rotativo KY-040.
Encoder Rotativo KY-040

Novamente, a Placa Base utilizada como controladora é a Arduino Uno, que foi utilizada em conjunto com o Protoshield compatível com a mesma. Todos os itens utilizados podem ser adquiridos em nossa loja.

Este encoder trabalha com um disco óptico. Ele tem dois sinais de saída chamados de Clock (CLK) e Data (DT). Além de um sinal que vem do botão (SW) embutido no encoder.

O objetivo deste teste é ler estas saídas e fazer o programa identificar se o encoder está girando no sentido horário ou anti-horário, e quantos degraus ele se deslocou.

Este é um encoder que identifica 20 passos/360°. Ou seja, a cada 18° temos a identificação de um passo.

As duas saídas (CLK e DT) estão defasadas entre si em 90° o que permite a detecção do sentido de rotação. E estão ativas quando em nível baixo.

Para os testes utilizamos:

Arduino Uno
Shield Placa Expansora para Arduino UNO
Módulo Encoder Rotativo KY-040
Capacitor de poliéster 100nF
Resistor 10kΩ
Fios para ligação (Sugestão: Cabo Jumper MACHO/FÊMEA 20cm 40 vias);


Os capacitores de 100nF são usados para efeitos de "debounce" (um artifício para que o Arduino identifique corretamente cada passo do encoder, de maneira que seja contabilizado um único pulso a cada passo) para os três pinos de saída do módulo (DT, CLK e SW).

No módulo já está incluso 2 resistores (SMD) de pull-up que garantem sinal alto (+5V) nas saídas, que vão abaixo (0V) quando estão ativas. Exceto na saída do push button (SW) que tem o espaço mas não tem o resistor instalado (porém, esse resistor pode ser adquirido na nossa loja). Confira na imagem abaixo.



Após realizada as conexões dos capacitores e resistor, podemos ligar o módulo ao Arduino. Lembrando que o Arduino utilizado foi o modelo Arduino Uno.

As Conexões devem ser feitas da seguinte forma:

Encoder KY-040 Arduino
GND GND
+ 5v
SW D4
DT D3
CLK D2








Além disso, foram conectados dois LED's (com os resistores apropriados) aos pinos D5 e D6 do Arduino, para facilitar a indicação da direção do giro.

Segue abaixo uma imagem com o circuito montado.


Confira abaixo um vídeo com o funcionamento do projeto.


Baixe aqui o sketch com a programação do Arduino para esse projeto.
Segue abaixo o código fonte utilizado nesse projeto.
 //############### ELETRODEX ELETRÔNICA ###############  
 // Programa de teste do Módulo Encoder KY-040  
 //   
 // As Conexões devem ser feitas da seguinte forma:  
 // Módulo Encoder |  Arduino  
 //    GND   |   GND  
 //     +    |   5v  
 //    SW    |   D4  
 //    DT    |   D3  
 //    CLK   |   D2  
 //    LED 1  |   D5  
 //    LED 2  |   D6  
 //  
 // Lembrando que devem ser inseridos os capacitores de 100nF entre   
 // os pinos SW, DT e CLK do Encoder e o pino GND do Arduino, e um resistor de 10K Ohms   
 // entre o pino SW do Encoder e o pino 5v do Arduino  
 const int interruptA = 0; // Interrupt 0 (pin 2)  
 const int interruptB = 1; // Interrupt 1 (pin 3)  
 int CLK = 2; // PIN2  
 int DAT = 3; // PIN3  
 int BUTTON = 4; // PIN4  
 int LED1 = 5; // PIN5  
 int LED2 = 6; // PIN6  
 int COUNT = 0;  
 void setup ()  
 {  
 attachInterrupt (interruptA, RoteStateChanged, FALLING);  
 //attachInterrupt (interruptB, buttonState, FALLING);  
 pinMode (CLK, INPUT);  
 digitalWrite (2, HIGH); // Pull High Restance  
 pinMode (DAT, INPUT);  
 digitalWrite (3, HIGH); // Pull High Restance  
 pinMode (BUTTON, INPUT);  
 digitalWrite (4, HIGH); // Pull High Restance  
 pinMode (LED1, OUTPUT);  
 pinMode (LED2, OUTPUT);  
 Serial.begin (9600);  
 }  
 void loop ()  
 {  
 if (! (digitalRead (BUTTON)))  
 {  
 COUNT = 0;  
 Serial.println ("STOP COUNT = 0");  
 digitalWrite (LED1, LOW);  
 digitalWrite (LED2, LOW);  
 delay (2000);  
 }  
 Serial.println (COUNT);  
 }  
 // -------------------------------------------  
 void RoteStateChanged () // When CLK FALLING READ DAT  
 {  
 if (digitalRead (DAT)) // When DAT = HIGH IS FORWARD  
 {  
 COUNT++;  
 digitalWrite (LED1, HIGH);  
 digitalWrite (LED2, LOW);  
 delay (200);  
 }  
 else // When DAT = LOW IS BackRote  
 {  
 COUNT --;  
 digitalWrite (LED2, HIGH);  
 digitalWrite (LED1, LOW);  
 delay (200);  
 }  
 }  

Conte-nos suas experiências utilizando os produtos adquiridos em  nossa loja!
Até o próximo artigo!

Comentários

  1. BOM DIA.
    ONDE COMPRAR UM SISTEM DESTE PRONTO PARA USAR?

    ResponderExcluir
  2. BOM DIA.
    ONDE COMPRAR UM SISTEM DESTE PRONTO PARA USAR?

    ResponderExcluir
  3. Os produtos que foram testados você pode adquiri-los em nosso site.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Controlando LED via Bluetooth utilizando o Módulo HC-05

Hoje abordaremos uma breve demonstração de conexão do Módulo Bluetooth HC-05 Master/Slave com um dispositivo externo, e após a conexão utilizar o dispositivo para controlar um LED. A Placa Base utilizada como controladora é a Arduino Uno , que foi utilizada em conjunto com o Protoshield compatível com a mesma. Todos os itens utilizados podem ser adquiridos em nossa loja . Note que o Módulo Bluetooth HC-05 Master/Slave possui níveis de tensão de alimentação e operação diferentes, sendo que pode ser alimentado com  uma tensão entre 3,3v e 6v (no projeto foi alimentado com 5v, direto de um dos pinos do Arduino Uno ), mas a sua tensão de operação é de 3,3v. IMPORTANTE:    O Arduino consegue reconhecer a tensão de 3,3v no terminal RX como nível lógico alto, mas somente fornece 5v no terminal Tx como nível lógico alto. Portanto, se for utilizar os terminais Rx e Tx para a comunicação com os terminais Tx e Rx do HC-05,  o terminal Tx do HC-05 pode ser conectado diretamente ao ter

Como programar com Programador KIT 3.5 para PIC

Nesta postagem iremos falar sobre o Programador KIT 3.5 O Programador KIT 3.5 é um programador para microcontroladores PIC bastante completo, até o momento compatível com  mais de 600 dispositivos da linha de microcontroladores da Microchip, incluindo a nova linha dsPIC. (Confira aqu i a lista com os microcontroladores compatíveis com o Kit 3.5) Permite a programação diretamente na placa (ICSP) ou então através de conectores ZIF (não inclusos). Detalhe para a interface ICSP Com ele é possível gravar (programar), ler, verificar e copiar os códigos dos microcontroladores, através do software gratuito PicKit 3 Programmer ( instruções de uso ), uma vez que ele é totalmente compatível com o PICkit3. Lembrando que este software é apenas para a gravação do arquivo HEX no seu microcontrolador, sendo que é necessário gerar esse arquivo em um compilador de sua escolha. Além disso, é possível utilizá-lo como ferramenta de depuração (debug) através do software MPLAB. Caract

Utilizando o Programador USB para PIC K150

Nessa postagem iremos demonstrar a utilização do Programador USB para PIC K150 O gravador possui um soquete do tipo ZIF (ZIF - Zero Insertion Force - é um soquete com uma alavanca, que permite a colocação e a retirada dos microcontroladores sem risco de danificar seus terminais) para a programação dos microcontroladores. Conta também com um conector para a programação ICSP (In Circuit Serial Programming, que será abordada futuramente em outra postagem, pois é necessário que se faça algumas adaptações no circuito a ser programado). O programador é controlado pelo PIC16F628A, e no site do fabricante do gravador é possível encontrar informações sobre como atualizar o firmware do gravador, para possibilitar a gravação de mais dispositivos. Instalação do Programador USB para PIC K150 Se você estiver utilizando o Windows 7/Vista/XP, o driver deve ser instalado normalmente, sem que seja necessária a interferência do usuário. Caso esteja utilizando o Windows 8/8.1, o processo é um po