Bonjour,
Je parle des petits servomoteurs de modélisme que l'on trouve à pas cher.
J'aimerai bien savoir s'il y a une norme, ou au minimum un accord de principe entre les fabricants pour le dimensionnement des signaux de commande.
Il se trouve que je cherche à utiliser un servo 270° en plus d'un classique 180°
Pressentant une source d'embrouille j'ouvre les fichiers de la bibliothèque servo et je trouve dans servo.h :
void write(int value); // if value is < 200 its treated as an angle,
// otherwise as pulse width in microseconds
Donc si je demande 240° la méthode fera 240 µs !
D'autre part j'ai lu à plusieurs reprises que les signaux de commande faisait 1,5ms pour la position centrée, 1 ms pour un extrême et 2 ms pour l'autre extrême.
Mais alors pourquoi dans la bibliothèque servo on défini le temps min à 544 µs et le temps max à 2400 µS ?
Ne m'aurait t-on pas tout dit ?
Passons à la pratique cela dissipera peut-être les brumes.
Test avec deux servos : un classique 180° et le 270°.
Utilisation de la méthode write qui reçoit une valeur d'angle.
Servo 180 :
entre write(0) et write(180) il fait bien 180° (enfin un peu plus mais là je pense que c'est du à la réalisation du servo).
Servo 270
Entre write (0) et write (180) le servo fait en gros 270° pour en savoir plus il faudrait que je fasse des mesures d'angle plus précises mais à première vue ce devrait être 270°
Autre test :
void test_4()
{
servo_270.writeMicroseconds(1000);
delay(1000);
servo_270.write(0);
delay(1000);
}
Le servo devrait être immobile et il fait en gros des angles de 30° entre les deux ordres.
Dernier test :
servo_270.write(170);
delay(1000);
servo_270.write(175);
delay(1000);
servo_270.write(180);
delay(1000);
servo_270.write(185);
delay(1000);
servo_270.write(190);
delay(1000);
servo_270.write(195);
delay(1000);
Normalement une valeur d'angle inférieure à 200 est valide.
Au delà de write (180) le servo est immobile, les valeurs supérieures à 180 ne sont pas prise en compte. Cela semble cohérent mais alors pourquoi cette limite à 200 ?
Mesure des temps :
Write (0) si ce qu'on lit est vrai l'impulsion devrait faire 1ms or je mesure 543,8 µs soit, comme par hasard, la limite basse définie dans la bibliothèque.
Idem pour 180 je mesure 2,398 ms
Conclusion
La définition de la méthode write est fausse profondément incomplète car elle n'est valable que pour un seul modèle de servo les 180.
Par contre elle fait quand même le travail avec des servos non 180 mais sans le dire.
En fait 0 correspond à l'angle minimal et 180 à l'angle maximal peu importe la valeur de cet angle.
Je pense qu'avec un servo 1/4 de tours on obtiendrait l'angle max de 90° en en demandant 180 !
Les temps réellement pratiqués n'ont rien à voir avec ce que l'on lit (de 1ms à 2 ms).
Quelqu'un a t-il une norme sur les servo de modélisme ?