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
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
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é).
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).
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.