PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Drehzahl- und Wegmessung mit Lochscheibe - Konstruktion und Berechnung



µautonom
23.03.2013, 21:15
Hi,

ich bin gerade dabei die Drehzahl eines Motors und den zurückgelegten Weg eines Rad's zu bestimmen. Dazu möchte ich ganz klassisch eine Gabellichtschranke mit einer Lochscheibe verwenden.
Jetzt stellt sich natürlich bei mir die Frage, wieviele Löcher und in welchem Winkel ich die Löcher für die Impulse auf der Lochscheibe anordnen soll.

Zunächst einmal hab ich dazu die notwendigen Parameter bestimmt.
Das Rad an dem die Motoren befestigt werden, hat einen Durchmesser von 51 mm. Die max. Drehzahl der Motoren mit einer Untersetzung von 33:1 und einer Motorspannung von 6V liegt nach Datenblatt bei ca. 151 rpm.
Die Lochscheibe wird einen Durchmesser von 18 mm haben.

Zuerst zu der Lochscheibe:

Für eine komplette Umdrehung braucht der Motor 397,35 ms, das ergibt bei der Drehzahl von 151 rpm eine Winkelgeschwindigkeit von w=15,831 rad/sec.
Bei dem Raddurchmesser von 51 mm wäre das doch eine Geschwindigkeit von v=403,23 mm/sec für jedes Rad?

Nehmen wir an ich bohre 15 Löcher die ich konzentrisch auf der Lochscheibe anordne, das wären 24° pro Periode. Mit der berechneten Winkelgeschwindigkeit von 15,831 rad/sec erhalte ich eine min. Periodendauer von 27 ms pro Impuls, das sollte der uC ja schaffen (Periodendauer messen).

Was ist hier eine geeignete Lochzahl, für die obigen Parameter? Im Grunde ist das doch egal, es muss lediglich erfassbare Periodendauer rauskommen, die vom Mikrocontroller noch gemessen werden kann oder sehe ich das falsch?


Jetzt hab ich noch zwei Fragen zur Berechnung der Drehzahl und des zurückgelegten Weg eines Rades, sind diese so korrekt?

Die Drehzahl:

n_Drehzahl=phi*60sec/(360*tp)

phi=Winkel zwischen zwei Löcher (Impulse) in °
tp=Periodendauer eines Pulses

Zurückgelegter Weg:

l=((d*pi)/360)*n_pulse*phi

l=zurückgelegter Weg
d=Durchmesser des Rades
n_pulse=Summe der gezählten Impulse
phi=Winkel zwischen zwei Löchern in °

