Le mode pas à pas (Mode 3)
Avis personnel : je n'aime pas les moteurs pas à pas. Cherchez pas, c'est comme ça...
Les servomoteurs Feetech offrent un mode "pas à pas". Ce mode se construit par dessus le mode 0 (enfin c'est comme ça que je le conçois). Les correcteurs en vitesse et en position sont utilisés.
Le mode pas à pas s'active ainsi :
sms_sts.writeByte(SERVO_ID, SMS_STS_MODE, 3);
Pour commander un mouvement, vous utilisez la même fonction qu'en mode 0 (mode servo) sauf que la consigne de position à une signification légèrement différente. En effet, plus qu'un mode pas à pas, il faut le voir un mode de déplacement relatif à la position actuelle.
Pour demande un déplacement d'un nombre de pas égal à pas_servo, à la vitesse vitesse, vous utiliserez cette fonction :
sms_sts.WritePosEx(SERVO_ID, pas_servo, vitesse);
La première surprise que vous risquez de rencontrer, c'est que les butées logicielles sont actives dans ce mode. Je n'ai pas essayé de voir ce qui se passait si leur valeur dépassait 4096. Bref, pour les désactiver, mettez la butée min et la butée max à 0 :
sms_sts.writeByte(SERVO_ID, 0x09, 0); // Butée min à 0 sms_sts.writeByte(SERVO_ID, 0x0A, 0); // Butée min à 0 sms_sts.writeByte(SERVO_ID, 0x0B, 0); // Buté max à 0, désactivation de la butée sms_sts.writeByte(SERVO_ID, 0x0C, 0); // Buté max à 0, désactivation de la butée
La lecture de la position actuelle pourrait vous surprendre, en effet, le registre ne contient plus la position actuelle mais le nombre de pas codeur à parcourir pour finir le mouvement. Vous lire donc 0 tant que vous ne demandez pas de mouvement. Vous observerez un sut à la demande du mouvement qui réduit au fur et à mesure que le servomoteur se rapproche de sa position.
Voici un exemple avec une demande de déplacement de 2000 pas toutes les 2 secondes

Contrairement au mode servo, en mode pas à pas, comme la position revient systématiquement à zéro, vous n'avez pas de phénomène de rebouclage (enfin pas ici).
La limite se situe au niveau de la consigne qui doit tenir sur 16 bits (bit de signe inclus). Donc la commande maximale que vous pouvez envoyer pour un mouvement est de 32767 pas (soit 8 tours). Évidement, si vous demandez plus, vous observerez le phénomène de rebouclage.
Le mode basse résolution vous permet de faire passer cette limite à 21 tours, mais les cas où ceci est utile ne doivent pas être nombreux...
La commande que vous envoyée sera ajoutée à celle en cours. Donc si vous envoyez de nouvelles consignes avant que le mouvement soit terminé, vous risquez un dépassement, mais c'est vraiment un effet de bord qui ne devrait pas arriver sur une utilisation correcte du servomoteur :



Mon contenu
Homme






