🛠 Control avanzado de E/S y diagnósticos en el módulo DRV8837
Objectifs
Este tutorial tiene como objetivo dominar las funciones avanzadas de entrada-salida del módulo 4-Encoder Motor Driver. Configuraremos la lectura del sensor de corriente INA199A para monitorear el consumo eléctrico, usaremos el LED RGB WS2812C como indicador visual de estado y entenderemos la extensión I2C a través de los puertos Grove. El objetivo es implementar un bucle de diagnóstico en tiempo real para detectar bloqueos de motor o sobrecargas antes de que dañen el hardware.
Matériel nécessaire
- Módulo M5Stack 4-Encoder Motor Driver (DRV8837DSGR)
- Placa anfitriona compatible con I2C (M5Stack Core2, Atom o Arduino con biblioteca Wire)
- Motores con engranajes y encoders (conectados a los puertos PH2.0-6P)
- Fuente de alimentación DC externa de 6-12V (recomendado para plena potencia)
- Cables Grove HY2.0-4P (para extensión I2C si es necesario)
- Ordenador con IDE Arduino o MicroPython
Étapes
- Configuración de la dirección I2C: Por defecto, el módulo usa la dirección 0x24. Verifique la conectividad con un escáner I2C. Si usa múltiples módulos, cambie la dirección mediante resistencias de pull-up/down configurables (rango 0x08 a 0x77) para evitar conflictos en el bus.
- Inicialización del sensor INA199A: El módulo integra un sensor de corriente INA199A. Para leer el consumo, debe consultar los registros internos del microcontrolador STM32F030C8T6 vía I2C. La lectura no se realiza directamente en el INA199A sino mediante comandos del firmware del módulo que agregan datos de corriente por canal.
- Lectura de corriente del motor: Envíe un comando de lectura de estado para obtener los valores de corriente de cada canal. Un valor anormalmente alto indica un bloqueo mecánico o un cortocircuito. Compare estos valores con la carga máxima especificada de 1,2A por canal a 5V.
- Control del LED RGB WS2812C: El LED RGB sirve como retroalimentación visual. Configúrelo para mostrar colores según el estado: Verde (normal), Rojo (error de corriente > 1A), Azul (modo reposo). La comunicación con el LED también se realiza a través de los registros de control del módulo, no directamente por GPIO bit-bang en el anfitrión.
- Extensión I2C vía Grove: Use los dos puertos Grove HY2.0-4P para conectar otros sensores o módulos. Asegúrese de que las direcciones I2C de los periféricos conectados no se superpongan con la del driver (0x24) u otros módulos. El bus I2C compartido permite sincronizar acciones de control de motor con datos externos (ej: sensores de distancia).
Vérification
- Abra el monitor serie para mostrar valores de corriente en tiempo real.
- Bloquee manualmente un motor (con precaución) y observe el aumento de la corriente leída y el cambio de color del LED a rojo.
- Verifique que los otros motores continúen funcionando correctamente a pesar del error en un canal.
- Confirme que la fuente DC externa proporciona un voltaje estable y que el convertidor DC-DC integrado entrega 5V en el puerto Grove.
Pour aller plus loin
Integre estas lecturas de corriente en un algoritmo de control PID para ajustar la potencia según la carga real. También puede usar el LED RGB para codificar códigos de error específicos (parpadeos) para depuración en campo. Explore el modo reposo para reducir el consumo total del sistema robótico durante períodos de inactividad.
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