Unités des Servomoteurs

Bonjour à tous !

Je post ici une petite question qui est sans doute une évidence pour toute personne ayant fait des études dans l'électronique mais qui n'est malheureusement pas une évidence pour moi :frowning:

Je suis sur un projet d'Hexapod, donc les servomoteurs ne doivent plus avoir de secrets pour moi pour y arriver ^^

J'explique ... lorsque j'utilise un servomoteur de façon "standard" directement sur un arduino, on lui indique une position souhaitée en degré de 0 à 180 degrés --> ca, je visualise :slight_smile:

Mais,
Quand j'utilise un testeurs de servo, il indique une valeur entre 800 et 2200 (c'est con mais en cherchant un peu j'ai quand même pas trouvé c'était quoi l'unité)
Quand j'utilise un module PCA9685, on parle plutôt de valeurs à prendre en compte de 150 à 600 (pulse lenght).

J'ai du mal à comprendre les unités du testeur et du module PCA9685 ? (je sais qu'on peut utiliser la fonction map pour convertir sous forme de degré).

Quelqu'un peut-il m'expliquer ?
Merci à vous !

hello

Pour utiliser le module PCA9685, nous utilisons la librairie Adafruit_PWMServoDriver.h. Les largeurs de PWM généralement données en microsecondes sur une période de 20ms (50Hz) mais ces valeurs peuvent changer d’un servomoteur à l’autre et entre fournisseur. Il vous faudra modifier les valeurs du code pour les adapter à votre servomoteur.
Dans notre cas, nous utilisons le servomoteur MG90S dont les plages sont 400-2400µs sur 20ms.

Pour définir la commande PWM, la librairie présente deux fonctions setPWM() et writeMicroseconds(). La fonction writeMicroseconds() nous permet d’utiliser les valeurs constructeur directement. Pour la fonction setPWM, il nous faut trouver la largeur d’impulsion correspondante sur 4096 (2^12, 12bits).

lire ICI

Ce sont des millisecondes.
La commande des servo moteur est de la PWM à 50 Hz de fréquence de récurrence, soit une période de 20 ms.
Le servo en butée d'un côté le temps de commande est 0,8 ms
Le servo en butée de l'autre côté le temps de commande est 2,2 ms

Et ce quel que soit le débattement du servo : 90 °, 135 °, 180°, 270°.

Les bibliothèques qui gèrent en degrés sont casse figure : elles font l'hypothèse que le servo est un servo 180 °.

Il est préférable de commander en temps et de faire soi-même la conversion temps/degrés en fonction du servo que l'on a réellement.

Selon la qualité du matériel, un servo 180° fera réellement 180 ° ± 4 ou 5 °
Une vérification me semble indispensable, et peu têtre un étalonnage s'il y a besoin de précision.

micro-secondes en fait :slight_smile: (comme expliqué dans le reste du post)

Merci pour vos réponses ! :slight_smile:

Oui tout à fait, merci de la correction.
j'ai d'ailleurs rectifié, inconsciemment et de manière pavlovienne, dans ma réponse. :smiley:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.