EDIT: Habe eben die Formel für die Drehzahl in RN-Wisse gefunden, nur wird sie nicht richtig dargestellt (http://www.rn-wissen.de/index.php/Beispiel_Drehzahlmessung_mit_Drehgeber)

Grüße µautonom

ranke
24.03.2013, 17:56
Die Rechnungen und die beiden Formeln stimmen so. Bei der Formel für die Drehzahl kommt diese in 1/min heraus.


Was ist hier eine geeignete Lochzahl, für die obigen Parameter? Im Grunde ist das doch egal, es muss lediglich erfassbare Periodendauer rauskommen, die vom Mikrocontroller noch gemessen werden kann oder sehe ich das falsch?

Natürlich muss die Drehzahl vom MC noch erfasst werden können. Man macht das am zweckmäßigsten durch regelmäßiges Polling (interrupt ist weniger günstig). Wenn der MC sonst wenig gefordert ist, ist er mit der Aufgabe noch eher gelangweilt.

Noch eine Anregung: Wenn man es schafft, die Lochzahl zu vergrößern, dann steigt damit auch die Genauigkeit der Wegmessung. Das Rad mit 51mm Durchmesser hat etwa 160mm Umfang, wenn Du jeden Belichtungswechsel erfasst dann sind das bei 15 Löchern 30 Wechsel pro Umdrehung. Wenn ein Rad also in einer bestimmten Stellung stehen bleibt, hast Du eine Unsicherheit von etwas über 5mm wo es tatsächlich steht (tatsächlich ist die Unsicherheit noch etwas höher weil man die Löcher nicht beliebig präzise bohren kann). 5mm klingt nach einigermaßen präzise. Du solltest aber mit der Spurweite deiner Konstruktion noch die Unsicherheit für den Winkel um die Hochachse ausrechnen (hier haben wir für beide Räder 5,3mm Unsicherheit). Wenn Du mit der gerechneten Winkelunsicherheit ein paar Meter gerade fährst, wirst du wahrscheinlich schon auf eine recht große Abweichung kommen. Hier würde eine höhere Auflösung helfen. Die kann man erreichen durch eine kleinere Teilung oder durch Anbringen der Lochscheibe vor dem Untersetzungsgetriebe.
Zweite Anregung:
Die einzelne Lichtschranke gibt keine Drehrichtungsinformation. Das führt zu Fehlern wenn die beabsichtigte Drehrichtung nicht der tatsächlichen entspricht. Eine eindeutige Drehrichtung kann man mit einer zweiten Lichtschranke auf der Lochscheibe messen. Die zweite muss so angeordnet sein dass sie nicht genau gleichzeitig mit der ersten schaltet, idealerweise genau in der Mitte zwischen zwei Wechseln der ersten. Die Auswertung kann dann der MC machen (und ist damit immer noch nicht überfordert). Als zusätzlichen Bonus hat man mit der zweiten Lichtschranke gleich noch die Auflösung verdoppelt.

µautonom
24.03.2013, 19:25
Ich habe heute schon testweise eine Lochscheibe mit 15 Löchern aufgebaut, klappt soweit gut. Wie sieht es mit den Puls-Pausen-Verhältnis aus? Dieses kann man ma mit einem kleinern Abstand zwischen zwein Löchern variieren. Im Grunde ist das egal, weil es nur auf die Periode ankommt, wenn ich das richtig verstanden habe. Mit meiner jetzigen Lochscheibe sind das ca. 50% High-Phase und 50% Low-Phase.

Gebe dir da recht das man mit mehr Löchern eine höhere Auflösung erreicht, muss mal gucken, welche max. Löcherzahl machbar ist.
Das mit der Drehrichtung kenne ich, das Problem war das ich keine Gabellichtschranke mit 2 Sendern und Empfängern finden konnte. Viell. schaffe ich es in die vorhandene Gabellichtschranke am Boden noch Löcher reinzubohren. Besser wäre es, man hätte eine fertige Gabellichtschranke dieser Art, kennst du vielleicht so einen Baustein?

Grüße

ranke
24.03.2013, 21:11
Das Puls-Pausenverhältnis von 1:1 ist optimal, das kann man nicht mehr verbessern. Gabellichtschranken mit 2 Empfängern und 1 Sender (für beide) sind handelsüblich und können z.B. auch aus alten Kugelmäusen geschlachtet werden. Ich habe die aber auch z.B. beim großen C gesehen. Problem bei den Doppellichtschranken: weil der Abstand der Empfänger fix ist funktionieren sie nur mit einer bestimmten Teilung der Lochscheibe die meistens so fein ist, dass man sie im Eigenbau nicht hinbekommt. Für den Eigenbau ist es wahrscheinlich besser wenn man irgendwo am Umfang der Lochscheibe eine zweite Lichtschranke justierbar montiert. Für erste Versuche genügt ja auch erstmal eine, die zweite kannst Du nachrüsten wenn Du den Bedarf dazu siehst.

µautonom
24.03.2013, 21:54
Gabellichtschranke hab ich bei Pollin finden können, günstig und mit Flansch zum Befestigen.

Eine zweite Lichtschranke an einer anderen Position ist vermutlich einfacher als einen weiteren Empf. / Sender in das Gehäuse der Lichtschranke einzubauen. Mal sehen ob ich das mit dem aktuellen Durchmesser der Löcher hinbekomme..

Was mich interessieren würde, hast du auch etwas ähnliches bauen müssen oder woher kommt das Wissen? ;)

