Das ist die Fortsetzung vom 1. Teil, bei dem es darum ging, einen neuen Midi-Controller zu bauen. sagen wir mal so: Es ist nicht ganz so einfach, wie ich mir das seinerzeit vorgestellt hatte. Größte Baustelle sind derzeit die Jogwheels. Ursache dafür ist, daß ich möglichst keine Spezialteile verwenden will. Wenn mal etwas kaputt geht, will ich es schnell austauschen können. Erste Idee war es, einen Drehwertgeber (“Rotary Encoder”) zu verwenden. Aus einer Zeit eher hemmungsloser Bestellungen beim Pollin habe ich noch einen Rutsch dieser Teile
Panasonic EVEQDBRL416B. Die Encoder sind gerastert. Für die Verwendung eines Jogwheels ist das denkbar ungeeignet. Erste Untersuchungen haben dann auch fix ergeben, daß nichts aus der Idee wird, die Rasterung irgendwie mechanisch zu entfernen.
Ich hatte ja schon mal einen Scratch-Controller gebaut, der auf der optischen Abtastung mittels Mouse-Sensor basiert. Das Prinzip hat noch ein paar Schwächen, aber mit etwas Gehirnakrobatik schien das die nächst sinnvolle Variante. Dieses mal wollte ich von Beginn an etwas richtig solides bauen, also habe ich noch einmal versucht, die Kontur des Sensors und der Optik auf Cyber-Art zu erfassen. Beim Sensor handelt es sich um das Model ADNS-5020. Feld- Wald- Wiesenteil, dass in ziemlich jeder Office-Mouse verbaut ist. einfache Verfügbarkeit ist also garantiert.
Versuche mit unterschiedlichen Materialien zur Verhinderung der Schattenbildung beim Einscannen sind eher negativ verlaufen. Am Ende war es dann so ein hyperflauschiges (enorm gut riechendes) Mädchen-T-Shirt, das zu brauchbaren Ergebnissen führte.
mit Inkscape nachbearbeitet, Ausgedruckt, nachgemessen, nochmal ausgedruckt, nochmal nachgemessen, nochmal ausgedruckt kam zumindest schon mal der Halter für die Optik bei raus.
Die Verarbeitung der Midi-Signale, Debounce, USB, Blahblah mache ich dieses mal nicht selbst, sondern habe mir das OpenDeck gegönnt. Der Preis von ca. 200€ scheint mir in Anbetracht des eingesparten Ärgers und der Zeit mehr als angemessen. Und ja: für 200 Euro bekomme ich einen FERTIGEN Midi Controller. Jajaja. Darum geht es doch doch schon lange nicht mehr.
Das OpenDeck kann von sich aus die klassischen Drehwertgeber auswerten. Das ist für später sicherlich angenehm, für die Auswertung eines optischen Mouse-Sensors reicht das aber nicht. Deswegen ist noch ein Arduino zwischengeschaltet, der aus der Bewegung des Sensors ein entsprechendes Signal erzeugt und per Transistor-Schaltung an das OpenDeck weitergibt. Wir emulieren quasi einen Drehwertgeber.
Das Ergebnis war mittelmäßig bescheiden. Es stellt sich heraus, dass es bei den optischen Sensoren ein Feature gibt, dass landläufig als “Acceleration” bezeichnet wird. Müsst Ihr mal drauf achten: Bei langsamen Bewegungen der Maus bewegt sich der Mauszeiger anteilig mehr, als er es bei schnelleren Bewegungen der Maus macht. (Isso – hab’s nachgemessen. ) Im Internet findet man unterschiedliche Abhandlungen zu dem Thema. Beim hier verwendeten ADNS-5020 lässt sich das jedenfalls nicht abschalten. Bei der Verwendung in einem Jog-Wheel würde dieses Feature zu dem berüchtigten “Sticker Drift” führen: wenn man das Jog-Wheel einmal hin- und wieder zurückbewegt, ist man hinterher nicht mehr an derselben Stelle, weil man die Bewegung nicht sauber per Software auswerten kann.
Ein Sensor, bei dem das Problem nicht auftreten soll, ist der ADNS-3050. Den findet man zum Beispiel auch für schmales Geld in der Redimp Gaming Mouse (deren Äußeres und Preis sich in den letzten Tagen auch bereits wieder verändert haben).
Persönlich bin ich ja eher der archaische Typ: Tastatur auschließlich Cherry G83 (das Sturmgewehr des Bürohengstes) und als Maus verwende ich schon ewig die Logitech Office-Standard-Maus für 7,xy Euro. Kein Schnickschnack oder 100-Tasten-Supergamer-Teil. Wenn man dann zum ersten Mal so ein spezialisiertes Ding in der Hand hält, merkt man schon, dass das gar nicht mal sooo schlecht ist.
Zum Auseinanderschlachten fast zu schade. Es kamen kurz Zweifel, ob ich das wirklich machen soll. Aber nur kurz.
Ja natürlich habe ich bei Amazon für ~10€ eine Gaming-Maus gekauft und sie sofort auseinander gebaut. Was denkst Du denn?
Den Sensor ausgebaut und flugs auf ein Stück Platine geschustert.
Ein auf den Schreibtisch gespanntes Lineal dient als Testrig, um festzustellen, wie stark eine eventuell künstlich eingebrachte Beschleunigung (“Acceleration”, siehe oben) mir hier die Tour vermasselt.
Das Ergebnis war wieder bescheiden, aber eventuell lässt isch hier in der Software etwas machen – das Datenblatt lässt genug Spielraum. In der Zwischenzeit habe ich aus lauter Ungeduld erstmal eine Konstruktion zusammengebaut, um mal irgend etwas drehbares zu haben. Nebenbei ist dann auch eine neue Konstruktion für die Halterung bei herausgekommen. Das Jog-Wheel wird jetzt durch zwei Kugellager gehalten, die sich um eine feste Achse bewegen,
Die ausgedruckten Halterungen hatten mit ziemlichem Warping zu kämpfen. Eine leichte Zugabe exothermer Energie hat das aber geklärt.
Ich kürze hier mal ab: Das Ergebnis war wieder nicht so der Bringer. Auch mit unterschiedlichen Färbungen ließ sich kein verlässlicher Abgriff erreichen: Das Jog-Wheel soll mindestens 3 Umdrehungen hin- und zurück gedreht werden und anschließend dieselbe Position ausgeben wie zu Beginn. Das wird mit dieser Konstruktion jedenfalls nichts. Das Thema ‘Acceleration’ habe ich auch nicht in den Griff bekommen. Wildes Fuzzing mit den Registern des Sensors hat genau gar keine Auswirkungen auf irgendetwas gehabt. Verdammt.
Nächster Anlauf: optischer Abgriff per Lichtschranke. Als ich seinerzeit den Numark DJ2Go auseinander gebaut hatte ist mir aufgefallen, dass die Jog-Wheels dort per Lichtschranke abgegriffen werden. Einen Versuch ist es allemal wert.
Die Konstruktion empfinde ich als massivst gelungen. Unter Berücksichtigung der Tatsache, dass mein Drucker alles andere als optimal eingestellt ist, ist es quasi unmöglich “präzise” Teile zu fertigen. Da muss man den Kram schon so entwerfen, dass man die Ungenauigkeiten für sich nutzt. Die Scheibe wird durch den Ring gehalten. Der ist nach dem Druck einfach aufgeschnitten worden und kann so in der Größe verändert werden (weil er frisch ausgedruckt -natürlich- nicht passte).
Lässig, oder?
Eine Platine mit einer Infrarot-LED als Sender und zwei entsprechenden Empfänger-Dioden bildet die Grundlage für den nächsten Versuch.
Unerschiedliche Versuche, die Optik gangbar zu machen, waren durch die Bank weg eher semi-erfolgreich.
Zu Beginn klappt natürlich erstmal gar nichts, aber mit etwas Forschung hat sich recht schnell gezeigt, dass man nur den Abstand zwischen Dioden und Reflektor halbwegs passig hinbekommen muss.
Und Stück für Stück wächst eine ganz schön solide Konstruktion daraus
Die Schaltung ist mittlerweile auf eine “echte” Platine gewandert, die sich auch darum kümmert, einen kapazitiven Berührungssensor darzustellen. Ursprünglich wollte ich das per NE555 erledigen, aber in meiner Basterlkiste fand sich trotz absoluter Sicherheit keiner mehr. Dafür hatte ich 12 Stück ATTiny85 herumliegen. Nun gut, dann eben so.
Die Perspektive täuscht. Die LEDs befinden sich satt unter der Scheibe.
Über die elektrische Verbindung zum Erkennen einer Berührung muss nochmal nachgedacht werden, aber für’s Erste wird es reichen.
So hunterprozentig isses noch nicht, aber ich weiß jetzt, dass es wichtig ist, die Optik präzise gegen die Scheibe auszurichten. Da wird es demnächst einen Mechanismus geben, um das zu trimmen. Eyh, das wird.