ENC-PCB Encoder en PCB Con Pulsador Para Arduino

[ENC-PCB] ENC-PCB Encoder en PCB Con Pulsador Para Arduino

https://electrofranko.com/web/image/product.template/505/image_1920?unique=2a9a85b

S/ 8.00 8.0 PEN S/ 8.00

S/ 8.00

Not Available For Sale

Esta combinación no existe.

Términos y condiciones
Envío: 2-3 días laborales


Referencia Interna: ENC-PCB

Módulo Encoder Rotativo con Pulsador para Arduino (ENC-PCB)

Codificador rotativo incremental con placa adaptadora, pines organizados, interruptor de pulsador integrado y salidas de cuadratura (CLK, DT, SW).

El Módulo Encoder Rotativo con Pulsador (ENC-PCB) es un dispositivo de entrada digital incremental diseñado para simplificar la interacción en proyectos con microcontroladores. Permite medir giros continuos en ambos sentidos (horario y antihorario) sin topes mecánicos de fin de carrera, generando señales en cuadratura a través de sus pines CLK y DT. Además, cuenta con un pulsador interno (pin SW) que se activa al presionar el eje hacia abajo, convirtiéndolo en el control ideal para la navegación por menús, selección de valores y ajuste de parámetros en pantallas LCD u OLED.

Especificaciones Técnicas

Parámetro EléctricoRango / Valor Oficial
Voltaje de Operación Lógico3.3 V a 5 V DC
Tipo de SalidaSeñales digitales en cuadratura (Incremental de 2 canales)
Pulsos por Revolución (PPR)20 impulsos por cada vuelta completa (20 pulsos/ciclos)
Tipo de PulsadorInterruptor táctil normalmente abierto (Push button integrado en el eje)
Corriente Máxima por Contacto10 mA (Recomendado para evitar desgaste prematuro)
Resistencia de ContactoMenor a 100 mΩ
Parámetro Físico / EstructuraRango / Valor Oficial
Pines de Interfaz del MóduloGND, VCC (+), SW (Switch), DT (Data), CLK (Clock)
Eje MecánicoEje moleteado metálico apto para perillas estándar de presión
Rotación ContinuaGiro de 360 grados sin topes mecánicos ni restricciones
Placa de Circuito (PCB)PCB compacta con header de 5 pines espaciados a 2.54 mm
Dimensiones GeneralesAproximadamente 20 mm x 15 mm x 25 mm (Incluyendo eje)
Compatibilidad de PlataformasArduino, ESP32, Raspberry Pi, STM32 y PIC

Ventajas Clave del Módulo Encoder ENC-PCB

Diseño Todo en Uno: A diferencia de los encoders de pines sueltos difíciles de montar en protoboard, esta placa integra las resistencias de pull-up opcionales y organiza los 5 pines de forma ordenada (GND, +, SW, DT, CLK) para una conexión rápida y limpia.

Doble Funcionalidad (Giro + Click): Combina en un solo componente compacto un selector rotativo incremental de precisión y un botón de confirmación, ahorrando espacio valioso en tus tableros o paneles de control.

Giro Libre sin Fin: Al carecer de topes mecánicos, el usuario puede girar la perilla infinitamente en cualquier dirección, facilitando la programación de menús circulares o incremento numérico sin restricciones de tope.

La conexión del módulo con placas como Arduino es muy sencilla. Es importante respetar la asignación de los 5 pines indicados en la serigrafía de la placa adaptadora.

Galería Dinámica de Conexiones de Hardware

Esquema 1: Vista de la distribución de pines GND, VCC, SW, DT y CLK en el PCB
Esquema 3: Cableado de señales de cuadratura a pines digitales con interrupciones
Esquema 2: Diagrama de ondas cuadradas desfasadas 90 grados al rotar el eje
Esquema 4: Funcionamiento del pulsador mecánico con resistencia pull-down
Guía Esencial de Conexión y Montaje de Hardware: Conecte el pin **GND** del módulo a la Tierra de su Arduino y el pin **+ (VCC)** a la línea de 5V o 3.3V. Las señales del encoder se transmiten por los pines **CLK** (Clock / Señal A) y **DT** (Data / Señal B), los cuales deben enlazarse a pines digitales de su microcontrolador (preferentemente pines con capacidad de interrupción para no perder pasos). El pin **SW** se conecta a un pin digital libre para detectar la pulsación del botón.
🎓 Lectura de Giros y Rebotes Mecánicos (Debouncing)

