Guten Abend,
ich habe einen Inkrementalgeber an einen Arduino Nano angeschlossen (s.
Anhang). Das ganze habe ich einmal ohne und einmmal mit den 10 nF
Kondensatoren (C1 und C2).
Die Pins D2 D3 und D4 vom Arudino habe ich anschließend mit einem Logic
Analyzer ausgelesen. Dabei kam heraus, dass auch bei dem Aufbau ohne
Kondensatoren kein Prellen auftritt (s. Anhang). Ist das gewöhnlich /
ungewöhnlich oder habe ich irgendwas übersehen / nicht beachtet?
Rotary schrieb:> oder habe ich irgendwas übersehen nicht beachtet?
deine Abtastrate ist nur 800Hz, oder? es kann sein, dass das Prellen
zwischen deinen Abtastpunkten stattfindet.
Das hängt doch davon ab, nach welchem Prinzip der Geber arbeitet.
Hat der wirklich mechanische Kontakte, oder wird da etwas elektronisch
abgetastet (optisch, magnetisch, ...)
Einerseits sampelst Duda Recht langsam mit den 800 Hz, andererseits
könntest du da auch einen optischen Encoder haben der prinzipiell nicht
prellen kann.
Hier wurde häufig berichtet, das Inkrementalgeber frühzeitig ausfallen,
wenn die Entprellung nicht gut gemacht wurde. Offenbar steigt das
Prellen mit dem Alter an.
Stefan ⛄ F. schrieb:> Offenbar steigt das Prellen mit dem Alter an.
Das kenne ich auch so und die Erfahrung mit Tastern zeigt das auch. Noch
kann es gut gehen, vielleicht geht es auch in zehn Jahren noch gut, aber
vielleicht funktioniert es in zehn Jahren auch nicht mehr.
Rotary schrieb:> Dabei kam heraus, dass auch bei dem Aufbau ohne> Kondensatoren kein Prellen auftritt (s. Anhang). Ist das gewöhnlich /> ungewöhnlich oder habe ich irgendwas übersehen / nicht beachtet?
Ein Inkrementalgeber liefert einen 2-Bit Gray-Code. Prellen stört die
Auswertung nicht, solange du nicht langsamer abfragst, als für die
Drehgeschwindigkeit erforderlich.
Rotary schrieb:> habe ich irgendwas übersehen
Du würdest mit deinem Digitalscope Prellen im Mikrosekunden bis
Millisekundenbereich sowieso nicht mitbekommen, weil deine Anzeige
dasselbe tut wie die korrekte Auswertung eines Incrementalgebers tun
würde: nur mit einer Samplefrequenz abtasten.
Die Kondensatoren und Widerstände davor sind überflüssig, wenn die
Software auf dem uC den korrekten Auswertealgorithmus verwendet.
https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29
Ein mechanischer Kontakt wird immer prellen, aber das kann bei guten
Kontakten im sub-Mikrosekundenbereich passieren, bei schlechten ein
Kratzen über die ganze Kontaktfläche sein.
Die Zeitkonstante des RC-Glieds für die Entprellung ist sowieso sehr
knapp bemessen. Schon ein Kontakthüpfer von nur 60µs Dauer kann am
AVR-Eingang schon zu einem Fehlimpuls führen (s. Anhang).
Aber wie andere schon geschrieben haben, brauchst du das RC-Glied bei
richtiger Auswertung durch die Software gar nicht.
Yalu X. schrieb:> Die Zeitkonstante des RC-Glieds für die Entprellung ist sowieso sehr> knapp bemessen. Schon ein Kontakthüpfer von nur 60µs Dauer kann am> AVR-Eingang schon zu einem Fehlimpuls führen (s. Anhang).
Schön deutlich machende Simulation.
Ist das RC so überhaupt realistisch? Was hat der Eingang für eine reale
Kapazität und Rin? Haben die nicht auch noch parallele parasitäre R und
C durch clamp Dioden?
>Ist das RC so überhaupt realistisch? Was hat der Eingang für eine reale>Kapazität und Rin? Haben die nicht auch noch parallele parasitäre R und>C durch clamp Dioden?
Ja, aber in ganz anderen Größenordnung, die hier eher irrelevant ist.
Ganz so irrelevant ist das nicht. Ich hatte mal einen high-speed-GEber
für Maschinen, der mit 10kHz Pulse lieferte. Um die Dynamik
auszurechnen, musste mit wenigen Schritten Verzögerung die
Beschleunigung gemessen werden. Da waren maximal 5 Werte beteiligt und
die so entstehende Zeit von 200us musste auf 10bit genau gerechnet
werden. Daher braucht es genaue Flanken, wegen Störungen und so. Da
macht das schon einen Unterschied.
Jens U. schrieb:> Ganz so irrelevant ist das nicht.
im Verhältnis zu den externen 10nF und 10kOhm sind die parasitären
Eigenschaften des Eingangs zu 100 Prozent irrelevant - die gehen in der
Toleranz der externen Komponenten unter.
Moin zusammen,
vielen Dank schon mal für die ganzen Anregungen. Ich habe das Ganze
nochmal mit gleicher Samplingrate und deutlich häher abgetastet (war
gesttern etwas Zeitstress, hatte das total übersehen). Das Eute ist, das
kein Prellen zwischend den beiden Terminals eingestreut wird. Allerdings
findet gelegentlich ein Prellen beim Schließen und Öffnen der Kontakte
statt. Meint ihr ich sollte die Widerstände besser auf 5 kOhm ändern um
so die Zeitkonstante von 500 µs auf 250 µs zu senken?
Die beiden Anhänge zeichen die Logic-Messung bei 10 Mhz. Einmal mit
Kondensatoren, einmal ohne Kondensatoren. Wichtig, es handelt sich dabei
um den gleichen, jedoch nicht selben Inkrementgeber.
Rotary schrieb:> Allerdings> findet gelegentlich ein Prellen beim Schließen und Öffnen der Kontakte> statt.
Klar: Prellen findet jeweils beim Umschalten der Kontakte statt.
Rotary schrieb:> Meint ihr ich sollte die Widerstände besser auf 5 kOhm ändern um> so die Zeitkonstante von 500 µs auf 250 µs zu senken?
Es wurde inzwischen schon oft geschrieben: wenn deine Software den
Drehgeber "sauber" auswertet, dann kannst du dir die RC-Tiefpässe
vollständig sparen.
https://www.mikrocontroller.net/articles/Drehgeber
Hi Achim,
ja das stimmt das wäre möglich. Aber es handelt sich um ein kleines
Schulprojekt. Die späteren Arduinos werden später ggf. umprogrammiert.
Dabei kann es dann passieren, dass dabei die eine programmierte
Hytserese überschrieben wird. Daher würde ich lieber das Signal
hardwareseitig entprellen als das später in der Software
herauszufiltern.
Rotary schrieb:> Die späteren Arduinos werden später ggf. umprogrammiert.
Grade dann würde ich Wert darauf legen, dass die Programmierung der
Auswertung immer sauber gemacht wird. Denn es ist nicht schwerer, die
Software für die Auswertung der Drehgeber sauber zu programmieren. Man
muss es nur einmal erklärt bekommen, dann kann man es in Zkunft immer
richtig machen.
Wenn du großen Wert darauf legst, die Entprellung per RC-Tiefpass zu
machen, dann miss noch ein paar mal nach, wie lange ohne C das längste
Prellen ist, das du findest. Und dann dimensioniere RC so, dass die
Zeitkonstante deutlich über der Länge dieses Prellens liegt.
Ups, ich habe ungeschickt zitiert. Eigentlich wollte ich sagen: grade
wenn es sich um ein Schulprojekt handelt würde ich Wert darauf legen,
dass die Auswertung der Drehgeben immer sauber gemacht wird.
Inkrementalgeber (wie auch Tasten, Schalter oder Lichtschranken) prellen
immer und zwar sowohl beim Schließen als auch beim Öffnen des Kontaktes.
Tasten wie sie in Tastaturen verbaut sind, prellen bis zu 3 ms lang,
wobei sich die Prelldauer mit dem Alter der Kontakte vergrößert, da die
Kontaktflächen dann nicht mehr glatt sind.
Optische "Kontakte" prellen auch, da der Lichtstrahl einen Durchmesser
hat und die Abdeckung (wie bei einem Sonnenauf- oder - untergang) nicht
spontan erfolgt. So entsteht immer eine Rampe mit einem Bereich, wo die
Zustände "hell" und "dunkel" nicht eindeutig sind und schon leichtes
Rauschen (der Helligkeit oder des elektrischen Signals) ein Pendeln
zwischen den Zuständen verursacht. Abhilfe schafft bei der Erkennung das
Einführen einer Hysterese (SchmittTriggerEingang). Der ist auch nötig,
wenn man mechanische Kontakte mit RC-Gliedern (wie im Bild oben)
"geglättet" hat. Denn auch da wird die Entladekurve (durch das Schließen
des Schalters) beim Prellen durch kurze Aufladestücke unterbrochen. Wenn
das gerade auf der Schwelle zwischen High- und Low-Pegel erfolgt, prellt
das Signal trotz RC-Glied.
Einfache Lösung: Einfügen eines Schmitt-Triggers (bei Lichtschranken
direkt, bei mechanischen Schaltern nach einem RC-Glied).
Etwas aufwändiger (aber für Mengenproduktion billiger): Entprellung per
Software. Aber dann muss man die Randbedingungen - welche maximale
Impulsfolge ist zu erwarten und wie lange prellt der hier verbaute
Schalter (auch nach ein paar Jahren) - genau kennen.
Rotary schrieb:> Meint ihr ich sollte die Widerstände besser auf 5 kOhm ändern um so die> Zeitkonstante von 500 µs auf 250 µs zu senken?
Nein.
Du scheinst wirklich maximal merkbefreit und lernresistent zu sein.
Rotary schrieb:> Daher würde ich lieber das Signal hardwareseitig entprellen als das> später in der Software herauszufiltern.
Die Software muss da nichts filtern. Die muss einfach nur den Gray-Code
sauber auswerten.
MaWin schrieb:> Nein.> Du scheinst wirklich maximal merkbefreit und lernresistent zu sein.
Sorry. War ein Denkfehler, ich meinte natürlich die Zeitkonstante
erhöhen durch höhere Widerstände.
Achim S. schrieb:> Grade dann würde ich Wert darauf legen, dass die Programmierung der> Auswertung immer sauber gemacht wird. Denn es ist nicht schwerer, die> Software für die Auswertung der Drehgeber sauber zu programmieren.
Die Entprellung softwareseitig habe ich drin und funktioniert auch.
Dennoch will ich als Schutz vor Codeänderung wie schon gesagt das ganze
HW-seitig realisieren.
Achim S. schrieb:> Wenn du großen Wert darauf legst, die Entprellung per RC-Tiefpass zu> machen, dann miss noch ein paar mal nach, wie lange ohne C das längste> Prellen ist, das du findest. Und dann dimensioniere RC so, dass die> Zeitkonstante deutlich über der Länge dieses Prellens liegt.
Jep, so werd ich es auch erstmal machen, danke dir !
Ich fürchte, dass der Hinweis auf den Gray-Code für jemanden, der sich
damit nicht gut auskennt, eher verwirrend wirkt. Daraus abzuleiten, ob
nur aufwärts oder abwärts gezählt werden muss, schafft ein Programmierer
mit wenig Erfahrung üblicherweise nicht - auch wenn das für einen Profi
extrem simpel erscheint. Mehr Nachsicht (oder viel mehr Erklärung) dem
"Nachwuchs" gegenüber. Wir haben auch mal angefangen und waren da alles
andere als perfekt. (Wir erinnern uns nur nicht mehr so ganz gern an
unsere Anfänge....)
Günni schrieb:> Ich fürchte, dass der Hinweis auf den Gray-Code für jemanden, der sich> damit nicht gut auskennt, eher verwirrend wirkt. Daraus abzuleiten, ob> nur aufwärts oder abwärts gezählt werden muss, schafft ein Programmierer> mit wenig Erfahrung üblicherweise nicht - auch wenn das für einen Profi> extrem simpel erscheint. Mehr Nachsicht (oder viel mehr Erklärung) dem> "Nachwuchs" gegenüber. Wir haben auch mal angefangen und waren da alles> andere als perfekt. (Wir erinnern uns nur nicht mehr so ganz gern an> unsere Anfänge....)
Danke. Schön zu hören wenn es auch User im Forum gibt, die dafür
Verständnis haben.
Ich habe aktuell noch zwei Fragen offen:
1.Wie berechent sich genau die Zeitkonstante in diesem Fall. Werden
können die beiden Widerstände trotz dem Schalter einfach zusammengefasst
werden?
2. Das längste Prellen dauert in etwa 0,5 µs. Das liegt doch in jedem
Fall unter der Zeitkonstante des RC Glieds, wieso treten diese dann
überhaupt auf?
Rotary schrieb:> 2. Das längste Prellen dauert in etwa 0,5 µs. Das liegt doch in jedem> Fall unter der Zeitkonstante des RC Glieds,
Für mich sieht deine Messung Ohne_C_Zoom_2.png so aus, als wäre es
locker ein Faktor 1000 länger.
Rotary schrieb:> Danke. Schön zu hören wenn es auch User im Forum gibt, die dafür> Verständnis haben.
Na was denn nun? Brauchst du eine einfachere Erklärung, wie man
Drehgeber korrekt auswertet? Oder hast du die korrekte Auswertung
verstanden und willst nur dafür Vorsorge treffen, dass auch eine
"schlechte" Software damit klar kommt? Du wirst alleine mit RC-Gliedern
nicht beliebig sicher verhindern können, dass eine schlechte Software zu
einem fehlerhaften Verhalten führt.
Rotary schrieb:> 1.Wie berechent sich genau die Zeitkonstante in diesem Fall. Werden> können die beiden Widerstände trotz dem Schalter einfach zusammengefasst> werden?
Nö. Rechne nur mit dem einen Widerstand. Wobei es auf einen Faktor 2 bei
dem Ansatz auch nicht ankommt.
Egal warum wieso, ich würde auf alle fälle deutlich mehr als nur zB.
0,5mA über die Kontakte schicken. 2-5mA sollten es schon sein, um sie
sauber zu halten!
Achim S. schrieb:> Rotary schrieb:>> 2. Das längste Prellen dauert in etwa 0,5 µs. Das liegt doch in jedem>> Fall unter der Zeitkonstante des RC Glieds,>> Für mich sieht deine Messung Ohne_C_Zoom_2.png so aus, als wäre es> locker ein Faktor 1000 länger.
Und wie schön, dass das von Rotary angegebene Datenblatt sogar was dazu
sagt:
"Contact Bounce (15RPM)....2.0 ms maximum"
Achim S. schrieb:> Du wirst alleine mit RC-Gliedern> nicht beliebig sicher verhindern können, dass eine schlechte Software zu> einem fehlerhaften Verhalten führt.
Das kann selbst bei Drehgebern passieren, die aus technischen Gründen
nicht prellen, z.B. optische - wenn der Geber zufällig genau am Übergang
von einem Schritt zum nächsten steht, können schon geringste Störungen
dazu führen, dass der Geberausgang um diesen Übergang hin und her
springt. Einer korrekten Gray-Code-Auswertung macht das nichts, weil
abwechslend +1 und -1 gezählt wird, es entsteht also kein dauernder
Fehler. Und weil dieses Springen zeitlich nicht begrenzt ist nützt ein
RC-Glied überhaupt nichts.
An einer richtigen Auswertung der Quadratursignale führt einfach kein
Weg vorbei, auch wenn das hier immer wieder behauptet wird.
Prellzeiten von 0,5 µs sind einfach Blödsinn - entweder prellt der
Schalter viel länger oder garnicht.
Georg
Rotary schrieb:> Logic Analyzer
Im Kaufhaus gibt es so schöne Werkzeug-Sets für Kinder im Vorschulalter.
Vielleicht solltest Du Dir die disfunktionalität solcher Geräte mal
eindringlich vor Augen führen bevor Du eine Bohrmaschine in die Hand
nimmst.
Stefan ⛄ F. schrieb:> Hier wurde häufig berichtet, das Inkrementalgeber frühzeitig ausfallen,> wenn die Entprellung nicht gut gemacht wurde. Offenbar steigt das> Prellen mit dem Alter an.
So ist es. Neue Encoder arbeiten an schlechter Entprellung exakt so
lange, bis die Gewährleistung abgelaufen ist.
Man könnte aber auch sagen, die Kontakte oxydieren, die Federspannung
läßt nach, das Schmierfett verhärtet, Staub dringt ein.
Rotary schrieb:> Die Pins D2 D3 und D4 vom Arudino habe ich anschließend mit einem Logic> Analyzer ausgelesen. Dabei kam heraus, dass auch bei dem Aufbau ohne> Kondensatoren kein Prellen auftritt (s. Anhang). Ist das gewöhnlich> ungewöhnlich oder habe ich irgendwas übersehen nicht beachtet?
Du hättest besser erstmal Physik studiert.
Rotary schrieb:> Die Pins D2 D3 und D4 vom Arudino habe ich anschließend mit einem Logic> Analyzer ausgelesen.
So hast Du jetzt Dein Gehirn falsch verdrahtet...
Benedikt D. schrieb:> Erstmal: ich bin neu hier. Hab Elektrotechnik mit analoger und digitaler> Schaltungstechnik studiert, bin aber ehrlich gesagt seit Jahren mehr im> Vertrieb als in der Entwicklung tätig
...was deine kleine Krämerseele zu Fehlschlüssen geführt hat nachdem Du
sie geweckt hast.
Achim S. schrieb:> Oder hast du die korrekte Auswertung> verstanden und willst nur dafür Vorsorge treffen, dass auch eine> "schlechte" Software damit klar kommt?
Genau um das geht es mir Achim und ich würde dazu gerne verstehen, wieso
trotzdem ein gewisses Prellen (s. Anhang) auftritt, trotz RC-Glied mit
Tau = 500.00 µs.
Die intepretation des Greycodes funktioniert schon länger und der
Inkrementgeber funktioniert damit auch tadellos. Dennoch würde ich eben
auch gerne die Hintegründe des Prellens verstehen.
Ich denke an der Stromstärke liegt es im übrigen nicht, ein Test mit
100nf und 1 kOhm zeigte dad gleiche Verhalten.
Rotary schrieb:> Genau um das geht es mir Achim und ich würde dazu gerne verstehen, wieso> trotzdem ein gewisses Prellen (s. Anhang) auftritt, trotz RC-Glied mit> Tau = 500.00 µs.
wegen
Dietrich L. schrieb:> "Contact Bounce (15RPM)....2.0 ms maximum"
Und bist du sicher, dass dein LA sich bezüglich Hysterese und
Schaltschwellen genauso wie dein Controller verhält, oder wo greifst du
die Signale für den LA ab?
Rotary schrieb:> wieso trotzdem ein gewisses Prellen (s. Anhang) auftritt, trotz RC-Glied> mit Tau = 500.00 µs.
du benennst den Anhang "ohne C" aber er wurde mit RC aufgenommen? und
hast jetzt womöglich hinter dem R (nicht wie bei den früheren Messungen
davor)? Keine gute Wahl des Namens für die Messung.
Rotary schrieb:> Dennoch würde ich eben auch gerne die Hintegründe des Prellens> verstehen.
dann miss die flanke auch Mal mit einem oszi und überlege, warum der LA
(der wahrscheinlich keine Hysterese hat) keinen stabilen Pegel erkennt.
Wolfgang schrieb:> "Contact Bounce (15RPM)....2.0 ms maximum"
Das bedeutet doch lediglich, dass das Prellen maximal 2 ms lang ist.
Mein gemessenes Prellen ist lediglich wenige Mikrosekunden lang. Durch
mein RC Glied sollten Pulse („Frequenzen“) von wenigen ms doch
rausgefiltert werden. Wenn mein Prellen jetzt 1 ms groß wäre, dann würde
ich das ja verstehen.
> Und bist du sicher, dass dein LA sich bezüglich Hysterese und> Schaltschwellen genauso wie dein Controller verhält, oder wo greifst du> die Signale für den LA ab?
An den digitalen Pins des Arduino. Ich habe den Aufbau eben einmal so
abgeändert, dass die Signale nicht am Arduino anliegen und nur vom LA
ausgelesen werden. Und sieh da, keine Prellen im Mikrosekundenbereich.
Der Messung nach liegt hier also die Ursache für die Störungen.
Achim S. schrieb:> Rotary schrieb:>> wieso trotzdem ein gewisses Prellen (s. Anhang) auftritt, trotz RC-Glied>> mit Tau = 500.00 µs.>> du benennst den Anhang "ohne C" aber er wurde mit RC aufgenommen? und> hast jetzt womöglich hinter dem R (nicht wie bei den früheren Messungen> davor)? Keine gute Wahl des Namens für die Messung.>> Rotary schrieb:>> Dennoch würde ich eben auch gerne die Hintegründe des Prellens>> verstehen.>> dann miss die flanke auch Mal mit einem oszi und überlege, warum der LA> (der wahrscheinlich keine Hysterese hat) keinen stabilen Pegel erkennt.
Ach du hast recht, da habe ich die falsche Datei hochgeladen, das
Prellen beim Umschalten (Anhang 2) tritt jedoch beim Umschalten mit als
auch ohne C auf.
Rotary schrieb:> Ach du hast recht, da habe ich die falsche Datei hochgeladen, das> Prellen beim Umschalten (Anhang 2) tritt jedoch beim Umschalten mit als> auch ohne C auf.
du siehst die Interpretation des LA deiner langsamen Flanke. dein
Controller interpretiert ggf. etwas anderes. miss mit einem Oszilloskop,
dann siehst du klarer.
MaWin schrieb:> Du scheinst wirklich maximal merkbefreit und lernresistent zu sein.
Die Grenzen der Physik lassen sich nirgends besser studieren als in der
Grundi und wo Du es grade ansprichst kann man sich mit Ignoranz ganz
schön den Verstand versauen und nach dem Abgang des Paradebeispiels Kurt
sind hier immer mehr Figuren aufgetaucht die sich nach allen Regeln der
Kunst den Verstand versaut haben.
Mit dem Internet geht natürlich nicht nur Alles viel besser sondern ist
sogar die unverrückbare Folge. ;-)
Rotary schrieb:> Achim S. schrieb:>> Oder hast du die korrekte Auswertung>> verstanden und willst nur dafür Vorsorge treffen, dass auch eine>> "schlechte" Software damit klar kommt?>> Genau um das geht es mir
Das halte ich für den grundfalschen Ansatz. Es gibt nur eine Art, den
Graycode von einem Drehgeber korrekt auszuwerten. Und die hat kein
Problem mit Prellen. Ergo: man muß nicht entprellen.
Wenn man den Graycode auf die falsche Art auswertet, dann ist vollkommen
erwartbar und aus didaktischen Gründen sogar höchst erwünscht, wenn
dabei falsche Ergebnisse herauskommen.
> ich würde dazu gerne verstehen, wieso trotzdem ein gewisses Prellen> (s. Anhang) auftritt, trotz RC-Glied mit Tau = 500.00 µs.
1. weil die Prellzeit länger ist.
Rotary schrieb:> Mein gemessenes Prellen ist lediglich wenige Mikrosekunden lang
Glaube ich nicht. Wenn der Hersteller Prellzeiten von maximal 2ms
ankündigt, dann wirst du real zwar weniger sehen, aber nicht Faktor 1000
weniger. Eher Faktor 10. Nach Alterung vielleicht noch Faktor 2.
Und 2. weil ein RC-Glied nur in Verbindung mit einem Schmitt-Trigger
(mit ausgeprägter Hysterese) entprellt. Die Zeitkonstante muß auch
deutlich größer als die Prellzeit sein.
Lies es nach: Entprellung: Einfacher Taster> Ich denke an der Stromstärke liegt es im übrigen nicht
Natürlich nicht. Das Kontaktprellen ist ein mechanisches Problem
(elastischer Stoß).
Stefan ⛄ F. schrieb:> Hier wurde häufig berichtet, das Inkrementalgeber frühzeitig ausfallen,> wenn die Entprellung nicht gut gemacht wurde. Offenbar steigt das> Prellen mit dem Alter an.
Was hier häufig berichtet wird, ist nur das ewige Drumherum-Diskutieren
als solches. Mach dir deshalb keine Sorgen - es ist immer wieder die
gleiche Leier, die mir mittlerweile zum Hals raus hängt. Selbst MaWin
kommt mal wieder damit: "weil deine Anzeige dasselbe tut wie die
korrekte Auswertung eines Incrementalgebers tun würde: nur mit einer
Samplefrequenz abtasten." Jahaha.. man braucht bloß mit einer exakt zum
Drehen des Encoders passenden Samplefrequenz abzutasten und schon sind
alle Probleme beseitigt. Prinzipiell ist das ja auch völlig richtig -
man muß bloß denjenigen, der an dem Ding dreht, davon überzeugen, daß er
passend schnell zur Samplefrequenz zu drehen hat. Die Steigerung folgt
auf dem Fuße: "Die Kondensatoren und Widerstände davor sind überflüssig,
wenn die Software auf dem uC den korrekten Auswertealgorithmus
verwendet." Na klar, man braucht keine Hochzieher, weil ein
Schaltkontakt zusammen mit einem Pullup-Strom aus dem Portpin ja
ausreicht und das zusammen mit der Schaltkapazität der Leitungen hin zum
Drehdingens nen ausreichenden Tiefpaß bildet - was wiederum rein
theoretisch völlig exakt ist und theoretisch deshalb auch funktionieren
würde.
Aber:
Die Praxis sagt was ganz anderes: Zum einen soll ein Kontakt einen
gewissen Mindest-Strom abkriegen, um sauber zu schalten. Zum anderen
sollen Inputs zum µC hin nicht unnötig hochohmig gemacht werden, um
Einstreuungen entgegenzuwirken. Zum dritten sollen aus gleichem Grunde
Inputs auch sinnvoll in ihrer Bandbreite begrenzt werden, also nen
Kondensator dran wo es Sinn macht.
Beispiel:
Ich habe neulich meine tolle 80€ Funkmaus auseinandergenommen, weil das
Scrollrad nur noch Mist geliefert hat. Da ist ein ganz kleiner
Drehencoder drin, billigster aber winziger Aufbau, ein Blech-Formwinkel,
darin ein drehbares Plastikformstück, drei winzige verzinnte
Büchsenblech-Kontakte, die von dem Plastikstück aufeinander gedrückt
werden oder eben nicht. Kein schleifender Kontakt, sondern
zusammendrückende Funktion. Keinerlei Edelmetall (sprich Vergoldung)
unter'm Stereomikro sichtbar.
Natürlich wird dieser Drehgeber mit dem geringstmöglichen Querstrom
betrieben (weil aus Batterie gespeist) und durch die Oxidation der
Kontaktstücke gibt es dann nach ein paar Jahren nur noch gelegentlich
mal nen tatsächlichen Kontakt. Zum Putzen kommt man an die Innereien
dieses Kunstwerkes nicht heran (oder man riskiert, daß die umgebogenen
Nasen des Blechwinkels abbrechen und man dann die A-Karte gezogen hat).
Ich wollte auch nicht mit Zeugs wie Ballistol, WD40 und Konsorten an
sowas heran. Also hab ich das Ganze "elektrisch" geputzt: mal nen
Querstrom von so etwa 100 mA aus dem LNG drauf, Rädchen gedreht,
gedreht... und siehe da, die Maus tut es wieder prächtig. Fazit: für
eine lange Lebensdauer ist gerade bei billigen Zinnkontakten ein
gewisser Mindest-Kontaktstrom wichtig. Ob der nun statisch geliefert
wird oder aus der Entladung von einem 22nF herkommt, ist wahrscheinlich
völlig schnurz.
W.S.
Naja, das mit dem Hardwarefilter an einem Drehgeber sollte man ggf. mal
überdenken. Anbei ein Bild aus der Praxis.
Signal oben: Direkt am Drehgeber, 10k Pull Up
Signal mitte: Nach RC-Filter 10k+100nF
Signal unten: Nach 74HC14Schmitt-Trigger.
Der Drehgeber ist ein Wald- und Wiesen Typ, ich glaube von Alps
Hallo,
der EC12E ist von Alps und hat mechanische Kontakte. Stört aber alles
nicht wenn man die Signale richtig auswertet, dann können die prellen
wie sie wollen. https://www.mikrocontroller.net/articles/Drehgeber
Ein von Hand bedienter kann auch per Polling abgefragt werden, dabei
muss es nicht unbedingt mit Timer sein.
Hallo,
ich möchte nochmal ernsthaft nachfragen ob ihr W.S. und Falk immer einen
Tiefpass an I/O Pins baut woran ihr einen mechanischen Kontakt anklemmt?
Ich stehe zwischen den Stühlen. Auf der einen Seite funktioniert der
Code von Peter auch mit meinen billigsten Alps Encodern einwandfrei und
auf der anderen Seite kann ich mir aktuell nicht vorstellen das man
immer einen zusätzlichen R, C und Schmittrigger auf die Platine baut und
das für jeden benötigten Pin.
Welchen Aufwand treibt ihr in der Praxis wirklich?
Veit D. schrieb:> Welchen Aufwand treibt ihr in der Praxis wirklich?
Mal so, mal so. Ja, die Standardauswertung aus dem Wiki ist sehr robust
und funktioniert auch ohne RC-Filter, nutze ich auch in vielen Aufbauten
und die funktionieren alle zuverlässig. Den Schmitt-Trigger gibt es
beim AVR kostenlos dazu, denn der ist in allen IOs mit drin.
Veit D. schrieb:> kann ich mir aktuell nicht vorstellen das man> immer einen zusätzlichen R, C und Schmittrigger auf die Platine baut
Da die Eingänge vom AVR bereits Schmitt-Trigger enthalten, fällt
zumindest dieses Bauteil weg. Aber eben nur bei AVR.
Ich habe bisher immer R/C Tiefpässe verwendet, weil ich zu faul war,
eine Entprellung zu programmieren. Per Software zu entprellen ist aber
eleganter, das muss auch ich zugeben.