Präziser Sensor für ein rotierendes Objekt

Ich habe eine quadratische Kunststoffplatte (3 cm Länge x 3 cm Breite x 1,5 cm Höhe), die an einem Motor befestigt ist, der sie mit 500 Hz dreht:

Zeichnung

Ich möchte, dass jedes Mal, wenn Punkt X (auf der rotierenden Platte) Position Y (fest) erreicht, ein Interrupt auf meinem Mikrocontroller ausgelöst wird.

Was wäre eine genaue Möglichkeit, dies zu erreichen, damit der Interrupt so genau wie möglich an dieser Stelle ausgelöst wird?

__

Meine Notizen: Ich würde es vorziehen, die quadratische Platte nicht mit zusätzlichem Material zu modifizieren (also vermute ich, dass die magnetische Codierung aus ist). Daher denke ich, dass eine Art optischer Unterbrechungs- / Reflexionssensor die Arbeit erledigen würde, aber für eine größere Genauigkeit könnte das System möglicherweise von der Verwendung einer Infrarot-Laserdiode über der Platte und einer Fotodiode mit passendem Wellenlängenbereich unter der Platte profitieren?

__

EDIT 1: Ich sollte erwähnen, dass die quadratische Platte fest mit der Motorwelle verbunden ist und nicht entfernt werden kann, um zB eine optische Encoderscheibe dazwischen einzufügen.

BEARBEITEN 2: Das Erkennen einer / aller vier X-Ecken des Quadrats ist in Ordnung; es muss kein bestimmtes X sein.

EDIT 3: Gewünschte Genauigkeit: +/- 0,1 mm radialer Hub.

Welchen Durchmesser hat das Motorgehäuse?
@boardbite - wie genau brauchst du? Innerhalb von 1 Grad oder 0,4 mm oder 5 us; Diese Werte sind alle ziemlich nahe an der gleichen Genauigkeit. Sie sind für einige Techniken ziemlich herausfordernd. Ich denke also, dass es sich lohnt, sich über die Genauigkeit im Klaren zu sein. Es ist mir egal, wie Sie es angeben, verwenden Sie, was Sinn macht.
@EMFields: Der Motor: Ca. 2cm Durchmesser. Der Schaft: ca. 0,2cm Durchmesser.
@gbulmer: Ideal wäre es, es mit einer Genauigkeit von +/- 0,1 mm entlang der Kreisbahn des Punktes X zu erkennen.
@boardbite - das ist eine sehr nützliche Information. I SWAG +/- 0,1 mm entspricht etwa 2 us oder einer Antwort in +/- 1 Zyklus bei 1 MHz. Ich denke, das eliminiert einige der Antworten.

Antworten (6)

Müssen Sie nur diese Ecke erkennen, die sich von den anderen unterscheidet, oder funktioniert jede Ecke? Wenn einer funktioniert, können Sie einen Fotodetektor vom Reflexionstyp oder möglicherweise einen Hall-Effekt-Sensor verwenden. Mit der richtigen Positionierung können Sie es dazu bringen, die Ecke der Platte zu erkennen, aber Sie werden nicht in der Lage sein, eine bestimmte Ecke von den anderen zu unterscheiden.

Schauen Sie sich die reflektierenden Fotosensoren von Optek an .

Ja, es muss nicht zwischen den Ecken unterschieden werden. Wollten Sie andeuten, dass der Fotodetektor nahe genug an der Ecke platziert wird, dass Reflexionen von anderen Punkten entlang der Seiten des Quadrats nicht erkannt werden?
Ja, Sie müssen darauf achten, den Sensor so weit wie möglich von der Mitte entfernt zu platzieren. Wie bei jedem Sensor würde es einen kleinen Fehler geben. Je besser Ihre Positionierung, desto kleiner der Fehler. Wie Sie in Ihrer Frage angegeben haben, gibt es auch transmissive Sensoren. Optek verkauft diese auch. Sie sind billig, also vielleicht ein paar Typen testen. Kalibrierung wäre das größte Problem.

Ein kleines Stück glänzendes Klebeband an der Ecke (oder sogar am Rand) konnte mit einer LED und einem Fototransistor erkannt werden. Das silbrige Band, an das ich denke, wird auf 1/2-Zoll-Magazinbänder aufgebracht, um den Bandanfang zu markieren, aber ich bin sicher, dass 3M viele andere geeignete reflektierende Bänder herstellt.

Vielleicht könnten Sie versuchen, einen optischen Encoder an der Welle des Motors anzubringen und diesen mit guter Genauigkeit mit Ihrem Mikrocontroller abzulesen. Die Idee, einen Laser und eine Fotodiode zu verwenden, ist gut, aber wenn eine hohe Genauigkeit erforderlich ist, benötigen Sie einen sehr schmalen und kollimierten Strahl, da der quadratische Kunststoff ziemlich klein ist.

Der optische Encoder ist eine brauchbare Idee; Das einzige Problem besteht darin, dass die Platte nicht von der Welle des Motors getrennt werden kann, um die optische Codierscheibe zu installieren.
Was ist, wenn Sie eine parallele Welle mit ein paar Lagern installieren und die Wellen dann mit einem Riemen verbinden? Das würde Ihnen ziemlich geringe mechanische Störungen geben und Sie könnten die Encoderscheibe in der zweiten Welle anbringen.

Kannst du ein Loch durch die eine Ecke der quadratischen Platte bohren? Wenn ja, dann setzen Sie eine LED auf der einen Seite und einen Detektor auf der anderen Seite. Die LED würde für einen kurzen Moment durch das Loch scheinen, wenn sich das Loch vorbeidreht, und es dem Detektor ermöglichen, den Puls zu sehen. Um die Genauigkeit zu erhöhen und äußere Störungen zu reduzieren, können Sie den Detektor in einem kleinen Rohr montieren, das einen ähnlichen Innendurchmesser wie das Loch hat, das Sie durch die Ecke der Platte bohren.

Sie können den Durchmesser des Lochs mit dem Umfang des Kreises vergleichen, den das Loch beim Drehen nachzeichnet. Dieses verglichene Verhältnis kann verwendet werden, um die zu erwartende Impulsbreite aus dem Detektor unter Berücksichtigung der Rotationsperiode der Platte zu berechnen. Bei 500 Hz beträgt die Rotationsperiode 2 ms.

Platzieren Sie das Loch 0,5 cm vom Rand jeder Seite der Ecke der Platte, so dass die Platte der Platte dem Loch einen Rotationsradius von 1 cm verleiht. Dadurch kann das Detektorröhrchen vollständig von der Platte verdeckt werden, außer wenn sich das Loch direkt über dem Röhrchen befindet. Bei einem Radius von 1 cm für die kreisförmige Bahn des Lochs würde der Gesamtumfang ~6,283 cm betragen. Ein kleines Loch von 0,3 cm würde zu einem Verhältnis von 0,3 / 6,283 = 0,0477 führen. Die skalierte Rotationsperiode würde dazu führen, dass die Zeit, in der sich das Loch über dem Detektorrohr befand, in der Größenordnung von 95 usec liegen würde. Natürlich würde der Sensor eine zunehmende und dann abnehmende Lichtmenge von der LED sehen, wenn das Loch die Detektorröhre überdeckt.

Jeder einigermaßen anständige Fotodetektor sollte in der Lage sein, eine Impulsfinsternis mit einer Breite von 95 usec zu "sehen". Um den Umgang mit der Schaltung zu vereinfachen, würde ich empfehlen, dass Sie einen Detektor wie den Fairchild QSE158 ausprobieren , der von Mouser für etwa einen Dollar erhältlich ist. Ein Detektor wie dieser macht die Sache einfach, weil Sie ihn einfach mit 5->15 Volt versorgen und einen Open-Collector-Logikpegelausgang erhalten, den Sie mit einem geeigneten Pullup-Widerstand an Ihre MCU anschließen können.

Ein Emitter, der mit diesem Sensortyp kompatibel ist, wäre der Fairchild QEE123 . Dieses Teil ist ebenfalls von Mouser erhältlich und kann mit einem Reihenwiderstand von Ihrer Versorgung vorgespannt werden, der so ausgewählt ist, dass 20->75 mA durch die Infrarot-LED fließen können.

Ein paar andere Dinge fallen mir auch ein. Sie könnten das Loch sehr nahe an der Ecke der Platte platzieren, aber dann wird die Erkennungslogik der Ziel-MCU etwas komplexer, da Sie den Unterschied zwischen den Plattenecken, die über den Detektor laufen, und einer Ecke, die die zusätzliche enthält, erkennen müssten schmaler Puls durch das Loch.

Wenn Sie nicht durch die Platte bohren können, ziehen Sie in Betracht, ein Stück undurchsichtigen Kunststoffschlauch entlang einer Kante der Platte zu kleben. Setzen Sie dann sowohl den Emitter als auch den Detektor jeweils an die Enden eines äquivalenten Schlauchstücks, das einmal pro Umdrehung der Platte mit dem Randschlauch ausgerichtet ist. Dies ergibt ein ähnliches verfinstertes Impulsschema. Aufgrund der größeren Entfernungen müssten Sie beim Ausrichten der Rohre etwas mehr Sorgfalt walten lassen und den Sensor/Emitter konzentrisch auf die Mitte der Rohre ausrichten.

Sie können die Platte nicht ändern, und Sie sagen, Sie können die Platte nicht entfernen, um einen Encoder anzubringen.

Können Sie eine Markierung auf der Motorwelle unter der Platte anbringen, damit sie einen optischen Sensor passiert, wenn Punkt X mit Punkt Y übereinstimmt? Das scheint die einfachste Lösung zu sein. Eine Markierung oder ein kleiner Magnet oder ein Klumpen, der einen Strahl bricht, oder ein Eisenklumpen, der einen VR- oder Hallsensor erregt.

Ich würde einen Mikroschalter (tm) oder einen ähnlichen Schalter verwenden, der so positioniert ist, dass er von einer Ecke der Platte getroffen wird, obwohl dies ohne geringfügige Modifikation der Platte vier Impulse pro Umdrehung geben würde.

Danke, aber ich befürchte, dass diese Methode mit der Zeit verschleißen und auch die Rotation stören könnte. Eine berührungslose Methode wäre vorzuziehen.
Finden Sie zuerst einen Mikroschalter, der bei 500 Hz betätigt wird ... Ich glaube nicht.