Kann die Bewegung eines Motors auf eine beliebige Auflösung verbessert werden?

Für ein Projekt, an dem ich arbeite, benötige ich eine Motorrotation in extrem kleinen Schritten - meine gewünschte Auflösung beträgt etwa 0,15 Grad pro minimalem Rotationsschritt.

Natürlich bieten die meisten Motoren zu vernünftigen Preisen nicht so viel Präzision, also versuche ich zu sehen, ob ich mein Ziel erreichen kann, indem ich eine Closed-Loop-Bewegung mit einem Low-Cost-Motor verwende.


Nehmen wir an, ich habe Zugriff auf Ausgangsdaten von einem Encoder, der die Drehung mit meiner erforderlichen Auflösung messen kann (dh bis zu einem Inkrementwinkel von 0,15 Grad).

Meine Frage dann: Ist es möglich, einen solchen Encoder (dessen Daten eine Rückkopplungsschleife bilden) über einen Mikrocontroller mit einem Motor zu verbinden und eine beliebige gewünschte Auflösung zu erreichen, oder gibt es motormechanische Grenzen für die erreichbare Genauigkeit?


In Bezug auf die Motorauswahl für diese spezielle Methode:

  • Stepper: Ich nehme an, Stepper sind keine Option, da sie so konzipiert sind, dass sie sich in Schritten bestimmter Größe bewegen, und selbst mit meinem Feedback-Encoder kann ich den Stepper nicht anweisen, zwischen den Schritten anzuhalten.

  • Standard-DC-Motoren: Könnte ich meine Encoderdaten verwenden und dann eine PID-Schleife ausführen, um den Motor zu bewegen und jedes Mal in die Zielwinkelposition zu gelangen? Ich nehme an, die Einschwingzeit könnte zu lang sein?

  • Servos: Könnte ich meine eigene Closed-Loop-Steuerung mit meinem Encoder hinzufügen, entweder zusätzlich zu einem billigen Servo mit niedriger Auflösung oder als Ersatz für das Poti? Dadurch wurde die Auflösung verbessert, wenn ich es dazu brachte, mich auf mein Ziel zu bewegen / zu treten. Oder gibt es konstruktionsbedingte Grenzen, wie genau sich ein bestimmtes Servo bewegen kann, die ich nicht überwinden kann?

Wenn Sie weniger als eine Umdrehung benötigen, möchten Sie meiner Meinung nach ein Servo. Die Hobby-Servos sind ziemlich dünn, wenn es um die Auflösung geht. Dieser Typ, nikhiljgeorge.wordpress.com/2012/08/24/70 , sagt, dass ein MX-28 Ihre Spezifikationen erfüllen könnte.
@GeorgeHerold: Ja, dieses Dynamixel-Servo ist in der Tat besser als meine Spezifikationen, aber bei einem Preis von 220 US-Dollar ist es schwer zu verkaufen. Daher versuche ich zu sehen, ob ich das Problem stattdessen lösen kann, indem ich einen vorhandenen Motor dynamisch steuere, vorausgesetzt, ich habe Zugriff auf einen ausreichend genauen Encoder.
Es ist ein bisschen wie ein Rückblick, aber haben Sie einen Synchro oder Resolver in Betracht gezogen?
@Dave: Das würde für den Messteil helfen (den ich bereits mit einem ausreichend präzisen magnetischen Encoder gehandhabt habe); Ich interessiere mich für die eigentliche Bewegung selbst und dafür, sie ausreichend präzise zu machen.
Sie möchten einen Stepper und verwenden dann einfach Zahnräder, um eine beliebige Auflösung zu erreichen. Servo kann auch funktionieren, ist aber schwieriger einzurichten und Stepper ist einfach einfach. Wenn Sie einen Gleichstrommotor nehmen und eine PID-Schleife zur Steuerung erstellen, haben Sie den Servo neu erfunden.
@MichaelFox: Das ist die Art von Antwort, auf die ich gehofft hatte; Danke. Wenn ich also den Encoder des Servos (wahrscheinlich ein Poti) durch meinen eigenen ersetze und eine PID-Schleife hinzufüge, kann ich jede Auflösung erreichen, vorausgesetzt, mein Encoder kann bis zu diesem Grad auflösen, oder gibt es praktische Grenzen in der Funktionalität des Motors selbst?
Da Sie Geschwindigkeit gegen Kraft und Genauigkeit eintauschen, können Sie einen relativ kleinen Motor verwenden, um eine große Last langsam zu betätigen. Bei einer gewissen Auflösung schränken Schwingungen des Motors oder externe Schwingungen die Genauigkeit ein. Die übliche Lösung besteht darin, die Last einfach schwer zu machen. Darüber hinaus eine Art Aufhängung, um Vibrationen zu absorbieren. Überprüfen Sie den Mechanismus in einem Mikroskop. Der Umgang mit hohen Kräften bringt dich in den Maschinenbau. Möglicherweise müssen Sie sich Sorgen machen, dass Stress und Belastung Ihr System verformen. Machen Sie es wieder groß und schwer.

