Bestimmen Sie den Winkel und die Geschwindigkeit einer rotierenden Plattform

Ich habe eine sich drehende Plattform mit 1 Achse (x), die sich ziemlich schnell mit ~ 300 U / min dreht. Ich möchte in der Lage sein, mit einem guten Maß an Genauigkeit zu erkennen, um wie viele Grad es sich von seiner Startposition entfernt hat und mit welcher Geschwindigkeit es derzeit hinterherhinkt.

Zum Beispiel: Stellen Sie sich eine Uhr vor, die einen einzigen Min-Zeiger hat. Der Stundenzeiger wandert über das Zifferblatt der Uhr und ich möchte messen, wo er sich zu einem bestimmten Zeitpunkt auf dem Zifferblatt in Grad befindet.

"3" Uhr wäre es 90 Grad, "6" Uhr wäre es 180 Grad, "9" Uhr wäre es 270 Grad, "12" Uhr wäre es 0 Grad,

Ich habe beide Sensoren

Meine Fragen sind:

  • Kann ich einen Kreisel oder Beschleunigungsmesser verwenden, um genau zu messen, wie viel Drehung auf einer sich drehenden Plattform aufgetreten ist?
  • Gibt es einen besseren Sensor zur Bestimmung der Drehung in Grad, wie z. B. ein Kompassmodul - HMC6352
  • Können Sie einen Kreisel oder Beschleunigungsmesser verwenden, um die Drehzahl zu messen?
Ich habe ein Projekt durchgeführt, bei dem wir versucht haben, die Blimp-Rotation um die Z-Achse mit genau diesem Kompassmodul zu kompensieren, konnten aber nichts annähernd zuverlässiges erreichen. Ich würde nicht empfehlen, dieses Modul für etwas anderes zu verwenden, als Ihren aktuellen Kurs zu bestimmen.
Dieser Kompass funktioniert gut, wenn Ihre Aussage "1 Achse" zu 100% genau ist, da es in den anderen Dimensionen absolut keine Neigung gibt. Wenn die Neigung ein Problem darstellt und Sie dennoch die Kompasslösung verwenden möchten, bietet der HMC6343 ein ähnliches Gerät mit Neigungskompensation.

Antworten (4)

Für ein solches Problem verwendet man typischerweise einen optischen Inkrementalgeber . Je nach Typ gibt es eine Reihe von Impulsen pro Umdrehung, sodass Ihre Auflösung von dieser Zahl abhängt. Es gibt Ihnen auch Informationen über die Drehrichtung. Sie können die Geschwindigkeit finden, indem Sie die Zeitspanne zwischen den Impulsen messen. Weitere Informationen zur Funktionsweise von Inkremental- und Absolutwertgebern finden
Sie auch in dieser Antwort .

Wenn Sie keinen passenden Encoder finden und Ihr Motor ruhig läuft, kann es ausreichen, nur einen Impuls pro Umdrehung zu haben. Die aktuelle Position lässt sich dann aus der Zeit seit dem letzten Impuls dividiert durch die Zeit zwischen den Impulsen (= Rotationsperiode) ableiten. Genau wie beim optischen Encoder möchten Sie eine berührungslose Lösung. Optisch ist eine Möglichkeit. Verwenden Sie einen Reflexionssensor (wie Vishay CNY70 ), um einen kleinen reflektierenden Bereich auf einer ansonsten matten Disc zu erkennen (oder umgekehrt). Eine magnetische Lösung ist ebenfalls möglich und wird häufig in schmutzigen Umgebungen verwendet, in denen der optische Sensor nicht funktioniert. Ein kleiner Magnet auf der Motorwelle bewirkt, dass ein Hall-Effekt-Sensor (wie Infineon TLE4913 ) bei jedem Durchgang einen Impuls abgibt.

Sie würden denken, dass der Kreisel ideal wäre, weil er Ihnen Winkelgeschwindigkeit gibt. Um die Rotation zu finden, müssen Sie jedoch die Winkelgeschwindigkeit über die Zeit integrieren, und es ist nicht immer einfach, die Genauigkeit beizubehalten, da Sie auch Fehler integrieren, die immer größer werden, es sei denn, es gibt eine Möglichkeit, jede Rotation neu zu kalibrieren.
Wie ich Mike gegenüber kommentierte, reagiert der Beschleunigungsmesser bei Verwendung eines Beschleunigungsmessers und eines Motors, der nicht vertikal montiert ist, auf die Erdgravitation und überlagert diese als Sinuswelle mit dem Messwert der Zentrifugalbeschleunigung. Dies muss herausgefiltert werden, kann aber auch direkt zum Zählen von Umdrehungen verwendet werden: Sie erhalten 1 Sinuszyklus pro Umdrehung.
wichtiger aufmerksamkeitspunkt:
Sowohl ein Kreisel als auch ein Beschleunigungsmesser müssten auf der Welle montiert werden, und Sie müssen sich mit dem Problem der Verkabelung von Strom und Messwerten an einer festen Position befassen.

Ich wäre vorsichtig mit der Hall-Effekt-Lösung. Ich habe das kürzlich in einem Projekt implementiert und bin auf eine Menge Fehler gestoßen. Erstens hat der Hall-Effekt-Sensor einen sehr kleinen empfindlichen Bereich, so dass entweder Ihr Magnet sehr stark sein muss ODER er sehr gut positioniert sein muss. Wenn Sie eine Neigung haben, kann dies wiederum ein Problem sein, da der Pfad der Magnetspuren wie ein Kreis aussieht, dem eine Sinuswelle mit niedriger Frequenz und niedriger Amplitude überlagert ist. Ich empfehle die Verwendung von 2 Magneten, die um 180 Grad voneinander entfernt sind, und einem rastenden Hallsensor. Der erste Magnet schaltet ihn ein und der...
zweiter Magnet schaltet es aus. Sie müssen offensichtlich entgegengesetzte Polaritäten haben, aber dies ermöglicht konsistentere Ergebnisse. Bei 300 U / min konnte ich definitiv sehen, dass dies ein Problem war, nur eine Warnung.

Die Drehzahl wird normalerweise mit einem Tachometersystem berechnet, wobei ein Impuls einmal (manchmal zweimal - siehe CPU-Lüfter) für jede Umdrehung erzeugt wird. Diese werden dann über einen vorgegebenen Zeitraum gezählt und daraus die Drehzahl errechnet.

Was die Position in der Rotation betrifft, ist das schwieriger. Aufgrund der von Ihnen verwendeten Rotationsgeschwindigkeit fällt nicht viel ein, um die Rotationsposition genau zu melden - nicht das reagiert schnell genug, um es richtig zu machen.

Wenn Sie die Rotationsgeschwindigkeit (RPM) ziemlich genau kennen, können Sie berechnen, wie weit sie sich in der verstrichenen Zeit über einen bekannten Punkt hinaus gedreht hat - zum Beispiel wie lange seit dem letzten Tachometerimpuls vergangen ist -, um eine ziemlich genaue Position zu erhalten, wenn die Geschwindigkeit ist Konstante.

Eine andere Möglichkeit wäre, mehrere Sensoren in einem Ring um die Achse und einen Bezugspunkt auf der Achse zu haben, der diese Sensoren passiert - sei es magnetisch oder optisch -, aber das ergibt nur eine begrenzte Auflösung. Diese sind als absolute optische Encoder (oder absolute magnetische Encoder, wenn Sie Magnetismus verwenden) bekannt.

Optische Inkremental-Encoder, wie sie in Mausrädern usw. verwendet werden, sind eine Möglichkeit, dies zu tun, geben jedoch keine absolute Position an, sondern nur eine relative, sodass Sie sie auch mit einem absoluten Bezugspunkt koppeln müssen .

@Matt - Es gibt auch absolute Encoder, die Ihnen die (Überraschung!) Absolute Position liefern. Folgen Sie dem Link in meiner Antwort für Details.
@stevenvh Das ist im Grunde das, was Absatz 4 meiner Antwort beschreibt, aber nicht als solches benennt.
@Matt - OK, im Grunde hast du Recht, aber so funktionieren Absolut-Encoder normalerweise nicht. (Vielleicht habe ich es deshalb übersehen.) Der Grund ist, dass es furchtbar teuer wäre, eine hohe Auflösung zu bekommen; Sie möchten nicht tausend Sensoren um die Welle herum platzieren. Herkömmliche Absolutwertgeber würden die gleiche Auflösung mit nur 10 Sensoren erreichen.
Nun, ja, ich denke, sie haben 1 Rotationsstartsensor und eine kleine Anzahl von Inkrementsensoren, die den Wert von Anfang an ausgleichen?
@Matt - ja, das heißt, wenn Sie mit "einer kleinen Anzahl von Inkrementalsensoren" nur einen meinen. :-) Das ist alles, was Sie brauchen, wenn es Ihnen nichts ausmacht, eine zusätzliche Drehung durchzuführen, um den Referenzpunkt zu finden.
@stevenvh Entschuldigung, lassen Sie mich das umformulieren ... "eine kleine Anzahl von Sensoren, die einen einzigen inkrementellen Sensor bilden"
@stevenvh lassen Sie uns diese Diskussion im Chat fortsetzen

