C Drehencoder Routine

Hallo Janiiix
verwende ebenfalls diese Routine. Im ori sind 3 verscheidene Teile für verschiedene Encoder drin. Alle drei reagieren anders. Probiere einfach mal die anderen aus. Habe zusätzlich noch den internen Taster mit einer entprellung versehen. Damit gibt es die Funktion "Einknopfbedienung" mit kurz drücken für "start" und lang drücken für reset. Geht alles super.
achim
 
Nabend,
@Dirk
Nein. Ich verwende externe PullUps. Und gut das du dass gesehen hast mit dem einen Bit. Werde ich morgen ändern. Kann man das prellen nicht noch mit einem Zähler raus filtern? Mir fehlt nur der Ansatz wie...? Wenn das überhaupt in diesem Fall geht. Die Zeit werde ich mal runter drehen.

@achim S.
Es funktioniert ja, nur das eben bei langsamen Drehungen die Taster vom Encoder extrem stark prellen. Bei schnellen Drehungen ist alles prima.
 
Habe 100kOhm verbaut.
 
Respekt.
Es funktioniert.

Kannst du mir mal erklären, wieso er mit 1kOhm weniger bzw. fast nicht prellt als mit 100kOhm? Hat das was mit den Leitungskapazitäten zu tun?
 
Kannst du mir mal erklären, wieso er mit 1kOhm weniger bzw. fast nicht prellt als mit 100kOhm? Hat das was mit den Leitungskapazitäten zu tun?

Das Prellen ist mechanischer Natur, ändert sich durch einen niederohmigeren Pullup nicht. Ich benutze bei den von mir verwendeten (mechanischen) Drehencodern stets die internen Pullups der µC und hatte damit bislang keinerlei Probleme.

Kann es etwas mit Kapazitäten zu tun haben ?
Ich denke nicht. Um bei 100kOhm eine Wirkung zu erzielen, müsste die Leitungskapazität im gut 3stelligen pF Bereich liegen. Wenn sie das täte, wäre das eher hilfreich, denn dann würde sie entprellend wirken.

Erklären kann ich das bis hierhin allerdings auch nicht. Man müsste sich die Schalterei mal mit einen Oszi ansehen.

Gruß
Pirx
 
Kann es etwas mit Kapazitäten zu tun haben ?
Ich denke nicht. Um bei 100kOhm eine Wirkung zu erzielen, müsste die Leitungskapazität im gut 3stelligen pF Bereich liegen. Wenn sie das täte, wäre das eher hilfreich, denn dann würde sie entprellend wirken.

Ja das denke ich auch. Kapazitäten würden Prellen entgegenwirken und wären auch hinderlich wenn man den Encoder schnell dreht und das funktioniert ja bei dir. Bei kleinerem Pullup ist das Signal eher unempfindlicher gegen Störgrößen, woher die auch immer kommen können.

Wenn du sehr langsam drehst, öffnen und schließen die Kontakte langsam. Da ist eventuell keine Hysterese vorhanden und die Kontaktkraft nicht groß genug, die Zeit für einen definierten Zustand ist vielleicht zu groß und ein kleinerer Pullup-Widerstand wirkt hier günstiger als ein größerer.

Ich hätte eher vermutet dass 1kHz Polling-Frequenz zu hoch ist. Wenn du ein Taster hättest der mit 2ms prellt wäre das nun mal zu schnell. Hast du das mit der Zeit auch mal ausprobiert ... ist ja nur eine Softwaresache?
 
Es muss ja aber was mit den PullUps zu tun haben. Es funktioniert wunderbar mit 1kOhm. Es könnte ja durchaus sein, dass bei 100kOhm nicht genug Strom fließt um einen sicheren Zustand zu erkennen. Das ja eben bei einem kleineren der Fall ist. Das mit der Zeit habe ich noch nicht ausprobiert. Es scheint ja jetzt zu funktionieren.

Achja... Ein 100nF ist auch noch OnBoard für jeweils ein Signal.
 
Zuletzt bearbeitet:
Achja... Ein 100nF ist auch noch OnBoard für jeweils ein Signal.
100nF nach GND mit einem Pullup von 100kOhm, hattest du das vorher schon so? Das ist ein Tau von 10ms, nach grob 5xTau 50ms ist C ausreichend geladen dass ein High erkannt wird ... damit kannst du nicht besonders schnell drehen, bzw deine 1ms Abtastzeit nutzt hier nichts.

Vielleicht skizzierst du mal deine Schaltung, wie sie vorher war und wie sie jetzt ist.
 
Ja das hatte ich auch schon vorher so.
Hier mal der aktuelle Schaltplan...
test.jpg
 
Deine Kombination von 100kOhm und 100nF ergibt eine recht hohe Zeitkonstante, das passt nicht zu deiner Polling-Frequenz von 1kHz. Diese finde ich zu hoch.

Ich würde folgendes machen ...

Polling-Frequenz 100Hz (10ms Interrupt-Periodendauer)
Interne Pullup-Widerstände verwenden (ca. 50kOhm)
Falls es noch prellt, dann 10nF extern an beide Signale nach GND.

Bei größeren Kapazitäten ist es eventuell noch sinnvoll, wenn du direkt nach dem Encoder Serienwiderstände in die Signale einfügst (>= ca. 1/5 der Pullup-Widerstände), damit ist dann der Entladestrom der Kapazitäten definiert, dies schont die Kontakte und verhindert Störpulse.
 
Was wären bei 100nF denn Sinnvolle Serienwiderstände? 1k?
 
Daswürde ja eineEndladezeit von ca. 0,0001 Sec. bedeuten die sich nur über die Encoderkontakte definiert (wenn er gerade das Signal auf low zieht).
 
Daswürde ja eineEndladezeit von ca. 0,0001 Sec
Wie kommst du auf diese Zeit?


Was wären bei 100nF denn Sinnvolle Serienwiderstände?
30kOhm ... 40kOhm würde ich hier nehmen (oder interner Widerstand)
ca. 15ms bis 20ms ergibt das von low auf high. Wenn du 100nF verwendest dann noch zB. 4,7kOhm in Serie direkt nach Encoder.

Die Pollingfrequenz dann zusätzlich noch verringern.
 
30kOhm ... 40kOhm würde ich hier nehmen (oder interner Widerstand)
ca. 15ms bis 20ms ergibt das von low auf high. Wenn du 100nF verwendest dann noch zB. 4,7kOhm in Serie direkt nach Encoder.

Wie kommst du bitte auf die 15 - 20 ms? t = r*c? 1k * 100nf = 100µS?
 
Meinst du, dass die Konakte bei 1k PullUp nicht so lange durchalten werden?
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)