ichbinsisyphos
25.03.2013, 00:20
Vor dem Getriebe wäre ideal, wenn da Platz ist, wegen Auflösung und wahrscheinlich kann man dort auch kompakter bauen.
Aber davon abgesehen geht mir grad nicht ein, wieso eine zweite Diode die "genau in der Mitte schaltet" die Drehrichtung bestimmen läßt. Geht es nicht genau da nicht? Wenn sie nicht in der Mitte zwischen 2 Schaltpunkten der anderen schaltet ist die Zeitdifferenz in eine Richtung geringer als in die andere und die Reihenfolge ergibt die Drehrichtung.

Je nach Anwendung könnt ich mir vorstellen das Signal von der Lichtschranke in einen Binärzähler zu schicken (und vielleicht vorher noch durch einen Schmitt-Trigger), anstatt jetzt Einzelperiode zu bestimmen. Dann kannst in ungefähr gleichen Zeitabständen den Zählerstand auslesen und resetten.

ranke
25.03.2013, 09:06
Was mich interessieren würde, hast du auch etwas ähnliches bauen müssen oder woher kommt das Wissen?

Ich habe hier einen DC-Motor mit einer Schlitzscheibe mit 1024 Schlitzen die direkt auf der Motorwelle sitzt (kein Getriebe), also eine Wahnsinnsauflösung. Der Motor stammt aus einem alten Inkjet Drucker. Ich wollte mal sehen wie genau man in der Praxis eine Positionsregelung für diesen Motor aufbauen kann. Leider ist inzwischen die Lichtschranke kaputt, ich muss sehen ob ich dafür einen Ersatz bekommen kann. Ein Auswerteprogramm dafür auf einem ATtiny habe ich schon geschrieben, aber noch nicht probieren können. Das Projekt liegt jetzt aber schon länger auf Eis. Was mir natürlich auch bei solchen Sachen hilft ist meine Ausbildung zum Diplomingenieur.


Aber davon abgesehen geht mir grad nicht ein, wieso eine zweite Diode die "genau in der Mitte schaltet" die Drehrichtung bestimmen läßt. Geht es nicht genau da nicht? Wenn sie nicht in der Mitte zwischen 2 Schaltpunkten der anderen schaltet ist die Zeitdifferenz in eine Richtung geringer als in die andere und die Reihenfolge ergibt die Drehrichtung.


