🛠 Automatización de múltiples ejes con M5Stack 4-Encoder Motor Driver

Unit 4-Encoder Motor Driver (DRV8837DSGR) · avance · Mettez en œuvre un système de contrôle de position en boucle fermée pour un robot à quatre roues ou un bras articulé en utilisant la régulation PID intégrée.

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

Pasos

``cpp motor.setPID(1, Kp, Ki, Kd); ``

``cpp motor.moveTo(1, 90); // Motor 1 a 90 grados motor.moveTo(2, -90); ``

  1. 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).
  2. 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.
  3. 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.
  4. Ajuste del PID: Para una posición estable, ajuste las ganancias PID. Comience con valores bajos para evitar oscilaciones.
  5. Comando de posición: Envíe objetivos de posición en grados o ticks del codificador.
  6. Bucle de monitoreo: En el loop(), verifique el estado isBusy() 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

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales