Comment puis-je modifier un servo de loisir à faible coût pour qu'il fonctionne «librement»?


15

J'ai des servos de loisir ( Power HD 1501MG ) et j'aimerais pouvoir les contrôler (via un Arduino) afin qu'ils se dirigent vers l'angle que j'ai défini ou les mettent en mode de `` course libre '', où la charge les emportera partout où elle ira.

Est-ce même possible, ou vais-je juste finir par dépouiller les engrenages?

Ma première pensée est de simplement tuer le pouvoir du servo, mais la force requise pour les déplacer dans cet état est plus que je ne le souhaiterais.

Si c'est possible, est-ce que je regarde un changement de matériel, ou est-ce que je pourrais le faire dans le logiciel?


3
Les servos de loisir ne conviennent pas vraiment à la robotique robuste, et les servos de loisir modifiés sont encore pires. Vous n'aimerez pas ce que vous obtenez si vous faites cela. Achetez un moteur à courant continu à engrenages abordable et un petit pont en H pour le conduire à la place, il sera beaucoup plus robuste et vous serez beaucoup plus heureux. Vous pouvez construire un pont en H à partir d'un circuit L298 à très faible coût.
Jon Watte

1
Je suppose que ma prochaine question ici sera «qu'est-ce qu'un pont en H? (Mais j'essaierai d'abord Google!)
Khrob

Réponses:


13

Ce que vous demandez ne sera pas très facile avec un servo RC standard.

Ce que vous demandez, c'est un servo à entraînement arrière. IE celui que vous pouvez faire tourner librement en appliquant un couple externe. Il est certainement possible de les créer et ils sont utilisés sur de nombreux robots, mais la plupart des servos RC nécessitent un couple considérable pour les entraîner. Je les appellerais semi-backdrivable.

Qu'est-ce qui vous empêche de les reconduire? Deux choses:

Friction: Tout d'abord, la friction dans la chaîne d'engrenage et le moteur. Les servos RC sont toujours réduits; la sortie tourne plus lentement que le moteur. Bien sûr, cela signifie que lorsque vous essayez de le reculer, vous devez faire tourner le moteur très rapidement. Tout frottement ou engrenage dans le moteur sera ressenti des dizaines de fois à la sortie.

backdrivability

Courant: quelque chose de surprenant à propos des moteurs électriques, c'est que si vous court-circuitez les bornes, elles deviennent plus difficiles à tourner. La rotation du moteur génère un courant électrique qui agit contre votre rotation. L'électronique à l'intérieur du servo pourrait bien laisser passer suffisamment de courant, même lorsqu'il est éteint, ce qui empêche sensiblement la rétrogradation. Dans le passé, j'ai remarqué que certains gros moteurs pas à pas, même sans engrenage, sont presque impossibles à reculer lorsqu'ils sont branchés à un équipement non alimenté. Mais lorsque vous les débranchez, ils peuvent tourner librement.

Ainsi, une façon d'améliorer la conduite arrière est d'empêcher le courant de circuler. La façon évidente de le faire est de déconnecter complètement le moteur de son électronique. Mais cela est difficile à faire, même en utilisant des FET, car les diodes à l'intérieur des FET pourraient bien laisser passer le courant. Cependant, vous pourriez utiliser un relais qui déconnecterait vraiment le moteur. Il suffit de l'utiliser sur l'une des bornes du moteur.

ESCON de Maxon

Les servocontrôleurs «appropriés» (comme l' ESCON de Maxon) contiennent en fait un contrôleur de courant qui peut activement empêcher le courant de circuler en appliquant la bonne tension aux bornes du moteur. Remplacer l'électronique du servo par quelque chose capable de contrôler le courant pourrait vraiment aider.

Ce que vous devez faire: ouvrir le servo, dessouder le moteur et le remonter. Est-il facile de faire marche arrière maintenant? Si c'est facile, il peut être possible de faire ce que vous voulez. Si c'est encore trop difficile pour votre application, vous devrez choisir un autre servo ou faire le vôtre. Faites-en un avec un seul étage d'engrenage afin que le frottement de l'engrenage soit réduit autant que possible, et utilisez l'électronique d'entraînement avec une boucle de contrôle de courant pour garantir un flux de courant nul.


La réponse de SimpleCoder est également excellente.
Khrob

7

Question interessante.

La première option que j'examinerais serait de couper l'alimentation comme vous l'avez suggéré (peut-être contrôler un MOSFET dans un logiciel pour commuter l'alimentation).

