Natürlich habe ich meine PC nicht nur zur „Arbeit“ benutzt. Ab und an musste auch schonmal das ein oder andere Spiel her. Um das richtige Feeling zu erhalten hatte ich eine ganze Sammlung von Peripheriegeräten wie Joystick, Lenkrad, GamePad oder auch ein spezieller Controller, der wie eine Modelflugzeugsteuerung aufgebaut ist.
Leider haben aber Joystick und Modellflugcontroller ziemlich früh ihren Dienst quittiert. Seltsamerweise war das Fehlerbild bei beiden genau das selbe. Schaute man sich die Positionen der einzelnen Achsen über den PC an, sprangen diese zufällig umher. Als hätten die Potentiometer keinen richtigen Kontakt mehr und lieferten falsche Werte.
Da ich ein bisschen Zeit übrig hatte und ich die Geräte auch nicht einfach so wegschmeißen wollte, habe ich die zwei Eingabegeräte zerlegt. Selbst wenn man sie nicht hätte repariere können, bringt es doch einiges an Erfahrung.
Fehleranalyse des defekten Joystick
Das Erste was ich natürlich mittels eines Multimeters überprüft habe, waren die Potentiometer selbst. Hier kamen aber saubere Werte heraus. Alles andere wäre auch sehr ungewöhnlich gewesen. Denn das ein Potentiometer irgendwann mal defekt ist, liegt auf der Hand. Im Inneren schleift ein Metallkontakt über eine Kohleschicht. Verschleiß ist somit vorprogrammiert. Das jedoch alle Potentiometer zur gleichen Zeit den selben Fehler haben, wäre schon sehr abwegig.
Tja, so sehr man sich freut, dass die Potentiometer nicht defekt sind, desto schlechter ist das für die weitere Fehlersuche. Denn von den Potentiometer geht es direkt weiter auf die Platine mit dem Mikrocontroller. Und ohne Schaltplan ist die Platine mit Mikrocontroller fast schon als Blackbox zu sehen. Was man noch recht einfach messen kann, ist die Versorgungsspannung für die Potentiometer. Diese war allerdings auch in Ordnung. Da die Leiterbahnen von den Anschlussdrähten der Potis direkt zum Mikrocontroller verlaufen, vermute ich, dass der ADC-Wandler im Controller verbaut ist. Der Fehler also in der Hardware des Mikrocontrollers liegt bzw. das Programm hier möglicherweise geplant streikt. Ich schreibe hier „geplant“, denn genau das selbe Symptom konnte ich auch bei einigen anderen Controller, teils auch bei Freunden feststellen.
Nun gut, defekt ist defekt. Egal wie!
Wiederbelebungsversuch
Den verbauten Mikrocontroller zu debuggen ist sehr aufwändig. Denn dazu bräuchte ich zumindest das Original-Programm, die entsprechende Hardware und womöglich auch eine genaue Dokumentation. Bei einem Massenprodukt aus China natürlich alles fast unmöglich zu bekommen.
Umsetzung
Somit stand meine Entscheidung fest. Ich versuche selbst einen Mikrocontroller entsprechend zu programmieren und in die Geräte zu integrieren. Meine Wahl fiel natürlich auf den Arduino. Hier war auch schnell die passende Bibliothek gefunden, damit der Arduino an einem PC als Joystick fungiert. Also musste ich lediglich noch die Verdrahtung entsprechend abändern, den Arduino im Gehäuse befestigen und über die Analogeingänge des Arduinos die Spannungen der Potentiometer für die Achsen einlesen. Die Werte werden noch für den PC passend skaliert und über die Bibliothek als Joystick-Achse zurückgemeldet.
Voila, die beiden Controller funktionierten wieder wie am ersten Tag 🙂
Reparierter Joystick
Das Resultat ist hier zu sehen:

Leider war die Zugentlastung etwas problematisch. Denn der breite Micro-USB-Stecker passte nicht durch die Werksseitige „Zugentlastung“ und auch nicht durch eine entsprechende Kabelverschraubung. Also musste ich den Micro-USB-Stecker leider etwas „abschnitzen“ und die Zugentlastung über die Knoten-Variante lösen …