Hallo zusammen,
mit meinem ersten Beitrag hier muss ich mit einem kuriosen Problem eure Hilfe ersuchen.
Zur Vorgeschichte: Die letzten zwei Jahre habe ich mich, nach langer Mikrocontroller-Abstinenz mal an das Thema Arduino herangetastet und für mich als Retro-Computer-Freak versucht, den Traum eines Input-Adapters zum Betrieb von USB-Eingabegeräten an alten Computern zu verwirklichen. Bis auf ein paar Kleinigkeiten bei der Implementierung ist auch alles fertig und ich wollte zeitnah den Buggy-Prototype-Launch mit einem Open Source Release auf Github (bereits passiert), einem Youtube-Video (kommt bald) und Versendung von zwei Exemplaren an reichweitenstarke Retro-Youtuber (Ein Teil der Idee und des Codes stammt von Adrian Black, er sollte auch eines bekommen) feiern.
Hier könnt ihr euch das Projekt mal angucken:
Nun habe ich zwei weitere Exemplare nachgebaut und diese funktionieren nicht so, wie meine Ursprungsversion.
Die Ur-Version basiert auf einem Elegoo Klon des Mega2560 R3, der aber, so wie ich sehe, dem 1:1 das Layout des offiziellen Arduino hat. Einige andere Modelle haben ja leicht andere Layouts. Dazu ein USB Host Shield und eine ziemlich große Platine für das Retro-Computer-IO.
Um Probleme zu vermeiden (manche Mega-Klone sind mechanisch etwas anders, der USB Port und der Barrel Jack sind minimal versetzt), bin ich wieder auf die Elegoo-Plattform gegangen, mein altes USB Host Shield war aber nicht mehr lieferbar. Die zwei nun verwendeten Exemplare haben eines von Roboterbausatz verbaut.
Zudem ist mir ja die Eigenheit der USB Host Shields bekannt, die Lötbrücken entsprechend schließen zu müssen (im Roboterbausatz Shop sieht man ja auch, wo, aber bei den gelieferten Shields sind sie, wir bei meinem damaligen von Amazon) offen und müssen selbst gebrückt werden - erledigt.
So und jetzt wird es wild:
- Neues Gerät am Laptop-USB: Läuft!
- Neues Gerät mit externem Netzteil, mit dem mein Ur-Gerät funktioniert: Läuft nicht (beim Ur-Gerät geht es)
- Neues Gerät mit USB-Charger am Typ-B Stecker des Arduinos: Läuft auch nicht
- Neues Gerät am Laptop-USB: Läuft so lange, bis ich zusätzlich am Barrel Jack das externe Netzteil anschließe, das Ur-Gerät läuft unbeeindruckt weiter.
Das externe Netzteil ist auf 7,5V Positive Center, Negative Sleeve eingestellt, da ich mir habe sagen lassen, dass die Erkennungsschwelle für den Komparator, der zwischen Barrel Jack und nachgeschaltetem Schaltregler und Arduino-Spannungsversorgung umschaltet, eine Erkennungsschwelle bei 7V hat, bis 12 möglich wäre, aber den Schaltregler stark belasten würde. Und da ich komischerweise (ich habe null Erfahrung mit Platinendesign, aber meine elektrotechnischen Kenntnisse sagen mir, von der Verschaltung her dürfte das nicht passieren) über den Joystick- und Tastatur-Port parasitäre 5V bekomme, die den Arduino ohne USB oder Barrel Jack Power in einen nicht funktionierenden Halbschlaf versetzen, muss ich das Ding auf USB oder Netzteil zwingen können.
Weiteres Debugging:
- Das Retro-I/O-Shield, von mir auch liebevoll "Three-Headed Monkey" genannt, abgezogen und nur mit USB Host Shield probiert - das Gleiche
- Also mal ganz "back to the roots", USB Host Shield abgezogen, Hello World Schleife laufen lassen - läuft, ob mit oder ohne Netzteil
- USB Host Shield wieder drauf, Hello World Schleife läuft immer noch mit und ohne Netzteil
- Jetzt mal nach besonderem Verhalten gesucht, da "läuft nicht" auf einem Gerät, das primär von Eingaben des USB Host Shields lebt, doch ziemlich diffus ist, und siehe da: Der Handshake für die AT-Tastatur und die serielle Maus funktionieren (Arduino gibt korrekte Antworten und das
PC-BIOS und der Maustreiber sind glücklich), es kommen nur keine Eingaben über USB rein, wenn der Arduino per externem Netzteil betrieben wird - interessanterweise halt sowohl Barrel Jack wie auch USB, während die USB-Versorgung vom PC dankend angenommen wird.
Mit andern Worten, während in meinem Ur-Gerät bzw. konkret das Ur-USB Host Shield problemlos läuft (egal mit welcher Spannungsquelle), zeigen beide neuen Geräte das gleiche diffuse Problem, dass die USB-Eingabegeräte bei eingestecktem Netzteil nicht laufen, und zwar unabhängig ob im Gesamtkunstwerk inkl. meiner selbstgebauten Platine oder Standalone, nur Arduino mit Host Shield.
Das Host Shield ist wie gesagt korrekt gesetzt, was die 3.3V und 5V Lötbrücken angeht, so wie auf meinem funktionierenden Ur-Gerät gemäß Anleitung, die ich damals gefunden habe, und so auch auf den Bildern auf Roboterbausatz zu sehen USB Host Shield für Arduino | Roboter-Bausatz.de (3.3V offen, 5V gesetzt am USB-Port und 3.3V und 5V beide gesetzt an der Pfostenleiste unten links).
Kennt irgendwer von euch dieses oder ein ähnlich gelagertes Problem und idealerweise auch gleich die Lösung?
Danke und viele Grüße
Volker