Wie kann ich ein kostengünstiges Hobby-Servo so modifizieren, dass es "frei" läuft?

15

Ich habe einige Hobby-Servos ( Power HD 1501MGs ) und möchte sie (über ein Arduino) steuern können, damit sie entweder in den von mir eingestellten Winkel gehen oder sie in einen "Freilauf" -Modus versetzen. wohin die Ladung sie bringen wird, wohin sie geht.

Ist das überhaupt möglich, oder werde ich am Ende nur die Zahnräder ausziehen?

Mein erster Gedanke ist, einfach die Leistung des Servos zu unterbrechen, aber die Kraft, die erforderlich ist, um sie in diesem Zustand zu bewegen, ist mehr als ich möchte.

Wenn es möglich ist, schaue ich nach einer Hardwareänderung oder könnte ich dies in der Software tun?

Khrob
quelle
3
Hobby-Servos eignen sich nicht wirklich für robuste Robotik, und modifizierte Hobby-Servos sind noch schlimmer. Sie werden nicht mögen, was Sie bekommen, wenn Sie dies tun. Kaufen Sie stattdessen einen günstigen Gleichstrommotor mit Getriebe und eine kleine H-Brücke, um diesen anzutreiben. Er ist viel robuster und Sie werden viel zufriedener. Sie können eine H-Brücke aus einer L298-Schaltung zu sehr niedrigen Kosten bauen.
Jon Watte
1
Ich schätze, meine nächste Frage hier wird lauten: Was ist eine H-Brücke? (Aber ich werde es zuerst mit Google versuchen!)
Khrob

Antworten:

13

Was Sie fragen, wird mit einem Standard-RC-Servo nicht ganz einfach.

Was Sie verlangen, ist ein rückwärtsfahrbares Servo. IE eine, die Sie durch Anlegen eines externen Drehmoments frei drehen können. Es ist sicherlich möglich, diese zu erstellen, und sie werden bei vielen Robotern verwendet, aber die meisten RC-Servos erfordern ein beträchtliches Drehmoment, um sie zurückzutreiben. Ich würde sie als semi-back-drive bezeichnen.

Was hindert Sie daran, sie zurückzufahren? Zwei Dinge:

Reibung: Erstens Reibung in der Getriebekette und im Motor. RC-Servos sind immer runtergeschaltet; Der Ausgang dreht sich langsamer als der Motor. Das bedeutet natürlich, dass Sie beim Rückwärtsfahren den Motor sehr schnell drehen müssen. Jegliche Reibung oder Verzahnung im Motor ist am Abtrieb über ein Dutzend Mal zu spüren.

Rückfahrbarkeit

Strom: Elektromotoren sind überraschend, wenn Sie die Klemmen kurzschließen, lassen sie sich schwerer drehen. Die Drehung des Motors erzeugt einen elektrischen Strom, der Ihrer Drehung entgegenwirkt. Die Elektronik im Servo lässt möglicherweise auch im ausgeschalteten Zustand genügend Strom fließen, so dass ein Zurückfahren spürbar verhindert wird. In der Vergangenheit ist mir aufgefallen, dass einige große Schrittmotoren, auch wenn sie nicht verzahnt sind, fast nicht rückwärts angetrieben werden können, wenn sie an nicht mit Strom versorgte Geräte angeschlossen sind. Aber wenn Sie sie abziehen, können sie frei gedreht werden.

Eine Möglichkeit, die Rückfahrbarkeit zu verbessern, besteht darin, den Stromfluss zu verhindern. Die naheliegende Möglichkeit besteht darin, den Motor vollständig von der Elektronik zu trennen. Dies ist jedoch selbst bei Verwendung von FETs schwierig, da die Dioden in den FETs möglicherweise den Stromfluss zulassen. Sie könnten jedoch ein Relais verwenden, das den Motor wirklich abschaltet. Sie müssten es nur an einem der Motorklemmen verwenden.

Maxons ESCON

"Richtige" Servoregler (wie der ESCON von Maxon) enthalten tatsächlich einen Stromregler, der den Stromfluss durch Anlegen der richtigen Spannung an den Motorklemmen aktiv verhindern kann. Das Ersetzen der Elektronik im Servo durch etwas, das zur Stromregelung geeignet ist, könnte wirklich helfen.

Was Sie tun sollten: Öffnen Sie das Servo, lösen Sie den Motor und bauen Sie ihn wieder zusammen. Wie einfach ist es jetzt, zurückzufahren? Wenn es einfach ist, kann es möglich sein, das zu tun, was Sie wollen. Wenn es für Ihre Anwendung immer noch zu schwierig ist, müssen Sie ein anderes Servo auswählen oder ein eigenes herstellen. Machen Sie eine mit einer einzigen Getriebestufe, damit die Reibung des Getriebes so weit wie möglich reduziert wird, und verwenden Sie eine Antriebselektronik mit einem Stromregelkreis, um einen Nullstromfluss zu gewährleisten.

Raketenmagnet
quelle
Die Antwort von SimpleCoder ist ebenfalls hervorragend.
Khrob
7

Interessante Frage.

Die erste Option, die ich untersuchen würde, wäre die von Ihnen vorgeschlagene Stromunterbrechung (möglicherweise die Steuerung eines MOSFET in der Software zum Umschalten der Stromversorgung).