Antworten (5)

Sie haben nicht erwähnt, welche Mindest- und Höchstgeschwindigkeit erforderlich ist. Ich nehme an, Sie wollen bei keinem Parameter Kompromisse eingehen ;-)

Mit Stepper- und Microstepper-Treiber können Sie eine Auflösung von besser als 0,15 Grad erreichen. Aber was ist Präzision? Wahrscheinlich falsch, weil es Motor- und Mikroschritt-Nichtlinearitäten gibt und das Drehmoment niedrig ist, der Dynamikbereich niedrig ist und zusätzliche Probleme bei sehr niedriger Geschwindigkeit auftreten.

Sie können es als Dual-Loop-Steuerung mit Load-Encoder am äußeren Loop arrangieren. Es soll die Präzision verbessern. Angenommen, ein 13-Bit-Lastcodierer und 32 oder 64 Mikroschritte mit einem 400-Schritt-Motor könnten eine Genauigkeit von 0,15 erfüllen.

Das Getriebe hilft bei Drehmoment und Auflösung, aber Sie benötigen auch eine Doppelschleifensteuerung und kein Spiel, wenn Sie die Richtung ändern möchten. Es gibt ein zusätzliches Problem, wenn es eine Feder im Getriebe gibt. Wenn ja, dann ist am Ausgang eine Kraft vorhanden, die Sie für einen Hochfrequenzregelkreis benötigen. Es kann sogar unmöglich sein, das System zu kontrollieren, wenn Sie diese Kraft berücksichtigen müssen. Also teures Getriebe oder zurück zum Direktantrieb.

Sie können den Schrittmotor durch einen bürstenlosen 3-Phasen-Motor und einen Encoder mit oder ohne Getriebe und einen oder zwei Encoder ersetzen. Dynamikbereich und Preis steigen. Drehmoment ??? Für hohe Geschwindigkeit benötigen Sie Encoder/Decoder mit hoher Bandbreite. Und es ist sehr schwierig, ein solches Setup in Echtzeit zu debuggen, da Sie fast keine Breakpoints verwenden können.

Im Allgemeinen müssen Encoder bei der Verwendung Ihre Präzisionsanforderungen erfüllen (und nicht nur die Auflösung).

BEARBEITEN (da das Kommentieren verboten ist): AS5045/8-Encoder: Ich denke, Sie müssen hauptsächlich Nichtlinearitäts- INL - Parameter im Gradbereich berücksichtigen, die die Genauigkeit beeinflussen (schlechter als 0,15 Grad). Auch die Ausbreitungsverzögerung im Bereich von 100 us begrenzt die Geschwindigkeit, 1RPS = 1/4096 = 244us pro Positionstick.

