Drehimpulsgeber

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo

    ich würde gern ein Projekt ausprobieren, bei dem ich mehrere Drehimpulsgeber an meinen Raspi anschließe.
    Leider gibt es zu diesem Thema nicht allzu viel, aber hier hab ich trotzdem was gefunden.
    Jetzt hab ich mal nach günstigen Drehimpulsgebern gesucht und bin hier fündig geworden.

    Leider kann ich mit den Specs nicht soviel anfangen. Ich meine, wenn ich einen Schaltkreis mit Dioden parallel und in Reihe schalte, weiß ich mittlerweile, wie ich mit Widerstand, Stromstärke und Spannung zu rechnen habe, aber das Datenblatt von dem Teil sagt mir nicht so viel. Kann ich den verlinkten Drehimpulsgeber verwenden, um das verlinkte Beispiel nachzubauen?

    Noch eine andere Frage: Angenommen ich will viiiele dieser Drehimpulsgeber an meinen Raspi anschließen. Also mehr, als GPIOs vorhanden. Geht das mit einem Port-Expander, oder funktioniert das nur, wenn man GPIO als Output betreibt? Wenn ja, wie geht das mit den Interrupts? Also, angenommen ich habe zwei Drehimpulsgeber, Knöpfe, etc. über einen Port-Expander am gleichen GPIO-Pin hängen - funktionieren dann die Interrupts dann überhaupt noch?

    LG

    sancho

    Einmal editiert, zuletzt von kohaerenzstift (24. September 2015 um 13:34)

  • Hallo sancho,

    der Drehimpulsgeber hat im Prinzip 2 Schalter, die beim Drehen in einer bestimmten Reihenfolge geschlossen und wieder geöffnet werden. Wie Schalter/Taster am RasPi angeschlossen werden, ist hier im Forum oft beschrieben. Stichwort Pull-Up-Widerstand. Wichtig ist dann noch die Auflösung, sprich Anzahl der Schritte pro Umdrehung. Aber das wäre softwareseitig anzupassen.

    Gruß
    Rob

    Einmal editiert, zuletzt von rob.z (24. September 2015 um 14:30)

  • Wir haben für unseren Bausatz DispSw einen Drehimpulsgeber verwendet. https://raspiprojekt.de/kaufen/shop/ba…tz-disp-sw.html
    Den Bausatz musst du nicht kaufen (kannst du aber), aber wir haben unten in der Detailansicht ein ausführliches Handbuch dazu zum downloaden. Im Handbuch findest Du links zur Demosoftware, da kannst du ja mal schauen.

  • Ich habe vor einiger Zeit mal eine Lösung zur Entprellung vorgestellt: Drehimpulsgeber / Inkrementalgeber entprellen
    Ich verwende diese und bin damit sehr zufrieden: https://www.reichelt.de/STEC11B13/3/in…&SEARCH=stec11b

    Der von Dir verlinkte ist "OT", also "ohne Taster". Nicht dass Du versehentlich den falschen bestellst. Letztlich funktionieren wahrscheinlich auch die günstigen aus China. Ob es da Qualitätsunterschiede gibt, kann ich nicht beurteilen. Ich verwende nur die von mir oben verlinkten. Von denen kann ich sagen, dass sie einwandfrei funktionieren.

    Zu Deiner anderen Frage kann ich nichts hilfreiches sagen.


  • @ kohaerenzstift,

    man könnte die Encoder auch parallel schalten, die Frage wäre nur ob dies sinnvoll ist. Vielleicht kannst Du dein Vorhaben mal genauer beschreiben, was z.B. mit so vielen Dreh-Encoder vor hast.

    Wie ich in diesem Thread schon geschrieben habe, geht es um das Senden von MIDI-Daten.

    Ich will den Raspi quasi zu einem MIDI-Controller machen, mit diversen Drehimpulsgebern um unterschiedliche MIDI-Parameter steuern zu können.
    Das Ganze ist noch nicht wirklich ausgegoren, aber vom Prinzip soll es so gehen:

    Die einzelnen Regler und evtl. auch Buttons hängen via GPIO am Raspi. Der wertet die einkommenden Signale aus und schickt sie in irgendeinem selbstgestrickten Protokoll (Beispiel: "Increase Controller 42, Kanal 13" o.ä.) wahrscheinlich wahrscheinlich via UDP an meine Workstation (natürlich nur über das lokale Netzwerk).
    Auf dieser läuft ein entsprechender Server, der die Nachrichten entgegennimmt, in MIDI-Signale übersetzt und zu Bitwig rüberschiebt und so verschiedene Instrumente ansteuert.

    Wenn das alles mal halbwegs funktioniert, will ich evtl noch einen Touchscreen an den Raspi ranhängen, um entsprechend komfortabel den einzelnen Reglern verschiedene MIDI-Parameter zuweisen zu können.

    Und wenn selbst das mal funktioniert, will ich sehen wie es in die andere Richtung geht. Sprich: Von der Workstation Taktsignale empfangen um Raspi-seitig evtl einen kleinen Step-Sequencer zu realisieren ...

    Vom Prinzip her ist das machbar, denke ich, mal sehen wie weit ich komme in meiner Freizeit :D


  • Bei Drehreglern würde ich auf richtige Potis setzen, die wissen wissen wenigstens wo sie grad stehen. Am Pi ist das nur mit AD/DA Wandler zu bewerkstelligen da der Pi keine analogen Eingänge hat (immer noch nicht!)

    Nein, Potis will ich ja grad nicht. Angenommen ich will mit irgendeinem Regler die Filter-Cutoff-Frequenz steuern, und die steht grad auf 55. Will soll denn jetzt der Raspi das wissen? Wenn ich jetzt Potentiometer verwende, und der steht grad auf volle Pulle, und ich dreh das Ding runter, dann springt die Frequenz ja von 55 auf 127. Das will ich ja mit Drehimpulsgebern explizit vermeiden!

  • Drehimpulsregler sind für Deine Anwendung genau das richtige. Mit dem MCP23017 hast Du 16 GPIOs am I²C und kannst 8 Stück gleichzeitig ansprechen(mehr gibt die Adressierung nicht her). Damit könntest Du schon mal ohne großen Aufwand 64 Regler anschließen. Willst du welche mit Drucktaster verwenden (z.B. zum Quittieren) hast Du immer noch 42 Regler, die Du anschließen kannst.
    Viel problematischer sehe ich Deine Übertragungswege. Per LAN hast Du dermaßen Verzögerungen drin, dass Du keinen Spaß haben wirst. Soll doch beinahe Echtzeitsein, oder? Da wäre eigentlich eine Bus besser. Bitwig unterstützt doch bestimmt ein paar Schnittstellen!

    EDIT: Da hab ich doch tatsächlich 12 Minuten gebraucht, und dann war dbv schneller!

  • Hallo Sancho,

    Du kannst auch eine andere Logik einsetzen:

    Wie kann die Filter-Cutoff-Frequenz auf 55 stehen, wenn der Poti beispielsweise auf Anschlag steht? Wenn Dein Programm es wo will, dann gelten die Einstellungen der einzelnen Potentiometer für die einzelnen Parameter des MIDI-Controllers.

    Und davon (den Parametern) kannst Du über Port-Expander MCP23017 (I2C) oder MCP23S17 (SPI) über Kaskadierung nahezu beliebig viele miteinander verbinden und Deine Port-Anzahl unermesslich steigern... ohne dass sonderlich viele GPIO-Ports belegt werden müssten.


    Beste Grüße

    Andreas

    EDIT: Und ich habe noch länger gebraucht als dbv und rapiprojekt und Kohärenzstift - und schon hat sich die Welt um 180 ° gedreht. Aber egal...

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (24. September 2015 um 16:16)


  • Ich habe vor einiger Zeit mal eine Lösung zur Entprellung vorgestellt: Drehimpulsgeber / Inkrementalgeber entprellen
    Ich verwende diese und bin damit sehr zufrieden: https://www.reichelt.de/STEC11B13/3/in…&SEARCH=stec11b

    Der von Dir verlinkte ist "OT", also "ohne Taster". Nicht dass Du versehentlich den falschen bestellst. Letztlich funktionieren wahrscheinlich auch die günstigen aus China. Ob es da Qualitätsunterschiede gibt, kann ich nicht beurteilen. Ich verwende nur die von mir oben verlinkten. Von denen kann ich sagen, dass sie einwandfrei funktionieren.

    Zu Deiner anderen Frage kann ich nichts hilfreiches sagen.

    Aber prinzipiell könnte ich den anderen Drehimpulsgeber schon verwenden?
    Der von dir verlinkte ist teurer .. auf der anderen Seite, über die Sache mit dem Taster hab ich noch gar nicht richtig nachgedacht. Der hat also nicht 2 sondern drei Kontakte, und ich kann quasi nicht nur rechts links drehen, sondern auch draufdrücken, und so eine Flanke erzeugen?

    Klingt sehr reizvoll. Man könnte das ganze so stricken, dass wenn man den Taster betätigt, der Regler von einem Parameter auf einen anderen wechselt. Bei so einer Lösung käme ich evtl. sogar mit weniger Reglern aus ...

    Und nochmal zum Thema Port-Expander: Könnt ihr mir einen bestimmten empfehlen, mit dem ich die Interrupt-Problematik in den Griff bekomme?


  • Drehimpulsregler sind für Deine Anwendung genau das richtige. Mit dem MCP23017 hast Du 16 GPIOs am I²C und kannst 8 Stück gleichzeitig ansprechen(mehr gibt die Adressierung nicht her). Damit könntest Du schon mal ohne großen Aufwand 64 Regler anschließen. Willst du welche mit Drucktaster verwenden (z.B. zum Quittieren) hast Du immer noch 42 Regler, die Du anschließen kannst.

    Und wenn ich damit zwei Regler an einen GPIO-Port hänge, bekomme ich es trotzdem hin, dass beide einen Interrupt auslösen, ja?


    Viel problematischer sehe ich Deine Übertragungswege. Per LAN hast Du dermaßen Verzögerungen drin, dass Du keinen Spaß haben wirst. Soll doch beinahe Echtzeitsein, oder?

    Ja, ich weiß muss ich mal schauen, welche Performanz ich damit hinbekomme. Deswegen will ich die Kommunikation zwischen Raspi und Workstation ja auch über irgend ein ganz simples UDP-Protokoll abfackeln ...
    Unter anderem auch deswegen weiß ich ja auch nicht, ob das mit dem Step-Sequencer wirklich realistisch ist ...


    Da wäre eigentlich eine Bus besser. Bitwig unterstützt doch bestimmt ein paar Schnittstellen!

    Nur MIDI.

    Einmal editiert, zuletzt von kohaerenzstift (24. September 2015 um 17:00)

  • Ich würde mir an deiner Stelle einfach eine alte USB Tastatur besorgen und die Elektronik daraus ausschlachten. Dann kann man an diese Elektronik seine Tasten u. Drehencoder oder was auch immer quasi als Eingabegerät an die Ex-Tastaturmatrix an den RPi anschließen. Das hätte viele Vorteile, würde aber nur funktionieren, wenn keine weitere Tastatur am RPi hängt. Wenn Du jetzt z.B. einen Drehencoder angeschlossen hättest, würde z.B. bei einer Linksdrehung abab, beim Drehen nach rechts baba und beim Drücken des Buttons c an den RPi gesendet werden. Diese Taststureingaben müsste man dann in einem Script auswerten und die entsprechenden Befehle hinterlegen.


  • Das ist ganz schön kompliziert. Midi hat doch ein Protokoll, eigentlich könnte das genutzt werden.

    Man könnte das Ganze sicherlich auch als GUI programmieren. Ich finde den Lösungsansatz eine alte Tastatur zu nutzen, relativ einfach. Die Hardware funktioniert quasi "Out of the Box". Keine Probleme mit Entprellen von Tasten, Interrupts, Bus o. Timingproblemen, es werden keine GPIO's benötigt, man kann z.B. noch das USB Kabel ohne Probleme verlängern usw.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!