Archiv verlassen und diese Seite im Standarddesign anzeigen : Drehgeber aus Optomechanischer Kugelmaus verwenden
Guten Tag
Ich habe hier ein Modell eines Flugzeuges, welches mechanisch so befestigt ist, dass es um alle drei Achsen beweglich ist. An jeder Achse befidet sich ein Potetiometer. Somit konnte (früher) per Software die Lage des Flugzeuges grafisch dargestellt werden.
Das einzige Problem hierbei war, dass das Flugzeug nur um jeweils die 270° der Potentiometer gedreht werden konnte.
Nun möchte/soll ich das so lösen, dass man das gesamte Flugzeug immer um 360° drehen kann (für jede Achse). Dazu sollten bereits vorhanden Schlitzscheiben aus alten Computermäusen verwendet werden.
Jedoch habe ich ein kleines Problem, das ganze Softwaretechnisch zu realisieren.
Wenn ich das richtig verstehe, wird für jeweils eine Schlitzscheibe eine LED und ZWEI Fototransistoren verwendet. Somit kann man auch die Richtung bestimmen, in welche sich die scheibe bewegt. (Soweit richtig?).
Da es sich um zwei Transistoren handelt, geben sie jeweils ein um 90° verschobenes Signal heraus.
Aber nach meinem verständniss müssen dann die Transistoren in einem gewissen Winkel zur LED stehen? also einer währe dann "senkrecht" zur LED und einer z.B. um 45° verschoben?
Wie schaut das ganze schlussendlich aus? ich habe dann immer ein Signal, das 90° nach vorne oder hinten verschoben ist?
Danke für euere Hilfen
Gruss JeyBee66
Also vom Winkel her (mechanische Ausrichtung) ist da eigentlich nix verdreht, sondern eher verschoben.
D.h. wenn ein Transistor abgedeckt ist, kanns sein, dass der andere noch ein Signal kriegt. Durch die zeitliche Abfolge, wann welcher Transistor Licht abkriegt, kann man dann sagen, ob, wie schnell und in welche Richtung sich das Ganze dreht.
Vom aussehen her:
http://www.qsl.net/pa3ckr/bascom%20and%20avr/interrupts/rotary-encoder.gif
Ah, jetzt verstehe ich das.
Ich nehme an, das wenn ich die Lichtschranke aus der Maus nehme, ich da nur noch die richtigen Pins finden muss, und dann kann ich das einfach per uC auswerten? Ich habe dann zwei pins am AVR, und der eine ist früher 1 als der andere?
Gruss JeyBee66
"Idealerweise" könnte so ne Lichtschranke 6 Pins haben (evtl auch nur 5)
Die LED zu finden, sollte einfach sein: Gegenüber den Fototransistoren und meistens nur 2 Pins. Die restlichen 3 oder 4 Pins sind dann die Transistoren.
Bei den Transistoren und der LED aber immer Vorwiderstände verwenden. Sonst geht das Ding nicht lang oder gibt die Drehrichtung mit unterschiedlichen Rauchfarben aus...
Wenn du ein Signal dann an nen Interrupt-Eingang legst, da dann z.B. auf eine fallende Flanke reagierst, brauchst du für die einfachste Möglichkeit nur zu schauen, welchen Pegel das andere Signal zu dem Zeitpunkt hat.
Also bei Verwendung des Bildes von oben ist z.B. A mal am Interrupt.
Wenn A fällt und B ist high: Schritt nach rechts.
Wenn A fällt und B ist low: Schritt nach links.
Es gibt noch die Möglichkeit, die beiden Leitungen per Timer-Interrupt abzufragen, aber ich bin da irgendwie kein Freund davon (nur meine Meinung, kein fachlicher Rat!). Zum einen hat man da immer ne Interrupt-Last, auch wenn das Ding nicht gedreht wird, zum anderen kanns passieren, dass bei ner bestimmten Drehzahl in die eine Richtung eine andere Drehzahl in die andere Richtung erkannt wird
(Alias-Effekt; kennt man als "rückwärts" drehende Reifen in Filmen)
Hi,
Leider habe ich noch nie was mit exzternen Interrupts gemacht. Ich kann also einfach beide Leitungen an die Pins des externen Interrupts legen (Pullup benötigt?) und kann das dann in dem Interrupt im Programm (ISR?) vergleichen und eine z.B. eine 1 für links und eine 0 für rechts ausgeben?
Hat denn eine Mega8 z.B. genug anschlüsse für die internen interrupts? ich brauch ja dann eigentlich 6 Anschlüsse?
Gruss JeyBee66
Hallo!
@ JeyBee
Vielleicht hilft dir http://www.rn-wissen.de/index.php/PIC_Assembler#Mausrad_bzw._Drehencoder beim Verstehen der Arbeitsweise vom Drehencoder. Es enthält zwar ein Code für PIC, aber der Programmablaufdiagramm (PAD) ist allgemein.
Es wurde für handgedrehten Drehgeber erstellt und für schnellere/langsamere Impulsfolgen muss der Zeitabstand zwischen Ablesungen entsprechend angepasst werden.
MfG
Okay, vielen Dank leute!
Ich weiss jetzt, wie das ungefähr funktioniert.
Demfall werde ich wohl mit den Externen Interrupts anfangen. Sollte ja nicht all zu schwer sein...
Gruss JeyBee66
Am AVR brauchst du nur 2 Pins. Einen für den "Interrupt-Takt" (Signal A z.B. an INT0) und einen für Signal B (muss kein Interrupt sein, beliebiger Pin).
Sobald der INT0 durch eine Flanke ausgelöst wird, nachschauen, welchen Pegel die andere Leitung hat.
6 Anschlüsse brauchst du da nicht, da die anderen jeweils nur die Stromversorgung für die LED bzw. die Transistoren sind.
Vom Anschluss her sieht das so ähnlich aus wie hier: http://www.ioproz.de/images/sch_optokoppler.gif
Der Widerstand zieht die Leitung auf 5V; fällt Licht auf den Transistor leitet dieser und das Signal geht auf (fast) 0V runter.
Das 2x für jeden Transistor, die LED kriegt ebenfalls nen Vorwiderstand; würd mal schätzen so zwischen 270-1k. Aber müsste man eh von der ursprünglichen Mauselektronik abschauen können, welcher da drinhängt.
(In der Hoffnung, dass die Elektronik darin dann auch mit 5V lief)
Achso, also wenn ich drei drehgeber brauche (für jede Achse einen), dann brauche ich trotzdem DREI Interrupt pins? Soweit ich weiss hat z.B. ein mega 16 nur zwei, oder?
Gruss JeyBee66
Genau, in dem Fall für jede Achse einen Int und einen normalen.
Der Mega16 hat aber sogar 3:
INT0 an PD2
INT1 an PD3
INT2 an PB2
okay, ich werd mich dann mal drumm kümmern.
Danke sehr
Gruss JeyBee66
Habe gerade zwei alte mäuse hier...es sind zwar zwei unterschiedliche, das drüfte uns aber ned weiteer stören.
Jedoch fällt mir gleich auf, dass beide Bauteile je 3 anschlüsse haben??
Die LED braucht dohc eigentlich nur zwei und die transistoren auf der anderern Seite brauchen vier, oder?
Gruss JeyBee66
Die Transistoren können auch mit 3 auskommen, dann haben die einfach ne gemeinsame Masse. Dass die LED aber 3 hat... da wär ein Foto nicht schlecht. Oder lässt sich auf der Platine irgendwie die Bahn verfolgen, so dass da z.B. 2 Pins verbunden sind?
Naja, da jemand solche schonmal für genau das verwenden wollte (und gescheiter ist, deswegen will ich mal ran ^^), sind die schon präpariert... d.h. da sind an der LED drei kabel und am Transistor drei Kabel, die Platine ist schon bearbeitet und ist nicht mehr als solche verwendbar.
Aber wieso eine LED drei beine hat, ist mir noch immer unklar.
Hi,
Ich bins nochmal.
Ich habe hier nun so eine Lichtschranke vor mir.
Auf der Platine ist so eine art rotes LED difuse Gehäuse mit drei Beinen und der Aufschrift "LQ2". Daneben ist eine klare "LED", mit einmem schwarzen Mantel drumrum, auch drei Beine, mit der Aufschrift "LD2".
Ich gehe mal auf grund des schwarzen Lichtschutzes beim klaren Gehäuse davon aus, dass das der Transistor ist.
Aber warum haben beide drei Beine?
Gruss JeyBee66
oberallgeier
09.03.2010, 09:25
Hallo JeyBee66,
Deine Maus kenne ich nicht. Aber denk mal dran: die Maus-Lichtschranken müssen ja auch die Drehrichtung erkennen: auf <-> ab und links <-> rechts. Daher bin ich sicher, dass die drei Beine auf ähnliche Funktionen hinauslaufen. Schau Dir mal das da an. (http://www.rn-wissen.de/index.php/Sensorarten#Drehgeber_Sharp_GP1A30_und_GP1A38)
Hi,
Mit einer Digitalkamera konnte ich nun herausfinden, wann die InfrarotLED leuchtet. Zudem habe ich aus unsicherheit ein anderen Sensor genommen.
Beim Neuen ist nun wieder ein klares Gehäuse mit drei beinen und der Aufschrift "LD2". Mit zwei dieser drei Beine kriege ich die LED zum Leuchten
Die zwei Fototransistoren auf der Gegenseite sitzen in einem Schwarzen Gehäuse mit drei Beinen und der Aufschrift "LQ2". Wie dieser zu beschalten ist bleibt mir jedoch ein Rätsel.
Wenn ich den Mittleren Pin auf die Versorgungspannung der LED (inc. Vorwiderstand), dann kann ich an einem der Anderen Pins wenn nichts zwischen der Lichtschranke ist, 0.383V und wenn ich etwas dazwischen setzte, dann sinds 0,04V.
Wenn ich jetzt abder den anderen Anschluss nehme, dann habe ich, wenn nichts dazwischen ist 1.334V und wenn ich etwas dazwischen lege sinds 1.28V.
Was hat das zu bedeuten? Habe ich etwas noch nicht ganz verstanden?
Gruss JeyBee66
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.