8 junio, 2024

IsProto

Soluciones para Redes e Internet

Encoder KY-040: Características y Aplicaciones

Encoder KY-040

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

  1. Definición de Pines: Se definen los pines a los que se conectarán las señales del encoder.
  2. Configuración Inicial: En el setup(), se configuran los pines como entradas y se inicializa la comunicación serial.
  3. Lectura de Señales: En el loop(), se lee el estado del pin CLK 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.
  4. Pulsador: Se lee el estado del pulsador y se detecta si ha sido presionado.

Aplicaciones Comunes

  1. 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.
  2. 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.
  3. Proyectos de Robótica: Los robots pueden usar encoders para medir el movimiento y la rotación de ruedas, permitiendo una navegación precisa.
  4. 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.