Jump to content

Encoder Verständlissproblem


JuSchu
 Share

Recommended Posts

Kukuk,

ich bin gerade dabei mir wieder ein bisschen Basiswissen über Elektronik überhaupt anzueignen, um dann später mal hier eins von den Projekten in Angriff nehmen zu können.

Da ich ne BCR hab will ich da keine normalen Potis verwenden, weil ich mich nicht mehr an Parametersprünge gewöhnen will/kann. Will die Encoder dann auch mehrfach belegen. Komme also um Encoder nicht drumherum.

Ich komme aber gerade nicht auf die Funktionsweise der Encoder klar. Genauer gesagt auf die Anzahl der Impulse pro Umdrehung.

Ich hab mitgekriegt, dass die meisten hier verwendeten wohl 24 Impulse pro Umdrehung haben. Sinn und Zweck ist es ja am Ende mit denen dann Midi zu senden. Midi hat aber nun mal 128 Schritte. Wenn man es nicht besser weiß (wie ich) erscheint es einem erst mal was unlogisch.

Ich hab schon von dieser Funktion gelesen, die Torsten programmiert hat, das bei schnellen Drehungen einfach mehr Midisprünge pro Impuls gesendet werden. Das würde dieses Problem zwar lösen und ist sowieso sehr praktisch, aber mir geht es eher darum die Funktionsweise zu verstehen.

Ich hab da schon so ne Theorie:

Auf bildern von geöffneten Encodern hab ich gesehen, dass da ein Ring mit einem Raster ist, über den mehrere Schleifer laufen. Kann es sein, dass diese Schleifer JE 24 Impulse pro Umdrehung senden aber alle immer Phasenverschoben ihren Impuls senden. Dadurch würde sich die 24 ja um die Anzahl Schleifer vervielfachen.

Ist das zufällig so, liege ich da komplett falsch, oder hab ich da ne Idee, die ich schnell als Patent anmelden sollte 8)

Ich frage mich vor allem, wie die das dann bei der BCR gelößt haben. Die hat massig Encoder für nen kleinen Preis.

Ich hab ihn zwar noch nie verwendet, aber die haben meine ich sogar einen Modus für eine noch höhere Auflösung.

Da würde es ja schon fast Sinn machen ne BCR zu kaufen, nur um sie zu schlachten.

Link to comment
Share on other sites

Ist deine Frage also, wie in MIOS die Encoderbeschleunigung realisiert wird?

Dies funktioniert, wie du schon angedeutet hast, über die Funktion MIOS_ENC_SPEEDSET:

http://ucapps.de/cmios_fun.html#MIOS_ENC_SpeedSet

Mit ihr kann die Encodergeschwindigkeit eingestellt werden. Verwendest du MIOS__ENC_SPEED_FAST, so wird soweit ich weiß die Zeit zwischen zwei Ticks gemessen und anhand dieser ein Beschleunigungsfaktor angewendet.

Das Ganze ist also programmiert und wird vom PIC errechnet, und beim BCR wird es wohl auch so ähnlich laufen.

Link to comment
Share on other sites

...Ist deine Frage also, wie in MIOS die Encoderbeschleunigung realisiert wird?...
nee. hab mir eigentlich schon gedacht, dass es genau so funktioniert. halt mit ner zeitmessung zwischen den impulsen. ich frag mich eher, wie es ohne diese funktion geht

...beim BCR wird es wohl auch so ähnlich laufen.

die bcr hat das nämlich definitiv nicht. hab es gerade extra nochmal probiert. der led-ring "dreht" sich immer mit der gleichen geschwindigkeit, wie man den regler dreht.

dabei sind auch feineinstellungen möglich. man könnte den regler gaaaanz langsam von 0 bis 127 drehen und kriegt bei allen paar winkelgrad impulse.

also muss die auflösung da schon hardware-seitig gelößt worden sein. bei dem preis von dem ding frag ich mich nur wie.

hab das gerade mal grob gemessen und ausgerechnet:

man braucht ca. 400° umdrehung für 128 Impulse/Midiwerte. Das macht 3,125° pro Impuls. Also hat man 115,2 Impulse pro Umdrehung :o

meine rechnung: 360°/(400°/128)

wenn ich mir die preise von den encodern angucke, die schon eine viel kleinere auflösung haben, frag ich mich echt, wie da der preis zustande kommt. ok...die haben ne serien-produktion und behringer ist nicht gerade für high-quality bekannt. aber ich meine das ist da schon was krass.

wenn ich nach encodern über froogle, bei conrad oder sonst wo suche, gibts da ja nicht mal welche in annäherd der auflösung.

Link to comment
Share on other sites

nee. hab mir eigentlich schon gedacht, dass es genau so funktioniert. halt mit ner zeitmessung zwischen den impulsen. ich frag mich eher, wie es ohne diese funktion geht

Die Geschwindigkeitsmessung wird MIOS-Intern vorgenommen, ist assembleroptimiert, und funktioniert mit bis zu 64 encodern gleichzeitig (unabhaengig voneinander). Fuer jeden einzelnen Encoder zaehlt MIOS die Scanzyklen (*) zwischen den Flanken, skaliert den Zaehlerwert runter und uebergibt sie der Applikation als Inkrementer.

(*) Encoderpins werden jede mS gescannt.

Ich hab da schon so ne Theorie:

Auf bildern von geöffneten Encodern hab ich gesehen, dass da ein Ring mit einem Raster ist, über den mehrere Schleifer laufen. Kann es sein, dass diese Schleifer JE 24 Impulse pro Umdrehung senden aber alle immer Phasenverschoben ihren Impuls senden. Dadurch würde sich die 24 ja um die Anzahl Schleifer vervielfachen.

Ist das zufällig so, liege ich da komplett falsch, oder hab ich da ne Idee, die ich schnell als Patent anmelden sollte 8)

Ich bin mir nicht sicher, ob dies nicht meiner Idee entspricht, die ich vor 8 Jahren hatte, und in die MIDIbox firmwares eingebaut habe (wer weiss, wer die bisher schon alles geklaut hat ;))

Bei ungerasterten Encodern kann man die Impulse meist verdoppeln oder gar vervierfachen, wenn man nur schnell genug scannt, und mit jeder erkannten Flanke inkrementiert. Der entspr. Encoder-type heisst "MIOS_ENC_MODE_NON_DETENTED", und die Vervierfachung der Aufloesung funktioniert auch mit billigen 0.25 Cent Encodern aus China ;-)

Diese Waveforms sollen das Prinzip der Vervierfachung verdeutlichen:

mios_encoder_modes.gif

Gruss, Thorsten.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...