​ ​ ​ ​ Instabilité servomoteurs
Results 1 to 4 of 4

Thread: Instabilité servomoteurs

  1. #1
    New Member
    Join Date
    May 2010
    Location
    france
    Posts
    23

    Default Instabilité servomoteurs

    Bonjour
    Avec mes élèves je viens de conclure une petite expérience robotique et je suis un peu déçu par la programmation des servomoteurs.
    En effet, on a beaucoup de peine à ajuster la vitesse de ceux-ci.
    Ce sont des servo à rotation continue que je programme sous picaxe blockly avec l'instruction positionner servo.
    J'ai une alimentation de 6V pour les servos (4 piles) et 4,5 V (3 piles) pour la carte (Powerprog)
    Comme il est demandé dans la notice du logiciel je reste entre 75 et 225 avec une position d'arrêt proche de 150.
    Quelquefois, le changement de 1 unité produit un changement de vitesse énorme
    Quelquefois même un changement de valeur radical produit un changement de vitesse insignifiant
    La valeur d'arrêt peut être changeante (avec le même servo il va de soit)

    Je pensais que la partie électronique d'un servo moteur produirait plus de stabilité dans la programmation et surtout plus de certitudes. Là, le robot qui va droit grâce à ces 2 servos c'est presque un coup de chance.
    Est-ce normal? Y'a t-il quelque chose que je n'ai pas compris?
    Merci d'avance pour votre aide..J'aimerais faire mieux l'année prochaine.
    PG

  2. #2
    Senior Member
    Join Date
    Sep 2011
    Location
    Montpellier (FRANCE)
    Posts
    2,645

    Default

    Bonjour,
    A priori, ce que vous décrivez est normal ; il y a beaucoup d'éléments qui rendent le fonctionnement d'un servo à rotation continue non linéaire par rapport à la commande.
    Simplement, cette non-linéarité sera plus ou moins prononcée en fonction de la qualité de réalisation (et donc du coût) entre franchement aléatoire (ce qui semble être votre cas) et quasiment parfait pour des modèles dits "numériques" haut de gamme.
    Pour avoir une certitude de linéarité, il n'y a que deux options :
    - moteurs pas à pas,
    - encodeur en bout d'axe (optique ou magnétique) ou au niveau des roues.

    La partie "électronique" d'un servo est en fait un potentiomètre qui lit la valeur angulaire et un "comparateur" qui ajuste la position du servo au PWM reçu.
    Dans le cas d'un servo à rotation continue, le potentiomètre est désactivé et le comparateur ne compare plus rien mais transmet plus ou moins directement le PWM vers le moteur. Les différents frottements dans le moteur, le train d'engrenages et le véhicule conduisent à une vitesse de rotation en bout d'axe passablement aléatoire. Aucune mesure de contre-réaction ne vient stabiliser la chose...

    Il existe des servo-avec-retours-dinformations mais le tarif n'est pas le même.

    Autre option (mais probablement hors de portée pour des élèves) vue sur le forum anglais : utiliser une boussole et/ou un gyromètre pour contrôler la trajectoire...

    Article intéressant sur la qualité des servos standards : test-de-precision-des-servos-micro-mini-standard/ Comme dit, pour un servo à rotation continue, c'est forcément pire...

    Vous pouvez également lire Servomoteurs-numeriques
    et Dynamixel-AX-12-user-manual.pdf
    Mais il me semble que l'encodeur de roue est plus facile à comprendre (plus visuel) et moins coûteux.

    La solution PAP est très fiable et peu coûteuse si on n'a pas trop besoin de vitesse et/ou de puissance : Stepper-Step-Motor-Driver-Board-ULN2003-with-drive-Test-Module-, voir gratuit en récupérant les composants d'une vieille imprimante...
    Last edited by BESQUEUT; 15-06-2017 at 10:57.
    There are 10 types of people in the world: those who understand binary, and those who don't.

  3. #3
    Senior Member
    Join Date
    Mar 2010
    Location
    France
    Posts
    113

    Default

    Bonjour,
    Effectivement les servomoteurs « entrée de gamme » sont potentiellement capricieux…

    On a cependant une bonne chance de réussite à condition de respecter ce qui est indiqué p. 213 de http://www.picaxe.com/docs/picaxe_manual2_fr.pdf

    Utiliser une fois l’instruction « servo » en début de programme pour initialiser le servo (met en service le timer interne au PICAXE qui va gérer le signal envoyé au servo), ensuite utiliser uniquement l’instruction « servopos » qui modifiera la consigne de temps (sans perturber le timer qui est déjà « en route »).

    Si vous utilisez Blockly voir les commande de la rubrique Sorties : « initialiser servo à » à placer en tête de programme, puis « positionner servo à » à chaque fois que vous souhaitez changer la consigne.

    Si vous programmez en Organigramme dans PE6 prendre la commande « servo » de la rubrique Autre Entrée/Sortie et sélectionnez le mode approprié (Initialiser, ou mettre à jour).

    Ne pas utiliser « initialiser servo à » pour chaque changement de consigne sans quoi ça va probablement « pétouiller » le temps que le timer interne se réinitialise…
    A4 Technologie
    http://www.a4.fr/

  4. #4
    Senior Member
    Join Date
    Feb 2012
    Location
    Anjou
    Posts
    353

    Default

    Bonsoir,

    La solution PAP pose la question du poids, souvent plus important.

    Autre solution : la mesure de la tension correspondant à la force contre électromotrice. Le moteur devient générateur un bref instant et répercute une tension proportionnelle à sa vitesse. http://www.picaxeforum.co.uk/showthr...-using-an-18m2

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •