PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe bei der Radencoder Auswertung



Mehto
23.08.2006, 19:15
Hallo,

ich bin zur Zeit dabei endlich mal einen Roboter zu bauen. Leider sind die Getriebemotoren recht ungenau, so das ich gerne Radencoder einbauen würde. Das hab ich auch getan, und zwar zwei Stück aus einer alten Maus.

Jetzt habe ich aber das Problem mit der Auswertung, bei lansgamer Drehzal habe ich etwa 30 Impulse pro sekunde. Wie wertet man die Daten vom Encoder am besten und schnelsten aus und übt eventuelle veränderunen auf dem motor aus?
Da ich das das erste mal amche habe ich ain paar Probleme damit. Bis jetzt habe ich die Encoder an die beiden interrupteingänge vom Atmega8 angeschlossen und zähle ein Register bei jeden impuls hoch. Allerdings würde ich das Regitster um eine schnelle reaktionszeit zu haben gerne jede 100ms auslesen und eventuelle Schwankungen per PWM am Motor ausgleichen.

Allerdings erhalte ich bei lansgamer (normaler) Geschwindigkeit dann eben nur 3-4 Impulse. Auf die zu reagieren ist dann aber sehr schwer, zumal es schwankungen von bis zu 2bit gibt.
Länger als 100ms würde ich aber gerne auch nicht warten, ich befürchte das ich dann einfach nicht mehr schnell genug veränderungen am motor ausüben kann. Ich habe auch schon die Zeit zwischen den einzelnen impulsen gemessen, allerdings sind da die Abweichungen extrem (20-40Bit)
was dann auch nicht mehr das ware ist.

Was habt ihr für Erfahrungen und wie macht ihr das mit den Radencodern?



Viele Grüße,
Mehto

Mehto
23.08.2006, 19:26
Hier noch zwei Bilder:

http://home.arcor.de/svenlissel/elektronik/roboter/pfuscher/encoder/IMG_3649.JPG
Oberster Displayrand ist null, jeder Pixel eins mehr (Encodersignale pro 100ms) Der Motor dreht da gerade etwas schneller, so das es etwas 8-10 Impulse pro 100ms sind.


http://home.arcor.de/svenlissel/elektronik/roboter/pfuscher/encoder/IMG_3656.JPG
Die Encoder aus der Maus.

Gruß,
Mehto

sigo
23.08.2006, 21:57
Hallo, die Lochscheibe aus der Maus macht natürlich sehr wenig Impulse, sodass man für eine Drehzahlregelung eigentlich zu wenig Impulse bekommt.

Um dennoch die Drehzahl hoch auflösen zu können, könntest du z.B. die Pulsweite (oder Periodendauer) jedes Impulses messen und daraus die Drehfreqenz berechnen. Damit bekommst du dann eben die besagten 3-10 mal pro 100ms einen hochauflösenden Drehzahlwert...

Wenn du allerdings auch positionieren möchtest, und die Räder ggf. auch rückwärts drehen können, wäre ein 2-Kanal-Auswertung besser. Dazu musst du 2 Lichtschranken so anordnen, dass sie um 90° phasenversetzt auf die Drehscheibe schauen. Das sich ergebende Signal kannst du dann in ein Richtungssignal und einen Takt mit der vierfachen Frequenz des Encoders umwandeln und so auch die Auflösung steigern.

Viele Grüße

Ralf

Mehto
23.08.2006, 23:23
Hallo Sigo,

ich hab ja schon die Impulsdauer gemessen, allerding war die extrem ungenau und jeder Wert unterschied sich einiges vom anderen.

Eine genaue Positionierungbrauche ich vorerst nicht, viel wichtiger ist das die Motoren sich präzise gleichmäßig drehen. (die haben übrigens schon zei Fotodioden drin zur Richtungbestimmung, bracuhe icha ber nicht)
Aber leider haben die Motoren ein extremes Getriebespiel (und die Achse wackelt ziemlich), so das eine Auswertung und präzise drehen von vornerein erschwert ist.
Mein Ergeiz war es diese Motoren mit den Encodern eben präzise zu machen, aber ich denke das wird bis zu einem gewissen maß unmöglich :-(
Die Motoren sind leider auch recht klein und haben eine kleine umsetzung, so das sie bei niedriger Geschwundigkeit nicht richtig anlaufen.

Ich werd noch einw enig herumprobieren, wenn ihr Tipps habt imemr nur her damit. Ansonsten werd ich wohl andere Motoren montieren müssen und die alten für Sachen verwenden bzw. Roboter die nicht so präzise geführt werden müssen.

Gruß,
Mehto

sigo
23.08.2006, 23:41
du könntest die Impulsdauer noch durch einen Tiefpass- oder Running-Average-Filter schicken..(software)


Oder beide Kanäle der Lichtschranke benutzen um die Impulse zu vervierfachen..

In jedem Fall macht dir das große Getriebespiel bei der Regelung ohnehin Probleme (Totzeit). Besser wäre eine Montage des Gebers am Motor.

Sigo

Albanac
28.08.2006, 17:45
Radencoder an die Motorachse und du hast auch bei langsamer Geschwindigkeit mehr als genug Impulse

Mehto
28.08.2006, 19:09
Nur ist das montieren einer Encoderscheibe leider in den seltesten Fällen auf der Motorachse möglich :-(
Ich werde das genau regeln der Motoren etwas nach hinten verschieben da ich zuerst das Scannermodul richtig ansteuern und einer Linie folgen möchte, dann gehts zurück ans geradeaus fahren #-o