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?
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.
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.
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.
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:
Ein paar Dinge zu beachten:
Schauen wir uns die Möglichkeiten an:
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.
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.
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.
Wenn Sie Platz haben, können Sie eine sehr lange steife Stange verwenden, um eine Höher zu erzeugen . 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: (für kleines x). Sie könnten den Hebel entkoppeln, wenn Sie große Winkeländerungen vornehmen.
Georg Herold
Brettbiss
David
Brettbiss
Michael Fuchs
Brettbiss
Michael Fuchs