Hallo Michael,
neeeee, rausgeschmissen haben die Kollegen mich nicht
Aber weiterhelfen konnten sie mir auch nicht
Dann habe ich einfach jetzt übers Wochenende ein Oszi mitgenomMen und mich selber gleich ans Werk gemacht. Hast ja lange genug warten müssen.
Und ich muss sagen, ich konnte dem Ding relativ schnell das Geheimniss entlocken *freu*.
Also:
1. Der Drehgeber ist ein primitiver mechanische Drehgeber (vermute Inkrementaldrehgeber) welcher intern mit zwei separaten und voneinander getrennten Schaltern arbeitet.
2. Wenn Du von vorne direkt auf die Achse blickst und die Lötbeinchen nach unten zeigen, dann wird beim Linksdrehen (gegen den Urzeiger) der linke Schalter geschlossen (siehe Bild 1).
3. Wenn Du nach rechts drehst wird der rechte Schalter geschlossen (siehe Bild 2).
4. Die beiden Schalter beeinflussen sicht nicht gegenseitig und auch eine Drehrichtung beeinflusst den jeweils anderen Schalter nicht. Es wird immer nur der Schalter geschlossen welche für die jeweilige Drehrichtung verantwortlich ist. Es gibt keine Phasenverschiebung wie bei manchen anderen Drehgebern, nixe nada.
5. Dann habe ich versucht herauszufinden ob die Schalter prellen. Negativ. Mit meinem Tektronix 300 MHz 4-Kanal-Speicher-Osiz *angeb*
konnte ich kein Prellen der Schalter finden (siehe hierzu Bild 3 und 4).
6. Aber, ganz wichtig! Die Schalter sind Schließer!
7. Und auch noch wichtig! Die Dauer, wie lange der Schließer schließt hängt vom Bediener ab. Davon also, wie langsam oder schnell Du die Achse drehst. Man kann die Achse "nur andrehen" und dann "zwischendrin" halten und dann bleibt der jeweilige Schalter geschlossen. Dies bedeutet, dieser Zustand muss in der Software entsprechend abgebildet werden, da der Schaltzustand beliebig kurz/lang sein kann. Verstanden?!?!
(Kurze Erläuterung noch zu den Bildern. Ich habe den Drehgeber ohne Vorwiderstände direkt an 10V betrieben. Bedeutet jeweils ein Pin eines Schalters auf 10V das andere via 1MOhm Tastkopf ins Oszi.)
So, was meint Ihr dazu, nun weiß ich endlich wie das Ding funktioniert und wir können uns mal kurz überlegen wie man das technisch in HW und SW gießen könnte.
Was haltet Ihr von folgenden Vorschlag:
1. Beide Schalter mit einem PIN gegen Masse.
2. Im Mega die internen PullUps aktivieren und mit zwei Eingängen auf den jeweiligen Pin für links und rechts.
3. Dann ein 74HCTxxx UND-Gatter spendieren und gleichzeitig beide PIN's über UND Gatter verunden und auf einen Interrupt-Eingang legen.
4. Den Interrupt so konfigurieren das mit fallender Flanke ein Interrupt ausgelöst wird.
5. In ISR-Routine Flag für Drehgeberabfrage setzen und Interrupt sperren. Ggf. sofort auch PIN abfragen.
6. in Drehgeberabfarge PIN abfrage und Auswertung direkt durchführen.
7. Wenn Ausführung durchgeführt Interrupt wieder freigeben.
Wie man so etwas machen könnte, kannst Du Dir bei meinem Tastatur-Matrix-Beispiel hier im Forum unter Thread
http://www.avr-praxis.de/forum/showthread.php?t=83 ansehen. Dort lösche ich auch vor der Freigabe des Interrupt das Interruptregister nochmals damit "alter" Müll verschwindet.
@Micha; brauchst Du den Drehgeber wieder zurück? Dann stecke ich ihn in ein Brief und sende ihn Dir zurück. Bitte schick mir dazu nochmals via Email Deinen Kontakt.
Nochmal @Micha; kommst Du mit den Erläuterungen erstmal zurecht um das "Gedönz" zu verfummeln und via SW anzubinden? Wie gesagt, schau mal in die Tastaturmatrix rein. Elementare Dinge findest Du dort sowohl in Schaltplan als auch Software.
Schönes Wochenende!
Grüßle,
Markus