🛠 Automatizar un movimiento preciso con el Controlador de Motor con Encoder

Unidad de control de motor con encoder M5Stack (DRV8837DSGR) · debutant · Apprenez à configurer un mouvement en boucle fermée pour un positionnement précis et répétable.

Objetivos

Este tutorial tiene como objetivo automatizar el movimiento de un motor DC utilizando control en bucle cerrado. A diferencia del modo PWM simple, el control en bucle cerrado utiliza datos del codificador para corregir la velocidad en tiempo real, garantizando la precisión de posicionamiento incluso bajo carga variable. Configuraremos la unidad para alcanzar una posición objetivo específica.

Materiales necesarios

Pasos

  1. Conexión física: Conecte el motor a los terminales del motor de la unidad. Asegúrese de que los cables del codificador (generalmente los cables centrales o dedicados según el modelo) estén correctamente conectados a los puertos del codificador de la unidad. Conecte la unidad al maestro mediante el cable Grove (I2C). Proporcione alimentación externa (6-12V).
  1. Configuración de software: En su IDE (Arduino o UIFlow), inicialice la comunicación I2C. La dirección predeterminada es 0x2F. Si usa UIFlow, agregue el bloque 'Encoder Motor Driver'.
  1. Definición de parámetros: Configure el PPR (Pulsos por Revolución) de su codificador (entre 3 y 15). Por ejemplo, si su motor tiene un codificador de 12 PPR, ingrese este valor. Defina la velocidad objetivo en RPM.
  1. Comando de posición: Envíe un comando para mover el motor a una posición absoluta o relativa. Por ejemplo, pida al motor que gire 360 grados. El controlador utilizará el puente H DRV8837 para ajustar la corriente y la velocidad para alcanzar el objetivo.
  1. Monitoreo del estado: Use funciones de lectura para verificar la posición actual y la velocidad real. El LED RGB se puede configurar para indicar el estado (por ejemplo, azul en movimiento, verde cuando se alcanza el objetivo).

Verificación

Ejecute el programa. El motor debe girar y detenerse precisamente en la posición solicitada. Si bloquea ligeramente el motor con la mano, el controlador debería aumentar la corriente para mantener la posición (gracias a la detección INA199A). Verifique que la velocidad permanezca estable a pesar de las variaciones de carga.

Para ir más allá

Explore el modo de 'arranque/parada progresiva' para evitar choques mecánicos. También puede cambiar la dirección I2C para conectar varias unidades en el mismo bus y crear un sistema de posicionamiento de múltiples ejes.

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales