🛠 Configuración avanzada y validación del bus I2C
Objetivos
Este tutorial está dirigido a usuarios avanzados que desean ir más allá de la configuración predeterminada. El objetivo es modificar la dirección I2C de la unidad Encoder Motor Driver (DRV8837DSGR) para evitar conflictos en el bus, y luego verificar la comunicación de bajo nivel leyendo los registros internos. Confirmaremos que el microcontrolador STM32G031G8U6 responde correctamente a las solicitudes y que el puente en H DRV8837DSGR está inicializado.
Material Necesario
- Una placa de desarrollo compatible con M5Stack o un microcontrolador con bus I2C (ESP32, Arduino, etc.).
- La unidad Encoder Motor Driver (DRV8837DSGR).
- Un motor de engranajes de 6 hilos o un motor TT.
- Una fuente de alimentación DC externa entre 6V y 12V (conectada al puerto DC).
- Cables Grove o cables de conexión para I2C (SDA, SCL) y alimentación.
- Un terminal serie o un analizador lógico I2C (opcional pero recomendado).
Pasos
- Conexión de Hardware: Conecte la unidad a su placa a través del conector Grove o los pines I2C. Asegúrese de que SDA y SCL estén correctamente cableados. Conecte la alimentación DC (6-12V) al puerto dedicado. El regulador interno convertirá esto a 5V para el motor y la interfaz.
- Escaneo I2C Inicial: Antes de la configuración, escanee el bus para detectar la dirección predeterminada 0x2F. Utilice un código de escaneo I2C estándar para confirmar la presencia de la unidad.
- Configuración de Dirección: Para cambiar la dirección (rango 0x08 a 0x77), envíe un comando específico al registro de configuración. Usando la biblioteca M5Stack o comandos I2C crudos, escriba la nueva dirección en el registro de identificación. Tenga en cuenta que este cambio persiste después del reinicio.
- Inicialización del Controlador: Envíe un comando de inicialización para activar el puente en H DRV8837DSGR. Verifique que el circuito de detección de corriente INA199A esté activo leyendo el registro de estado correspondiente.
- Prueba de Comunicación: Envíe un comando de rotación lenta (PWM bajo) y lea los datos del codificador AB (3-15 PPR) para validar el flujo de datos bidireccional.
Verificación
Utilice un analizador lógico para observar los fotogramas I2C. Debería ver la dirección configurada respondiendo a las solicitudes de lectura. El LED RGB WS2812C puede programarse para parpadear al recibir comandos válidos, ofreciendo una confirmación visual inmediata de la actividad del bus.
Para Ir Más Allá
Explore el control de posición en lazo cerrado configurando los PID a través de registros avanzados. Pruebe la protección contra sobrecorrientes bloqueando manualmente el motor para observar la reacción del circuito INA199A.
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
- Automatización con realimentación de encoder DRV8837
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