Danke, dass Sie auf die verschiedenen Faktoren eingegangen sind. Was den letzten Vorschlag ("bürstenloser 3-Phasen-Motor und Encoder") betrifft - können Sie dies ein wenig erläutern? Warum ist dies dem Stepper vorzuziehen? Würde die Verwendung eines bürstenlosen Gleichstrommotors (unter der Annahme einer PID-Schleife) nicht aufgrund des Überschwingens zu Hin- und Herschwingungen um den Zielpunkt führen, bis wir uns schließlich auf das Ziel festlegen? Beachten Sie auch, dass ich einen Encoder mit sehr hoher Bandbreite verwende (magnetische Encoder von AMS).
Brushless bietet einen größeren Dynamikbereich, Stepper ist aufgrund von Resonanzproblemen durch die maximale Geschwindigkeit begrenzt. Die Hauptaufgabe ist die PID-Abstimmung, um ein Überschwingen zu vermeiden. Aber es ist kein Problem des bürstenlosen Motors, sondern jedes Systems mit Feedback (dh PID). Was ist Auflösung und Genauigkeit von magnetischen Encodern (ich habe ams.com besucht, aber keinen Erfolg, um schnell eine Vergleichsliste oder so zu finden).
Hier sind die Encoder, auf die ich mich beziehe (siehe zB AS5045 oder AS5048): ams.com/eng/Products/Position-Sensors/…

Mikroschrittmotoren sind möglich. Wenn Sie die richtigen Treiber erhalten, können sie die Schritte in eine große Anzahl von Unterteilungen interpolieren. Ich habe Treiber gesehen, die 256 Mikroschritte pro Schritt ausführen können. Mit 1,4 Grad pro Schritt, einer ziemlich normalen Zahl, brauchen Sie nur ~10 Mikroschritte pro Schritt, um 0,15 Grad pro Mikroschritt zu erhalten. 8 Mikroschritte würden Ihnen 0,175 Grad pro Schritt geben, und Sie können All-in-One-Mikroschritt-Treiberchips von Allegro erhalten, die bis zu 8 Mikroschritte pro Schritt ausführen können. Ich habe das Allegro 3977 vor ein paar Jahren für ein Projekt verwendet. 16 oder 32 Mikroschritte pro Schritt würden 0,0875 oder 0,04375 Grad pro Schritt ergeben, was mehr als ausreichend sein sollte.

