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
The acronym PWM stands for Pulse Width Modulation. For motor controllers, PWM can refer to both the input signal and the method the controller uses to control motor speed. To control the speed of the motor the controller must vary the perceived input voltage of the motor. To do this the controller switches the full input voltage on and off very quickly, varying the amount of time it is on based on the control signal. Because of the mechanical and electrical time constants of the types of motors used in FRC® this rapid switching produces an effect equivalent to that of applying a fixed lower voltage (50% switching produces the same effect as applying ~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
In general, all of the motor controller classes in WPILib take a scaled -1.0 to 1.0 value as the output to an actuator. The PWM module in the FPGA on the roboRIO is capable of generating PWM signals with periods of 5, 10, or 20ms and can vary the pulse width in 4096 steps of 1us each . The raw values sent to this module are in this 0-4096 range with 0 being a special case which holds the signal low (disabled). The class for each motor controller contains information about what the typical bound values (min, max and each side of the deadband) are as well as the typical midpoint. WPILib can then use these values to map the scaled value into the proper range for the motor controller. This allows for the code to switch seamlessly between different types of controllers and abstracts out the details of the specific signaling.
É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