Drehimpulsgeber, Endlospoti für Arduino/Teensy

Ich habe jetzt endlich, auch mit eurer tatkräftigen Unterstützung hier, meinen MIDI Hardware Controller fertig gebaut.

Aktuell habe ich u.A. 8 Drehpotis verbaut, 10KOhm, mit 6mm Achs-Ø ins Gehäuse montiert, um MIDI Befehle zu versenden.
MIDI Befehle werden in einer Breite von 0 bis 127 versendet.
Wenn ich also einen Poti drehe, verändere ich in einem Softwaresynthesizer bestimmte Parameter, als Beispiel nehme ich hier mal eine Hüllkurve.
Alles funzt soweit sehr gut.

Das Problem ist, wenn ich die Hüllkurve mit meinem Poti zum ersten Mal anspreche, springt sie im Softwaresynthesizer natürlich auf den Wert, den das Poti aus seiner aktuellen Stellung heraus ausgibt.
Das bedeutet, dass die Hüllkurve unter Umständen einen grossen Sprung macht, einen kleinen aber auf jeden Fall.
Dies möchte ich vermeiden.

Soweit ich weiss, kann man das mit Endlos-Potis, vermutlich heissen sie auch Drehimpulsgeber, erreichen.
In meinen Hardwaresynthesizern werden sie oft verbaut. Mit einer Rasterung und wohl auch Logarithmisch.

Jetzt die konkreten Fragen:
Wie heissen diese Potis tatsächlich?
Wo kann ich sie kaufen?
Auf welche Werte muss ich für Arduino/Teensy und eben für MIDI achten?

Grüsse aus Kopenhagen
Axel Munshine

Richtig, die heißen Drehimpulsgeber oder Rotary Encoder. Die haben ein ganz bestimmtes Bitmuster (Gray-Code).

Je billiger sie sind, um so mehr prellen sie und auch der Rastpunkt liegt oft nicht genau.

Zum Auslesen gibt es viele Möglichkeiten z.B. hier oder hier.

Gruß Tommy

Hallo
Wenn ich das richtig verstanden habe fehlt dir eigendlich eine Funktion die nach den Start langsam vom momentanen Werte auf den Eingelesen wert hochlauft

Pots geben eine analoge Spannung aus
Endlos Potis kenn ich nur insofern als das die keinen mechanischen Anschlag haben und dann einfach wieder bei Null anfangen.

Drehimpuls Geber geben Impulse aus , die muss man letztlich zahlen um auf einen Wert zu kommen.

Stichwort Drehimpuls Geber oder Encoder Wiki

Heinz

@Tommy56

Vielen Dank.
Sehr geil, gleich mit den Sketchen.

Jetzt könnte ich mir diesen hier vorstellen:

https://www.reichelt.de/drehimpulsegeber-20-impulse-20-rastungen-vertikal-stec11b13-p73916.html?&trstct=pol_4

Sind jetzt nicht gerade günstig...

Rasterung muss nicht sehr genau sein.

Wäre sowas richtig?

Ich kenne das konkrete Modell nicht, das musst Du ausprobieren, ob der für Deine Zwecke ausreicht.

Wir hatten hier im Forum mal einen sehr guten Encoder (so um die 15€), aber da steht leider kein Typ drauf. Evtl. kann sich noch jemand an den genauen Typ erinnern.

Edit: Doch noch gefunden und der Thread dazu.

Gruß Tommy

@Rentner

Nein, dass mit dem langsam Anfange löst mein Problem nicht.
Denn der Sprung in der Hüllkurve wird ja durch die Befehlsausgabe des Potis mit dem Wert seiner Stellung trotzdem ausgelöst...

Aber trotzdem Danke...

@Tommy56

Danke für den Link, aber das wäre jetzt doch etwas überdimensioniert... :wink: :slight_smile:

Hallo,

da wirst Du Deinen Code komplett umschreiben müssen, machbar ist das damit schon. Bei 8 Geber benötigst Du dann allerdings 16 Digitaleingänge, Ein UNO hat 14, wobei man glaube ich die analogen auch als Dgitale Eingänge benutzen kann.

Wie liesst Du denn jetzt Deine 8 Analogingänge ein ? Mit einem Multiplexer ?

Heinz

Ja, zurzeit verwende ich einen Multiplexer.

Da ich ja einen Teensy anstelle eines Arduino verwende, also den "Grossen" kleinen Bruder, wegen eben seiner MIDI Schnittstelle on Board, habe ich aber auch 33 Digitale Eingänge zur verfügung...

AxelMunshine:
Soweit ich weiss, kann man das mit Endlos-Potis, vermutlich heissen sie auch Drehimpulsgeber, erreichen.

Das geht nur, wenn Du den Wert aus dem Softwaresynthesizer in den Arduino als Anfangswert bekommst.

Um auf die Idee von Heinz einzugehen: Wenn Du den Wert aus dem Softwaresynthesizer in den Arduino einlesen kannst, dann kannst Du diesen langsam an den des Potis angleichen und vermeidest dadurch einen Sprung. Eine, wie ich finde, überlegenswerte Idee.

@agmue

Das ist sogar eine sehr gute Idee...

Mein Teensy kann auch MIDI-Werte lesen!

Da werde ich wohl mal ganz explicit nach Sketches suchen müssen, die sich mit dem Problem auseinandersetzen...