En este tutorial vamos a conectar un codificador rotatorio con el microcontrolador ATmega8. ATmega8 es la serie de microcontroladores de atmel diseñada para aplicaciones integradas. El codificador rotatorio se utiliza para conocer la posición de movimiento y el movimiento angular de un motor o eje. Por lo general, es un dispositivo de tres terminales, con cinco clavijas de alimentación y tierra. A continuación se muestra un módulo codificador rotatorio.
Los pines de un codificador rotatorio son:
- Suelo.
- Positivo conectado a + 5V
- Señal de salida A pin
- Pin de señal de salida B
- Pin de reloj o pin común.
El ENCODER proporciona pulsos que representan el cambio en la posición del eje para que los sistemas los comprendan. Considere que se enciende un ENCODER ROTATORIO y se mueve el eje.
Como se muestra en la tabla anterior, considere que el eje se mueve en sentido horario. Con esto habrá Falling Edge en la terminal A y luego en la terminal B.
Considere que el eje se mueve en sentido antihorario. Con esto habrá Falling Edge en la terminal B y luego en la terminal A.
Este borde se producirá una vez para 360/20 = 18 grados (esto es para un codificador con 20 posiciones, esto cambia de un tipo a otro, cuanto mayor es el recuento, mayor es la precisión).
Con las dos condiciones anteriores, podemos obtener la dirección y el grado de rotación. Por lo tanto, obtenemos los parámetros necesarios para obtener la posición de un eje.
Componentes
Hardware: ATMEGA8, pines de conexión, PROGRAMADOR AVR-ISP, resistencia de 220 Ω, LED (ocho piezas), resistencia de 1 K Ω, resistencia de 220 Ω (2 piezas), condensador de 100 nF (2 piezas), placa de prueba.
Software: Atmel studio 6.1, progisp o flash magic.
Diagrama de circuito y explicación de trabajo
Los condensadores aquí son para neutralizar el efecto de rebote de contacto en ENCODER. Sin esos condensadores, habrá algunos problemas graves en la lectura de posición.
Cuando se mueve el eje, habrá una diferencia de tiempo entre la salida de dos pines de salida. El ATMEGA8 reconocerá esta diferencia de tiempo para la rotación en sentido horario o antihorario.
Si la rotación es en el sentido de las agujas del reloj, el recuento binario se incrementa en uno, y este recuento se muestra en el puerto LED como se muestra en la figura.
Si la rotación es en sentido antihorario, la cuenta binaria se reduce en uno y la cuenta binaria se muestra en el byte LED.
Recuerde que aquí no estamos configurando ningún fusible de atmega8, por lo que el controlador funcionará en el cristal interno predeterminado de 1Mhz.
El funcionamiento de la interfaz del codificador rotatorio con el microcontrolador ATmega8 se explica en el siguiente código.