¿Qué
es un encoder rotativo?
Un encoder rotativo es un dispositivo que permite determinar la posición y velocidad angular de un accionamiento, y registra la medición desde un procesador o autómata como el Arduino. A diferencia de los potenciómetros analógicos, los encoders rotativos son dispositivos digitales que proporcionan un pulso cada vez que el encoder gira un determinado ángulo. Estos encoders suelen tener una resolución de 20 a 30 pulsos por vuelta y, en muchos casos, también incorporan un pulsador que se activa al apretar la palanca del encoder.
Funcionamiento del encoder rotativo
Internamente, el encoder está formado por dos escobillas que deslizan sobre una pista metálica con divisiones. Al girar el eje, un pequeño fleje metálico cierra el contacto, actuando como un pulsador. Para leer el encoder, debemos entender cómo leer un pulsador con Arduino. Normalmente, los encoders disponen de dos salidas (Canal A y B) que forman un sistema equivalente a dos pulsadores desplazados uno respecto al otro, lo que se denomina un encoder en cuadratura.
Aplicaciones
en el mundo real
Los encoders rotativos tienen diversas aplicaciones prácticas:
Control de volumen: Pueden emplearse para regular el volumen de dispositivos como radios, altavoces o amplificadores.
Control de brillo: Se utilizan para ajustar el brillo de pantallas LCD o retroiluminación.
Control de motores: Permiten ajustar el ángulo de un motor paso a paso o servo.
Interfaz de usuario: Sustituyen potenciómetros y botones en interfaces, proporcionando una forma más precisa de interactuar con dispositivos electrónicos.
Conexión y Prueba con Arduino
A continuación, te presento un ejemplo de cómo utilizar un encoder rotativo con el Arduino Uno y la librería Encoder.h para mostrar el conteo de pulsos en el monitor serial:
#include <Encoder.h>
Encoder myEnc(2, 3);
void setup() {
Serial.begin(9600);
Serial.println("Contador de Pulsos del Encoder:");
}
long oldPosition = -999;
void loop() {
long newPosition = myEnc.read();
if (newPosition != oldPosition) {
oldPosition = newPosition;
Serial.println(newPosition);
}
}