Encoder rotativo para su uso y conexión

Valoración: 4.88 (971 votos)

Un encoder rotativo, también conocido como codificador del eje o generador de pulsos, es un dispositivo electromecánico esencial en electrónica que convierte la posición angular de un eje en una señal digital. Se utiliza en una amplia gama de aplicaciones, desde robótica hasta dispositivos de entrada de ordenadores.

Tipos de Encoders Rotativos

Existen dos tipos principales de encoders rotativos:

  • Encoder absoluto : Este tipo proporciona un código digital único para cada ángulo distinto del eje. Permite conocer la posición exacta del eje en cualquier momento.
  • Encoder incremental : También llamado codificador relativo , este tipo solo registra el cambio de ángulo con respecto a una posición de referencia. No puede determinar la posición absoluta del eje.

Funcionamiento del Encoder Rotativo Absoluto

Construcción

El encoder rotatorio absoluto se compone de un disco con un patrón complejo de metal cortado, unido al eje. Sobre el disco se coloca una fila de contactos deslizantes. Cuando el disco gira, los contactos entran en contacto con el metal, generando un código binario único para cada posición del eje.

Codificación con Código Gray

Para evitar errores en la lectura, se utiliza el código Gray, un sistema binario donde dos códigos adyacentes solo difieren en una posición. Esto asegura que la transición entre sectores no genere errores en la lectura.

Funcionamiento del Encoder Rotativo Relativo

Principio de Funcionamiento

El encoder rotatorio relativo utiliza un disco con líneas radiales que pasan por un sensor óptico. Cada vez que una línea cruza el sensor, este genera un pulso eléctrico. Un circuito electrónico cuenta los pulsos para determinar el cambio de ángulo del eje.

Codificador de Cuadratura

Para determinar la dirección de rotación, se utilizan dos sensores ópticos colocados en ángulos diferentes. El orden en que los sensores detectan las líneas radiales indica la dirección de rotación.

Uso Industrial del Encoder Rotativo

La variante de cuadratura es la más común en aplicaciones industriales. Su simplicidad y bajo coste lo convierten en una opción popular para sistemas de control de movimiento.

Conexión de un Encoder Rotativo a Arduino

Para conectar un encoder rotativo incremental a un Arduino, se utilizan los siguientes pines:

  • GND : Conexión de alimentacion masa.
  • + : Conexión de alimentación positiva 5V.
  • SW : Conexión de botón a masa.
  • DT : Salida A, desfasada 90º con respecto a CLK.
  • CLK : Salida B, pulso principal para determinar la dirección de rotación.

Código Arduino

El siguiente código detecta la rotación del encoder, determina la dirección y detecta la pulsación del botón:

// Entradas del encoder rotativo#define CLK 2#define DT 3#define SW 4int counter = 0;int currentStateCLK;int lastStateCLK;String currentDir =“”;unsigned long lastButtonPress = 0;void setup() {//configurar pines de encoder como entradaspinMode(CLK,INPUT);pinMode(DT,INPUT);pinMode(SW, INPUT_PULLUP);// Configurar Monitor SerialSerial.begin(9600);// leer el estado inicial de CLKlastStateCLK = digitalRead(CLK);}void loop() {// Leer el siguiente estado de CLKcurrentStateCLK = digitalRead(CLK);// Si el último y el actual estado de CLK son diferentes son diferentes, entonces ocurrió un pulso// Reaccionar a solo 1 cambio de estado para evitar conteo doble.if (currentStateCLK != lastStateCLK && currentStateCLK == 1){// Si el estado de DT es diferente que el estado de CLK entonces// el encoder esta rotando en sentido contrario a las agujas del reloj, por lo que se decrementaif (digitalRead(DT) != currentStateCLK) {counter –;currentDir =“CCW”;} else {// El encodes esta rotando en sentido a las agujas del reloj, por lo que incrementa.counter ++;currentDir =“CW”;}Serial.print(“Direction: “);Serial.print(currentDir);Serial.print(” | Counter: “);Serial.println(counter);}// Recuerda el ultimo estado de CLKlastStateCLK = currentStateCLK;// Lee el estado del botonint btnState = digitalRead(SW);// Si detectamos una señal baja (LOW), el boton fue presionadoif (btnState == LOW) {//Si pasaron 50ms desde el ultimo pulso bajo, significa//que el boton ha sido presionado, liberado y presionado nuevamenteif (millis() – lastButtonPress > 50) {Serial.println(“Button pressed!”);}// Recordar el último evento de presion de boton.lastButtonPress = millis();}// Poner un pequeño delay para ayudar a eliminar lecturas erroneas.delay(1);}

Aplicaciones del Encoder Rotativo

Los encoders rotativos se utilizan en una amplia gama de aplicaciones, incluyendo:

  • Robótica : Control de movimiento de brazos robóticos, plataformas de rotación y otros sistemas.
  • Máquinas CNC : Control preciso del movimiento de las herramientas de corte.
  • Impresoras 3D : Control de la posición de la plataforma de impresión.
  • Dispositivos de entrada de ordenador : Ratones, trackballs y joysticks.
  • Sistemas de control industrial : Control de motores, válvulas y otros sistemas.
  • Instrumentos de medición : Mediciones de ángulo, posición y velocidad.

Los encoders rotativos son dispositivos esenciales en electrónica y robótica, ofreciendo control preciso de la posición angular. Su versatilidad los convierte en componentes clave en una amplia gama de aplicaciones, desde la industria hasta el hogar.

Si quieres conocer otros artículos parecidos a Encoder rotativo para su uso y conexión puedes visitar la categoría Motor.

Subir