🛠 Automatisation par retour d'encodeur avec la DRV8837

Unité de pilotage moteur à encodeur M5Stack (DRV8837DSGR) · intermediaire · Mettez en place une boucle de régulation PID pour maintenir une position précise en temps réel.

Objectifs

Ce tutoriel vise à implémenter une boucle de contrôle en boucle fermée pour atteindre et maintenir une position cible précise. Nous utiliserons les données de l'encodeur AB pour corriger la vitesse du moteur via un algorithme PID simple, illustrant une application d'automatisation de base.

Matériel nécessaire

Étapes

  1. Connexion physique : Connectez la carte au bus I2C via le port Grove. Assurez-vous que l'alimentation externe (6-12V) est branchée pour le moteur, car la charge peut atteindre 1.2A.
  2. Configuration logicielle : Initialisez la communication I2C avec l'adresse par défaut 0x2F. Configurez le nombre de PPR de votre encodeur (par exemple, 12 PPR) dans le registre de configuration.
  3. Lecture de l'encodeur : Implémentez une fonction qui lit la position actuelle en accumulant les impulsions A et B. La résolution dépend du PPR et du mode de comptage (1x, 2x ou 4x).
  4. Algorithme PID : Écrivez une fonction de calcul PID. L'erreur est la différence entre la position cible et la position actuelle. Calculez la sortie proportionnelle, intégrale et dérivée.
  5. Commande PWM : Convertissez la sortie PID en valeur PWM pour le pont en H DRV8837. Limitez la valeur pour respecter le courant max de 1.2A.
  6. Boucle principale : Dans votre loop, lisez la position, calculez la correction PID, et appliquez le PWM. Répétez à une fréquence élevée (ex: 100 Hz) pour une stabilité optimale.

Vérification

Tentez de bloquer manuellement le moteur. Le système doit augmenter la puissance pour atteindre la cible. Vérifiez la stabilité une fois la position atteinte ; une petite oscillation est normale mais doit être amortie par le terme dérivé.

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels