Arduino Mega, USB Host Shield und externes Netzteil - Kurioses Problem

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

So ganz werde ich aus der Beschreibung nicht schlau, aber ich könnte mir vorstellen, daß der on-board Regler der Klone zu schwach ist, um die Shields zu versorgen. Bitte 5V Spannung nachmessen!

Danke, aber wäre leider zu einfach :wink:

Die 5V ist absolut stabil und schwankt auch nicht beim einstecken und ausstecken des Netzteils während der Arduino auf USB läuft, und liefert auch perfekte 5V ohne USB-Verbindung nur über den Netzteilanschluss. Also ich würde 4,98V bis 5,02V je nachdem, wie viel Last ich drauf lege (Bei mehr Last eher sogar höher, weil der Regler gegenregelt, nehme ich an) als sehr stabil bezeichnen.

Ich verstehe das Problem ja auch nicht, sonst könnte ich es auch besser und knackiger beschreiben - Aber die Essenz bleibt irgendwie USB Host Shield macht nichts, wenn Stromversorgung extern. Ergibt halt nur keinen Sinn.

Welches Netzteil hast Du wo angeschlossen?

TL;DR

Zeig mal den Schaltplan und ne einfache Zusammenfassung des Problems

@uwefed ich verwende ein Ansmann-Netzteil (Standardware aus dem Geiz-ist-Geil-Markt) mit 12W (1A bei 12V, mehr A bei weniger V), ein Universal-Netzteil bei dem der passende Rundstecker auf Center Positive gepolt ist und die Spannung derzeit auf 7,5V steht. Das Board hat ja nur 2 Anschlüsse, USB und Netzteil - und in letzteres kommt das Netzteil.

@paulpaulson viel Schaltplan gibt es da nicht, da das Problem schon ohne meine eigene Platine auftritt. Ich weiß nicht, ob es helfen würde, "USB Host Shield sitzt auf Arduino Mega" zu zeichnen. Dazu kommt noch ein USB-Kabel zum Rechner und das erwähnte Netzteil.

Das USB Host Shield habe ich ja schon verlinkt von Roboterbausatz. Das alte, das neue und das abgebildete sind 100% identisch, außer dass auf keinem der alten oder neuen gelieferten ein Keyes-Schriftzug drauf ist und dass die beiden neuen eine andere Bauform des quadratischen Käfers in der Mitte haben (mein altes und das abgebildete Shield hat einen mit SMD-Beinchen und die neuen gelieferten haben unten liegende Lötpads). Die Lötbrücken habe ich gemäß Anleitung von Defective Arduino USB Host Shield Boards (esp8266-notes.blogspot.com) gesetzt.

Noch mal versucht, knapp zu umschreiben, was los ist:

  • Arduino mit einem simplen Sketch wie einer Endlosschleife "Hello World" - Läuft, egal, ob nur per USB mit dem Rechner verbunden oder ob noch das Netzteil drin steckt
  • Mit aufgestecktem USB Host Shield läuft auch Hello World weiter durch, ob mit oder ohne zusätzlichem Netzteil
  • Spiele ich nun meinen Sketch auf, der USB-Eingaben über die Serial-Konsole ausgibt, bekomme ich über die serielle Konsole angezeigt, dass ich die angeschlossene Tastatur/Maus bediene. Schließe ich nun das Netzteil an, läuft die alte Kombo, die neuen beiden steigen aus.
  • Ob es ohne USB nur mit Netzteil läuft, kann ich, weil mir dann ja die serielle Konsole über USB fehlt, nur an Indizien überprüfen, hier muss ich dann meine Eigenbau-Platine (die am zuvor behobenen Verhalten nichts ändert) dazu stecken. Denn darüber kann ich dann meine Retro-Computer anschließen, beispielsweise über Tastatur (Indikator: BIOS schmeißt keinen Keyboard Error, AT-Tastatur-Handshake läuft also) oder die serielle Schnittstelle (Indikator: Maustreiber lädt und erkennt das Gerät je nach Schalterstellung als 2-Tasten Microsoft oder 3-Tasten Logitech Maus). Nur von den USB-Eingabegeräten kommt nichts, was weitergegeben werden könnte. Der Arduino scheint also zu arbeiten, aber vom USB Host Shield kommt nichts. Bei beiden neuen, aber nicht beim Alten, das funktioniert unabhängig von der Versorgung einwandfrei.

Du tust Dir keinen Gefallen!
Im Mikrocontrollerforum bist Du nicht weiter und hier wird es nicht besser.

Das Shield unterscheidet sich wohl von Deinem früheren. Finde den Unterschied.
Und bleibe im MC-Forum, das hier wird nichts. Du wurdest drüben schon nach Fotos gefragt. Mache ich nicht mehr, weil ich es für nicht sinnvoll erachte.

Das ist eine falsche Denkweise.
Nimm ein USB-Kabel und trenne die 5V Leitung.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.