Signal de rotation d'un servo

Bonjour

J'étudie actuellement le fonctionnement des servos (arduino uno + servo) et j'ai une question sur le signal que doit avoir le servo pour en faire un angle.

Pour bien voir les vrais signaux, j'ai mis un oscilloscope sur le signal PWM et les valeurs reçue ne sont pas vraiment les valeurs lue sur le net.

Les valeurs lue sur le net sont en majorité comme celle de wikipedia (Servomoteur — Wikipédia) à savoir :

  • 1ms pour 0 degré
  • 1.5ms pour 90 degrés
  • 2ms pour 180 degrés

Alors que moi j'ai j'ai plutôt les résultats de se site (How does a servo work (PWM or PPM)? - Interfacing - Arduino Forum)

  • 560µs pour 0degrè
  • 2.6ms pour 180 degrés
    soit :

Qui croire ?
C'est quoi les valeurs correct ?

Je vous remercie d'avance

Les valeurs pour piloter un servo sont 1ms pour le MIN, 2ms pour le MAX et 1,5ms pour le milieu...

Si ton servo est un servo 180°, tu auras :
0° pour 1ms
90° pour 1,5ms
180° pour 2ms

mais la plupart des servo font moins que 180° je crois...

mike0007777:
Qui croire ?

Il faut croire les spécifications de ton servo ou ce que tu as mesuré (constaté) sur ton servo

C'est quoi les valeurs correct ?

Ce sont les valeurs que tu as mesurées. C'est pour ça que dans servo.attach(), on précise la durée min et max de l'impulsion

kamill:
Ce sont les valeurs que tu as mesurées. C'est pour ça que dans servo.attach(), on précise la durée min et max de l'impulsion

Teste les et quand tu est satisfait tu fait comme Kamill dis de cette maniere :

myServo.attach(9, 1000, 2000);

J'ai mesuré avec un servo en ma possession
0° -> 0.560 ms
180° (pas tout à fait) -> 2.420 ms

Ton servo est-il vendu pour 180° ?

C'est un servo qui était dans un starter kit arduino et dont je ne connais pas les caractéristiques.
Elle semblent néanmoins être assez standard car en regardant la librairie Servo, je vois que les valeurs par défaut sont 544 à 2400.

Si 544 c'est 0,544ms et 2400 est 2,4ms alors tu pousses beaucoup le servo dans ses retranchements.

"officiellement" le servo est fait pour être commandé entre 1ms et 2ms, même s'il est toujours capable d'aller plus loin...

Oui c'est des microsecondes
Ce n'est pas moi qui pousse le servo dans ses retranchements, ce sont les valeurs par défaut de la librairie Servo qui sont utilisées si on ne les modifie pas dans attach()

Pour déterminer les valeurs limites de mon servo, j'ai connecté un potentiomètre sur l'arduino, suivant la valeur de ce potentiomètre j'ai fait varier la largeur de l'impulsion en affichant cette valeur sur le moniteur série. J'ai noté les valeurs quand le servo commence juste à bouger et quand il s'arrête juste de bouger.
Si je varie de 1 à 2 ms, je couvre un peu plus de la moité de la course.

Je profite du fil pour poser une question:

Le servo a t'il ses propre butée (hard ou soft)? Si on donne une impulsion plus courte et plus longue il devrai pas aller au delà de ses specs non?

Bonjour,
les servos en ma possession (sg90 et mg90), bas de gamme, font un peu plus de 180°.
j'avais créé le fichier suivant qui fixe les limites à ne pas dépasser suite à des tests individuels :

// servos
servo_min1 543
servo_max1 1950
servo_min2 550
servo_max2 1950
servo_min3 550
servo_max3 2300
servo_min4 585
servo_max4 2230

Vous pouvez constater qu'elles sont assez disparates, mêmes pour un modèle donné, voire selon les jours, et qu'elles ne correspondent pas aux valeurs dans les sites évoquées. Le pragmatisme de kamil est de mise.

Le servo a t'il ses propre butées

les butées sont mécaniques. Aller au delà force la mécanique, bloque le moteur et consomme inutilement. Il convient donc de déterminer les min et max pour chaque servo, ajouter une marge de sécurité, et respecter ces valeurs

Je pense qu'il n'est pas bon de jouer proche des limites du servo, je pense qu'il sont vendu pour une utilisation standard (1ms-2ms) et qu'ils ont une marge de fonctionnement.

EDIT: D'un autre coté, Il est vrai que j'essaye de ne pas trop utiliser la librairie servo, afin de gagner en précision et en optimisation du code.

J'ai justement reçu des servo sg90 hier et commence donc mes tests aussi.

Effectivement, ça fonctionne entre 1ms et 2ms. Cependant, j'ai pas la course totale.

En allant à tâtons, j'ai réussi à avoir mon 180 à 255. Je cherche encore mon 0 mais je pense le trouver vers 550-600.

Phénomème étrange par contre: si je règle le 0 à 1100ms je viens taper à fond dans ma butée (le servo est transparent c'est utile!) et ca force pas mal. Alors que si je règle à 500, la butée touche mais c'est moins violent

En fait, chaque marque de radio commande donc aussi de servo utilise ses propres limites !
A l'origine, c'est bien 1ms, 1,5ms et 2ms , mais multiplex, par exemple, utilise des valeurs différentes. D'où la nécessité de régler le neutre lorsqu'on utilise une radio d'une marque avec les servos d'une autre.

Tout ça par dire que peut importe les valeurs min max et centre . Regarde ce que le servo choisi a besoin comme valeurs et utilise les comme constantes !