Microstepping könnte hier die beste Option sein, wenn die Drehmomentanforderung gering ist. Mikroschritte halten im Allgemeinen ihre Position nicht sehr gut gegen eine Last, aber wenn es kaum Last gibt, sind sie großartig. Deutlich mehr Präzision bei null Spiel. Es treibt den Motor im Grunde mit Sinuswellen anstelle von Rechtecken an und stoppt an beliebigen Punkten entlang der Wellenform.
Wenn Sie zusätzlich zum Mikroschritt eine Regelung mit geschlossenem Regelkreis hinzufügen, könnte dies eine anständige Lösung sein. Das Hinzufügen von ein oder zwei Mikroschritten, um einem externen Drehmoment entgegenzuwirken, ist wahrscheinlich ziemlich effektiv. Wenn Sie jedoch einen Feingeber haben, können Sie auch einen Gleichstrommotor verwenden.
@AaronD: Aber nehmen wir an, es gibt eine erhebliche Last - ich bin etwas neu bei Schrittmotoren, aber macht die Trägheit Mikroschritte nicht praktisch unbrauchbar in Bezug auf die Aufrechterhaltung der Genauigkeit? In diesem Artikel geht es beispielsweise um Mikroschritte.
@alex.forencich: Ich sehe jetzt Hoffnung, haha! Sehen Sie irgendwelche Hürden bei der Implementierung einer DC-Motorsteuerung mit einem Encoder (angenommen zufriedenstellend) und dem Erreichen dieser Art von Auflösung in der tatsächlichen Bewegung – ist die PID-Schleife der richtige Weg?
Ja, dieser Artikel ist ziemlich richtig, wenn man es auf die Spitze treibt. 256/Schritt sind wahrscheinlich nicht mit absoluter Genauigkeit erreichbar. An diesem Punkt interessieren Sie sich mehr für mechanische Geräusche als für die Positionsgenauigkeit. Aber kleine Zahlen, wie vielleicht 8 oder weniger, würden wahrscheinlich funktionieren, wenn Ihre Last klein ist.
Wie im Artikel erwähnt, haben Schrittmotoren eine Spezifikation für das Haltemoment. Dies ist die maximale Last, die der Motor bei Vollschritt bewältigen kann. Und wie die Tabelle zeigt, müssen Sie diese Spezifikation herabsetzen, wenn Sie Mikroschritte verwenden. Wenn die reduzierte Spezifikation immer noch höher ist als die Last, dann sind Sie wahrscheinlich gut. Wenn es nah ist, möchten Sie vielleicht einen Encoder hinzufügen oder einen größeren oder anderen Motortyp verwenden.
Das Problem bei bürstenbehafteten Gleichstrommotoren besteht darin, dass sie eine gewisse Reibung in den Bürsten haben, die überwunden werden muss, um sich zu bewegen, sodass es selbst mit einem geeigneten Encoder schwierig ist, den Motor selbst dort zu platzieren, wo Sie ihn haben möchten. Sie können ein Getriebe verwenden, damit sich Ihr Steuersystem erholen und wieder genau werden kann, bevor sich der Ausgang zu weit bewegt, aber dann haben Sie eine Spezifikation für das Spiel. Wenn Ihre Last unter Berücksichtigung von Schwerkraft, Reibung, Trägheit usw. immer in die gleiche Richtung geht, spielt das Spiel möglicherweise keine Rolle.
Eine gängige Praxis bei der Verwendung von Encodern mit Getriebe besteht darin, den Encoder anstelle des Abtriebs auf der Motorwelle oder irgendwo in der Mitte des Getriebes zu platzieren. Dann können Sie einen Encoder mit niedrigerer Auflösung und höherer Geschwindigkeit verwenden, um ungefähr den gleichen Effekt zu erzielen. Auflösung kostet im Allgemeinen mehr als Geschwindigkeit.
@boardbite Wenn Sie eine Last haben und Mikroschritte machen möchten, würde ich mir Sorgen um die Torsionsverformung der Achse machen, da dies zu einem Fehler zwischen Motorschritt und Lastschritt führt. Es kommt aber immer auf die Dimensionen an.

Eine Möglichkeit, dies zu tun, könnte mit einem Getriebe sein. Wenn Sie zum Beispiel ein 10:1-Getriebe auf den Ausgang dieses Motors setzen, dann würden 10 Umdrehungen des Motors 1 Umdrehung am Ausgang des Getriebes ergeben. Wenn Sie also die Position Ihres Motors nur auf 1 Grad genau steuern können, kann der Ausgang des Getriebes theoretisch auf 0,1 Grad eingestellt werden.

Ich sage aber theoretisch, denn Getriebe haben Backlash, was ein Begriff für das Spiel zwischen den Zahnradzähnen ist. Dies verringert die Genauigkeit Ihrer Abtriebswelle. Industriegetriebe führen dieses Flankenspiel als Vorgabe auf, die Sie bei Ihrer Konstruktion berücksichtigen können. Die meisten Bastlergetriebe, die ich gesehen habe, geben jedoch das Spiel nicht an, sodass Sie möglicherweise Probleme haben, ein kostengünstiges Getriebe mit einem Spiel zu finden, das für Ihre Anwendung klein genug ist.

Wenn angegeben, wird das Flankenspiel als Betrag der Variabilität in der Abtriebswelle aufgeführt. Beispielsweise hat ein industrielles 10:1-Servogetriebe ein Ausgangsspiel von 5 Bogenminuten oder 0,083 Grad.

