Ich möchte die Winkelposition eines ziemlich langsamen motorisierten Dreharms (Direktantrieb; siehe Abbildung unten) verfolgen - benötige jedoch eine Winkelgenauigkeit von unter 0,05 ° und eine ähnliche Auflösung.
Wie @gbulmer in den Kommentaren feststellte, entspricht dies der Positionsverfolgung der Armspitze entlang des Umfangs mit einer Genauigkeit von (2 × π × 10 cm) / (360 ° / 0,05) = 0,08 mm.
Gibt es einen derzeit realisierbaren Sensor oder ein elektronisches Verfahren, das diese Genauigkeit bei der Rotationserfassung erreichen kann, ohne ein Vermögen auszugeben?
Folgendes habe ich bisher versucht, von einfach bis kompliziert:
Digitalkompass/Magnetometer: Damit habe ich angefangen; aber offensichtlich nicht annähernd die Leistung, die ich suche.
Drehkodierung: Potentiometer-basierte / Hall-Effekt-Sensor-basierte Kodierung: Konnte keine ausreichende Auflösung erreichen und es gibt einen signifikanten Linearitätsfehler.
Maschinelles Sehen: Es wurde versucht, eine optische Markierung an der Spitze des Arms zu platzieren (da die Spitze den längsten Bogen nachzeichnet) und die Position der Markierung mithilfe einer Kamera (OpenCV) zu verfolgen: Angesichts der Rotationsspannen des Arms konnten sehr kleine Drehungen nicht so gut aufgelöst werden eine Fläche von 10 x 10 cm.
Magnetischer Encoder: Ich untersuche derzeit die Verwendung von AS5048, einem magnetischen Drehgeber von AMS, der mit dem Zentrum des Sensors an der Wellenposition des Motors positioniert ist. Etwas wie das:
Was Sie tun, ist möglich, aber ich sehe nicht, wie Sie es billig machen werden.
0,05 Grad (3 Bogenminuten) bedeutet eine Auflösung von 7200 Zählungen/Umdrehung oder das Äquivalent von 13 Bit (8192). Schlimmer noch, da Sie versuchen, eine Positionsschleife zu erstellen, benötigen Sie mindestens ein zusätzliches Bit Auflösung oder ein 14-Bit-System. Das Problem liegt in der Tatsache, dass Ihre Positionsschleife einen Fehler von weniger als einem Bit nicht erkennen kann. Wenn der Arm also zu driften beginnt, erkennt der Winkelsensor dies nicht, bis der Ausgang ein Bit abweicht. Die Positionsschleife treibt den Arm in die andere Richtung zurück und stoppt den Antrieb, wenn der Fehler auf Null fällt. Aber dadurch wird der Arm in die andere Richtung schwingen, bis er eine Zählung in die entgegengesetzte Richtung erhält usw. Wenn Sie also beispielsweise möchten, dass der Arm eine Sensorzählung von 100 beibehält, kann das System durchaus 100, 101, 100 erzeugen , 99, 100 usw.
Ich schlage vor, dass ein optischer Encoder die beste Wahl ist, aber ein 14-Bit-Encoder (16.384 ppr) wird nicht billig sein. Eine andere Möglichkeit ist ein Resolver oder Synchro, mit einem RDC oder SDC (Resolver/Digitalwandler oder Synchro/Digitalwandler) als zweite Möglichkeit, aber das kostet noch mehr. Synchros/Resolver haben 2 Nachteile. Erstens wurden sie im Allgemeinen durch optische Encoder ersetzt, sodass Sie auf dem Markt hauptsächlich überschüssige Einheiten finden werden. Zweitens ist die Genauigkeit normalerweise nicht ausreichend. Resolver der Größe 23 sind normalerweise für etwa 5-10 Bogenminuten ausgelegt, Sie benötigen also ein hochpräzises Gerät und viel Glück bei der Suche nach einem.
Inductosyns bietet Ihnen eine außergewöhnliche Auflösung und Genauigkeit, kostet aber sogar mehr als ein optischer Encoder. Im Wesentlichen benötigen Sie einen Hochgeschwindigkeits-RDC, um die Ausgabe zu lesen.
Ihre Besorgnis über die Genauigkeit optischer Encoder basiert auf dem Papier eines bestimmten Herstellers, aber das ist im Wesentlichen ein Schreckensartikel. Die Fehlermöglichkeiten sind bei jedem Hersteller gleich, und der verlinkte Hersteller ist nicht irgendwie besser als andere Hersteller. Im Allgemeinen ist bei Präzisions-Encodern die Genauigkeit gleich der Auflösung.
Es ist zwar möglich, optische Encoder mit parallelen Ausgängen zu erhalten, aber Sie sind wahrscheinlich besser dran, wenn Sie einen Inkremental-Encoder verwenden und Ihren eigenen Aufwärts- / Abwärtszähler drehen. Wenn Sie diesen Weg gehen, verwenden Sie das "Home"-Signal, um den Positionszähler jedes Mal zurückzusetzen, wenn Sie das System einschalten.
Ich denke, was OP vorschlägt, ist überhaupt keine schlechte Idee. Was er verwenden möchte, ist ein fertiger Ring: http://ams.com/eng/Products/Position-Sensors/Magnets/AS5000-MR10-128 , er hat 128 Pole = 64 Polpaare. Die Auflösung beträgt 16 Bit=65536, max 305 U/min.
Wenn Sie einen hochauflösenden optischen Encoder auseinander nehmen, werden Sie feststellen, dass es fast unmöglich ist, den Detektor ohne Spezialwerkzeuge auszurichten, tatsächlich macht die Verwendung dieser neuen Methode dies sehr einfach.
Sie würden eine Drehmaschine benötigen, um den Ring richtig anzupassen und dann den Sensor in geringem Abstand zu platzieren, es ist keine spezielle Ausrichtung erforderlich. Der Sensor selbst wird in Kit-Versionen bereits auf Breakout-Board gelötet geliefert, was Sie benötigen, ist ein zusätzlicher Referenzsensor - eine Lücke mit Fotodetektor, dann können Sie den Encoder innerhalb eines Polpaares mit einer Kombination aus Indexausgang + externem Referenzsensor referenzieren.
Da es sich um eine Brainstorming-Frage handelt und WhatRoughBeast bereits alles erwähnt hat, was ich in Betracht ziehen würde, warum nicht die harmonischen Antriebe zur Liste hinzufügen? Theoretisch (ich habe es nicht mit empirischen Schätzungen oder ersten Berechnungen überprüft) können Sie damit problemlos ein Übersetzungsverhältnis von 20: 1 ohne Spiel erzielen (100: 1 ist üblich), wodurch die Anzahl der erforderlichen Schritte auf 720 / Umdrehung verringert wird . Vielleicht lohnt sich ein Blick darauf. Harmonic Drives sind nicht billig, aber sie sind im Allgemeinen viel billiger als hochauflösende Sensoren, insbesondere für dieses Übersetzungsverhältnis.
Wenn Sie eine Auflösung auf der Ausgangswelle benötigen, die 13 Bit entspricht, benötigen Sie mehr zusätzliche Bits, mindestens 1 Bit für die Regelung mit geschlossenem Regelkreis ist ein Muss. Das nächste Problem besteht darin, dass die Hersteller mit der Auflösung , aber nicht mit der Genauigkeit werben . Sie müssen beharrlich nach Genauigkeit fragen. Wenn der Fehler wiederholbar ist, können Sie ihn mithilfe der Softwarekorrektur verbessern.
Ein weiteres Problem, wenn Sie eine strapazierfähige Outdoor-Lösung benötigen. Wenn ja, dann ist ein magnetischer Encoder eine Option. Magnetische Encoder können jedoch erhebliche wiederholbare periodische Fehler aufweisen, die Sie im Kalibrierungsprozess mit einem anderen optischen umfangreichen Encoder eliminieren müssen. Aber Sie brauchen eine Schablone, die noch breiter und präziser ist.
Die Sin/Cos-Interpolation (optisch oder magnetisch) erhöht die Auflösung, fügt aber auch einige zufällige Fehler hinzu.
Sie müssen in der Lage sein, mit gewünschter Genauigkeit, insbesondere Rundlauf, zu fertigen. Sie müssen auch die Bandbreite berücksichtigen, da eine schnellere Bewegung die zulässige Bandbreite überschreiten kann, wenn Sie die Auflösung erhöhen (z. B. Frequenz des Quadraturausgangs). Im Gegensatz dazu ist die Ultrazeitlupensteuerung eine weitere Disziplin, in der man interessante unveröffentlichte Ausgaben finden kann.
Wenn Sie eine Querlenkerdrehung benötigen (nicht nur die Spurposition), ist die Auflösung von Direktantrieb und Drehmoment ein Problem. Die Doppelschleife hilft bei der Steuerung, erfordert jedoch eine Motor- (Encoder im Falle eines Getriebes oder Zählschritte im Falle eines Schrittmotors) und eine Wellenpositionserfassung.
Inkremental- oder Absolutwertgeber ist auch eine grundlegende Entscheidung.
Allgemeiner Ratschlag: Wenn Sie ein Projekt abschließen möchten, verwenden Sie professionelle Komponenten, die teuer sind (z. B. optische ATOM-Encoder von Renishaw). Wenn Sie zum Vergnügen spielen und Zeit nicht wichtig ist, können Sie Dinge neu erfinden (Sackgasse), nicht googlebare Probleme entdecken usw. Überprüfen Sie, ob Sie Geräte mit der erforderlichen Präzision herstellen können.
Scheint perfekt für einen digitalen Messschieber geeignet zu sein, der normalerweise zum Messen präziser Entfernungen verwendet wird, siehe:
Wie funktioniert ein elektronischer Messschieber?
Sie ähneln kapazitiven Encodern (die Sie bereits in http://www.digikey.com/en/articles/techzone/2012/apr/a-designers-guide-to-encoders gesehen haben ).
Der elektronische Teil eines linearen digitalen Messschiebers kann wahrscheinlich wiederverwendet werden, sodass Sie nur eine Viertelscheibe mit dem richtigen Muster herstellen müssten.
PS: Die Präzision würde es Ihnen sogar erlauben, mit einem handelsüblichen linearen zu arbeiten.
Hier ist meine neue Idee, noch eine weitere Schrittmotorgeschichte :-)
Klicken Sie auf das animierte Bild, um ungeditherte Vollauflösung zu sehen. Hier verwenden Sie den Schrittmotor als reisendes Lineal. An der Spitze der Haupthand befindet sich ein Magnet. Die roten Linien zeigen die erwartete Richtung des magnetischen Flusses. Angenommen, der Schrittmotor ist wie der auf Wikipedia. Es hat 3,6 Grad von einem Vollschritt. Für einen angenommen linearen Anteil des Feldes benötigen Sie 3,6/0,05=72 Kombinationen von 7 Bit. Das bedeutet, dass ein 10-Bit-ADC einer gewöhnlichen MCU die Arbeit für einen größeren nichtlinearen Bereich sehr gut erledigen wird. Nachdem Sie den Mechanismus ausgeführt haben, analysieren Sie das Näherungsmuster und wählen Sie den linearsten Teil aus. Linearisieren Sie ihn mit einer Softwarezuordnung und wählen Sie die Linealgrenzen für diese bestimmte Einrichtung aus.
Die Schrittmotoren sind nicht perfekt. Laut Wikipedia können sie bis zu 5% Abweichung zwischen den Zähnen haben. Um den Fehler zu messen, können Sie die primären Grenzen des Lineals mit sekundären Grenzen erweitern, die nur dem Gradientenmuster der vorherigen Analyse ihrer Nachbargrenze folgen müssen.
Außerdem sollten Sie den Schrittmotor besser mit Mikroschritten antreiben, um die +/- Beschleunigungen zu vermeiden, die sich auf die Setup-Skalen auswirken können. Ich denke, Sie müssen mindestens einen halben Schritt machen.
Wenn Sie sich mit Mechanik befassen, beginnen Sie zuerst mit der Mechanik.
Durch Drehen des großen (R2) Zahnrads um einen Winkel dreht sich das kleine Zahnrad (R1) um einen R2/R1-mal größeren Winkel.
Wenn Sie es also mit einer sehr extremen Winkelgenauigkeit auf einem gegebenen Radius (R) zu tun haben, könnten Sie mit einer n-mal gröberen Winkelgenauigkeit auf einem n-mal kleineren Radius (dh R / n) umgehen.
In Ihrem Fall können Sie ein großes Zahnrad auf der Achse des Arms installieren und ein kleineres Zahnrad daran befestigen und dann einen gröberen Sensor an den kleinen anschließen.
Viele andere Getriebemethoden sind bekannt und nützlich, beginnen Sie bei Wiki .
Sie sollten einen zweiten Mechanismus am Rand der Hand machen, um die Schritte der Mitte durch einen linearen Mechanismus zu teilen, wie er im optischen System des CD-ROM-Treibers zu finden ist. Auf diese Weise könnte es einfacher und ausreichend sein, das gesamte System als Open-Loop zu implementieren, indem auch ein Schrittmotor in der Mitte verwendet und durch Mikroschritte angetrieben wird, um sehr hohe Beschleunigungsgrößen zu vermeiden.
Ich weiß nicht, was Sie für ein Vermögen halten, aber Sie sollten vielleicht http://www.inductosyn.com/ in Betracht ziehen.
Eine weitere sehr interessante Option, wenn Ihr Arm regelmäßig in eine Ausgangsposition (Ruheposition) geht, ist die Verwendung einer optischen (Gaming-)Maus oder genauer gesagt ihres Sensorsystems.
Montieren Sie den Sensor an der Spitze Ihres Arms und sorgen Sie für einen guten (feinkörnigen, nicht reflektierenden) Hintergrund, über den Sie gleiten können. Lesen Sie die Daten über eine Standard-USB-Mausschnittstelle aus.
Sie benötigen einen einfachen Sensor, um die Ausgangsposition zu kalibrieren. Ob das gut genug funktioniert, musst du ausprobieren. Es sollte weitgehend staubunabhängig funktionieren und ist einfach zu warten.
Vielleicht können Sie einen linearen optischen Encoder am Ende Ihres Schwenkarms verwenden und einen flexiblen Codestreifen wie diesen verwenden , der bis zu 2000 Zeilen pro Zoll hat. Wenn Sie superbillig werden möchten, können Sie einen Linearencoder wie diesen verwenden , aber er reicht nur bis zu 150 Zeilen pro Zoll, also einer Auflösung von 40 Mikrometern (da es sich um einen Quadratur-Encoder handelt). Wenn Sie nicht empfindlich auf Jitter im Antriebssystem reagieren, können Sie dies direkt verwenden. Andernfalls könnten Sie den Arm unter Ihrer Anwendung verlängern und den Codestreifen weiter außen platzieren. Sie können sogar Ihren eigenen Codestreifen drucken, wenn Sie einen Drucker mit einer DPI von 1000 oder mehr haben.
Viel Glück!
Eugen Sch.
Eugen Sch.
Sascha
gbulmer
Sascha
Eugen Sch.
Sascha
gbulmer
Eugen Sch.
Sascha
KyranF
gbulmer
gbulmer
Sascha
Eugen Sch.
gbulmer
Sascha
Eugen Sch.
gbulmer
Sascha
Sascha
Eugen Sch.
gbulmer
Lior Bilia
Marko Buršič
WalyKu