🛠 Automatización en Bucle Cerrado con Driver 4-Encoder
Objetivos
Este tutorial tiene como objetivo implementar una automatización precisa utilizando el módulo M5Stack 4-Encoder Motor Driver. Configuraremos el control de posición en bucle cerrado para un motor, simularemos una secuencia simple de automatización industrial (mover, esperar, regresar) y discutiremos la gestión de datos de posición. Este nivel intermedio asume una comprensión básica del protocolo I2C y programación en C++ o Python.
Materiales necesarios
- Unidad M5Stack 4-Encoder Motor Driver (DRV8837DSGR)
- Un motor con engranajes de 6 hilos con codificador (PPR entre 3 y 15)
- Fuente de alimentación DC externa 6-12V (recomendada para cargas bajo 1,2A)
- Cables Grove HY2.0-4P y PH2.0-6P
- Microcontrolador host compatible con I2C (ej: M5Stack Core, ESP32, Arduino)
- Software IDE con biblioteca M5Stack o acceso directo a registros I2C
Pasos
- Conexión física: Conecte el motor al puerto PH2.0-6P n°1. Asegúrese de que los cables del codificador estén correctamente alineados con los pines dedicados. Conecte la alimentación DC externa al conector adecuado para garantizar la corriente necesaria (hasta 1,2A por canal).
- Inicialización I2C: En su código, inicialice el bus I2C. La dirección predeterminada del módulo es
0x24. Verifique la comunicación leyendo un registro de identificación o estado. - Configuración del modo: Escriba en los registros de configuración para habilitar el modo "Control de Posición" (bucle cerrado) en el canal del motor 1. Defina los parámetros PID si su biblioteca lo permite, o use valores predeterminados para una primera prueba.
- Secuencia de automatización: Implemente una función que envíe un punto de consigna de posición (en ticks de codificador). Espere a que el registro de estado indique que el motor ha alcanzado la posición objetivo (bit "Done" o equivalente). Agregue un retraso de 2 segundos para simular una tarea industrial.
- Regreso al origen: Envíe un punto de consigna de posición de 0 para regresar el motor a su posición inicial. Verifique que el movimiento sea fluido gracias al arranque/parada progresivo integrado.
- Lectura de datos: Lea periódicamente la posición actual y la corriente consumida (a través del sensor INA199A integrado) para monitorear el estado del sistema.
Verificación
El motor debe moverse hacia la posición objetivo, detenerse precisamente, esperar y luego regresar a cero. El LED RGB WS2812C puede servir como indicador visual (ej: verde en movimiento, azul en espera). Si el motor vibra o no se detiene, verifique el cableado del codificador y los parámetros de ganancia PID.
Para ir más allá
Explore el modo de suspensión para ahorrar energía entre los ciclos de automatización. También puede extender este sistema a múltiples motores para crear un brazo robótico simple, sincronizando movimientos mediante comandos I2C secuenciales o paralelos.
Otros tutoriales para esta placa
- Primer Conexión y Puesta en Marcha del Driver Motor 4-Encoder
- Descubriendo E/S: LED RGB y lectura de encoders
- Automatiza un chasis robótico con el Driver 4-Encoder
- Primera conexión y puesta en marcha del 4-Encoder Motor Driver
- Control de GPIO y LED RGB en el Driver Motor 4-Encoders
- Primer cableado e inicialización del módulo 4-Encoder Motor Driver
Ejemplos de código para esta placa
i2c-motor-spin.inoarduinoclosed-loop-speed-control.inoarduinorelative-position-move.inoarduinorgb-led-status-indicator.inoarduinodifferential-drive-robot.inoarduinoi2c_basic_motor_control.pyPython