Die Auswertung beruht nicht auf Zeitdifferenzen zwischen dem Schalten der Lichtschranken. Es ist so, dass es 4 definierte Zustände gibt (jede der beiden Lichtschranken kann entweder an oder aus sein). Für jeden der 4 Zustände gibt es zwei erlaubte Übergänge in einen folgenden Zustand (entweder die eine Lichtschranke wechselt oder die andere). Die Übergänge unterscheiden sich nach der Drehrichtung. Sehr informativ ist dieser alte Thread (https://www.roboternetz.de/community/threads/9008-Zähleransteuerung-mit-Quadratursignalen).


Je nach Anwendung könnt ich mir vorstellen das Signal von der Lichtschranke in einen Binärzähler zu schicken (und vielleicht vorher noch durch einen Schmitt-Trigger), anstatt jetzt Einzelperiode zu bestimmen. Dann kannst in ungefähr gleichen Zeitabständen den Zählerstand auslesen und resetten

Das wäre eine Möglichkeit um die Berechnung des Standorts nicht so häufig durchführen zu müssen. Allerdings verliert man dabei Information. Ein krasses Beispiel: Man wertet den Zähler aus, nachdem rechts 1000 Wechsel vorwärts stattgefunden haben und links 990 Wechsel vorwärts. Das kann passiert sein indem der Robi ein Stück geradeaus gefahren ist und am Schluss eine Linkskurve. Er kann aber auch gleich eine Linkskurve gemacht haben und dann geradeaus. Oder er ist ziemlich Schlangenlinien gefahren, insgesamt etwas mehr Linkskurve als Rechtskurve. Jedesmal wird die Position des Robbi eine andere sein. Wenn man nach jedem Lichtschrankenwechsel die neue Position ausrechnet dann gibt es diese Unsicherheit nicht. Wenn man einen MC nur für die Auswertung der beiden Räder und die Positionsrechnung verwendet sollte das noch nicht zeitkritisch sein. Bei der Positionsberechnung muss man vielleicht etwas überlegen dass man bei den Winkelfunktionen geschickt (prozessorzeitsparend) rechnet. Das habe ich bisher noch nicht so genau durchüberlegt.

ichbinsisyphos
25.03.2013, 12:42
dieser alte Thread (https://www.roboternetz.de/community/threads/9008-Zähleransteuerung-mit-Quadratursignalen). Hmm, ja, tatsächlich, aber nur wenns einen Bereich gibt, in dem beide an sind. Den Fall hab ich bisher ausgeschlossen.

edit: Aso, das hast eh so gemeint. Ich dachte du meinst Sensor 2 soll schalten während der erste aus ist.
Wenn der zweite aber in der Mitte eines positiven Pulses vom ersten angeht, dann garantiert das eh die maximale Überschneidung.

Geistesblitz
25.03.2013, 13:10
Ich habe mal einen DC-Motor zu einem Servomotor umgebaut, indem ich die Lochscheibe aus einer Kugelmaus auf die Welle geklebt habe und dann die IR-Diode und Doppelfototransistor aus derselben Maus angebaut. Funktionierte eigentlich sehr gut, den Thread dazu gibts hier (https://www.roboternetz.de/community/threads/55387-Einfachen-Servomotor-aus-DC-Getriebemotor-umbauen). Dort kam auch das Thema auf, wie man die Lichtschranken anordnen muss, damit es richtig funktioniert.

Searcher
25.03.2013, 13:27
und noch'n thread: (https://www.roboternetz.de/community/threads/55296-Drehzahlmessung-mit-Optoelekronik-aus-Maus?p=531780&viewfull=1#post531780) ich hatte mich auch mal mit der HW-Unterstützung für Drehencoderauswertung befaßt. Die Auswertung per Interrupt kann den Nachteil haben, daß der µC nur noch mit der ISR beschäftigt ist. Tritt auf, wenn der Drehencoder gerade auf einer solchen Stellung steht, bei denen einer seiner zwei Ausgänge sehr schnell zwischen zwei Zuständen hin und her wechselt.

Je nach Signal vom Encoder würd ich einen Schmitttrigger zwischen Encoder und µC (zB 74HC14) vorsehen. Bei Direktanschluß der Fototransistoren an den µC hatte ich bei verschiedenen µC unterschiedliche Ergebnisse. Die Schmitttriggereigenschaften der µC-Eingänge variieren von AVR zu AVR.

Legieps
03.06.2014, 20:49
Als Blutiger Anfänger, habe ich da mal eine Frage, kann ich mit dem Ausgang des Empfängers direkt auf einen Pin vom MC gehen?
Und wenn ich die hier im Thema beschriebene Lösung mit den zwei Lichtschranken Bauen würden, könnte ich diesen 2. Ausgang auch auf einen Pin von demselben MC legen?
Entschuldigung für diese Fragen aber ich versuche mich gerade in dieser Materie zurecht zu finden.

Gruß Legieps

ranke
04.06.2014, 20:02
kann ich mit dem Ausgang des Empfängers direkt auf einen Pin vom MC gehen?

Meistens geht das mit einem zusätzlichen Widerstand, so wie hier (http://www.rn-wissen.de/index.php/Gabellichtschranke) gezeigt.


Und wenn ich die hier im Thema beschriebene Lösung mit den zwei Lichtschranken Bauen würden, könnte ich diesen 2. Ausgang auch auf einen Pin von demselben MC legen?

Ja, um die Drehung festzustellen müssen ja beide Signale vom MC ausgewertet werden, also müssen beide Zustände vom MC erfasst werden.