Moteurs SDK

Le SDK propose plusieurs méthodes de contrôle et de communication avec les moteurs, ainsi que quelques méthodes cachées auxquelles il est facile d’accéder.

Explication générale

Contrôleur de moteur

Tous les ports de moteur sont contrôlés par ce que l’on appelle un contrôleur de moteur à pont en H, un circuit qui peut être utilisé pour faire varier la tension de sortie ainsi que le signe (négatif ou positif) de la tension. Une tension négative dans un moteur à courant continu inverse le mouvement du moteur, tandis qu’une tension positive le fait avancer. La puissance du moteur SDK (de -1 à 1) représente un multiplicateur de la tension d’entrée qui est émise par le port du moteur. Les différentes tensions sont créées par PWM, où le port est activé et désactivé rapidement pour créer une tension moyenne plus faible.

En outre, il est possible de configurer le comportement du moteur à puissance nulle, c’est-à-dire le comportement du moteur lorsqu’il n’est pas alimenté. En mode FLOAT, le contrôleur de moteur s’éteint simplement, fournissant une résistance supplémentaire minimale. En mode FREIN, les deux fils du moteur sont court-circuités en interne. En raison de la propriété inhérente à tous les moteurs à courant continu à balais de générer de l’électricité lorsque l’arbre tourne, le fait de court-circuiter les fils provoque une inversion de puissance qui arrête le moteur rapidement et résiste aux forces extérieures.

Note

Le contrôleur de moteur utilise la tension d’entrée, ce qui signifie que sur une batterie de 13 volts, une puissance de 1 créera une tension de sortie de 13 volts. De même, sur une batterie de 11 volts, une puissance de 1 créera une tension de sortie de 11 volts.

Encodeur de moteur

Important

Il n’existe pas vraiment de terminologie normalisée pour les encodeurs en quadrature. Nous utilisons ici les termes « count » et « tick » pour représenter une seule action ascendante ou descendante dans l’onde en quadrature. Certaines fiches techniques mentionnent également des « impulsions », qui peuvent aller de 1 « compte » à 4 « comptes ». Soyez prudent lorsque vous lisez des fiches techniques !

Les encodeurs FTC® utilisent le format quadrature à deux fils pour transmettre les informations relatives de l’encodeur. En quadrature, il y a deux fils de signal, A et B. Lorsqu’ils se déplacent, A et B génèrent tous deux des ondes carrées à 90 degrés l’une de l’autre, c’est-à-dire qu’une onde carrée commence à mi-chemin de l’autre onde carrée et se termine à mi-chemin de l’autre onde carrée. Dans une direction, l’onde carrée du fil A précède l’onde carrée du fil B, et dans l’autre direction, l’onde carrée du fil B précède l’onde carrée du fil A. Les deux ondes sont combinées dans la fonction XOR. Les deux ondes sont combinées en XOR pour produire l’onde de sortie, où chaque action montante et descendante correspond à un « tick », et plus l’onde est rapide, plus l’encodeur se déplace rapidement.

Le hub REV compte les impulsions et calcule la vitesse en utilisant un « tampon circulaire » de 5 valeurs, auquel une nouvelle valeur est ajoutée toutes les 10 ms. Ces 5 valeurs sont ensuite utilisées pour calculer la vitesse actuelle.

Avertissement

Il est recommandé de connecter les encodeurs en quadrature à des ports spéciaux décodés par le matériel pour qu’ils puissent être lus correctement. L’expansion hub contient du matériel spécial pour lire les encodeurs en quadrature, mais comme il n’y a que deux de ces contrôleurs, deux des broches sont connectées en « logiciel » à la place (les ports sont décodés en logiciel au lieu d’être décodés en matériel). Cela signifie que les ports 0 et 3, les deux ports connectés aux ports spéciaux en quadrature, liront toujours avec précision. Les ports 1 et 2 sont connectés aux ports « logiciels » moins précis, ce qui signifie qu’avec les codeurs CPR élevés (encodeurs qui produisent plus de 4000 coups par tour, tels que l’encodeur à alésage traversant REV ou le codeur SRX Talon), ils peuvent « perdre des pas » et dériver.

Exemple d'onde en quadrature, avec le canal A et le canal B. L'onde est divisée en quatre sections, chaque section constituant une coche.

Exemple d’onde en quadrature, avec le canal A précédant le canal B. Chaque compte est un « compte » ou un « tic »

Méthodes cachées

DcMotorEx

Tous les moteurs DC du hub REV sont des instances de DcMotorEx, qui exposent quelques méthodes supplémentaires à l’utilisateur, telles que le contrôle de la vitesse et la mesure de la consommation de courant.

Note

Il n’y a pas d’inconvénient à utiliser DcMotorEx, pour convertir un DcMotor en DcMotorEx, l’utilisateur doit simplement convertir le DcMotor retourné par le hardwareMap en un DcMotorEx.

Conseils

  • Les relevés de courant ne sont pas lus en masse, mais les alertes de courant (isMotorOverCurrent()) sont lues en masse.

  • Les coefficients PID/PIDF utilisent des unités internes pour la sortie, une valeur courte de deux octets allant de -32767 à 32767, au lieu des valeurs utilisateur de -1 à 1.

  • La méthode par défaut getVelocity() renvoie la vitesse de l’encodeur en ticks par seconde.

  • Le RunMode STOP_AND_RESET_ENCODERS` n’est pas réellement un mode de fonctionnement. Au lieu de cela, il met simplement l’alimentation à zéro et envoie une LynxResetMotorEncoderCommand. Cette commande peut être émise manuellement si l’on souhaite réinitialiser facilement un encodeur de moteur sans changer le mode de fonctionnement.