Ein weiterer komplizierterer Ansatz könnte darin bestehen, den Stromverbrauch des Servos zu überwachen, um zu erkennen, wenn es unter einer hohen Last steht. Wenn Sie in den "Freilauf" -Modus wechseln möchten, lassen Sie Ihre Software versuchen, das Servo kontinuierlich in eine Position zu bewegen, die den geringsten Stromverbrauch ergibt. Dies führt nicht vollständig zu einem "freilaufenden" Servo, da das Servo einige zitternde Bewegungen ausführt, wenn die Software versucht, die "richtige" Position zu finden, dies kann jedoch je nach Ihrer Anwendung funktionieren.

Sie müssten Ihre Servos nicht modifizieren, um den Stromverbrauch zu überwachen. Ein Board wie dieses von SparkFun sitzt zwischen dem Servo und seiner Stromquelle (Sie benötigen eines pro Servo) und gibt eine analoge Spannung aus (die Sie an einem ADC-Pin eines Mikrocontrollers ablesen können), die der Stromstärke entspricht:

Bildbeschreibung hier eingeben

Bild von SparkFun

Chris Laplante
quelle
@Khrob: Bitte sehen Sie meine Bearbeitung
Chris Laplante
Schön - ich habe jetzt ein paar davon bestellt!
Khrob,
@Khrob: Schön, lass uns wissen, wie sie funktionieren! (Und bitte beschuldigen Sie mich nicht, wenn es nicht funktioniert;)
Chris Laplante
@Khrob: Beachten Sie auch, dass Sie abhängig von den gemessenen kleinen Strömen möglicherweise eine empfindlichere Platine benötigen: sparkfun.com/products/8883
Chris Laplante,
1
Ich fange günstig an und arbeite mich hoch!
Khrob,
5

Normalerweise sind diese Arten von Hobby-Servos nicht für eine kontinuierliche Rotation ausgelegt und enthalten häufig einen mechanischen Anschlag. Beachten Sie, dass ich im Folgenden einen todsicheren Weg beschreibe, um niemals einen tatsächlichen Betrieb mit geschlossenem Regelkreis zu erreichen, sondern stattdessen den Servo nur kontinuierlich zu machen.

Meistens können Sie online schnell nach "Continuous Modification for X Servo" suchen, aber ich werde hier den allgemeinen Prozess skizzieren.

  • Stellen Sie fest, ob der Servo einen physischen Stopp hat. In diesem Fall müssen Sie das Servo öffnen und entfernen (ich empfehle das Dremel-Werkzeug).
  • Sie möchten dann die "Mitte" des Rückkopplungsmechanismus finden.
    • Schließen Sie das Servo an Ihren Arduino an und senden Sie einen "Center" -Befehl (normalerweise PWM 127).
    • Suchen Sie den Feedback-Mechanismus (normalerweise ein Potentiometer) und trimmen Sie ihn, bis sich das Servo überhaupt nicht mehr bewegt.
    • Kleben Sie entweder das Potentiometer fest oder messen Sie den Widerstand und ersetzen Sie das Potentiometer durch einen Widerstand mit eingestelltem Wert.
  • Servo wieder zusammenbauen.

Wenn Sie nun einen "Center" -Befehl an das Servo senden, sollte sich dieses nicht mehr bewegen. Wenn Sie einen positiven oder negativen Befehl senden, sollte sich das Servo kontinuierlich in die eine oder andere Richtung drehen. Die Drehzahl sollte proportional zur "Entfernung" von der Mitte des gesendeten Befehls sein.

Wenn Sie den Servobetrieb Ihres neu modifizierten Servos wiederherstellen möchten, können Sie eine Art Encoder hinzufügen, um die Schleife wieder zu schließen.

Alternativ möchten Sie vielleicht einen Blick auf das Dynamixel- Servo werfen , das sowohl den Dauerbetrieb als auch den Servobetrieb ermöglicht und eine gewisse Arduino-Unterstützung bietet.

mjcarroll
quelle
Ich bin damit einverstanden, dass die Bewegung mechanisch begrenzt ist, aber dies wäre eine gute Möglichkeit, sie noch weiter zu erweitern, um einen Riss bei einem umgekehrten Pendelaufbau zu bekommen! Ich habe mir das Dynamixel-Zeug angesehen und es ist sehr cool, aber mehr Geld, als ich mir erhoffe, dafür auszugeben.
Khrob,
Mein Eindruck war, dass das OP etwas in Bewegung setzen wollte, indem es ein Servo ansteuerte und es dann stromlos "trudeln" ließ, bis es von Natur aus aus der Trägheit geriet. Ich kenne keine Servo-Designs (kontinuierlich oder nicht), die diesen Effekt zulassen würden.
Crake
@Crake, ich stimme zu, ich glaube, dass ich die falsche Frage beantwortet habe, aber ich lasse das so, da ich die Arbeit bereits gemacht habe: p. IIRC sollten die Dynamixel-Servos eine "Coast" -Einstellung haben.
mjcarroll
@mjcarroll Ja, ich denke, es ist nützlich zu erwähnen, wie ein Servo für eine kontinuierliche Rotation modifiziert werden kann, da dies eine häufige Aufgabe für billige Roboterprojekte ist. Ich bin neugierig, ob die Dynamixel-Servos den in der Antwort von SimpleCoder beschriebenen Strommessalgorithmus verwenden und ständig versuchen, den Strom durch Einstellen der PWM zu minimieren, oder ob sie eine physische Kupplung haben, um den Servomotor von der Antriebswelle zu lösen.
Crake
2

Tun Sie das nicht, sondern holen Sie sich ein paar anständige Motoren und fahren Sie sie über eine H-Brücke, wie Sie sie auf diesem Motorschild finden .


Pololu Motoren

Arduino Motor Shield

Jay Beavers
quelle