Forum: www.mikrocontroller.net Mutwillige Löschungen - Artikel "Drehgeber"


von Иван S. (ivan)


Lesenswert?

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

von Sven P. (Gast)


Lesenswert?

Иван 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.

von yalu (Gast)


Lesenswert?

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.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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!

von Falk B. (falk)


Lesenswert?

@ 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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@  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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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.

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


Lesenswert?

Nur total grottige Drehgeber mit Rastung pendeln in Ruhelage.

von Wiki (Gast)


Lesenswert?

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.

von Forum (Gast)


Lesenswert?

Die forenmäßig richtige Methode, ist das Ausgraben von alten Threads 
ohne Grund zu unterlassen!

von Wiki (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.