Getriebe können ein sogenanntes Getriebespiel aufweisen. Dies geschieht, wenn die Zahnradzähne einen kurzen Abstand haben, um das Kupplungseingangsdrehmoment nicht zum Ausgangsdrehmoment zu leiten, wenn sich die Drehrichtung ändert. Dies kann besonders problematisch sein, wenn die Position eines Servomotors in einem System mit geschlossenem Regelkreis gesteuert wird.
@MichaelKaras Sehr wahr. Jetzt, wo ich darüber nachdenke, denke ich, dass es schwierig sein wird, ein preiswertes Getriebe mit einem ausreichend kleinen Spiel für diese Anwendung zu finden. Ich habe meine Antwort aktualisiert.
Sie können andere Arten von Getrieben hinzufügen – zum Beispiel in dem Mechanismus, den der Motor antreibt, um die Auswirkungen des Spiels zu reduzieren.
Zahnräder wie Schneckengetriebe sind nahezu spielfrei, sie haben auch ein sehr gutes Positionshaltemoment. Eine andere Möglichkeit, das Spiel zu reduzieren, besteht darin, die Richtung vorzuspannen, sodass jede weitere Bewegung den Ausgang tatsächlich bewegt, und danach nie die Richtung zu ändern (was die Vorspannung entfernen würde, die Sie ihm gerade gegeben haben). @MichaelKaras
@KyranF: Die von Ihnen erwähnte Methode zur Reduzierung des Spiels - wenn ich es richtig verstehe, kompensieren Sie das Spiel vorab, indem Sie eine zusätzliche Bewegung in die entgegengesetzte Richtung hinzufügen, habe ich recht?
@boardbite nicht in die andere Richtung, in die Richtung, in die Sie sich bewegen möchten. Das Spiel wirkt sich nur auf die Bewegung aus, wenn Sie die Richtung ändern, indem Sie eine "tote Zone" haben.

Hast du dir angeschaut - eine Maus?
Nicht das Tier, das Point & Click One. Insbesondere der ältere Stil mit einem Ball.

Die Kugel liegt an einer rollenden Stange, die ein großes Rad hält. Das Rad hat Schlitze um die Außenkante herum, und ein optisches Setup erkennt (zählt) die Löcher, wenn sie vorbeifahren.

Für Ihr Setup würde die "Kugel" zu einem kleinen Elektromotor werden. Wie von anderen erwähnt, leidet dieses Setup unter "Spiel": Dies wird bis zu einem gewissen Grad dadurch überwunden, dass das optische Codierungs-Setup auf dem letzten Rad vorhanden ist, das einen wirklich großen Durchmesser haben könnte (was Ihnen die gewünschte Auflösung gibt).

Probleme? Abhängig von der Größe und dem Gewicht dieses Aufbaus haben Sie möglicherweise "Spiel" durch "Trägheit" ersetzt ... unterbrechen Sie die Stromversorgung des Motors, ein großes, schweres Rad kann einige Zeit brauchen, um anzuhalten. Es kann sogar über das Ziel hinausschießen, was bedeutet, dass Sie den Motor umkehren und eine Strecke zurückfahren müssen.
Dies ist ein gedämpfter Oszillator . Je strenger Ihre Auflösungsanforderungen sind, desto wahrscheinlicher erkennt das System einen Positionsfehler und verursacht ständige "Korrekturen".

Die Anforderungen sind:

  • Positioniergenauigkeit von 0,15 Grad
  • erhebliche Belastung
  • leicht erhältlich/billig

Ein paar Dinge zu beachten:

  • Sie sollten die Positionsinformationen so nah wie möglich an der Last erhalten, um die Torsionsverformung und andere Unvollkommenheiten zu kompensieren.
  • Ein hochpoliger BLDC-Motor mit niedriger Drehzahl oder ein ähnlicher Motor wäre die vorgeschlagene Alternative, wenn Sie sich nicht für einen Schrittmotor entscheiden.
  • Die Encoder-Auflösung ist ebenfalls wichtig.
  • Sie benötigen in jedem Fall eine Regelung im geschlossenen Regelkreis.

Schauen wir uns die Möglichkeiten an:

Holen Sie sich einen wirklich guten Motor / System

