🛠 Automatización de múltiples ejes con M5Stack 4-Encoder Motor Driver
Objetivos
Este tutorial tiene como objetivo implementar un sistema de control de posición preciso en cuatro ejes simultáneamente. Utilizaremos el modo de control de posición en bucle cerrado del DRV8837DSGR para alcanzar ángulos específicos, una tarea crítica para brazos robóticos o sistemas de posicionamiento. El objetivo es comprender la interacción entre los codificadores, el microcontrolador STM32 y la comunicación I2C para una automatización fiable.
Materiales necesarios
- 1x Unidad 4-Encoder Motor Driver (M5Stack)
- 4x Motores con reductora de 6 hilos con codificadores (PPR entre 3 y 15)
- 1x M5Stack Core o Host compatible I2C
- Cables Grove y PH2.0-6P
- Fuente de alimentación DC externa 6-12V (recomendada para estabilidad)
- Arduino IDE con biblioteca M5Stack Motor Driver
Pasos
``cpp motor.setPID(1, Kp, Ki, Kd); ``
``cpp motor.moveTo(1, 90); // Motor 1 a 90 grados motor.moveTo(2, -90); ``
- Conexión de hardware: Conecte los cuatro motores a los conectores PH2.0-6P. Asegúrese de que los cables de los codificadores estén correctamente alineados. Conecte la alimentación DC externa para garantizar la corriente necesaria (hasta 1,2A por canal).
- Configuración I2C: Inicialice la comunicación I2C en el código. La dirección predeterminada es 0x24. Si usa múltiples módulos, configure las direcciones a través de los pines de dirección antes de encender.
- Calibración de codificadores: Defina el PPR (Pulsos Por Revolución) de sus motores. Ejemplo:
motor.setEncoderPPR(1, 12);para el motor 1 con 12 PPR. - Ajuste del PID: Para una posición estable, ajuste las ganancias PID. Comience con valores bajos para evitar oscilaciones.
- Comando de posición: Envíe objetivos de posición en grados o ticks del codificador.
- Bucle de monitoreo: En el
loop(), verifique el estadoisBusy()para esperar la finalización del movimiento antes de la siguiente acción.
Verificación
Utilice el LED RGB WS2812C para indicar el estado: rojo si hay error, verde si se alcanza la posición. Lea los valores de posición actuales a través de I2C para confirmar que los motores alcanzaron el objetivo dentro de una tolerancia aceptable (generalmente +/- 2 grados). Verifique la ausencia de sobrecalentamiento de los puentes en H.
Para ir más allá
Integre el sensor de corriente INA199A para la detección de bloqueos (stall detection) y detenga los motores automáticamente para evitar daños. Explore la sincronización de ejes para trayectorias complejas.
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
- Automatización en Bucle Cerrado con Driver 4-Encoder
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