Forum: Mikrocontroller und Digitale Elektronik Drehgeber / Drehencoder über SUB-D Kabel 1,8m funktioniert nicht


von Matthias (Gast)


Lesenswert?

Hallo Leute,

ich habe einen ALPS Drehgeber mit vollschritt-Rastung, den ich über ein 
handteil, was mit 1,8m 9-pol SUB-D Kabel an einem ATmega32 angeschlossen 
habe. Ich benutze das für mich angepasste Programm von Peter Dannegger.

Mein Problem: Der Drehgeber zählt nur noch in eine Richtung. Als ich ihn 
auf dem gleichen Board hatte wie den uC ging alles super, auch wenn man 
schnell gedreht hat.

Kann es sein das sich schon bei 1.8m die Kapazität der Leitung bemerkbar 
macht und meine Pulse verzerrt? Hab keine Ahnung was das sonst noch sein 
kann. Weiß einer von euch vielleicht Rat? Auf der Leitung (SUB-D) liegt 
nur Masse und die beiden Pulssignale vom ALPS sonst nix. Es sollen aber 
noch Ausgänge vom uC da mit durch!

Bin für jede Hilfe dankbar

von Matthias (Gast)


Lesenswert?

Evtl. über einen Pegelwandler (z.B: MAX 232) die Kabelstrecke mit 12V 
(bzw. 10V) betreiben. Das erhöht schonmal die Störsicherheit. Ausserdem 
ist der Treiber stark genug. Ich nehme mal an, dass Du Pullups drin 
hast.
Dann kannst Du mit nem Oszi der Leitungskapazität beim Laden zusehen
(sehr schöne e-Funktion ;-) )

Die Verbindung müsste dann so aussehen:

                   Kabelstrecke
                       ##
VCC----------------------------------------------------------
         ---|---       ##        ---|---                    |
A--------|     |-----------------|     |--------|A - Enc.|--|
B--------| MAX |-----------------| MAX |--------|B - Enc.|--|
         |     |       ##        |     |   |
         ---|---       ##        ---|---   2k(Pulldown an A und B)
GND-----------------------------------------
                       ##

Einen dicken Elko an der Drehencoderseite nicht vergessen! Und die 
üblichen 100nF Block Cs auch nicht.

von Matthias (Gast)


Lesenswert?

Nachtrag:

Bei kurzen distanzen gehen auch ein Bustreiber, statt den beiden MAX 
Teilen.

von R. W. (quakeman)


Lesenswert?

Am einfachsten wirst du dein Problem erkennen, wenn du auf der 
Controller Seite nach den 1,8m mal ein Oszi dranhängst und dir die 
rauskommenden Signale genauer anschaust. Es kann schon sein, daß die 
Signale bis dahin leicht verfälscht werden, auch wenn 1,8m nicht 
unbedingt sehr viel ist.
Aber wenn es direkt am Board funktioniert und mit 1,8m Kabel dazwischen 
nicht mehr, muß es ja definitiv am Kabel liegen.

Hast du schon versucht ein anderes Kabel zu benutzen, nur um ein 
eventuell defektes Kabel auszuschließen?

Ciao,
     Rainer

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Du mußt einfach nur genügend kleine PullUp-Widerstände anstelle der 
internen PullUps im ATMEGA verwenden, um die Flanken schnell genug zu 
bekommen. 1kOhm extern an jeden Eingangspin des ATMEGAs nach Vcc 
schalten, an den der Drehencoder angeschlossen ist. Treiberschaltkreise 
braucht man dafür nicht, der Drehencoder ist niederohmig genug.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.