🛠 Automatisation par retour d'encodeur avec la DRV8837
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
- Carte Encoder Motor Driver Unit (DRV8837DSGR) de M5Stack
- Moteur à engrenages 6 fils avec encodeur (compatible 3-15 PPR)
- Carte hôte compatible I2C (ex: M5Stack Core2 ou ESP32)
- Câbles Grove I2C
- Alimentation externe DC 6-12V
Étapes
- 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.
- 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.
- 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).
- 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.
- 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.
- 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
- Premier branchement et mise en route de l'Encoder Motor Driver Unit
- Maîtriser les entrées-sorties avec l'Encoder Motor Driver Unit
- Automatiser un mouvement précis avec l'Encoder Motor Driver
- Première mise en route du Driver Moteur Encoder
- Pilotage GPIO et LED RGB sur l'Encoder Motor Driver Unit
- Configuration avancée et validation du bus I2C
Exemples de code pour cette carte
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