Während ein Kreisel Ihnen theoretisch Informationen liefert, um die Antwort zu erhalten, wird der Winkel in der Praxis nach einigen Sekunden so viele Fehler aufweisen, dass er unbrauchbar ist. MEMs Kreisel geben ein Signal aus, das die Rotationsgeschwindigkeit anzeigt. Dies muss integriert werden, um Winkel zu erhalten. Offset, Drift und andere Fehler werden jedoch kontinuierlich im Integral akkumuliert. Bei den meisten MEMs-Kreiseln ist das Ergebnis nach einer oder wenigen Sekunden unbrauchbar.

Beachten Sie, dass echte mechanische Kreisel dieses Problem nicht haben, da sie von Natur aus ein Winkelpositionssignal und keine Winkelgeschwindigkeit liefern. Sie sind jedoch groß, klobig, verbrauchen viel Strom, sind teuer und müssen für eine Minute bis zu 10 Minuten ohne Bewegung "eingesperrt" werden, um sie vor dem Gebrauch zu kalibrieren.

Wenn die Drehzahl halbwegs konstant ist, reicht ein Tick einmal pro Umdrehung. Ich habe an mehreren rotierenden LED-Schildern gearbeitet, bei denen dies die einzige Positionsinformation war. Das System ging davon aus, dass jede Drehung die gleiche Zeit wie die vorherige Drehung dauern würde. Das Display wurde beim Einschalten beim Beschleunigen des Motors gedehnt, funktionierte aber im stationären Zustand recht gut.

Erst in diesem Frühjahr habe ich einen Gymnasiasten beraten, der etwas Ähnliches machen wollte. Ich gab ihm einen einzelnen Opto-Unterbrecher, mit dem er die Zeit pro Drehung berechnete und die Pixeluhr für die nächste Drehung generierte. Sein Motor war ein großer Ventilator, der auf der Seite auf dem Boden lag, in dessen Mitte das Board batteriebetrieben und montiert war. Es buchstabierte „2011 SENIOR PROJECT“ mit 7 LEDs, und alle waren ziemlich beeindruckt.

Wenn die Welle horizontal ist, können Sie einen Beschleunigungsmesser verwenden, um die Rotationsgeschwindigkeit zu messen und eine Vorstellung vom aktuellen Winkel zu bekommen, indem Sie die Schwerkraft beobachten.

Je nachdem, wie der Motor funktioniert, kann es sein, dass die Motorantriebselektronik regelmäßig die Position meldet. Wenn es sich um einen bürstenlosen DC handelt und Sie Zugriff auf den Controller haben, sind diese Informationen verfügbar.

Die Kommunikation mit der rotierenden Tafel von außen kann auf verschiedene Arten erfolgen. Bei dem rotierenden LED-Schild haben wir eine Hohlwelle mit einer IR-LED am festen Ende und einer Fotodiode am rotierenden Ende verwendet. Dies wurde als Einweg-Datenstrom mit etwa 1 Mbit/s verwendet. Es ist auch interessant, das rotierende Brett mit Strom zu versorgen. Der Gymnasiast verbrauchte Batterien. Das war einfach und funktionierte gut für seine Präsentation. Eine Version des LED-Schilds benötigte 70 W und musste kontinuierlich laufen, das war also nicht möglich. Wir verwendeten einen Transformator, bei dem sich Primär- und Sekundärteil gegeneinander drehen konnten. Dieser wurde von einem Umschalter mit hoher Frequenz angesteuert. Zur Rückkopplung wurde eine kleine Sekundärwicklung auf der festen Seite verwendet, und die rotierende Sekundärwicklung war gut genug geregelt.

