🛠 Automatización con realimentación de encoder DRV8837

Unidad de control de motor con encoder M5Stack (DRV8837DSGR) · intermediaire · Mettez en place une boucle de régulation PID pour maintenir une position précise en temps réel.

Objetivos

Este tutorial tiene como objetivo implementar un bucle de control en lazo cerrado para alcanzar y mantener una posición objetivo precisa. Utilizaremos los datos del codificador AB para corregir la velocidad del motor mediante un algoritmo PID simple, ilustrando una aplicación básica de automatización.

Hardware Necesario

Pasos

  1. Conexión física: Conecte la placa al bus I2C a través del puerto Grove. Asegúrese de que la alimentación externa (6-12V) esté conectada al motor, ya que la carga puede alcanzar 1.2A.
  2. Configuración de software: Inicialice la comunicación I2C con la dirección predeterminada 0x2F. Configure el PPR del codificador (ej: 12 PPR) en el registro de configuración.
  3. Lectura del codificador: Implemente una función que lea la posición actual acumulando los pulsos A y B. La resolución depende del PPR y del modo de conteo (1x, 2x o 4x).
  4. Algoritmo PID: Escriba una función de cálculo PID. El error es la diferencia entre la posición objetivo y la posición actual. Calcule las salidas proporcional, integral y derivada.
  5. Comando PWM: Convierta la salida PID en un valor PWM para el puente H DRV8837. Limite el valor para respetar la corriente máxima de 1.2A.
  6. Bucle principal: En su bucle, lea la posición, calcule la corrección PID y aplique el PWM. Repita a una frecuencia alta (ej: 100 Hz) para una estabilidad óptima.

Verificación

Intente bloquear manualmente el motor. El sistema debe aumentar la potencia para alcanzar el objetivo. Verifique la estabilidad una vez alcanzada la posición; una pequeña oscilación es normal pero debe ser amortiguada por el término derivado.

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales