MTobjects et le servomoteur

Servo à 3 ou 4 fils?

Normalement, les servos que l'on utilise ont 3 fils, la référence (GND), l'alimentation (VCC) et le fil de commande. A la mise sous tension, si on ne sait pas dans quelle position se trouve le servo, on en choisit une par défaut. Si le servo n'est pas à la bonne place, il va rapidement se mettre en postion. Pour éviter cela, certains rajoutent un quatrième fil qui donne la position et qui évite ainsi au démarrage un mouvement brusque. Ce quatrième fil est soudé sur le point milieu du potentiomètre interne.

MTobjects propose deux servo: MTservo pour les servos 3 fils avec une mise sous tension brusque, par défaut à 90°, et MTservo4fils pour les servos à 4 fils, avec une mise sous tension immobile.


 

Mise en place

La gestion des servos est faite de façon hard en utilisant un timer. On est donc limité en nombre de servos (2 pour la Nano/Uno et 12 pour une Mega). Pour avoir plus de servos, il faut passer par une gestion soft, ce que fait Servo.h

La mise en place d'un timer doit se faire après l'initialisation de la carte (en gros pas avant le début de Setup). Si le servo est défini avant, ce qui est le cas général, il ne peut être mis en route à ce moment. C'est pour cela qu'un délai d'environ 16ms est mis en place. On ne peut pas modifier les caractéristiques du servo pendant les 16 premières ms. Les fonctions setTimeFrom0To180(), writeDegree(), et writeMicrosecond() attendent la fin de ces 16ms éventuellement et peuvent donc être appelées immédiatement sans risque.


 

Vitesse

MTservo permet de gérer un servomoteur avec un PWM hard. La résolution pourrait être de 0,5µs, mais cela n'a pas de sens pratique. C'est plus aisé de garder une résolution de 1µs (environ 0,1). On peut définir une vitesse en donnant le temps qui est mis pour que la commande passe de 0° à 180°. Si on donne une vitesse importante (par exemple 0ms ou 1ms), le servo ira à sa vitesse maximale, mais pour le logiciel, le servo sera arrivé à destination bien avant l'arrivée réelle.


 

MTservo pour les servo 3 fils

Les servos non trafiqués ont 3 fils, un pour GND, un pour l'alimentation et un pour recevoir la position à prendre.

Détail des fonctions sur ce pdf (car aussi imprimable).

 

MTservo4fils pour les servo 4 fils

Pour un servo 4 fils, on donnera en plus la broche du 4ème fil, les valeurs d'analogRead() pour cette broche pour 0° et 180°. Pour des raisons de compatibilité et bien qu'à la création le servo est déja en position, un arrêt est réalisé avec appel éventuel à onStop() et à la fonction pointée par onStopFunction.

Détail des fonctions sur ce pdf (car aussi imprimable).