Ich habe mir bei Reichelt Drehencoder angesehen und zwei verschiedene Typen vorgefunden: Es gibt solche mit 20/20 / 24/24 Rastung und solche mit 15/30. Sehe ich das korrekt, dass ich bei den 24/24 jedesmal einen Puls bekomme und bei den anderen nur jeden zweiten? Ich habe die Datenblätter gelesen, werden aber daraus nicht schlau. Beide Typen scheinen einen AB-Ausgang zu haben. Wie kann man sich das Vorstellen, 15 Punkt bei 30 Rastungen zu haben?
@ Frank (Gast) >Sehe ich das korrekt, dass ich bei den 24/24 jedesmal einen Puls bekomme >und bei den anderen nur jeden zweiten? Ja. >Wie kann man sich das Vorstellen, 15 Punkt bei 30 Rastungen zu haben? Siehe Drehgeber
Mir ist Folgendes nicht klar: > Zudem entsteht so haptische Übereinstimmung zwischen der Anzahl > der gefühlten Rastungen und dem Fortschreiten des zu bedienenden > Prozesses Warum ist das bei der halben Zahl der Pulse je Rastung so? Sind das die technisch besseren Drehgeber? Sie sind ja teuer.(?)
Frank schrieb: > Warum ist das bei der halben Zahl der Pulse je Rastung so? Es ist die doppelte Zahl der Impulse pro Rastpunkt. Das muss softwaremässig dann noch halbiert werden. Wie im Artikel beschrieben. >Sie sind ja teuer Die sind deshalb teuerer, weil sie aufwändiger gebaut sind. Für einen sicheren Betrieb sind die aber die Richtigen!
@ Gerald Hellinghaus (freiburger) >>Sie sind ja teuer >Die sind deshalb teuerer, weil sie aufwändiger gebaut sind. Für einen >sicheren Betrieb sind die aber die Richtigen! Wenn die Hersteller ein bisschen mitdenken würden und die Rastpunkte in die Mitte der Codewechsel legen würden, dann käme man problemlos mit der Hälfte der Rastungen aus. Da die Chinesen aber oft kopieren ohne zu kapieren, haben die meisten Drehgeber halt doppelt sowiele Rastungen und zu allem Übel noch genau auf einem Codewechsel. Siehe Artikel. MfG Falk
Die Frage ist, welcher Encoder gemeint ist. Der Artikel beschreibt die halbe Zahl von Rastungen gegenüber den Impulsen und der Reichelt-Encoder macht es wohl anders herum. Ich dachte eigentlich, ich hätte die Encoder-Technik verstanden zumal ich es schon verwendet habe. Nur ohne Rastung. Oder hatte ich die richtigen encoder? Sollte man die Rastung nicht generell weglassen?
Falk Brunner schrieb: > dann käme man problemlos mit der > > Hälfte der Rastungen aus. du meinst "mit der vollen Zahl der Rastungen" (statt der doppelten). Um ehrlich zu sein, war mir auch nie klar, warum man ein doppelte Rasterung braucht. Eigentlich braucht man es gar nicht - höchstens, damit sich der Steller bei Erschütterungen nicht verschiebt. Die auf den Motoren montierten haben ja auch keine. Sie brauchen keine und dürfen keine haben. Gibt es denn keine solchen Steller mit Rastung in Zwischenpositionen?
G. H. schrieb: > Gibt es denn keine solchen Steller mit Rastung in Zwischenpositionen? Meines Wissens nicht. Mit etwas Verarbeitung geht es aber in der Regel recht gut.
Im Prinzip würde ein Phasenwechsel pro Rastung vollkommen ausreichen. Nun sind aber Generationen von Programmierern nicht davon abzubringen, daß sie unbedingt einen externen Interrupt zum Einlesen verwenden wollen. Und je nachdem, ob der Interrupt auf eine oder beide Flanken reagiert, muß der Drehgeber 2 oder 4 Phasenwechsel pro Rastung ausführen. Und daher müssen sich auch Generationen von Benutzern damit abquälen, daß Drehgeber mit der Zeit immer mehr prellen und die Software Unsinn macht. Jedem Dozenten, der externe Interrupts zum Auswerten mechanischer Kontakte lehrt, müßte man die Zunge abschneiden und die Hände abhacken, damit der Unsinn endlich mal ein Ende hat. Peter
Also, mir sind schon beide Versionen über den Weg gelaufen (siehe Diagramm). Anfangs hatte ich Teile vom Typ Version 1. Bin damals davon ausgegangen, dass das die Norm wäre. Bis ich mal eine Baugruppe aufgebaut habe, die nur auf jede 2. Rastung eine Stufe weiter schaltete. Drehencoder durchgemessen und siehe da, Version 2. Waren alles preiswerte Teile von Pollin/Reichelt. Reinhard
... und dann gibt es noch die Drehgeber, bei denen die Rastungen genau auf den Flanken eines der Signale liegen.
Peter Dannegger schrieb: > Jedem Dozenten, der externe Interrupts zum Auswerten mechanischer > Kontakte lehrt, müßte man die Zunge abschneiden und die Hände abhacken, > damit der Unsinn endlich mal ein Ende hat. "homo radikalis", was? @Reinhard Du würdest also Version 1 bevorzugen?
@ Michael (Gast) >... und dann gibt es noch die Drehgeber, bei denen die Rastungen genau >auf den Flanken eines der Signale liegen. Was auch Mist ist, aber auch dafür gibt es einen Workaround. Siehe http://www.mikrocontroller.net/articles/Drehgeber#Dekoder_f.C3.BCr_Drehgeber_mit_wackeligen_Rastpunkten
Gerald Hellinghaus schrieb: > "homo radikalis", was? Naja, die Drohung würde wohl schon ausreichen, damit sie mal eine Gehirnwindung einsetzen, um das Problem zu erfassen. Ich habe schon 2 Geräte mit schrottiger Encodersoftware. Man kann das gut unterscheiden, ob wirklich der Encoder defekt ist oder die Software grottig. Viele neuere MCs haben ja schon eine Encoderhardware, was wohl einfacher ist, als auf die Vernunft der Programmierer zu warten. Peter
Gerald Hellinghaus schrieb: > @Reinhard > Du würdest also Version 1 bevorzugen? Nöö, ist mir JwH (Jacke wie Hose). Mir ist nur Version 1 zuerst in die Hände gefallen und die meisten Encoder, die ich in den Fingern hatte, waren von diesem Typ. Als die neu gekauften dann plötzlich vom Typ Version 2 waren, habe ich nur die Auswerteroutine angepasst. Mir ist es egal, ich komme mit beiden Versionen klar. Du weißt doch: Kiffen macht gleichgültig! Ist mir doch egal. :-) Reinhard
Kennt jemand hochwertige Drehencoder/ Drehgeber ohne Rastung? Ich möchte Werte sehr weich und leise einstellen und die Auswertung kann ich tolerant genug aufziehen.
Peter Dannegger schrieb: > Im Prinzip würde ein Phasenwechsel pro Rastung vollkommen ausreichen. Was genau verstehst du unter einem "Phasenwechsel"? > Nun sind aber Generationen von Programmierern nicht davon abzubringen, > daß sie unbedingt einen externen Interrupt zum Einlesen verwenden > wollen. Und je nachdem, ob der Interrupt auf eine oder beide Flanken > reagiert, muß der Drehgeber 2 oder 4 Phasenwechsel pro Rastung > ausführen. Ich würde das erstmal pro forma als Quatsch bezeichnen. Allerdings hängt das vielleicht auch von deiner Definition eines "Phasenwechsels" ab. > Jedem Dozenten, der externe Interrupts zum Auswerten mechanischer > Kontakte lehrt, müßte man die Zunge abschneiden und die Hände abhacken, > damit der Unsinn endlich mal ein Ende hat. Das ist definitiv Quatsch. Interrupts lassen sich sehr wohl auch zur sinnvollen Auswertung von Quadraturencodern einsetzen, wenn man es RICHTIG macht. Nämlich so, daß der Interrupt nur genau eins ist: Ein Event, welches anzeigt, daß es jetzt sinnvoll ist, mal wieder den Encoder zu pollen, weil sich wohl irgendwas an seinen Signalen geändert hat. Dazu müssen natürlich beide Signale und beide Flanken dieser Signale überwacht werden. Der Rest der Auswertung passiert allerdings sinnvollerweise genau wie bei einem regulären Polling. Der Vorteil des interupt-initiierten Polling ist, daß der Rechenzeitaufwand für die 99,99999999% der Fälle, bei denen sich am Encoder garnix geändert hat, einfach wegfällt. Der µC kann in dieser Zeit einfach schlafen, sogar sehr tief, weil er keinen Timer am Laufen halten muß, um dieses bescheuert-nutzlose reguläre Polling auszuführen. Vielleicht solltest du darüber mal wirklich nachdenken, bevor du über die passende Bestrafung von Dozenten nachdenkst? Meiner Meinung nach könne überhaupt nur Leute auf so eine schwachsinnige Idee wie das reguläre Polling mechanischer Kontakte kommen, die ohnhin immer ihren µC mit einer ständig laufenden Hauptschleife einheizen. Es gibt echt billigere Wege, um zu einer warmen Wohnung zu kommen...
Ralf schrieb: > Kennt jemand hochwertige Drehencoder/ Drehgeber ohne Rastung? Ja http://www.wachendorff-automation.de/drehgeber_inkremental_vollwelle.html
@ c-hater (Gast) >Das ist definitiv Quatsch. Interrupts lassen sich sehr wohl auch zur >sinnvollen Auswertung von Quadraturencodern einsetzen, wenn man es >RICHTIG macht. Nämlich so, daß der Interrupt nur genau eins ist: Ein >Event, welches anzeigt, daß es jetzt sinnvoll ist, mal wieder den >Encoder zu pollen, weil sich wohl irgendwas an seinen Signalen geändert >hat. Dazu müssen natürlich beide Signale und beide Flanken dieser >Signale überwacht werden. Das ist ein Sonderfall, nicht die Regel. >Polling ist, daß der Rechenzeitaufwand für die 99,99999999% der Fälle, >bei denen sich am Encoder garnix geändert hat, einfach wegfällt. Die meisten uC haben sowieso genug zu tun, da tun 0,x% Rechenzeit mehr oder weniger nicht weh. > Der µC >kann in dieser Zeit einfach schlafen, sogar sehr tief, weil er keinen >Timer am Laufen halten muß, um dieses bescheuert-nutzlose reguläre >Polling auszuführen. Sonderfall.
MarioT schrieb: > September 2011! Die Diskussion ist allerdings ganz offensichtlich immer noch aktuell. Daß der gute Falk sich auch im Jahr 2013 immer noch darauf zurückzieht, daß es angeblich ein Sonderfall ist, wenn man einen µC nicht mit einer dauernd auszuführenden Hauptschleife belastet, zeigt, daß zumindest manche C-ler seit 2011 rein garnix dazugelernt haben...
@ c-hater (Gast) >Daß der gute Falk sich auch im Jahr 2013 immer noch darauf zurückzieht, >daß es angeblich ein Sonderfall ist, wenn man einen µC nicht mit einer >dauernd auszuführenden Hauptschleife belastet, zeigt, daß zumindest >manche C-ler seit 2011 rein garnix dazugelernt haben... Der GRÖPRAZ hat gesprochen! (Größter Programmierer aller Zeiten)
Michael schrieb: > ... und dann gibt es noch die Drehgeber, bei denen die Rastungen genau > auf den Flanken eines der Signale liegen. Nö. Das ist Quatsch. Es liegt immer nur die Flanke eines der beiden Signale auf der Rastung und die Flanken des anderen liegen dazwischen. Man muß nur den richtigen Kontakt zum Erzeugen des Interrupts benutzen und schon lösen sich alle Probleme in Wohlgefallen auf. Nochwas: Peters radikal-kannibalische Ansicht teile ich überhaupt nicht. Bei meinen Geräten erzeugen die Drehgebersignale Interrupts und das funktioniert einwandfrei. Selbst bei rastungslosen Drehgebern ist das kein Problem, da der "Zähl"-Zustand ja nur um 1 sich ändern kann. Ein VER-Zählen ist da generell ausgeschlossen. W.S.
W.S. schrieb: > Man muß nur den richtigen Kontakt zum Erzeugen des Interrupts benutzen Was ist denn das für ein unsäglicher Unsinn? Hat dir Peter noch nicht die Zunge rausgeschnitten ? Hast du den thread gelesen ohne auch nur ein Wort zu verstehen? Oder bist du ein Troll der Streit sucht?
Yup, drölf+x sinnlose Events als Interrupt weil die Dinger prellen sind viel besser als nebenbei in der Hauptschleife immer mal wieder zu schauen was der macht.
W.S. schrieb: > Bei meinen Geräten erzeugen die Drehgebersignale Interrupts und das > funktioniert einwandfrei. Bei mir ebenfalls! Ralf schrieb: > Kennt jemand hochwertige Drehencoder/ Drehgeber ohne Rastung? http://de.farnell.com/bourns/ena1j-b28-l00128l/encoder-optik/dp/9358242 mit 128 Impulsen/Umdrehung, was bei 4-fach Auswertung 512 Positionen/Umdrehung ergibt. Eine passende Auswertung findest Du hier: Beitrag "4-fach Flankenauswertung per Interrupt mit ATmega48/88" Die obere Grenzfrequenz liegt bei 500kHz. Das reicht für ca. 1000 Umdrehungen/s - selbstverständlich alles per Interrupt :-)
Ich habe mal testweise welche von EBAY gekauft. Tragen keine Aufschrift, schauen aber ähnlich denen von BURNS aus. Scheinen Chinanachbauten zu sein. Keine Rasten, laufen sehr weich, man erhält aber nur 24 Pulse / Umdrehung und keine 128 wie bei den BURNS. Als Drehencoder für langsame Bewegungen sehr gut geeignet. >Wachdorff Das sind Inkrementaldehgeber für hohe Auflösungen / Geschwindigkeiten. >Interrupts Ich würde das nur dann mit Interrupts machen, wenn es wirklich darauf ankommt, in wenigen seltenen Fällen zu reagieren und die Kontakte elektrisch entprellt sind. Ansonsten diskreter Filter/Timeout und bei ständiger Aktion des/der Geber eine gefilterte Abtastung.
Jürgen S. schrieb: >>Wachdorff > Das sind Inkrementaldehgeber für hohe Auflösungen / Geschwindigkeiten. Eben. Die können nicht nur hohe Geschwindigkeit, sondern auch niedrige. Was genau ist daran nicht "hochwertig" und "ohne Rastung". Ralf schrieb: > Kennt jemand hochwertige Drehencoder/ Drehgeber ohne Rastung?
Michael schrieb: > Die können nicht nur hohe Geschwindigkeit, sondern auch niedrige. Hast Du auch eine Preisliste zu den Teilen? Dann kann man eher entscheiden, ob man unbedingt diese braucht bzw. bezahlen möchte.
m.n. schrieb: > Hast Du auch eine Preisliste zu den Teilen? Tante Google kennt sich mit soetwas aus. Den WDG40A gibt es z.B. mit 20 .. 1024 Zyklen bei https://www.distrelec.de/inkrementale-drehgeber/wachendorff/wdg-40-a > ..., ob man unbedingt diese braucht bzw. bezahlen möchte. Das muss jeder selber wissen ;-)
Michael schrieb: >> ..., ob man unbedingt diese braucht bzw. bezahlen möchte. > Das muss jeder selber wissen ;-) Wenn man diese braucht, ist der Preis ja noch im Rahmen. Aber für eine manelle Betätigung dürfte allein schon die Montage eine sehr große Hürde darstellen.
m.n. schrieb: > Aber für eine > manelle Betätigung dürfte allein schon die Montage eine sehr große Hürde > darstellen. Ein 6mm-Achse und drei M3-Bohrung in 120°-Anordnung - viel simpler geht es nicht.
Michael schrieb: > Ein 6mm-Achse und drei M3-Bohrung in 120°-Anordnung - viel simpler geht > es nicht. Doch, Einlochmontage wie ein Poti. Da hat man dann nach vorne auch Platz für die Finger :-)
Falk Brunner schrieb: > Der GRÖPRAZ hat gesprochen! > > (Größter Programmierer aller Zeiten) Godwin's law. Wenn einer keine sachlichen Argumente mehr hat, kommt er mit Nazi-Bezügen... Und nein, ich halte mich ganz sicher nicht für den GRÖPRAZ.
MaWin schrieb: > Hat dir Peter noch nicht die Zunge rausgeschnitten ? Ach, wie liebenswürdig. Vielleicht wäre es angebracht, auch dir mal die Ohren lang zu ziehen. Ich verstehe ja, wenn jemand wegen irgendwas ne Wut im Bauch hat und dann wie Osmin sich was vorstellt (erst_ geköpft und _dann gehangen, dann..) zwecks Abreagieren. Sind wir also mal wieder soweit, ja? W.S.
Danke an den Tippgeber m/n allerings sind die minimal ausserhalb des budgets :-)
c-hater schrieb: > Peter Dannegger schrieb: > >> Jedem Dozenten, der externe Interrupts zum Auswerten mechanischer >> Kontakte lehrt, müßte man die Zunge abschneiden und die Hände abhacken, >> damit der Unsinn endlich mal ein Ende hat. > > Das ist definitiv Quatsch. Interrupts lassen sich sehr wohl auch zur > sinnvollen Auswertung von Quadraturencodern einsetzen, wenn man es > RICHTIG macht. Nämlich so, daß der Interrupt nur genau eins ist: Ein > Event, welches anzeigt, daß es jetzt sinnvoll ist, mal wieder den > Encoder zu pollen, Das ist definitiv KEIN Quatsch. Peter sprach von externen Interrupts. Und du sprichst vom Internen Timer. Soweit ich weiß, ist das ein kleiner Unterschied. > > Vielleicht solltest du darüber mal wirklich nachdenken, bevor du über > die passende Bestrafung von Dozenten nachdenkst? Vielleicht solltest du mal verstehen, was andere schreiben, bevor du sie beschimpfst :-)
ich schrieb: > c-hater schrieb: >> Peter Dannegger schrieb: >> >>> Jedem Dozenten, der externe Interrupts zum Auswerten mechanischer >>> Kontakte lehrt, müßte man die Zunge abschneiden und die Hände abhacken, >>> damit der Unsinn endlich mal ein Ende hat. >> >> Das ist definitiv Quatsch. Interrupts lassen sich sehr wohl auch zur >> sinnvollen Auswertung von Quadraturencodern einsetzen, wenn man es >> RICHTIG macht. Nämlich so, daß der Interrupt nur genau eins ist: Ein >> Event, welches anzeigt, daß es jetzt sinnvoll ist, mal wieder den >> Encoder zu pollen, > > Das ist definitiv KEIN Quatsch. Peter sprach von externen Interrupts. > Und du sprichst vom Internen Timer. Soweit ich weiß, ist das ein kleiner > Unterschied. Er spricht auch von externen Interrupts. Trotzdem hat Peter von etwas ganz anderem gesprochen: Der Technik, eine der beiden Spuren auf einen Interrupt zu legen und im Interrupt die andere Spur einlesen und dann anhand derer zu entscheiden, ob und in welche Richtung sich der Encoder gedreht hat. c-haters Vorschlag ist lediglich eine Variante. Denn die eigentliche Auswertung macht er genauso mit regelmässigem Polling. Einziger Unterschied: er stösst das Polling nur dann an, wenn der Encoder mittels Interrupt mitteilt, dass sich was verändert hat. OK, kann man machen. Das ist aber nicht das, was Peter im Sinn hatte.
Okay, dann habe ich das falsch verstanden. Ich dachte, er meint einen Timer, der das Event erzeugt, den Encoder zu pollen. In dem Falle (Interrupt als Anstoß zum Pollen) kann man das so machen. *** Sorry an c-hater! ***
Ralf schrieb: > Danke an den Tippgeber m/n allerings sind die minimal ausserhalb des > budgets :-) Mit kleiner Auflösung werden die Drehgeber billiger. Vielleicht sollte man sie auch nicht in einer Apotheke kaufen :-)
Karl Heinz Buchegger schrieb: > c-haters Vorschlag ist lediglich eine Variante. Denn die eigentliche > Auswertung macht er genauso mit regelmässigem Polling. Einziger > Unterschied: er stösst das Polling nur dann an, wenn der Encoder mittels > Interrupt mitteilt, dass sich was verändert hat. Nein, das ist nicht der Sachverhalt, jedenfalls nicht ganz. Ich stelle mal (etwas vereinfacht) dar, was wirklich passiert: Im Falle allgemeiner Kontakte, die im Gegensatz zu einem Quadraturencoder eine Tiefpaß-Entprellung benötigen, macht die ISR des externen Interrupt folgendes: -Der Timer wird aktiviert (wenn er nicht bereits aktiviert ist, weil andere Jobs anstehen) -Der Jobverwaltung des "Timer-Device" wird ein Job hinzugefügt: "Polle Kontakt(e) 50ms from now" -Der Maximal-Level für den Schlafmodus wird von "PowerDown" auf "Idle" angehoben (oder was immer der niedrigste Modus ist, der dem Job-Timer den Wakeup der MCU erlaubt) Dann geht's erstmal wieder Schlafen, allerdings in den höheren Schlafmodus. Irgendwann triggert der Timer den Poll-Job für die Kontakte. Und in der ISR des Timers erfolgt dann genau 1 Mal ein Polling. Und wenn danach keine anderen Jobs anstehen, zu deren Scheduling der Timer benötigt wird, geht's wieder runter nach "PowerDown". Im Falle "Quadratur-Encoder" allerdings ist die Sachlage anders. Dafür wird bekanntermaßen keine Entprellung im Stil eines Tiefpaß benötigt. Dementsprechend auch kein Timer. Das Polling erfolgt also hier unmittelbar in der ISR des externen Interrupt, allerdings ebenfalls nur genau 1 Mal. Danach (ggf. nach Abarbeitung des "Schritts" den die statemachine erkannt hat) geht's unmittelbar wieder in den PowerDown (oder den höchsten in Folge des Schrittes angeforderten Schlafmodus). ... Mit "regulärem" Polling ist also nicht gemeint, daß es in regelmäßigen Abständen geschieht, sondern nur, daß gepollt wird (egal von wo aus ausgelöst) und daß eine statemachine die Auswertung übernimmt, die letztlich ergibt, ob sich am Kontaktstatus was geändert hat (bei generischen Kontakten) oder ob ein Schritt erfolgt ist (bei Quadraturencodern). Logischerweise müssen sich die statemachines dafür unterscheiden. Und das tun sie auch. Tatsächlich gibt es sogar drei davon, die für generische Kontakte zerfällt nämlich noch in direkt erreichbare Kontakte und Kontakte, die als Matrix organisiert sind. Die Kontaktmatrix ist dann auch das einzige, wo wirklich etwas in regelmäßigen Abständen passiert. Nämlich genau ein Zyklus für die Abfrage der "aktiven" Dimension der Matrix als Reaktion auf ein per Int bemerktes Wackeln irgendwo in der Matrix.
Danke für deinen Beitrag! Endlich sind wir wieder auf ner sachlichen Ebene, ohne Zunge abschneiden und Hände abhacken. Tja, man sieht immer wieder die gleichen Forenteilnehmer, die ins Unsachliche abgleiten und vormals sinnvolle Diskussionen totbrüllen. Ja, das ist ja gerade das Schöne an diesen 2 versetzten Signalen bei Drehgebern, daß sich das dabei ergebende Resultat eben nur um genau 1 Bit beim Prellen ändern kann. Damit sind grobe Fehler von haus aus ausgeschlossen - wenn man eben MIT externen Interrupts arbeitet. Wer solche Signale langsam pollt, weil er glaubt, da in den Signalfolgen was entprellen zu müssen, der hat schlechtere Karten. Bei dem werden vom System nämlich schnellere Drehbewegungen quasi verschluckt und es kommt zu Fehlzuständen. Genau deswegen liegt z.B. Peter heftig daneben. Peter Dannegger schrieb: > Nun sind aber Generationen von Programmierern nicht davon abzubringen, > daß sie unbedingt einen externen Interrupt zum Einlesen verwenden > wollen. Wie gesagt, diese Generationen von Programmierern liegen prinzipiell richtig - allerdings würde ich mit Peter übereinstimmen darin, daß die sinnvolle Auswertung derartiger Interrupts vermutlich von vielen Programmierern nicht beherrscht wird. Der Umstand, daß tausende von Benutzern dieses Forums Peters Entprell-Routinen benutzen, wohl weil sie diese benötigen (da sie es selber nicht können), spricht Bände. Noch ein Wort zu den "Drehencoder"-Cores, die sich in neueren NXP-Controllern finden: Die sind eigentlich NICHT gemacht für irgendwelche Knöpfe mit oder ohne Rastung an der Frontplatte von Geräten. Die sind Teil von Motorsteuer-Cores und gedacht für Update-Raten von einigen kHz und mehr, also für Encoder, sie sich auf Maschinenwellen befinden. Beispiel: die Hall-Encoder von Austria Microsystems mit 1000 bis 4000 Schritten pro Feldumpolung. Ein Magnet dafür: ("http://www.ams.com/eng/Products/Magnetic-Position-Sensors/Magnets/AS5000-MR10-128") - natürlich kann man sowas auch für ne feinfühlige Abstimmung des LO am heimischen Selbstbau-Transceiver benutzen, wenn man alle geliefeten Werte durch 1000 teilt... W.S.
m.n. schrieb: > Mit kleiner Auflösung werden die Drehgeber billiger. Michael schrieb: > Den WDG40A gibt es z.B. mit 20 .. 1024 Zyklen bei > https://www.distrelec.de/inkrementale-drehgeber/wachendorff/wdg-40-a 20 Pulse WDG40A-20-ABN-H05-K2 151 € 1024 Pulse WDG40A-1024-ABN-H05-K2 151 € So der ganz große Preisunterschied ist da nicht zu sehen ;-)
Mr. X schrieb: > So der ganz große Preisunterschied ist da nicht zu sehen ;-) Augen waschen! Der obige Link von MIR zeigt auf einen Encoder mit 128 Schritten zu 40,76. Vom selben Verein kostet ein Drehgeber mit 64 Schritten 26,08. Bei halber Auflösung ist er somit 36% billiger.
@ W.S. (Gast) >Ja, das ist ja gerade das Schöne an diesen 2 versetzten Signalen bei >Drehgebern, daß sich das dabei ergebende Resultat eben nur um genau 1 >Bit beim Prellen ändern kann. Richtig. > Damit sind grobe Fehler von haus aus >ausgeschlossen Nein, nur minimiert. >- wenn man eben MIT externen Interrupts arbeitet. Nö. >Wer solche Signale langsam pollt, weil er glaubt, da in den Signalfolgen >was entprellen zu müssen, der hat schlechtere Karten. Bei dem werden vom >System nämlich schnellere Drehbewegungen quasi verschluckt und es kommt >zu Fehlzuständen. Genau deswegen liegt z.B. Peter heftig daneben. Falsch. DU liegt daneben. Warum das so ist, steht im Artikel Drehgeber. Mehr kann und will ich dazu nicht mehr sagen. Denn auch der schnellste Prozessor ist irgendwann am Anschlag, und wenn man dann schneller dreht gehen Schritte verloren. Egal ob per Polling im Timer-Interrupt oder mit externem Interrupt. >> Nun sind aber Generationen von Programmierern nicht davon abzubringen, >> daß sie unbedingt einen externen Interrupt zum Einlesen verwenden >> wollen. >Wie gesagt, diese Generationen von Programmierern liegen prinzipiell >richtig - Weil du das sagst? >Programmierern nicht beherrscht wird. Der Umstand, daß tausende von >Benutzern dieses Forums Peters Entprell-Routinen benutzen, wohl weil sie >diese benötigen (da sie es selber nicht können), spricht Bände. So ein Käse. Sie nutzen sie, weil sie einfach gut funktioniert. Das Rad ständig neu zu erfinden ist nicht sinnvoll. Oder schreibst du deinen C-Compiler selber? >Geräten. Die sind Teil von Motorsteuer-Cores und gedacht für >Update-Raten von einigen kHz und mehr, also für Encoder, sie sich auf >Maschinenwellen befinden. Und? Die können genauso langsame Encoder auswerten.
c-hater schrieb: > Im Falle "Quadratur-Encoder" allerdings ist die Sachlage anders. Dafür > wird bekanntermaßen keine Entprellung im Stil eines Tiefpaß benötigt. Ist aber mitunter hilfreich. > Dementsprechend auch kein Timer. Das Polling erfolgt also hier > unmittelbar in der ISR des externen Interrupt, allerdings ebenfalls nur > genau 1 Mal. Wie wird der interrupt nach Deiner Beschreibung erzeugt? So, wie ich es verstehe, ist dies hier ein externer Interrupt, der auf irgendwelche Änderungen an den AB-Kontakten reagiert und eine Auswerteroutine anstösst. Dies würde implizieren, dass das Prellen jedesmal einen Interrupt auslöst, weil kein Timer verwendet wird, um zu filtern. Oder habe ich etwas überlesen? Bei mir setzt(e) ein Interrupt immer einen Timer zurück, der den INT physisch maskiert, bzw dessen Bearbeitung logisch unterdrückt und damit das Entprellen eliminiert. Was auch machbar ist (sich aber nur für schnelle Winkelauswertungen lohnt): 2 Interrupts für A und B, die sich gegenseitig freigeben. Damit wird das Entprellen aktiv überwunden und gleichsam - da keine willkürliche zeitliche Abtastung mitsamt Delay vorliegt - eine maximale Koheränz zwischen Prozessorzeit und Geberzeit realisiert, die es gestattet, die Beschleunigung der Bewegung recht genau zu messen. > Die Kontaktmatrix ist dann auch das einzige, wo wirklich etwas in > regelmäßigen Abständen passiert. Nämlich genau ein Zyklus für die > Abfrage der "aktiven" Dimension der Matrix als Reaktion auf ein per Int > bemerktes Wackeln irgendwo in der Matrix. Wo siehts Du hier einen "regelmässige Zeitabstand"? Was ist damit gemeint?
Kleine Korrektur: Jürgen Schuhmacher schrieb: > das Entprellen eliminiert. gemeint war selbverständlich, dass die Wirkung des Prellens eliminiert (oder sagen wir "unterdrückt") wird. Jedesmal einen INT auszuführen, halte ich nicht für zielführend. Solche Schalter prellen mehre Dutzend male, wenn sie alt und schmutzig sind. Da kommt selbst eine gute Entprellschaltung manchmal kaum mit. Ich habe einige EMU Klangerzeuger daheim, die alle unter der Krankhet leiden. Ein Dreh und das Programm springt bis zu 15 Nummern vor.
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.