Hallo,
eines vorweg: Dies ist kein Trollbeitrag und Freitag ist auch noch
nicht!
Wie der außergewöhnliche Betreff ja schon sagt, bin ich auf der Suche
nach richtig miesen Drehimpulsgebern.
Ich suche welche, die ordentlich Prellen, mal Spur A oder B nicht
richtig ausgeben, weil der Kontakt nicht gut ist oder welche die
ordentlich um den Rastpunkt pendeln.
Ich möchte diese als Anschauungsobjekt haben und damit meine
Drehimpulsgeber-Routinen testen.
Ich habe hier einen STEC11B13. Liegt schon ewig in der Kiste. Der ist
noch nicht schlecht genug. Gute optische von Burns oder magnetische
(Alps) habe ich. Sind aber auf die Dauer zu teuer...
Gruß
Cheffe
Stefan ⛄ F. schrieb:> Ich würde einfach einen billigen kaufen und eine Weile mit dem> Akkuschrauber durchorgeln.
Nach Murphy wird genau dieser nie kaputt gehen, nichtmal zu
Fehlfunktionen neigen.
Cheffe schrieb:> Wie der außergewöhnliche Betreff ja schon sagt, bin ich auf der Suche> nach richtig miesen Drehimpulsgebern.
Du könntest im Tausch gegen einen neuen den Geber meiner Mikrowelle
haben, der funktioniert nur noch mit einem "Knack" pro Sekunde.
Bau dir selber einen und gib dir dabei keinerlei Mühe. Die Kontakte
kannst du aus einer nicht ausgespülten Konservendose herstellen, die du
vorher am besten noch ein paar Wochen im Freien reifen lässt.
Nimm einen diskret aufgebauten optischen Drehimpulsgeber, bei dem man
noch an die einzelnen Komponenten kommt, und reduziere die Leuchtkraft
der LEDs (z.B. verringerter Strom, etc) bzw. die Empfindlichkeit der
Empfänger.
Im Prinzip würde ich eine Lichtschranke und ein Papierzahnrad basteln.
Anschließend Licht regulieren und später Zähne mißhandeln mit Bleistift
und Schere?
Scherz beiseite, Du muß die geforderte Disfunktionalität schon genauer
spezifizieren. Disfunktionalitäten korreliert man im Allgemeinen mit
einer Unwahrheitstabelle. Du muß aber aufpassen daß Du nicht in die
Funktionalitätsfalle läufst, weil der Geber dann genau das nicht macht
was er nicht machen soll.
Als Workaround kannst Du Deinen Code einfach ohne Geber ins Leere laufen
lassen. Dadurch kannst Du Dich unabhängig vom Geber vollständig auf
Deinen Code konzentrieren.
sehr sehr langsam drehen
Kontakte mit zuviel Strom schädigen, z.B. einen passenden Kondensator
über die Kontakte legen, der sich dann beim Drehen immer wieder über die
Kontakte entlädt. Das mögen die natürlich nicht und altern extrem.
Sich die verschiedenen Cases überlegen die man abtesten möchte. Für
jeden Test eine Kurvenform definieren.
Mit einem Pattern Generator die Muster ausgeben und nach jedem Muster
den Erwartungswert prüfen.
Ist zwar ohne Encoder, dafür aber reproduzierbar.
N. M. schrieb:> Sich die verschiedenen Cases überlegen die man abtesten möchte. Für> jeden Test eine Kurvenform definieren.> Mit einem Pattern Generator die Muster ausgeben und nach jedem Muster> den Erwartungswert prüfen.> Ist zwar ohne Encoder, dafür aber reproduzierbar.
Sowas in die Richtung würde ich auch vorschlagen. Wie wär's ein kleines
Tool mit einem Mikrocontroller zu basteln? Dann kann man auch nicht
funktionierende Fälle wiederholen und debuggen.
Wenns nicht so aufwendig wäre, könnte ich die Drehgeber ausm Hameg, ausm
Agilent, aus der Jura ausbauen, die ärgern mich schon jahrelang.
Der im Agilent Generator ist völlig unbenutzbar, da ist nur noch die
Eingabe über die Zifferntasten möglich.
Ich vermute allerdings, die sind gar nicht defekt, sondern werden per
Flankeninterrupt eingelesen, also ein Firmwarefehler.
Also ich habe die Erfahrung gemacht dass die nur mit äußerer
Beschaltung, Kondensatoren und Widerständen gescheit funktionieren.
Da einfach mal ein paar Werte weglassen oder verschlechtern.
Vielleicht mit Schleifpapier ein wenig Messingstaub erzeugen und diesen
in einen Drehencoder kippen. Das dürfte auch schon ein wenig künstliche
Alterung simulieren und trägt zusätzlich zur Alterung bei.
??? schrieb:> so richtig miese Dinger gabs mal bei Pollin. Die scheinen aber> ausverkauft zu sein.
Die haben halt ein wenig um den Rastpunkt gewackelt und geprellt. Kann
man in der Software berücksichtigen, funktionieren dann tadellos.
Ganz im Gegensatz zu den Drehgebern in meinen elektronischen
Heizkörperthermostaten, die inzwischen nur noch zufällig hoch und
runterspringen, wenn man dran dreht. Egal in welche Richtung.
Da hat wohl so ein Superhirn den Drehgeber per Flankeninterrupt
auszuwerten versucht.
Insofern ist das hier schon ein guter Plan:
Cheffe schrieb:> Wie der außergewöhnliche Betreff ja schon sagt, bin ich auf der Suche> nach richtig miesen Drehimpulsgebern.
Das Teil drückt man den Firmware-Programmierern in die Hand, und wenn
das Gerät damit bedienbar bleibt ist alles Gut.
Spart ewige Diskussionen wie:
Chef: "Mach das per Timer-Interrupt und Polling"
Progger: "Nee"
Chef: "Doch!"
Progger: "Aber per Flanke ist das viel einfacher"
Chef: "Geht aber nicht mehr, wenn der Geber prellt"
Progger: "Meiner prellt nicht. Und wenn, dann packen wir halt
Kondensatoren dran"
Chef: "Nö, mach das gleich richtig, per Timer"
Progger: "Aber, aber, aber, der 12-Jährige pickelgesichtige
Arduino-Jünger auf dem 1337-Hardware-Haxxx0r Youtube-Channel hat gesagt,
dass Polling böse ist..."
Peter D. schrieb:> Wenns nicht so aufwendig wäre, könnte ich die Drehgeber ausm Hameg, ausm> Agilent, aus der Jura ausbauen, die ärgern mich schon jahrelang.
Die Dinger aus alten Ford-Autoradios taugen irgendwann auch nur als
Zufallsgenerator.
Allerdings vermute ich dort und allgemein in mehr als 9 von 10 Fällen,
dass wie üblich einfach die auswertende Software schlecht ist, weil der
Programmierer die 10000underste Variante zur Drehgeberauswertung selbst
programmiert hat.
DANIEL D. schrieb:> Also ich habe die Erfahrung gemacht dass die nur mit äußerer> Beschaltung, Kondensatoren und Widerständen gescheit funktionieren.
Welche "die"?
Warum nicht einfach ein "Progrämmchen" schreiben, das schlechte,
verhunzte Pulsfolgen erzeugt und deine Auswertesoftware so richtig ins
Schwitzen bringt? Bevor ich da mit der Feile auf ein Teil losgehe :-)
Gruß Rainer
Marek N. schrieb:> Vielleicht ein Stereo-Poti per ADC einlesen und die LSB(s) auswerten?
Ja, da hätte man dann natürlich völlig unabhängige Bitfolgen und die
Software würde beliebig hin- und herzählen. Man wüsste dann trotzdem
nicht, ob sie tut oder nicht.
Ich würde da eher mit einem µC Impulsfolgen mit variablem Tastverhältnis
und "Zufallsrauschen" aus einer Tabelle auf den Spuren ausgeben. Dann
kann man sich im Fehlerfall auch recht leicht an diesen Fehlerfall
herantasten, weil man den Fehlerfall jederzeit reproduzieren kann.
Und man kann die Auswertung leicht automatisieren und im Fehlerfall
anhalten, denn wenn der "Geber-µC" behauptet, er habe 1000 Schritte in
einer Richtung gemacht, dann muss der "Empfägner-µC" trotz Rauchen und
Störimpulsen 1000 Schritte weiter gezählt haben.
MeierKurt schrieb:> Stefan ⛄ F. schrieb:>> Ich würde einfach einen billigen kaufen und eine Weile mit dem>> Akkuschrauber durchorgeln.>> Nach Murphy wird genau dieser nie kaputt gehen, nichtmal zu> Fehlfunktionen neigen.
Etwas genauer: Der Akkuschrauber wird zuerst kaputt gehen.
Lothar M. schrieb:> Peter D. schrieb:>> Wenns nicht so aufwendig wäre, könnte ich die Drehgeber ausm Hameg, ausm>> Agilent, aus der Jura ausbauen, die ärgern mich schon jahrelang.> Die Dinger aus alten Ford-Autoradios taugen irgendwann auch nur als> Zufallsgenerator.
Hmm, ich weiß nicht, welche im Waldorf Blofeld verbaut sind. Dessen
Drehgeber sind bekannt für Fehlfunktionen. Da ist die Welle eingefettet,
um schön leichtgängig zu sein. Leider läuft das Fett mit der Zeit auf
die Kontakte und stört diese.
Cheffe schrieb:> Ich möchte diese als Anschauungsobjekt haben und damit meine> Drehimpulsgeber-Routinen testen.
Ich würde eher ein Test-Drehencoder verwenden, bei dem man nichts dreht
sondern wo ein µC die Signale mit entsprechender Fehler-Abfolge sendet
und dann entsprechende Tests schreiben.
Vorteil: das Fehlverhalten wird dann reproduzierbar und man kann den
Fehler gezielt beheben.
Und der Test ist jederzeit wiederholbar, nicht abhängig von Zufällen,
die genau morgens um 9:43 auf treten wenn die Sonne gerade in den
Schlitz scheint und die Sensorik stört.
Daher kann ich von einem "miesen Drehimpulsgeber" nur abraten. Damit
verliert man nur Zeit.
Auch macht der "miesen Drehimpulsgeber" sicher nicht alle Fehlerfälle
die es gibt und auf die man reagieren möchte.
Markus M. schrieb:> Cheffe schrieb:>> Ich möchte diese als Anschauungsobjekt haben und damit meine>> Drehimpulsgeber-Routinen testen.>> Ich würde eher ein Test-Drehencoder verwenden, bei dem man nichts dreht> sondern wo ein µC die Signale mit entsprechender Fehler-Abfolge sendet> und dann entsprechende Tests schreiben.> Vorteil: das Fehlverhalten wird dann reproduzierbar und man kann den> Fehler gezielt beheben.
Dafür ist das dann allerdings eben künstlich erstellt, so wie man sich
vorstellt, dass ein schlechter Drehencoder sich verhalten könnte. Aber
woher weißt du, ob deine programmierte Fehler-Abfolge überhaupt
realistisch ist?
> Auch macht der "miesen Drehimpulsgeber" sicher nicht alle Fehlerfälle> die es gibt und auf die man reagieren möchte.
Das ist aber eben auch ein Problem: Dein programmierter
Encoder-Simulator deckt nur die Feherfälle ab, auf die du reagieren
möchtest, also an die du vorher explizit gedacht hast. Das sind aber
nicht unbedingt auch die, auf die du auch reagieren musst.
Rolf M. schrieb:> also an die du vorher explizit gedacht hast
Diese "möglichen Fehler" muss sich ja nicht nur eine Person aus den
Fingern saugen, man kann das Problem sicher auch mit mehreren Leuten
angehen oder auch hier im Forum fragen.
Da wird man dann sicher so ziemlich alle Möglichkeiten dann zusammen
bekommen, die man anschließend gezielt/reproduzierbar testen kann.
Es hat ja niemand gesagt dass so ein Test vom Aufwand her einfach ist.
Meist ist der Test deutlich aufwändiger als wie die eigentliche
Programmierung, schon alleine deshalb weil man nach jeder
Programmänderung Tests gezielt wiederholen muss. (So kenne ich das aus
der Medizintechnik.)
Mit so einem "zufällig Defekt" Encoder schafft man sinvolle Tests
niemals, weil man nie genau weiß wann welches Fehlverhalten auftritt.
Cheffe schrieb:> bin ich auf der Suche nach richtig miesen Drehimpulsgebern.
Ich kenn da einen in einer Heizungsanlage.
Richtig mies sind Drehimpulsgeber auf Schleifkontaktbasis beispielsweise
mit Kontakt nach Masse und plus über pull up, wenn die Kontaktbahn
oxidiert bzw. verdreckt ist und nur noch sporadisch Kontakt ergibt Dann
bekommst du folgende Signale
1
A ++++++++---+-+--++++++++-+--+---++++++++
2
B --+-+++++++++-+--+--++++++++--+-----++++
Die Signale können so schnell werden, dass auch der richtige
Auswertecode damit nichts mehr anfangen kann. So lange die Aussetzer auf
der Kontaktbahn nur kurz sind, kann ein Kondensator die peaks filtern.
Ist aber die Kontaktbahn überwiegend oxidiert und gibt nur noch
seltendst Kontakt, hilft auch das nicht mehr.
Kauf Dir ein Korad-Netzteil. KA3005D o.ä.
nach 2-3 Jahren werden garantiert zufällige Spannungen eingestellt. Egal
in welche Richtung Du drehst.
Gruß Anja
> garantiert zufällige Spannungen
Der TO wird nicht nur die Spannungshöhe, sondern auch Aussetzer haben
wollen. Dazu fällt mir z.B. noch ein prellender Relaiskontakt ein.
Relais über Ruhekontakt Spannung unterbrechen ergibt schönen Wagnerschen
Hammer..
Das Leben ist ein Kompromiss. Die Auswerte-SW muß entweder total träge
reagieren oder es kommen noch Fehler? Was heute gut geht, kann schon
morgen durch Staub anders sein.
Rolf M. schrieb:> Das ist aber eben auch ein Problem: Dein programmierter> Encoder-Simulator deckt nur die Feherfälle ab, auf die du reagieren> möchtest, also an die du vorher explizit gedacht hast.
Mitnichten.
Der, den ich meine, der erzeugt per Zufall eine Quadraturfolge, die von
50:50 bis zu 5:95 gehen kann, mal mit Flankenwechseln in der Mitte und
mal knapp beim Wechsel der anderen Spur (zu den X siehe den letzten
Abschnitt im Post):
1
1: optimal
2
A --------________--------________--------________--------________
3
B ____--------________--------________--------________--------____
4
5
6
2: verschoben
7
A --------________--------________--------________--------________
8
B _______--------________--------________--------________--------____
9
X X X X X X X
10
11
3: asymmetrisches TV
12
A ----------____------------____------------____------------____--
13
B ________----____________----____________----____________----_______
14
15
16
4: verschoben und asymmetrisch
17
A -----------____------------____------------____------------____--
18
B ________----____________----____________----____________----_______
19
X X X X
Und darüber wird ein berechnetes und zwischengespeichertes Zufallmuster
mit Störungen gelegt.
Dann wird das Ganze laufen gelassen und wenn der Empfänger-µC nur 999
oder auch 1001 Schritte statt 1000 hat, dann wird das
fehlerproduzierende Muster im Nachtlauf einfach mal abgespeichert.
Danach gehts weiter.
Und am nächsten Morgen kann man dann in aller Ruhe die bis dahin
angefallenen kritischen Muster durch die Mangel drehen und bewerten.
Am Rande: ich würde hier nur in den Fällen 2 und 4 Probleme erwarten,
weil nur dort jeweils bei der Position X zwei Flanken auf beiden Spuren
sehr dicht beieineinader sitzen. Und überraschenderweise ist das
"unschönere" Signal 4 sogar weniger kritisch als das "hübsche" Signal
2... ;-)
> Die Signale können so schnell werden, dass auch der richtige> Auswertecode damit nichts mehr anfangen kann.
Die von dir gezeigten Beispielsignale können aber mit dem richtigen
Auswertecode noch problemlos verarbeitet werden, ohne dass ein
bleibender Fehler in der Schrittzahl entsteht. Ein Fehler kann höchstens
dann entstehen, wenn sich die Aussetzer auf beiden Kanälen auf
ungeschickte Weise überlappen. Da üblicherweise jeder der beiden
Kontakte mindestens zwei Kontaktzungen hat, müssten vier Kontaktzungen
zeitlich überlappend und in einer ganz bestimmten Reihenfolge abheben,
um einen Fehler zu erzeugen. Das ist selbst bei einem gealterten
Drehgeber äußerst unwahrscheinlich. Wenn der Drehgeber schon so kaputt
ist, dass dieser Fall häufiger auftritt, helfen auch Tiefpässe,
Schmitt-Trigger und dergleichen nicht mehr.
Die allerallermeisten Fehler bei Drehgebern sind wirklich auf
Softwarefehler zurückzuführen.
Yalu X. schrieb:> Die von dir gezeigten Beispielsignale können aber mit dem richtigen> Auswertecode noch problemlos verarbeitet werden, ohne dass ein> bleibender Fehler in der Schrittzahl entsteht.
Nein.
Denn der klassische Auswertecode braucht eine bestimmte
Abtastgeschwindigkeit passend zur Strichgeschwindigkeit, sonst kann er
nicht mehr folgen. Die wird hier aber überschritten.
> Ein Fehler kann höchstens> dann entstehen, wenn sich die Aussetzer auf beiden Kanälen auf> ungeschickte Weise überlappen
Das tun sie, denn 1/4 der Position waren beide Kontakte A und B
geschlossen, kratzen aber.
MaWin schrieb:> Yalu X. schrieb:>> Die von dir gezeigten Beispielsignale können aber mit dem richtigen>> Auswertecode noch problemlos verarbeitet werden, ohne dass ein>> bleibender Fehler in der Schrittzahl entsteht.>> Nein.> Denn der klassische Auswertecode braucht eine bestimmte> Abtastgeschwindigkeit passend zur Strichgeschwindigkeit, sonst kann er> nicht mehr folgen. Die wird hier aber überschritten.
Ich bin davon ausgegangen, dass die Striche und die Lücken jeweils 8
Abtastperioden lang sind und die beiden Signale um 4 Abtastperioden
gegeneinander verschoben sind, also so:
1
gestörte Signale:
2
A ++++++++---+-+--++++++++-+--+---++++++++
3
B --+-+++++++++-+--+--++++++++--+-----++++
4
5
ungestörte Signale:
6
<--8---> <4-> <--8--->
7
A ++++++++--------++++++++--------++++++++
8
B ----+++++++++-------++++++++--------++++
9
<--8---> <4-> <--8--->
Die einzelnen zusätzlichen "+" in den gestörten Signalen sind nicht
schlimmer als das Kontaktprellen, das bei jedem mechanischen Drehgeber
(auch bei neuen) auftritt.
MaWin schrieb:>> Ein Fehler kann höchstens dann entstehen, wenn sich die Aussetzer auf>> beiden Kanälen auf ungeschickte Weise überlappen>> Das tun sie, denn 1/4 der Position waren beide Kontakte A und B> geschlossen, kratzen aber.
Kratzen dürfen sie ja, sie dürfen nur nicht überlappend kratzen, und das
tun sie in deinem Beispiel auch nirgends.
Ein weiterer Fehlerfall wäre wenn eine oder 2 der 3 Spuren ausfallen (A
B 0) z.B. wegen Wackelkontakt.
Oder die Siganle A und /A vertauscht anschließt.
Der Fehler kommt relativ oft bei der Installation vor, wenn man was
falsch anschließt. Ich habe da schon die tollsten Facharbeiten gesehen -
was jedes mal ein paar Stunden kostete.
Yalu X. schrieb:> Die einzelnen zusätzlichen "+" in den gestörten Signalen sind nicht> schlimmer als das Kontaktprellen, das bei jedem mechanischen Drehgeber> (auch bei neuen) auftritt.
Doch, wenn sie nicht nur an den Übergängen auftreten, so dass die
Abtastung auf jeden Fall nochmal einen ungestörten Zustand mittendrin
erwischt,
sondern vor allem im 1/4 Bereich wo beide Kontakte geschlossen sein
sollten munter auf beiden Kanälen fast gleichzeitig auftreten. Dann
wurde nur dann richtig gezahlt werden, wenn beide Kanâle so schnell
gesampelt werden, dass zwischen 2 einzelben Storungen noch ein
ungestörter Zustand erwischt wird.
Sooo schnell ist dann aber kaum eine Softwareauswertung, es wären ja
Mikrosekunden.
Yalu X. schrieb:> Ich bin davon ausgegangen, dass die Striche und die Lücken jeweils 8> Abtastperioden lang sind und die beiden Signale um 4 Abtastperioden> gegeneinander verschoben sind
Ja.
Yalu X. schrieb:> sie dürfen nur nicht überlappend kratzen, und das> tun sie in deinem Beispiel auch nirgends.
Na ja, wenn jedes Zeichen ein Abtastpunkt ist (das wäre sogar 4 mal mehr
als bei idealen Drehgebern nötig) dann zeigt es Problemstellen wo A+B-
auf A-B+ und A-B+ auf A+B- wechselt bzw. A+B+ auf A-B-oder A-B- auf
A+B+ .
MaWin schrieb:> dann zeigt es Problemstellen wo A+B- auf A-B+ und A-B+ auf A+B- wechselt
Problemstellen sind immer da, wo zwei Flanken gleichzeitig wechseln,
denn das bedeutet für die Auswertung, dass seit der letzten Abtastung
zwei Schritte gemacht wurden. Und blöderweise ist dabei die Richtung
unbekannt.
Und natürlich gibt es Probleme, wenn der Drehgeber do kaputt ist, dass
er aufgrund von Störungen komplette "Pseudozyklen" vorgaukelt:
1
ideal:
2
A ----____________________--------------------____________________-----
3
B --------------____________________--------------------_______________
4
Z 0 1 2 3 4 5 6 7
5
6
real:
7
A ----___-________________--------------------_____________--_____-----
8
B --------------___--_______________---____-------------___--__________
9
Z 0 1 21 2 3 2 3 4 3 4 5 5 ? ? ?
10
11
kompletter Quadraturyklus durch gestörtes Signal:
12
A ----____________--_______-------------------_____________--______-----
13
B --------------___--_______________--------------------____--__________
14
Z 0 1 2 3456 7 8 9 10 9876 7
15
16
gestörte Störung:
17
A ----____________----_____--------------------_____________---____-----
18
B --------------___--________________--------------------____-__________
19
Z 0 1 2 34 32 3 4 5 6 5456 7
Das Fazit dürfte sein, dass es schlechte Geber gibt, die schon ab Kauf
nur suboptimale Signale (Flanken verschoben und Tastverhältnis
asymmetrisch) liefern und deshalb richtig abgetastet werden müssen.
Und dass es defekte Geber gibt, die irgendwann halt nur noch Blösdinn
liefern, aus dem man mit einer guten Auswertung noch was "herausfischen"
kann.
Aber wenn man eben echt so einen kaputten Geber hat, dass er gültige
"Pseudo-Impulsfolgen" oder "gleichzeitige Flankenwechsel" erzeugt, dann
wird die Auswertung zum Ratespiel. Klar könnte man bei zwei
"gleichzeitigen" Flanken dann sagen: "da tun wir dann erst mal nichts".
Oder auch "bisher hat er nach rechts gedreht, dann werden das jetzt wohl
zwei schritte nach rechts sein". Aber eigentlich wird dann erst die
nähere Zukunft die Wahrheit weisen.
MaWin schrieb:> Yalu X. schrieb:>> Die einzelnen zusätzlichen "+" in den gestörten Signalen sind nicht>> schlimmer als das Kontaktprellen, das bei jedem mechanischen Drehgeber>> (auch bei neuen) auftritt.>> Doch, wenn sie nicht nur an den Übergängen auftreten, so dass die> Abtastung auf jeden Fall nochmal einen ungestörten Zustand mittendrin> erwischt,> sondern vor allem im 1/4 Bereich wo beide Kontakte geschlossen sein> sollten munter auf beiden Kanälen fast gleichzeitig auftreten. Dann> wurde nur dann richtig gezahlt werden, wenn beide Kanâle so schnell> gesampelt werden, dass zwischen 2 einzelben Storungen noch ein> ungestörter Zustand erwischt wird.
Du denkst also bspw. an den folgenden Fall:
1
0123
2
A -+--
3
B --+-
Jedes Zeichen (+/-) stehe für eine Abtastung, die Abtastungen sind von 0
bis 3 durchnummeriert.
In Abtastschritt 1 wird inkrementiert, Abtastschritt 2 wird wegen des
ungültigen Zustandswechsels komplett ignoriert, und in Abtastschritt 3
wird dekrementiert. Durch die Korrektur in Abtastschritt 3 stimmt der
Zählerstand wieder, und es entsteht kein bleibender Fehler.
Die Korrektur findet auch dann statt, wenn eine der beiden Störungen so
kurz ist, dass sie nicht registriert wird. Wird keine der beiden
Störungen registriert, entsteht sowieso kein Problem.
Problematisch ist nur der folgende Fall, bei dem sich die Störungen (aus
der Sicht des Abtastsystems) überlappen:
1
01234
2
A -++--
3
B --++-
In den Abtastschritten 1 bis 4 wird jeweils inkrementiert. Dadurch ist
der Zählerstand am Ende um 4 zu hoch. Dieser Fehler wird auch nirgends
korrigiert und bleibt deswegen dauerhaft bestehen.
Das Problem in diesem Beispiel ist, dass die Zustandsfolge kaum von
einer "echten" Drehung um 4 Inkremente unterscheidbar ist. Man könnte im
Auswertealgorithmus allenfalls die High/Low-Zeiten (absolut und relativ
zu den jeweiligen Nachbarn) nach irgendwelchen Heuristiken (die von der
Anwendung abhängen) auf Plausibilität prüfen, um damit zumindest einen
Teil der Störungen zu erkennen. Wie ich aber oben bereits schrieb, ist
dieser Fall so unwahrscheinlich, dass sich eine spezielle Behandlung
kaum lohnt.
MaWin schrieb:> Na ja, wenn jedes Zeichen ein Abtastpunkt ist (das wäre sogar 4 mal mehr> als bei idealen Drehgebern nötig) dann zeigt es Problemstellen wo A+B-> auf A-B+ und A-B+ auf A+B- wechselt bzw. A+B+ auf A-B-oder A-B- auf> A+B+ .
Und genau diese ungültigen Zustandswechsel müssen von der Software
erkannt und richtig behandelt werden, dann lassen sich zwar immer noch
nicht alle, aber doch die allermeisten Störungen kompensieren.
Yalu X. schrieb:> Du denkst also bspw. an den folgenden Fall:> 0123> A -+--> B --+-
Oder an:
1
A -++-
2
B --+-
als Störungen in einem Bereich wo beide auf Masse kontaktieren sollten.
Yalu X. schrieb:> dann lassen sich zwar immer noch> nicht alle, a
So lange Störungen nur kurze Aussetzer der Schleifkontakte sind, und die
Drehzahl nicht zu hoch ist, helfen kleine Kondensatoren als RC Glied vor
den Eingängen, langsam aufladen per pull up, schnelles Entladen durch
Kontakt, die Asymmetrie passt gut zum Fehler, denn dass Kontakte die
über Isolatoren streifen doch Kontakt geben, kommt eher nicht vor. Bei
sehr hoher Drehzahl wäre deren Zeitkonstante aber vielleicht zu hoch.
MaWin schrieb:> So lange Störungen nur kurze Aussetzer der Schleifkontakte sind
Ich musste da bei einem mal den Kontaktstrom deutlich auf 25mA erhöhen.
Das sorgte für ausreichend hohen Fritstrom und die Dinger, die vorher
kritisch herumzickten, laufen seither wie Butter. Weil ich den
positionsabhängigen Sromverbrauch von bis zu 50mA nicht dauernd haben
wollte, wurden die Pullups per IO-Pin nur zur Messung eingeschaltet.
https://de.wikipedia.org/wiki/Frittspannung
Das sind überlappende Störungen. Dass diese ein Problem darstellen
können, habe ich oben ja schon geschrieben. In deinem ursprünglichen
Beispiel tauchen solche überlappenden Störungen aber nicht auf, weswegen
es dort auch keine Probleme gibt. Deswegen schrieb ich oben
Yalu X. schrieb:> Die von dir gezeigten Beispielsignale können aber mit dem richtigen> Auswertecode noch problemlos verarbeitet werden, ohne dass ein> bleibender Fehler in der Schrittzahl entsteht.
Das willst du mir aber partout nicht glauben, obwohl es ein Leichtes
wäre, die einzelnen Abtastschritte einfach einmal durchzuspielen.
MaWin schrieb:> So lange Störungen nur kurze Aussetzer der Schleifkontakte sind, und die> Drehzahl nicht zu hoch ist, helfen kleine Kondensatoren als RC Glied vor> den Eingängen
Die Kondensatoren wirken sich aber negativ auf die maximal verarbeitbare
Impulsfrequenz des Drehgebers aus. Wenn man bereit ist, dies zu
akzeptieren, kann man die kurzen Aussetzer genauso gut per Software
eliminieren. Die Softwaremethode spart nicht nur die Kondensatoren ein,
sondern funktioniert auch zuverlässiger, weil sie nicht von Streuungen
der Kapazitäten und der Eingangshysteresen beeinflusst wird.
Wer Drehgeber per Software auswertet und dennoch meint, Kondensatoren
und ähnliche Krücken an den Eingängen zur Unterdrückung von Störungen zu
benötigen, hat – wie auch die meisten Mitglieder der Interrupt-Fraktion
– das Prinzip der richtigen Auswertung noch nicht verstanden.
> Wer Drehgeber per Software auswertet und dennoch meint, Kondensatoren> und ähnliche Krücken an den Eingängen zur Unterdrückung von Störungen zu> benötigen, hat – wie auch die meisten Mitglieder der Interrupt-Fraktion> – das Prinzip der richtigen Auswertung noch nicht verstanden.
Hallo, hinsichtlich der Kondensatoren sehe ich das auch so. Ich habe
nichts außer die internen Pull-Ups. Ich habe hier etwas mit einem
ATMEGA644 gemacht und arbeite mit Tabelle und Auswertung beider Spuren.
Mit einem Akkuschrauber in höchster Stufe bringe ich das nicht aus dem
Tritt. Die Spuren A und B liegen an PC0 und PC1. Ich kann in die
Auswerteroutine über einen Timer jede 1/1000 Sekunde springen oder aber
Pin Change Interrupt. Das geht genauso gut. Allerdings muss eine kurze
Pause nach der Auswertung vor dem RETI rein. Aber 50 µS reichen.
In Assembler keine 200 Bytes. Ich brauche fünf Speicher (Register)
Holger
Rolf M. schrieb:> Hmm, ich weiß nicht, welche im Waldorf Blofeld verbaut sind. Dessen> Drehgeber sind bekannt für Fehlfunktionen. Da ist die Welle eingefettet,> um schön leichtgängig zu sein. Leider läuft das Fett mit der Zeit auf> die Kontakte und stört diese.
Könnte sich aber mit Kontaktspray reinigen lassen, meine ich. Die alten
Geräte scheinen aber wirklich allesamt besser zu sein. Ich konnte
letzterdings einen antesten und bin begeistert. Technik aus den 1990er
Jahren, die noch tadellos funktioniert. Das gilt auch für die Konkurrenz
von E-mu. Wobei der Händer die Drehgeber wahrscheinlich alle mal
gesäubert hat.
Leider ist die Technik unerschwinglich geworden. In der Bucht wird
gerade ein Waldorf Q Rack für sage und schreibe fast 1.700,00 gehandelt.
Und das für einen 16 Stimmen-Klangerzeuger. Unfassbar.
Holger D. schrieb:> Ich habe nichts außer die internen Pull-Ups.
Versuche mal heraus zu finden, wie viel Strom die Kontakte der Drehgeber
mindestens haben wollen. Wenn es dazu keine Angabe gibt, liegt man mit
1-2 mA meist auf der sicheren Seite.
Wenn der Strom zu gering ist, bildet sich (je nach Material) eine Oxid
Schicht auf den Kontakten, die nach einigen Jahren zu Fehlfunktionen
führt.
Das Stichwort dazu ist: Wetting Current