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
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.
Nachtrag: Bei kurzen distanzen gehen auch ein Bustreiber, statt den beiden MAX Teilen.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.