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
:
Verschoben durch Admin
Bau einen auseinander und verbiege die Schleifer bis sie nur noch über den Kontakten "schweben".
Ich würde einfach einen billigen kaufen und eine Weile mit dem Akkuschrauber durchorgeln.
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.
so richtig miese Dinger gabs mal bei Pollin. Die scheinen aber ausverkauft zu sein.
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
Vielleicht ein Stereo-Poti per ADC einlesen und die LSB(s) auswerten?
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.
Also das waren diese hier. https://www.amazon.de/gp/product/B0085I4D5C/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&psc=1 Hab ich jetzt aber noch nicht so viel benutzt,aber wie gesagt ohne Kondensatoren und Widerstände, mit irgend so einer Arduino library keine Funktion.
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.
:
Bearbeitet durch User
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... ;-)
:
Bearbeitet durch Moderator
MaWin schrieb: > 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. 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.
Bei Aliexpress einen bestellen. Das meiste an Elektronik von da ist doch immer kaputt.
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
MaWin schrieb: > Oder an:
1 | A -++- |
2 | B --+- |
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
:
Bearbeitet durch User
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
Hier ist ein unschlagbares Angebot zum Testen von Auswerteroutinen ;-) https://www.pollin.de/p/sort-encoder-inkrementalgeber-drehimpulsgeber-800513
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.