El encoder KY-040 es un dispositivo ampliamente utilizado en proyectos de electrónica y robótica. Este componente permite la detección de rotación y dirección, lo que lo hace ideal para aplicaciones que requieren la medición precisa de ángulos, la selección de menú en interfaces de usuario, o el control de motores. En este artículo, exploraremos las características del encoder KY-040, su funcionamiento, y algunas aplicaciones comunes.
Características del Encoder KY-040
El KY-040 es un encoder rotatorio incremental, lo que significa que genera pulsos digitales mientras se rota el eje, sin mantener un estado absoluto. Aquí están algunas de sus características principales:
- Tipo de encoder: Incremental
- Número de pulsos por vuelta: 20 pulsos
- Voltaje de funcionamiento: 3.3V a 5V
- Salida: Dos señales de cuadratura (A y B) y una señal de pulsador
- Conexiones: GND, +, SW, DT, CLK
Funcionamiento del Encoder KY-040
El encoder KY-040 utiliza un sistema de dos canales (A y B) para detectar la dirección de rotación. Cuando el eje se gira, se generan pulsos en las señales A y B con una diferencia de fase. El análisis de esta diferencia de fase permite determinar la dirección de rotación. Además, el KY-040 incluye un pulsador que puede ser utilizado como botón de selección o entrada adicional en el sistema.
Conexiones y Configuración
Para utilizar el encoder KY-040, es necesario conectar sus pines a un microcontrolador como Arduino o Raspberry Pi. A continuación se detalla la función de cada pin:
- GND: Conexión a tierra
- +: Alimentación (3.3V o 5V)
- SW: Salida del pulsador (botón integrado)
- DT (Data): Canal B de la señal de cuadratura
- CLK (Clock): Canal A de la señal de cuadratura
Un ejemplo básico de conexión con Arduino sería:
#define CLK 2
#define DT 3
#define SW 4
int counter = 0;
int currentStateCLK;
int lastStateCLK;
String currentDir ="";
unsigned long lastButtonPress = 0;
void setup() {
pinMode(CLK,INPUT);
pinMode(DT,INPUT);
pinMode(SW, INPUT_PULLUP);
Serial.begin(9600);
lastStateCLK = digitalRead(CLK);
}
void loop() {
currentStateCLK = digitalRead(CLK);
if (currentStateCLK != lastStateCLK) {
if (digitalRead(DT) != currentStateCLK) {
counter --;
currentDir ="CCW";
} else {
counter ++;
currentDir ="CW";
}
Serial.print("Direction: ");
Serial.print(currentDir);
Serial.print(" | Counter: ");
Serial.println(counter);
}
lastStateCLK = currentStateCLK;
int btnState = digitalRead(SW);
if (btnState == LOW) {
if (millis() - lastButtonPress > 50) {
Serial.println("Button pressed!");
}
lastButtonPress = millis();
}
delay(1);
}
Explicación del Código
- Definición de Pines: Se definen los pines a los que se conectarán las señales del encoder.
- Configuración Inicial: En el
setup()
, se configuran los pines como entradas y se inicializa la comunicación serial. - Lectura de Señales: En el
loop()
, se lee el estado del pinCLK
y se compara con el estado anterior (lastStateCLK
). Dependiendo de la dirección de rotación, se incrementa o decrementa el contador y se imprime la dirección y el valor del contador. - Pulsador: Se lee el estado del pulsador y se detecta si ha sido presionado.
Aplicaciones Comunes
- Interfaz de Usuario Rotativa: En muchos dispositivos electrónicos, el encoder KY-040 se utiliza para navegar por menús, ajustar configuraciones o seleccionar opciones.
- Control de Motores: En sistemas de control de motores, el encoder puede ser usado para proporcionar retroalimentación sobre la posición y velocidad del motor.
- Proyectos de Robótica: Los robots pueden usar encoders para medir el movimiento y la rotación de ruedas, permitiendo una navegación precisa.
- Instrumentación: En instrumentos de medición y control, los encoders permiten la entrada precisa de valores y ajustes.
Conclusión
El encoder KY-040 es un componente versátil y fácil de usar en proyectos de electrónica. Su capacidad para detectar rotación y dirección lo hace indispensable en aplicaciones que requieren un control preciso. Con una correcta configuración y programación, este encoder puede mejorar significativamente la funcionalidad de diversos dispositivos y sistemas.
Recursos Adicionales
Para aquellos interesados en profundizar en el uso del encoder KY-040, se recomienda explorar tutoriales adicionales, documentación técnica, y proyectos de código abierto que empleen este componente.