¡Cómo funciona el codificador rotatorio con Arduino!

Un codificador rotatorio es un gran dispositivo de entrada para cualquier proyecto, como el menú de una impresora 3D. Entonces, en este tutorial, aprenderemos cómo funciona un codificador rotativo y cómo usarlo con Arduino.

¡Entonces empecemos!

Paso 1: ¡Mira el video!

Si no quieres leer todas las cosas, puedes ver mi video, será mucho más fácil de entender.

Paso 2: Descripción general

Un codificador rotatorio, también llamado codificador de eje, es un dispositivo electromecánico que convierte la posición angular o el movimiento de un eje o eje en señales de salida analógicas o digitales.

Hay dos tipos principales de codificador rotatorio

1) Absoluto: la salida de un codificador absoluto indica la posición actual del eje, lo que lo convierte en un transductor angular.

2) Incremental: la salida de un codificador incremental proporciona información sobre el movimiento del eje, que normalmente se procesa en otra parte en información como posición, velocidad y distancia.

Nota: Uno que usamos en nuestro proyecto es el tipo Incremental, por lo que nos centraremos en eso.

Paso 3: ¿Qué es el codificador rotatorio incremental?

Un codificador incremental informará inmediatamente los cambios de posición (en sentido horario y antihorario), que es una capacidad esencial en algunas aplicaciones. Sin embargo, no informa ni realiza un seguimiento de la posición absoluta. Como resultado, el sistema mecánico monitoreado por un codificador incremental puede tener que moverse a un punto de referencia fijo para inicializar la medición de posición.

Paso 4: construcción y trabajo

Una que tengo viene en esta placa de conexión que ya tiene las resistencias pull-up necesarias.

Tiene cinco pines: reloj, datos, interruptor, Vcc, GND

Construcción:

La perilla que giramos está conectada internamente al disco (Imagen 2). Si giramos en sentido horario o antihorario, se moverá en consecuencia. La parte gris es GND y los puntos de contacto dorados están conectados a Vcc. Hay dos puntos de contacto ubicados a una distancia específica que no son más que nuestra línea RELOJ y DATOS.

Trabajando:

A medida que giramos nuestro codificador, las dos salidas cambiarán dependiendo de la posición del codificador. Lo que generará dos trenes de pulsos.

Si te fijas bien, esas dos señales estarán 90 grados fuera de la fase. Si el codificador gira en sentido horario, CLOCK conducirá y si el codificador gira en sentido antihorario, DATA conducirá.

Y observando el cambio de estado para dos señales en sentido horario tendrán valores opuestos y para los mismos valores en sentido antihorario.

Y ahora, si programamos nuestro Arduino en consecuencia, podemos hacer que funcione con nuestro proyecto.

Paso 5: Programación

Ejemplo 1: (Counter.ino)

Ahora, en este ejemplo, CLK está conectado al pin 3, DT a 4 y SW a 5, luego tenemos algunas variables para almacenar datos. En la sección de configuración nula CLK, DT y SW se configuran como entrada y luego se inicia el comando en serie y aquí se almacena la posición actual en el último estado

Primero, en la sección de bucle vacío, leemos el estado actual del reloj y, de lo contrario, lo verificamos si ha cambiado.

Si el estado! = Último estado significa que ha cambiado la posición. Y si data! = State entonces CW else CCW que aumentará o disminuirá el contador en consecuencia.

Luego, utilizando la impresión en serie imprimió la variable de contador. Y si se presiona el interruptor, el contador se restablecerá a 0 e imprimirá, al final, coloca el estado en el último estado

Ejemplo 2: (LEDBrightness.ino)

En este ejemplo, puse el valor del contador en la función de escritura analógica y usé la función de restricción para limitar la rabia entre 0-255 para que funcione

Nota: es mejor si abre el código en Arduino IDE y lo lee una vez

Archivos adjuntos

  • Counter.ino Descargar
  • LEDBrightness.ino Descargar

Paso 6: ¡Gracias!

Echa un vistazo a JLCPCB
Prototipo de PCB de $ 2 (10 piezas, 10 * 10 cm): //jlcpcb.com

Eso es todo si te gusta mi trabajo

Siéntase libre de visitar mi canal de YouTube para obtener más cosas increíbles: //www.youtube.com/c/Nematics_lab

También puedes seguirme en Facebook, Twitter, etc. para futuros proyectos

//www.facebook.com/NematicsLab/

//www.instagram.com/nematic_yt/

//twitter.com/Nematic_YT

Artículos Relacionados