Para leer un encoder rotativo con precisión en código, es necesario interpretar el desfase entre las señales de los canales CLK y DT:

  • Detección de Dirección: Cuando el eje gira en sentido horario, el pin CLK cambia de estado antes que el pin DT. Si gira en sentido antihorario, ocurre lo inverso. Evaluando el estado actual y previo de CLK determinamos hacia dónde se movió el usuario.
  • Antirrebote del Pulsador: Los contactos metálicos internos del botón (SW) producen rebotes eléctricos al presionarse. Un pequeño retraso por software o lectura de flancos permite detectar el "click" limpio sin falsos positivos.
// Código Básico para Control de Encoder Rotativo con Pulsador en Arduino // Módulo ENC-PCB conectado a pines digitales estándar. #include <Arduino.h> // Asignación de pines del Encoder const int PIN_CLK = 2; // Pin de Reloj (CLK) const int PIN_DT = 3; // Pin de Datos (DT) const int PIN_SW = 4; // Pin del Pulsador (Switch) int contadorPosicion = 0; int estadoUltimoCLK; int estadoActualCLK; unsigned long ultimoTiempoBoton = 0; void setup() { Serial.begin(115200); // Configuramos pines del encoder como entradas pinMode(PIN_CLK, INPUT); pinMode(PIN_DT, INPUT); pinMode(PIN_SW, INPUT_PULLUP); // Pulsador con resistencia pull-up interna // Leemos el estado inicial del pin CLK estadoUltimoCLK = digitalRead(PIN_CLK); Serial.println("--- Sistema Encoder Rotativo ENC-PCB Iniciado ---"); } void loop() { // 1. LECTURA DE GIRO (ROTACIÓN) estadoActualCLK = digitalRead(PIN_CLK); // Si el estado de CLK ha cambiado, detectamos un pulso de giro if (estadoActualCLK != estadoUltimoCLK && estadoActualCLK == HIGH) { // Si el estado de DT es diferente al de CLK actual, el giro es horario if (digitalRead(PIN_DT) != estadoActualCLK) { contadorPosicion++; Serial.print("Giro Horario (+) -> Posicion: "); Serial.println(contadorPosicion); } else { // Si son iguales, el giro es antihorario contadorPosicion--; Serial.print("Giro Antihorario (-) -> Posicion: "); Serial.println(contadorPosicion); } } // Guardamos el estado actual para la siguiente iteración estadoUltimoCLK = estadoActualCLK; // 2. LECTURA DEL PULSADOR (SWITCH) int estadoBoton = digitalRead(PIN_SW); // Si el botón está presionado (LOW por el PULLUP) if (estadoBoton == LOW) { // Implementamos un antirrebote básico por tiempo (200ms) if (millis() - ultimoTiempoBoton > 200) { Serial.println(" 🔴 ¡Pulsador del Encoder Presionado (Click)! "); ultimoTiempoBoton = millis(); } } }
1. Al girar el encoder, el contador sube y baja de forma errática sin orden aparente.
Este comportamiento se debe al ruido eléctrico y al rebote mecánico de los contactos internos del encoder al girar. Para solucionarlo, puedes añadir pequeños condensadores cerámicos (de 10nF a 100nF) entre los pines CLK y GND, y entre DT y GND, para filtrar los picos parásitos, o bien utilizar librerías optimizadas de filtrado por software como `Encoder.h`.
2. ¿Por qué el pin del pulsador (SW) lee siempre un valor de HIGH y cambia a LOW al presionarlo?
Es el comportamiento esperado cuando configuras el pin con una resistencia pull-up (ya sea interna o externa). El botón actúa cerrando el circuito hacia Tierra (GND). Por lo tanto, en estado de reposo el pin se mantiene en nivel alto (HIGH), y al hacer click se conecta a masa entregando un nivel bajo (LOW).
3. ¿Puedo conectar este módulo a placas de 3.3V como el ESP32 o Raspberry Pi?
Sí, sin ningún inconveniente. Este módulo encoder es un dispositivo puramente mecánico basado en interruptores deslizantes internos y no requiere alimentación de voltajes estrictos; opera de forma excelente tanto con lógicas de 5V en Arduino UNO como con lógicas de 3.3V en ESP32 o STM32.
4. ¿Cuántos pasos o pulsos emite este modelo por cada vuelta completa de la perilla?
Este modelo estándar basado en componentes rotativos comerciales emite típicamente 20 impulsos (o clics mecánicos perceptibles) por cada revolución de 360 grados. Dependiendo de cómo lo programes en código (leyendo solo flancos de subida o cuadratura completa x4), puedes obtener mayor o menor resolución de conteo.