Contrôleurs de moteurs PWM en profondeur

Indication

WPILib dispose d’un soutien important pour le contrôle moteur. Il existe un certain nombre de classes qui représentent différents types de contrôleurs de moteurs et servomoteurs. Il existe actuellement deux catégories principales de contrôleurs moteurs: les contrôleurs moteurs de type PWM et les contrôleurs moteurs de type CAN. WPILib contient également des classes composites (comme DifferentialDrive) qui vous permettent de contrôler plusieurs moteurs avec un seul objet. Cet article couvre en détails les contrôleurs moteurs PWM; Les contrôleurs CAN et les classes composites seront couverts par des articles distincts.

Contrôleurs PWM, la théorie du fonctionnement

L’acronyme PWM signifie Pulse Width Modulation ou Modulation de Largeur d’Impulsion en abrégé MLI. Pour les contrôleurs de moteurs, PWM peut se référer à la fois au signal d’entrée et à la méthode utilisée par le contrôleur pour contrôler la vitesse du moteur. Pour contrôler la vitesse du moteur, le contrôleur doit varier la tension d’entrée perçue du moteur. Pour ce faire, le contrôleur allume et éteint la tension d’entrée complète très rapidement, en variant la durée de l’état sur la base du signal de commande. En raison des constantes de temps mécaniques et électriques des types de moteurs utilisés en FRC® cette commutation rapide produit un effet équivalent à celui de l’application d’une tension inférieure fixe (50% de commutation produit le même effet que l’application de ~6V).

Le signal PWM que les contrôleurs utilisent comme entrée est un peu différent. Même aux limites de la plage du signal (avancer ou reculer au maximum), le signal n’approche jamais d’un rapport cyclique de 0% ou 100%. Au lieu de cela, les contrôleurs utilisent un signal avec une période de 5 mSec ou 10 mSec et une largeur d’impulsion médiane de 1,5 mSec, qui correspond à l’arrêt du moteur. En faisant varier la largeur de cette impulsion entre 1 mSec et 2 mSec, on fait varier la vitesse du moteur entre la marche arrière maximum et la marche avant maximum.

Valeurs de sortie brutes vs mises à l’échelle

En général, toutes les classes de contrôleur de moteur dans WPILib prennent une valeur de -1.0 à 1.0 comme sortie vers un dispositif actionneur. Le module PWM dans le FPGA du roboRIO est capable de générer des signaux PWM avec des périodes de 5, 10 ou 20 mSec et peut varier la largeur d’impulsion en 2000 pas de une microseconde chacun autour du point médian (1000 pas dans chaque direction autour du point médian). Les valeurs brutes envoyées à ce module sont dans cette plage de 0 à 2000, 0 étant un cas spécial qui maintient le signal de niveau bas (désactivé). La classe de chaque contrôleur de moteur contient des informations sur les valeurs limites typiques (min, max et chaque côté de la bande morte) ainsi que le point milieu typique. WPILib peut ensuite utiliser ces données pour mapper la valeur entre -1.0 et 1.0 dans la plage appropriée pour le contrôleur de moteur. Ainsi, on peut passer d’un type de contrôleur de moteur à un autre, et cela a un impact minimal sur la programmation, ca on évite d’inclure les informations spécifiques à chaque contrôleur dans le code principal.

Étalonnage des contrôleurs de moteurs

Donc, si WPILib gère toute cette mise à l’échelle, pourquoi auriez-vous alors besoin de calibrer votre contrôleur de moteur? Les valeurs que WPILib utilise pour la mise à l’échelle sont des valeurs approximatives basées sur la mesure d’un certain nombre d’échantillons de chaque type de contrôleur. En raison d’une variété de facteurs, la synchronisation d’un contrôleur de moteur individuel peut varier légèrement. Afin d’éliminer définitivement le « bourdonnement » (signal médian interprété comme un léger mouvement dans une direction) et de conduire le contrôleur jusqu’à chaque extrême, il est toujours recommandé d’étalonner les contrôleurs. En général, la procédure d’étalonnage pour chaque contrôleur consiste à mettre le contrôleur en mode étalonnage, puis à diriger le signal d’entrée à chacune de ces extrémités, puis à revenir au point médian. Pour avoir des exemples relatifs à la façon d’utiliser ces contrôleurs de moteurs dans votre code, consulter Using Motor Controllers in Code/Using PWM Motor Controllers