Neste projeto iremos fazer a interface de um ROTARY ENCODER com ARDUINO. ARDUINO UNO é uma placa de desenvolvimento baseada em controlador ATMEGA projetada para engenheiros eletrônicos e amadores. No ARDUINO temos 20 pinos de E / S, portanto podemos programar 20 pinos de UNO para serem usados como entrada ou saída.
Um CODIFICADOR ROTATIVO é usado para saber a posição do movimento e o movimento angular de um motor ou eixo. Geralmente é um dispositivo de três terminais, com pinos de alimentação e aterramento, há um total de 5 terminais. Um módulo ROTARY ENCODER é mostrado abaixo.
Os pinos de um codificador rotativo são:
- Terra
- Positivo conectado a + 5V
- Sinal de saída A pin
- Pino B do sinal de saída
- Pino do relógio ou pino comum
O ENCODER fornece pulsos que representam a mudança na posição do eixo para que os sistemas entendam. Considere que um CODIFICADOR ROTATIVO está ligado e o eixo é movido.
Conforme mostrado na tabela acima, considere que o eixo é movido no sentido horário. Com isso, haverá Falling Edge no terminal A e depois no terminal B.
Considere que o eixo é movido no sentido anti-horário. Com isso, haverá Falling Edge no terminal B e depois no terminal A.
Esta borda ocorrerá uma vez para 360/20 = 18 graus (isto é para um codificador com 20 posições, isto muda de tipo para tipo, quanto maior a contagem maior a precisão).
Com as duas condições acima, podemos obter a direção e o grau de rotação. Assim, obtemos os parâmetros necessários para obter a posição de um eixo.
Componentes necessários
Hardware: placa Arduino uno, pinos de conexão, resistor de 220,, LED (oito peças), resistor de 1KΩ, resistor de 220Ω (2 peças), capacitor 100nF (2 peças), placa de pão.
Software: Arduino noturno
Diagrama de circuito e explicação de trabalho
Os capacitores aqui são para neutralizar o efeito de salto do contato no ENCODER. Sem esses capacitores, haverá alguns problemas sérios na leitura de posição.
Quando o eixo é movido, haverá uma diferença de tempo entre a saída de dois pinos de saída. O Arduino UNO reconhecerá essa diferença de tempo para a rotação no sentido horário ou anti-horário.
Se a rotação for no sentido horário, a contagem binária é incrementada em um e essa contagem é mostrada na porta do LED conforme mostrado na figura.
Se a rotação for anti-horária, a contagem binária diminui em um e a contagem binária é mostrada no byte do LED.
O funcionamento do Arduino com o Rotary Encoder é explicado passo a passo no código C fornecido a seguir.