Ir al contenido

Esta placa de diseño propio genera las señales de paso para los tres drivers de motor del manipulador. Está basada en un ESP32-C3, y cada uno de los drivers que gobierna es un CL57T de lazo cerrado, compatible con NEMA17.

Nivel de replicación

Construible

Está la geometría acotada y el procedimiento. Tendrás que adaptarlos a tus herramientas y materiales.

Lo que encuentras aquí

  • Gerbers verificados (13 archivos, incluye taladros PTH) listos para pedido
  • Lista de materiales con designadores, cantidades y encapsulados
  • Archivo de posiciones y designadores para ensamble
  • Firmware completo, con pinout, protocolo, homing y rampas documentados
  • Resolución y rango de recorrido de cada eje

Lo que falta para llegar a «Reproducible»

  • Números de parte de proveedor: la columna LCSC del BOM está vacía
  • Configuración de los DIP switch del propio driver CL57T: micropasos y corriente por fase, que fijan la resolución real del eje
  • Diagrama de cableado entre la placa, los tres CL57T y sus fuentes de alimentación

Artefacto

ZIPGerbers de fabricación — Controlador de drivers

112 KB

Artefacto

CSVBOM — Controlador de drivers (CSV)

589 B

Artefacto

PYmain_manipulador_final.py

30 KB

El controlador debía:

  • Mover los tres ejes del manipulador de forma independiente.
  • Generar las señales PUL, DIR y ENABLE hacia cada driver CL57T.
  • Aceptar finales de carrera para las rutinas de homing.
  • Recibir los comandos de posición desde la NUC por I²C, a través del Puente H maestro.
Driver CL57T
ParámetroValorUnidadNotas
Motor compatibleNEMA17
Tipo de lazoCerradoencoder incremental
Señales de controlPUL, DIR, ENABLElógica 5 V
Resolución por eje (incluye reducción HTD3M + planetario 10:1 en codo y muñeca)
ParámetroValorUnidadNotas
Base10 000pasos/vuelta−80° a +80° · 27,78 pasos/°
Codo25 000pasos/vuelta0° a 136,5° · 69,44 pasos/°
Muñeca25 000pasos/vuelta−220° a 0° · 69,44 pasos/°

Comparte arquitectura con el módulo Puente H —ESP32-C3, aislamiento óptico, conectores I²C encadenables— pero sin etapa de potencia: aquí solo salen señales lógicas hacia los drivers, que son los que manejan los motores. Por eso es más pequeña y usa optoacopladores PC817 en lugar de 4N25.

Esquemático en KiCad del controlador de drivers CL57T
Esquemático del controlador de drivers: el ESP32-C3, las salidas PUL/DIR hacia los tres CL57T y las entradas de final de carrera.
Especificación de fabricación
ParámetroValorUnidadNotas
Dimensiones56,4 × 59,0mm
Capas de cobre2F.Cu / B.Cu
Espesor de placa1,6mm
Vías16
Ancho de pista0,3 – 1,0mmSin pistas de potencia: no las necesita
Lista de materiales — controlador de drivers
DesignadoresCant.ValorEncapsulado
ESP32-C31ESP32-C3 SuperMiniMódulo SMD
U1–U66PC817DIP-4, zócalo SMD
VP_IN1–VP_IN44Bornera de salida a driverMX126-5.0, 2 P
DATA_IN1, DATA_OUT12Conector I²CJST EH 4 P vertical
CONN01X061Header HC-05JST EH 6 P vertical
R1, R3, R4, R7, R9–R117330 Ω1206
R20, R2124,7 kΩ1206
R16110 kΩ1206
R513,3 kΩ1206
C1, C32100 nF1206
D2, D32LED de datos y de potencia1206
SW21PulsadorRS-032G05A3-SMRT

La placa lleva cuatro borneras de salida para tres ejes: la cuarta quedó como reserva y no se usa en esta configuración.