Wenn Sie den Zeitaufwand für (möglicherweise nicht funktionierende) Problemumgehungen einkalkulieren, ist es vielleicht klüger, zu versuchen, Mittel für ein geeignetes System zu finden. Vielleicht wird es gar nicht so teuer.

Mechanisches Getriebe

Wie Ben Miller erwähnte, könnten Getriebe den Zweck erfüllen. Was ich vorschlagen würde, ist die Verwendung eines Getriebes mit hoher Übersetzung, das von hoher Qualität ist. Schauen Sie sich die Preise/Datenblätter an, vielleicht finden Sie etwas.

Frühling

Es ist ein sehr hochpräziser Prozess, warum also nicht einen Blick auf die Uhrmacherei werfen? Schauen Sie sich diese Abbildung aus Wikipedia an: Ressortspirale . Wenn Sie eine solche Feder an irgendeiner Stelle der Achse aufziehen, können Sie die Position durch kleine Bewegungen des anderen Endes der Feder genau einstellen. Dies wäre ein ergänzendes Werkzeug zur Lastkompensation und Feinabstimmung. Sie werden immer noch einen Stepper (oder etwas anderes) für die anfängliche Positionierung benötigen, denke ich. Es wäre wahrscheinlich am besten für Prozesse geeignet, bei denen Sie keine dynamischen Positionsänderungen benötigen. Es gibt natürlich Probleme damit, aber vielleicht kann man etwas daraus machen.

Aktuator/kleiner Motor + Hebel

Wenn Sie Platz haben, können Sie eine sehr lange steife Stange verwenden, um eine Höher zu erzeugen D X / D ϕ . Das bedeutet, dass Sie sehr kleine Winkeländerungen für (vergleichsweise) große (fast lineare) Bewegungen des Endes der Stange erhalten. Sie müssen also praktisch diese lange Stange auf die Achse setzen und einen kleinen Motor an ihrem Ende anbringen. Die Biegung der Stange wird wahrscheinlich erheblich sein, aber ich denke, ein Regelkreis kann helfen. Sie bauen es praktisch auf der Beziehung auf: ϕ = arcsin ( X / R ) (für kleines x). Sie könnten den Hebel entkoppeln, wenn Sie große Winkeländerungen vornehmen.

Hebellösung

Können Sie die Idee der Rute etwas weiter ausführen? Ich kann mir nicht vorstellen, wo Sie den Stab platzieren, um den höheren dx / dϕ zu erzeugen.
Stellen Sie sich zwei Kreise mit unterschiedlichen Durchmessern vor. Sie haben jetzt nur den kleinen Kreis, aber wenn Sie den Stab hinzufügen, erhalten Sie den größeren Kreis. Um den gleichen Winkel auf beiden Kreisen entlang des Umfangs zu erhalten, müssen Sie unterschiedlich lange Pfade kreuzen. Wenn Sie also den größeren Kreis verwenden, erhalten Sie ein gewünschtes Verhältnis zwischen Pfadlänge und Winkel.
Ich denke, dies könnte eine wirklich gute Lösung sein, da Sie die Winkeldrehung der Festplatte mit dem Motor synchronisieren können. Aber ich kann immer noch nicht verstehen, wo Sie diese Rute hinstellen! Können Sie eine sehr grobe Skizze zeichnen, um zu zeigen, was Sie meinen? Schlagen Sie vor, zwei Scheiben mit einer Stange zu verwenden, die sie verbindet? Aus irgendeinem Grund dachte ich, der Direktantrieb (dh das direkte Aufsetzen der Achse der großen Hauptscheibe auf die Motorwelle) sei in diesem Fall die einzige Option.
Ich kann bis morgen nur vom Handy aus darauf zugreifen, also füge ich dann eine Zeichnung hinzu.
Sichere Sache; Ich hoffe nur auf eine grobe Skizze, damit ich die Geometrie der Komponenten in Ihrem Vorschlag verstehen kann.
@boardbite Ich habe eine Skizze hinzugefügt.
Das ist sehr durchdacht und nützlich; Danke! Ich werde damit spielen und sehen, was ich bauen kann.