Une autre approche plus compliquée pourrait être de surveiller la consommation actuelle du servo pour détecter quand il est sous une lourde charge. Lorsque vous souhaitez passer en mode "fonctionnement libre", demandez à votre logiciel de déplacer en continu le servo dans une position qui se traduit par la consommation de courant la plus faible. Cela n'entraînera pas entièrement un servo "à fonctionnement libre", car il y aura des mouvements instables du servo lorsque le logiciel tentera de trouver la "bonne" position, mais cela pourrait fonctionner selon votre application.

Vous n'auriez pas besoin de modifier vos servos pour surveiller la consommation actuelle. Une carte comme celle-ci de SparkFun se trouvera entre le servo et sa source d'alimentation (vous en avez besoin d'une par servo) et produira une tension analogique (que vous pouvez lire sur une broche ADC du microcontrôleur) qui correspond au courant:

entrez la description de l'image ici

Image de SparkFun


@Khrob: S'il vous plaît voir mon montage
Chris Laplante

Bien - j'en ai maintenant commandé un tas!
Khrob

@Khrob: Nice, laissez-nous savoir comment ils fonctionnent! (Et s'il vous plaît ne me blâmez pas si cela ne fonctionne pas;))
Chris Laplante

@Khrob: Notez également qu'en fonction de la mesure des petits courants que vous mesurez
Chris Laplante

1
Je vais commencer pas cher et monter mon chemin!
Khrob

5

Habituellement, ces types de servos de loisirs ne sont pas conçus pour une rotation continue et incluent souvent une butée mécanique. Attention, ce que je décris ci-dessous est un moyen infaillible de ne jamais obtenir un fonctionnement en boucle fermée réel, mais rendra le servo continu uniquement.

La plupart du temps, vous pouvez faire une recherche rapide en ligne pour "Modification continue pour x servo", mais je vais décrire ici le processus général.

  • Déterminez si le servo a un arrêt physique. Si c'est le cas, vous devrez ouvrir le servo et le retirer (je recommande l'outil Dremel).
  • Vous voulez ensuite trouver le "centre" du mécanisme de rétroaction.
    • Connectez le servo à votre Arduino et envoyez une commande "centrale" (généralement PWM 127).
    • Trouvez le mécanisme de rétroaction (généralement un potentiomètre) et ajustez-le jusqu'à ce que le servo ne bouge pas du tout.
    • Soit coller le potentiomètre en place, soit mesurer la résistance et remplacer le potentiomètre par une résistance de valeur de consigne.
  • Remontez le servo.

L'envoi d'une commande "centrale" au servo devrait l'empêcher de bouger, tandis que l'envoi d'une commande positive ou négative devrait le faire tourner en continu dans un sens ou dans l'autre. La vitesse de rotation doit être proportionnelle à la "distance" du centre de la commande envoyée.

Si vous souhaitez restaurer le fonctionnement du servo sur votre servo nouvellement modifié, vous pouvez ajouter une sorte d'encodeur pour refermer la boucle.

Alternativement, vous voudrez peut-être regarder le servo de la série Dynamixel , qui permet à la fois un fonctionnement continu et asservi, et inclut une prise en charge Arduino.


Je suis content qu'il y ait une limite mécanique au mouvement, mais ce serait un bon moyen de l'étendre encore plus pour avoir une fissure dans une configuration de pendule inversé! J'ai regardé les trucs Dynamixel, et c'est très cool, mais plus $$ que j'espère dépenser pour ça.
Khrob

Mon impression était que l'OP voulait démarrer quelque chose en mouvement en conduisant un servo et ensuite le laisser «rouler» sans alimentation jusqu'à ce qu'il s'arrête naturellement d'inertie. Je ne connais aucune conception de servo (continue ou non) qui permettrait à cet effet de se produire.
Crake

@Crake, je suis d'accord, je crois que j'ai répondu à la mauvaise question, mais je vais laisser ça, car j'ai déjà fait le travail: p. IIRC, les servos Dynamixel devraient avoir un réglage "côte".
mjcarroll

@mjcarroll Oui, je pense qu'il est utile de mentionner comment modifier un servo pour une rotation continue, car c'est une tâche courante pour les projets de robot bon marché. Je suis curieux de savoir si les servos Dynamixel utilisent l'algorithme de mesure du courant décrit dans la réponse de SimpleCoder, cherchant constamment à minimiser le courant en ajustant le PWM, ou s'ils ont un embrayage physique pour désengager le servomoteur de l'arbre d'entraînement.
Crake

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.