🛠 Automatización con realimentación de encoder DRV8837
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
- Unidad M5Stack Encoder Motor Driver (DRV8837DSGR)
- Motor con engranajes de 6 hilos con codificador (compatible con 3-15 PPR)
- Placa host compatible con I2C (ej: M5Stack Core2 o ESP32)
- Cables Grove I2C
- Fuente de alimentación externa DC 6-12V
Pasos
- 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.
- 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.
- 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).
- 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.
- 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.
- 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
- Primer cableado y puesta en marcha de la Encoder Motor Driver Unit
- Dominar las E/S con la Unidad de Motor con Encoder
- Automatizar un movimiento preciso con el Controlador de Motor con Encoder
- Primer encendido del Driver Motor Encoder
- Control de GPIO y LED RGB en la Encoder Motor Driver Unit
- Configuración avanzada y validación del bus I2C
Ejemplos de código para esta placa
m5stack-encoder-motor-i2c-esp32.inoC++ (Arduino)m5stack-encoder-motor-pwm-control.inoC++ (Arduino)m5stack-encoder-motor-closed-loop.inoC++ (Arduino)m5stack-encoder-motor-position-control.inoC++ (Arduino)m5stack-encoder-motor-led-status.inoC++ (Arduino)closed_loop_speed_pid.pyMicroPython