🛠 Automatisation distribuée : Pilotage précis et télémétrie avec l'Encoder Motor Driver Unit

Unité de pilotage moteur à encodeur M5Stack (DRV8837DSGR) · avance · Intégrez l'unité DRV8837DSGR dans un système IoT pour un contrôle en boucle fermée synchronisé et une remontée de données en temps réel.

Objectifs

Ce tutoriel avancé vise à concevoir un nœud d'automatisation autonome utilisant l'Encoder Motor Driver Unit (DRV8837DSGR). L'objectif est de dépasser le simple pilotage manuel pour implémenter une stratégie de contrôle en boucle fermée (PID) basée sur les données de l'encodeur, tout en intégrant la carte dans un réseau IoT pour la télémétrie. Nous exploiterons les capacités de détection de courant INA199A pour la protection du moteur et la LED RGB pour l'indicateur d'état local.

Matériel nécessaire

Étapes

Connectez l'unité au port Grove I2C de votre carte principale. Assurez-vous que l'alimentation externe est branchée sur le connecteur DC de l'unité (6-12V). Par défaut, l'adresse I2C est 0x2F. Pour un réseau multi-nœuds, vous devez configurer une adresse unique (entre 0x08 et 0x77) via les lignes AD0/AD1 si disponibles, ou via la commande logicielle initiale si le firmware le permet, pour éviter les conflits de bus.

  1. Configuration matérielle et adressage

Dans le code, initialisez la communication I2C. Configurez le mode de fonctionnement en « Closed Loop » (boucle fermée). Calibrez la résolution de l'encodeur. L'unité supporte les encodeurs de 3 à 15 PPR (Pulses Per Revolution). Définissez la constante PPR selon votre moteur spécifique pour convertir les impulsions en degrés ou tours.

  1. Initialisation et calibration de l'encodeur

Ne vous contentez pas d'envoyer une consigne de vitesse. Lisez les données de position et de vitesse via les registres I2C. Implémentez un algorithme PID simple sur la carte principale : calculer l'erreur entre la position cible et la position actuelle, puis ajuster la consigne PWM envoyée à l'unité. Utilisez les modes « Start/Stop progressif » pour éviter les chocs mécaniques lors des changements de consigne.

  1. Implémentation de la boucle de contrôle PID

Toutes les 500ms, lisez les registres de statut : courant consommé (INA199A), vitesse actuelle, et position. Publiez ces données sur un broker MQTT. Utilisez le circuit de détection de courant pour définir un seuil de sécurité : si le courant dépasse 1.2A (limite de charge), arrêtez immédiatement le moteur pour éviter la surchauffe.

  1. Intégration réseau et télémétrie

Pilotez la LED WS2812C intégrée pour refléter l'état système : Vert (fonctionnement nominal), Rouge (erreur de position ou surcourant), Bleu (connexion réseau active). Cela permet un diagnostic visuel immédiat sans écran.

  1. Feedback visuel via LED RGB

Vérification

Pour aller plus loin

Explorez la synchronisation multi-axes en utilisant plusieurs unités sur le même bus I2C avec des adresses distinctes. Intégrez un algorithme de filtrage de Kalman pour lisser les données de l'encodeur AB et améliorer la stabilité du contrôle PID à haute vitesse.

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels