Hallo uC.net Community, ich möchte hiermit zur aktuellen Diskussion im Artikel "Drehgeber" hinweisen. Dort hatte ich die Anbindung eines für Drehimpulsgeber prädestinierten Digitalpotentiometer-ICs thematisiert. Genau gesagt hatte ich mich erdreistet, folgenden Absatz in diesen Artikel einzufügen: | === Drehgeber an digitalem Potentiometer mit Up/Down-Schnittstelle === | Dient ein Drehgeber zur Ansteuerung eines digitalen Potentiometers, so | kann auf einen separaten Quadraturencoder-chip verzichtet werden sofern | es sich beim Potentiometer um einen Typ mit Up/Down-Schnittstelle handelt | wie z.ß. das Digitalpotentiometer MCP401x von Microchip. Diese | Potentiometer erhöhen ihren Widerstandswert bei einer fallenden Flanke am | U/D-Eingang, nachdem CS auf Low gezogen wurde. Wird CS auf Low gezogen | und an U/D eine steigende Flanke erkannt, sodann erniedrigt sich der | Widerstandswert. Es genügt daher, eine Datenleitung des Drehgebers mit | CS und eine mit U/D zu verbinden um das gewünschte Verhalten am | Digitalpotentiometer zu erhalten. (Vgl. Signaldiagramm oben) Dies wird mit der Begründung, daß es sich um eine Bastlerlösung handle immer wieder gelöscht, obwohl das im Datenblatt des ICs enthaltene Signaldiagramm bescheinigt, daß es für die Auswertung von Drehgerbern geeignet sein muß. Leider konnte ich keine Einigung auf der Artikel-Diskussionsseite herbeiführen, sodaß ich diese Löschung hier der Gemeinschaft darlegen möchte, um eventuell gemeinsam eine Lösung zu finden. Anbei der letzte Stand der Diskussion (ungequotete Ebene und >>-Ebene ich selbst): :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: >> Das ist kein Hack sondern das übliche Vorgehen. > Murks ist bisweilen weit verbreitet. Gehts noch? Diese Digipots sind, wie ich Dir schon mitzuteilen versuchte, extra für den direkten Anschluß an Drehgeber konzipiert. >> Warum glauben Sie, wurden diese Digitalpotentiometer mit genau dieser >> Schnittstelle entworfen? > Das ist mir relativ egal. Danke, das bestätigt meine Hypothese daß Du einfach lernresistent bist. Sonst hättest Du wenigstens einen Blick in das Datenblatt eines dieser Digital-Potentiometer geworfen. Schau Dir das Signaldiagramm im Datasheet und jenes im mikrocontroller.net-Artikel "Drehgeber" an. Exakt jene Zustandsänderungen, die der Drehgeber ausgibt werden vom Digital- potentiometer erwartet. Glaubst Du wirklich <Zitat src="Microchip">The simple U/D protocol uses the state of the U/D pin at the falling edge of the CS pin to determine if Increment or Decrement mode is desired...</Zitat> haben die nur aus Zufall implementiert? >> Genau, wegen der einfachen Anbindung eines Drehgebebers. > Bastlerlösung. Ein laut Datenblatt für den Zweck geeignetes IC einzusetzen ist Deiner Meinung nach also eine "Bastlerlösung". Ich zitiere nochmal aus dem Datenblatt: "Subsequent rising edges of the U/D pin move the wiper." Das ist genau die Ausgabe eines Drehgebers! > Und es ist im Artikel KLAR beschrieben, warum das nix gescheites ist! Dort hast du lediglich dargelegt, welche Schwachstellen ein auf steigende oder fallende Flanken getriggerter Interrupt an einem Mikrocontroller aufweist. >> Bleibt also drin, denn ich mach mir die Mühe das rauszusuchen nicht umsonst. > 1.) Ich glaube kaum, dass irgendwer den Iwan gebeten hat, seine kostbare Zeit > für derartige Recherchen zu opfern. Ich bin durch Zufall in den Besitz solcher Digitalpotentiometer gekommen. Nach Lektüre der Datenblätter habe ich festgestellt, daß diese bestens zur Auswertung von Drehimpulsgebern geeignet sind. Da mir das Forum dieser Präsenz schon einige Male hilfreich war, habe ich beschlossen meine Erkenntnisse mit der Community zu teilen und daher einen für die Allgemeinheit halbwegs lesbaren und verständlichen vierzeiligen Zusatz im "Drehgeber-Artikel" verfasst. > 2.) Ich glaube noch viel weniger, dass jeder X-Belibige Hobbybastler hier > seine halbgaren Lösungen kritiklos verbreiten darf. Und wer bist Du? Schon als Elektronik-Gott der Gebärmutter entschlüpft? Um mit deinen Worten zu sprechen: Ich glaube kaum, dass es hier erwünscht ist, daß gute Tips eines ambitionierten Hobbyelektronikers (nenn' mich ruhig Bastler) mutwillig und dauerhaft von einem (sich selbst anscheinend als Nichtbastler sehenden) "Zeitgenossen" gelöscht werden. > Ergo. Der Absatz fliegt raus. Ich vertrete meinen Standpunkt und Du Deinen. Hier werden wir uns anscheinend nicht einig, daher X-Post nach forum/website zur weiteren Diskussion unter Einbeziehung der uC.net-Community. Mit kollegialem Gruße, Iwan
Иван S. wrote: > Dies wird mit der Begründung, daß es sich um eine Bastlerlösung handle > immer wieder gelöscht, obwohl das im Datenblatt des ICs enthaltene > Signaldiagramm bescheinigt, daß es für die Auswertung von Drehgerbern > geeignet sein muß. Tut es auch, du hast da schon absolut Recht. Theoretisch jedenfalls -- Kontakte PRELLEN, und genau das ist das (einzige) Problem deiner Lösung. > Gehts noch? Diese Digipots sind, wie ich Dir schon mitzuteilen > versuchte, extra für den direkten Anschluß an Drehgeber konzipiert. Es gibt durchaus welche, die integrierte Entprellmechanismen besitzen, das könntest du z.B. in deinem Artikel erwähnen, um solchen Diskussionen vorzubeugen. >> Das ist mir relativ egal. > Danke, das bestätigt meine Hypothese daß Du einfach lernresistent bist. Ne, er ist erfahren :-) > haben die nur aus Zufall implementiert? Nö. Wie gesagt, deine Vorstellung ist absolut richtig, nur dass du diese lästige Prellerei der Kontakte vernachlässigt hast. >> Und es ist im Artikel KLAR beschrieben, warum das nix gescheites ist! > Dort hast du lediglich dargelegt, welche Schwachstellen ein auf > steigende oder fallende Flanken getriggerter Interrupt an einem > Mikrocontroller aufweist. Naja, die Prellerei lastet den Prozessor am Interrupt mitunter gehörig aus, weil selbst bei langsamem Drehen pro Schaltschritt zehn, zwanzig Prellimpulse folgen, die der schnelle Prozessor alle auffrisst. >>> Bleibt also drin, denn ich mach mir die Mühe das rauszusuchen nicht umsonst. Das ist streitbar. > Da mir das > Forum dieser Präsenz schon einige Male hilfreich war, habe ich > beschlossen meine Erkenntnisse mit der Community zu teilen und daher > einen für die Allgemeinheit halbwegs lesbaren und verständlichen > vierzeiligen Zusatz im "Drehgeber-Artikel" verfasst. Hast du es denn mal tatsächlich und mit Hardware ausprobiert? > Und wer bist Du? [...] Formulier deine Erkenntnisse doch mal konjunktiv. Probier es dann wirklich mal aus und teil uns deine Ergebnisse mit :-) Thema Entprellen ist ein KACKTHEMA, das hab ich auch lernen müssen... anfangs dacht ich auch, die hier spinnen alle und es geht wohl auch ohne, aber dann bin ich aufs Maul gefallen und hab letztlich ordentliche Entprellroutinen verbaut -- seitdem bin ich um eine Erfahrung reicher. Also: Nicht aufregen, grau ist alle Theorie. Probiers mal aus und teil uns deine Beobachtungen mit.
Ja, das Problem und der Grund, warum Falk den Abschnitt gelöscht hat, ist tatsächlich die Prellerei. Mit einem rein mechanischen Drehgeber (wie ihn hier im Forum aus Kostengründen fast alle einsetzen) wirst du das von dir vorgeschlagene Konzept ohne zusätzliche Maßnahmen nicht sauber zum Laufen bekommen. Das Potentiometer wird pro Drehgeberraste fast immer mehrere Stufen weiterschalten, je nachdem, wie oft der Drehgeberkontakt auf und niederhüpft. Das Ganze könnte funktionieren, wenn die Signale mit einem geeigneten Tiefpass und nachgeschaltetem Schmitttrigger elektronisch entprellt werden. Da der Artikel größtenteils von Falk geschrieben worden ist, ist es verständlich, dass er ein Auge darauf hat, was daran geändert und erweitert wird. Und er hat eben eine etwas direkte Art, seine (in diesem Fall durchaus berechtigte) Kritik anderen kundzutun. Vielleicht kannst du dich mit ihm ja irgendwie auf eine angepasste Version des Textes einigen. Um auf sichereren Beinen zu stehen, wäre es aber wichtig, dass du mit einer real aufgebauten Schaltung nachweisen kannst, dass die Idee auch praxistauglich ist. > Gehts noch? Diese Digipots sind, wie ich Dir schon mitzuteilen > versuchte, extra für den direkten Anschluß an Drehgeber konzipiert. Glaube ich ehrlich gesagt nicht, sonst wären die Anschlüsse nicht mit CS und U/D, sondern mit A und B bezeichnet worden. Die Schnittstelle ist eher für den Anschluss an einen Mikroprozessor konzipiert: Mit CS wird, wie der Name sagt, einer von mehreren Chips selektiert. Viele Peripheriebausteine für Mikroprozessoren (RAMs, UARTs, Timer usw.) haben ebenfalls einen CS-Eingang (manchmal auch CE genannt). Durch die Selktierbarkeit der einzelnen Bausteine kann er U/D-Eingang gemeinsam mit den Signalleitungen anderer Bausteine an den Datenbus des Prozessors angeschlossen werden, ohne dass Kollisionen enstehen. Natürlich ist es jedem freigestellt, den CS- und U/D-Eingang anders zu nutzen.
Diskussion:Drehgeber wurde von mir strukturiert, da ich in dem Chaos nicht verstanden hatte, worum es ging. Meine Verständnis: Der Artikel Drehgeber beschreibt derzeit Drehgeber mit Quadraturencoder und nennt die Vorzüge dieser Codierung und kritisiert Lösungen ohne Codierung (Sparvarianten). Ivan beschreibt den Einsatz eines Drehgebers ohne Quadraturencoder an einer Up/Down-Schnittstelle eines speziellen Digitalpotentiometers. Mein Fazit: Wäre der Artikel sauber strukturiert, gäbe es die (IMHO unfaire) Diskussion nicht. Eine Struktur könnte z.B. so aussehen: Drehgeber - mit Quadraturencoder => bisheriger Artikel ohne Teil Kritik Sparvarianten - ohne Quadraturencoder => Kritik Sparvarianten => besonderer Anwendungsfall: Up/Down-Schnittstelle ganz spezieller Digitalpotentiometer Wobei der besondere Anwendungsfall Up/Down-Schnittstelle ganz spezieller Digitalpotentiometer nicht nur aus dem Datenblatt sondern durch Praxistests gestützt werden sollte, um die Kritik *in diesem speziellen Fall* nicht nur auf dem Papier sondern in Praxis zu prüfen. Frohes Fest!
@ Stefan B. (stefan) Benutzerseite >Der Artikel Drehgeber beschreibt derzeit Drehgeber mit >Quadraturencoder und nennt die Vorzüge dieser Codierung und kritisiert >Lösungen ohne Codierung (Sparvarianten). Nein. Ein Drehgeber IST ein Quadraturencoder, weil er eben zwei um 90 Grad phasenversetzte Signale ausspuckt, welche "zufällig" auch als Gray-Code aufgefasst werden können/müssen. Die Auswertung eines Drehgebers mittels der im Artikel beschriebenen Art ist dann ein QuadraturDEcoder. >Wäre der Artikel sauber strukturiert, gäbe es die (IMHO unfaire) >Diskussion nicht. Nöö. Wenn Ivan mal den Artikel lesen, drüber nachdenken und, so Gott will, auch verstehen würde, gäbe es die Diskussion nicht. Er ist nicht der erste mit der fixen Idee und "das geht auch so" Meinung. Und eben WEIL es diese Diskussion schon dutzendfach gab, hab ich den Artikel aufgebohrt, und die ganze Halbwahrheiten und "cleveren" Ideen mal aus der Welt zu schaffen. > Eine Struktur könnte z.B. so aussehen: So wie sie ist finde ich sie schon gut. >Praxistests gestützt werden sollte, um die Kritik *in diesem speziellen >Fall* nicht nur auf dem Papier sondern in Praxis zu prüfen. Ja, nur dass man da GAAAANZ genau auf passen muss. Denn wenn eine Nase einen X-beliebigen Drehgeber nimmt, den an den Digitalpoti anschliesst und es geht, was folgt daraus? Dass die Methode praxistauglich ist? NEIN! Denn ein (glücklicher) Einzelfall sagt GAR NICHTS über die allgemeine Praxistauglichkeit aus. Die kann man nur beweisen, wenn man NACHWEISLICH einen prellenden Drehgeber nutzt und die Schaltung dennoch sauber läuft. >Frohes Fest! Genau. Waffenstillstand ;-) MFG Falk P S Zum Thema "extra für den direkten Anschluß an Drehgeber konzipiert." wurde ja schon einiges gesagt. Sie sind es nicht. Denn dann müsste das schon EXPLIZIT im Datenblatt stehen. Was es aus gutem Grund nicht tut. Urteilen Sie selber. http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en025082
Fairerweise gesagt, ist Ivans Fall nicht in der Kritik beschrieben. Wie sich die Hardware des Digipotis zu den Softwaredecodierungen verhält ist unklar. Mit viel Willen macht der spezielle Digipoti in der Nomenklatur des Drehgeber-Artikels vielleicht eine "Pegelerkennung an A (=> CS) und dann eine Flankenerkennung an B (=> U/D)" oder eine "Pegelerkennung an A (=> CS) und dann eine Pegelerkennung an B (=> U/D)"... Dennoch ist - wie immer - der Kritikpunkt Prellen aus den anderen Verfahren zu berücksichtigen. Laut Timing im Datenblatt muss das U/D Signal (B vom Encoder) min. 500 ns konstanten Pegel haben und das CS Signal muss min. 500 ns bzw. 3 µs low sein. So gesehen ist eine systeminterne Debounce Time des Digipotis von 500 ns vorhanden. Das ist kurz wie ein Hasenfurz. Kürzere Signalwechsel durch Prellen könnten das Digipoti nicht jucken, längere - wahrscheinlichere - schon. Wenn man da eine Hardware-Entprellung vorsieht, wäre dieser Kritikpunkt erledigt. Ein zweiter Kritikpunkt von mir ist, dass man beim Direktanschluss eine Sicherung vor Verstellen des Digipotis aufgibt, die man bei der Auswertung des Graycodes noch hat. Was passiert, wenn der Drehencoder in Stellung A low (=> CS low) dauerhaft steht? Jede Störung mit Pegelwechsel länger 500 ns auf der Leitung B wird dann das Digipoti verstellen. Hier sollte alles helfen, was die Signalleitung vor Störungen schützt u.a. obige Hardwareentprellung. Ein dritter Kritikpunkt von mir ist, dass die Auflösung des Drehencoders um den Faktor 2 herabgesetzt wird. Während einer Periode von A kommen 4 Werte des Graycodes (von denen man zwei für die Richtung braucht) aber nur eine steigende oder fallende Flanke von B. Zudem ist die Auflösung beim Direktanschluss Drehencoder - Digipoti zudem unveränderlich, während man bei der Softwareauswertung mit Graycode und anschliessendem seriellen Up/Down-Steuern des Digipotis nahezu beliebig verfahren kann. Wenn ich mich entscheiden sollte zwischen der Option Direktanschluss Drehgeber-(U/D-Seriell)-Digipoti und der Option Drehgeber-Graycodedecoder-(U/D-Seriell)-Digipoti, dann würde ich die zweite Option wählen. Man hat mit dem Softwaredecoder im µC einfach viel mehr Möglichkeiten. Beim Artikel Drehgeber stört mich die Kritik an Sparversionen zwischen Beschreibung der Timer-basierten Version und dem dazugehörenden Timer-basierten Codebeispiel. Sie wirkt dort eingeflickt und wäre am Ende des Artikels besser aufgehoben. Insgesamt ist Ivans Anwendung sehr speziell auf diese Art Digipotis zugeschnitten, so dass ich das eher in einem Artikel Didipotis (Unterpunkt Ansteuerung Unterunterpunkt Serielle Up/Down-Schnittstelle ;-) erwarten würde statt in einem Artikel Drehgeber.
@ Stefan B. (stefan) Benutzerseite >Verfahren zu berücksichtigen. Laut Timing im Datenblatt muss das U/D >Signal (B vom Encoder) min. 500 ns konstanten Pegel haben und das CS >Signal muss min. 500 ns bzw. 3 µs low sein. So gesehen ist eine >systeminterne Debounce Time des Digipotis von 500 ns vorhanden. Volkommen falsch. Setup- und Hold Zeiten sagen GAR NICHTS über eventuelle Entprellungen aus. Und es sind garantierte MAXIMALWERTE. Die ICs sind meist besser, sprich schneller. Was hier aber schlechter ist. > Das ist >kurz wie ein Hasenfurz. Kürzere Signalwechsel durch Prellen könnten das >Digipoti nicht jucken, Noch falscher als falsch. > längere - wahrscheinlichere - schon. Wenn man da >eine Hardware-Entprellung vorsieht, wäre dieser Kritikpunkt erledigt. Nöö. Lies mal den Artikel und denk mal drüber nach. >Ein zweiter Kritikpunkt von mir ist, dass man beim Direktanschluss eine >Sicherung vor Verstellen des Digipotis aufgibt, die man bei der >Auswertung des Graycodes noch hat. ??? MFG Falk P S An Ivan. >> Und es ist im Artikel KLAR beschrieben, warum das nix gescheites ist! >Dort hast du lediglich dargelegt, welche Schwachstellen ein auf >steigende oder fallende Flanken getriggerter Interrupt an einem >Mikrocontroller aufweist. Denk mal drüber nach, wie empfindlich Digital ICs auf Taktflanken an Takteingängen reagieren. Taktung FPGA/CPLD Und NEIN, das gilt nicht nur für FPGAs und CPLDs, auch "normale", nicht programmierbare ICs.
Die angegebenen Zeiten sind Minimalwerte nicht Maximalwerte. Du hast Recht, dass das keine gesicherte Aussage bzgl. Entprellung erlaubt. Leider hätte ich wetten können, dass diese Antwort kommt, nur war ich zu strack, die Nachricht wieder umzustricken, da es die Kernaussage 500 ns oder weniger auch nicht verändert hätte. Wenn man spekuliert, was ein Timing ausserhalb der vorgegebenen Timingwerte bewirkt, gibt es zwei Möglichkeiten. Und wir beide haben da unterschiedliche Ansichten. Ich bin der waghalsigen Ansicht, dass bei Unterschreiten der angegebenen Minimalzeiten keine Werte übernommen werden. Wenn doch (deine Ansicht?), dann ist die "systeminterne Debouncing Time" noch kürzer als die in der Praxis sicher nicht ausreichenden 500 ns. >> Wenn man da eine Hardware-Entprellung vorsieht, wäre dieser Kritikpunkt >> (Add: Es geht um Prellen) erledigt. > Nöö. Lies mal den Artikel und denk mal drüber nach. So speist man kleine Kinder ab, wenn sie nerven. Du musst mit mir nicht diskutieren oder dein Wissen teilen, wenn du nicht möchtest. Ansonsten glaub mir, ich habe vor meiner Nachricht den Artikel gelesen und ich habe nachgedacht. Anscheinend bin ich zu blöd, um deine Erklärung dort zu finden, wieso eine Entprellung Prellen nicht verhindert.
@ Stefan B. (stefan) Benutzerseite >> Nöö. Lies mal den Artikel und denk mal drüber nach. >So speist man kleine Kinder ab, wenn sie nerven. Ja, hat schon seinen Grund . . . ;-) >habe nachgedacht. Anscheinend bin ich zu blöd, um deine Erklärung dort >zu finden, wieso eine Entprellung Prellen nicht verhindert. Weil es noch ein zweites Problem gibt. Nämlich das Pendeln zwischen zwei Zuständen. Jaja, bei Drehgebern mit Rastung passiert das eher weniger ;-) MFG Falk
Ich kenne durch den Artikel das Pendelproblem. Ich habe aber nie behauptet, dass das Pendelproblem durch eine Entprellung gelöst ist. Pendeln geht in etwa in die Richtung meines zweiten Kritikpunkts. Der Drehgeber ruht mit 50% Wahrscheinlichkeit mit LOW auf A bzw. CS und das Digipoti ist dann anfällig gegen ungewollte Pegeländerungen auf B (U/D), die durch Einstrahlungen (s. oben) oder mechanische Erschütterungen (Artikel) hervorgerufen werden. Richtig, Rastpunkte bei A/CS = HIGH (oder LOW, wenn man A invertiert benutzt) könnten da helfen. Ob Pendeln bei Drehgebern mit Rastpunkten "eher weniger" oder komplett eliminiert ist, kann ich mangels Praxiserfahrung nicht entscheiden.
Nur total grottige Drehgeber mit Rastung pendeln in Ruhelage.
Die wikipedisch richtige Methode ist nicht die Löschung, sondern das Stehenlassen der anderen Methode unter Beifügung der Gegenargumente. Dann hat der Leser gleich zwei Sachen gelernt und niemand wird bevormundet.
Die forenmäßig richtige Methode, ist das Ausgraben von alten Threads ohne Grund zu unterlassen!
Es gab ja einen Grund, Du polemischer Abwerter anderer Beiträge.
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.