SeñalGPIOFunción
PUL_BASE / DIR_BASEGPIO20 / GPIO21Base
PUL_CODO / DIR_CODOGPIO7 / GPIO10Codo
PUL_MUNECA / DIR_MUNECAGPIO5 / GPIO6Muñeca
SW2 / SW3GPIO3 / GPIO4Finales de carrera codo / muñeca
SDA / SCLGPIO8 / GPIO9Bus I²C esclavo (dirección 0x0B)
BTNGPIO0Botón local (homing sin NUC)
Layout de PCB de dos capas del controlador de drivers CL57T
Layout de dos capas. El mismo proceso de fabricación y el mismo costo por lote que el módulo Puente H.
Meta Quest (XR)
│ ZMQ cmd (manip_cmd)
NUC (Python 3.12)
│ Serial COM4
Puente H maestro (ESP32-C3)
│ I²C addr 0x0B (texto ASCII)
Controlador CL57T (ESP32-C3)
│ PUL / DIR / ENABLE
Driver CL57T × 3 → NEMA17 + reductor planetario × 3
Comandos principales — todos bloquean hasta que el movimiento termina
ComandoArgumentoRespuestaDescripción
PINGPONGVerificar que el esclavo responde
STATE?OK busy=0 sw2=0 sw3=0 calibrated=1 base=… codo=… muneca=…Estado completo
HOME_ALLOK / ERR HOME_ALLHoming de codo + muñeca
BASE_GOTOgradosOK BASE …Posición absoluta de base
CODO_GOTOgradosOK CODO …Posición absoluta de codo
MUNECA_GOTOgradosOK MUNECA …Posición absoluta de muñeca
POSEbase codo munecaOK POSE …Los 3 ejes en una sola trama

El codo y la muñeca necesitan homing en cada encendido. La base no lo necesita: no tiene final de carrera, y arranca desde la posición en la que haya quedado.

Fase 1 — Búsqueda rápida: avanza hacia el switch a 1 800 µs/paso
Fase 2 — Backoff: retrocede 220 pasos a 3 200 µs/paso
Fase 3 — Búsqueda fina: avanza de nuevo a 3 200 µs/paso (más precisión)
Fase 4 — Clearance final: retrocede 120 pasos → posición cero reproducible

Una pulsación larga del botón físico (GPIO0) ejecuta HOME_ALL sin intervención de la NUC. Esa vía sirve durante el desarrollo y para recuperar el brazo tras un error. La lectura de cada final de carrera aplica un debounce de 5 ms con doble confirmación.

La transmisión de correa HTD3M entre el codo y la muñeca acopla físicamente ambos ejes: cuando el codo gira, la muñeca gira con él aunque nadie se lo haya ordenado.

El firmware compensa ese arrastre emitiendo pulsos hacia el motor de muñeca en paralelo con los del codo. El efecto es que las dos variables se separan: el ángulo lógico que ve el operador (pos_muneca) permanece estable, mientras la posición física del motor (pos_muneca_motor) sí cambia.

Cada eje usa su propio perfil trapezoidal: aceleración lineal, crucero y deceleración lineal. Esa forma de arrancar y frenar evita la pérdida de pasos al inicio y la vibración al detenerse.

Los tres ejes comparten los mismos valores. El periodo entre pulsos es inverso a la velocidad, así que un periodo mayor significa ir más despacio: el movimiento arranca a 2 500 µs por paso, acelera hasta 1 600 µs de crucero, y vuelve a 2 500 µs para frenar.

Perfil trapezoidal — idéntico en base, codo y muñeca
ParámetroValorUnidadNotas
Periodo de arranque2500µs/paso
Periodo de crucero1600µs/paso
Periodo de frenada2500µs/paso
Pasos de aceleración1500pasos
Pasos de deceleración1500pasos
Asentamiento tras cambio de DIR200µsEl driver necesita ver DIR estable antes del primer pulso

La base añade una regla propia: si un movimiento cruza el cero y recorre más de 60°, se parte en dos tramos. Un giro largo de la base a través del origen mueve todo el brazo, y partirlo evita el tirón en el punto de cruce.

Conexiones de los drivers CL57T
Cableado de los drivers CL57T, alojados dentro de la estructura en «C» que eleva el manipulador.

Artefacto

PYScript de calibración del manipulador

16 KB

El controlador alcanza los rangos de cada eje sin pérdida de pasos detectada, y la rutina de homing funciona con los finales de carrera. El control remoto desde la interfaz XR seguía pendiente de integración completa en la última verificación registrada. El detalle está en Verificación del robot móvil.