In meinem Projekt ( youtube.com/watch?v=v6fGjcZuSXI ) habe ich die Motorwelle und einen umwickelten Draht als Bürstensystem verwendet. Es wäre noch besser, ein Federsystem anstelle einer Drahtwicklung zu haben, aber es sollte gut funktionieren. Die obere Welle war GND und die untere Welle war +5V. Sie können auch isolierende Wellenkoppler verwenden, um mehrere Leitungsschichten aufzubauen, wenn Sie einen Kommunikationskanal oder mehrere Spannungen benötigen. Es ist eine extrem einfache Methode für das Prototyping und sehr erweiterbar.
Oh, ich habe auch gerade electronic.stackexchange.com/questions/11946/… gefunden , das viel besser ist als das, das ich implementiert habe

Das Messen der Winkelgeschwindigkeit ist genau das, was der Kreisel tut. Im Fall Ihres Kreisels wird der Ausgang mit einer Geschwindigkeit von 300 Grad/Sek. Ein linearer Beschleunigungsmesser könnte auch die Winkelgeschwindigkeit messen, wenn er auf die Rotationsachse ausgerichtet ist, da Beschleunigung = R ω 2 , dh Winkelgeschwindigkeit ω = A C C e l e R A T ich Ö N R A D ich u S aber das wäre weniger bequem.

Um die Winkelverschiebung zu messen, müssten Sie die Winkelgeschwindigkeit über die Zeit integrieren, und Sie werden aufgrund von Offset und Drift Schwierigkeiten haben, über lange Zeiträume genaue Ergebnisse zu erhalten.

@MikeJ-UK: Die vom Beschleunigungssensor erfasste Beschleunigung ist auf die Zentrifugalkraft zurückzuführen, diese ist jedoch konstant, sodass Sie die Rotation auf diese Weise nicht messen können.
@Federico Russo: Die Kraft wäre proportional zum Quadrat der Winkelgeschwindigkeit.
Ja, und wenn der Motor rund läuft, ist das konstant.
@Federico Russo: Natürlich, und die Leistung eines Kreisels wäre auch bei konstanter Winkelgeschwindigkeit konstant , was das OP in seinem dritten Aufzählungspunkt verlangte. Um eine Winkelverschiebung zu erhalten , müsste er dies integrieren, daher mein Kommentar zur Drift.
OK, verstanden, Entschuldigung. Ich habe mich auf ein Signal konzentriert, das sich mit der Rotation ändert, sodass Sie direkt die Drehzahl erhalten. Guter Punkt zum Driften.
@Federico, Mike - Wenn Sie einen Beschleunigungsmesser verwenden und der Motor nicht vertikal montiert ist, hat der Beschleunigungsmesser einen Gravitationsmesswert, der der Zentrifuge überlagert ist und bei jeder Drehung von -1 g bis +1 g (bei horizontaler Montage) und zurück wechselt. @Mike: Was ist mit der Verkabelung, wenn sich Ihre Elektronik auf der Welle befindet?
@stevenvh: OK, vielleicht war meine Antwort etwas zu theoretisch und direkt. Ich habe hauptsächlich den letzten Punkt des OP angesprochen: "Können Sie ein Gyro oder einen Beschleunigungsmesser verwenden, um die Drehzahl zu messen?" worauf die Antwort natürlich - "ja" lautet. Wie Sie jedoch betonen, würde jede Abweichung der Plattform von der Horizontalen eine alternierende Welligkeit am Ausgang eines Beschleunigungsmessers verursachen, die herausgefiltert werden müsste. Die praktischen Überlegungen zur Verkabelung einer Plattform mit uneingeschränkter Rotation müssten ebenfalls berücksichtigt werden. Ich war in der Vergangenheit beruflich an der Konstruktion von kreiselstabilisierten Plattformen beteiligt ...
... obwohl diese auf etwa ±200° beschränkt waren.
@Mike - Ich wollte nicht andeuten, dass die Welligkeit eine schlechte Sache wäre. Es könnte verwendet werden, um Rotationen direkt zu zählen.
@stevenvh: Nein, ich verstehe Ihren Standpunkt voll und ganz und hätte in meiner Antwort auf die (Un-) Praktikabilität der Beschleunigungsmesserlösung hinweisen sollen (ich hatte sowieso die Auswirkungen der Schwerkraft übersehen!).