Forum: Mikrocontroller und Digitale Elektronik Arduino Mega, USB Host Shield und externes Netzteil - Kurioses Problem


von Volker (dark_lord)


Lesenswert?

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: 
https://github.com/RetroFuturisticEngineer/RetroARDUInput

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 Gehäuse. 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 
https://www.roboter-bausatz.de/p/usb-host-shield-fuer-arduino (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

von Thomas Z. (usbman)


Lesenswert?

Schaltpläne, Layouts, Bilder und dafür weniger blabla
Weniger Denglisch hilft auch...

von Stefan F. (Gast)


Lesenswert?

Vielleicht leide ich heute unter mangelhafter Aufmerksamkeitsspanne. 
Aber ich habe mir den Eröffnungsbeitrag mit 4 Stunden Abstand nun zum 
zweiten mal durchgelesen und trotzdem nicht verstanden, was denn jetzt 
nicht "läuft".

Ich denke, das wichtigste ist hier, das Problem zu beschreiben. Was 
sollte passieren, was passiert stattdessen. Zeige die relevanten 
Baupläne, gerne auch Fotos vom Aufbau sowie Messprotokolle. Zeichne in 
deinen Plan ein, wo du was gemessen hast. Ich denke, dann schaffe ich 
es, dir zu folgen und kann das vermutlich auch helfen.

Also insgesamt mehr Bilder, weniger Text.

Ich würde gerne mal ein Oszilloskop-Bild von deinen 7,5 Volt sehen. Ist 
das Netzteil geerdet? Und mich würde sehr interessieren, ob das alles 
mit Akku statt Netzteil funktioniert.

Volker schrieb:
> bis 12 möglich wäre, aber den Schaltregler stark belasten würde

Seltsam. Da würde mich mal die Begründung interessieren. Aber lass uns 
erst das eigentliche Problem klären.

von Info (Gast)


Lesenswert?

Liegt alles unter seinem Github Link zum lesen bereit.

von Info (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Volker schrieb:
>
>> bis 12 möglich wäre, aber den Schaltregler stark belasten würde
>
> Seltsam. Da würde mich mal die Begründung interessieren.

? Weil der Miniregler sonst am Wärmetot sterben könnte. W = 7V * I

von Stefan F. (Gast)


Lesenswert?

Info schrieb:
>>> bis 12 möglich wäre, aber den Schaltregler stark belasten würde
>> Seltsam. Da würde mich mal die Begründung interessieren.

> Weil der Miniregler sonst am Wärmetot sterben könnte. W = 7V * I

Wohl kaum. Diese Schaltregler haben einen Wirkungsgrad von 80 - 90%.

von Thomas W. (Gast)


Lesenswert?

Volker schrieb:

> 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.
>

Der Text ist fast nicht zu verstehen, die Sprache bei elektronischen 
Problemen ist der Schaltplan (neues Geraet vs. Ur-Geraet). Ich weiss 
nicht, was der "Typ-B Stecker des Arduinos" oder was der Barrel Jack 
(ist das eine Barrel roll?) ist.

Ich wuerde auf Verdacht die Spannungsversorgung bei den Arduino-Boards 
analysieren.

Gruesse

Th.

P.S.: Du hast das Problem ja nicht verstanden (deswegen fragst Du ja). 
Aber (wir Deine Leser) haben Deinen Aufbau nicht vor Augen, wir wissen 
nicht, was Du ausprobiert hast.

Wenn ich ein nicht triviales Problem beschreiben soll/muss, versuche ich 
immer es meinem Plueschpinguin zu erklaeren. Denn dann bin ich 
gezwungen, alles noch einmal mit einfachen Worten zu beschreiben.

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Volker schrieb:
> Hier könnt ihr euch das Projekt mal angucken:
> https://github.com/RetroFuturisticEngineer/RetroARDUInput

Bei IC2 und IC3 fehlen die Abblock-Kondensatoren.

Die Leitungen der Stromversorgung sind viel zu dünn. Außerdem wechseln 
sie mehrfach die Platinenseite. Ich glaube das ist keine gute Idee, 
wegen der Belastbarkeit der Vias fragwürdig.

Eine Leiterbahn endet im Nirvana! Ich habe die Stelle grün eingekreist.

Die LEDs gehören nicht parallel geschaltet, weil 
http://stefanfrings.de/LED/index.html

von Rüdiger B. (rbruns)


Lesenswert?

Wenn du ein USB Messgerät/Tester hast, probier es mal aus:
https://www.ebay.de/itm/195106469059

von Sebastian W. (wangnick)


Lesenswert?

Hat das externe Netzteil deines Laptop einen Stecker mit Kontakt zu 
Schutzerde?

LG, Sebastian

von Thomas W. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Volker schrieb:
>> Hier könnt ihr euch das Projekt mal angucken:
>> https://github.com/RetroFuturisticEngineer/RetroARDUInput
>
> Bei IC2 und IC3 fehlen die Abblock-Kondensatoren.
>
> Die Leitungen der Stromversorgung sind viel zu dünn. Außerdem wechseln
> sie mehrfach die Platinenseite. Ich glaube das ist keine gute Idee,
> wegen der Belastbarkeit der Vias fragwürdig.
>
> Eine Leiterbahn endet im Nirvana! Ich habe die Stelle grün eingekreist.
>
> Die LEDs gehören nicht parallel geschaltet, weil
> http://stefanfrings.de/LED/index.html

Ist ja unglaublich wieviel Muehe Du Dir gemacht hast.

Gruesse

Th.

von Stefan F. (Gast)


Lesenswert?

Die GND Leitungen machen Rundreisen von Pontius nach Pilatus. Ich will 
jetzt hier keinen Vortrag zum Thema Leitungsführung halten, aber mit 
diesem Thema solltest du dich sehr bald intensiv auseinander setzen.

Fange mal mit diesen beiden Artikeln von Lothar an:
http://www.lothar-miller.de/s9y/categories/14-Entkopplung
http://www.lothar-miller.de/s9y/categories/40-Layout-Schaltregler

Was er da geschrieben hat betrifft nicht nur Schaltregler sondern 
prinzipiell jede elektrisch Schaltung.

von Stefan F. (Gast)


Lesenswert?

Thomas W. schrieb:
> Ist ja unglaublich wieviel Muehe Du Dir gemacht hast.

Danke

von Volker (dark_lord)


Lesenswert?

Also ich probiere es noch mal, es ist nur schwierig, ein Problem, das 
man nicht versteht, zu beschreiben.

Im Grunde habe ich einen funktionierenden Arduino, was ja nicht das 
Problem ist. Nur zwei meiner drei USB Host Shields spielen nicht mit. 
Das ist auch völlig unabhängig davon, ob das USB Host Shield oder die 
selbst entworfene Platine draufstecken. Die selbst entworfene Platine 
habe ich mal abgezogen, damit hat sich nichts verändert, also ist sie 
nicht das Problem, wer sich dennoch für die Schaltpläne interessiert, 
das komplette KiCAD Projekt, der Arduino Sketch und das 3D-Druck-Gehäuse 
liegen in Github. Denn außer einem Arduino Mega 2560 Klon von Elegoo und 
einem USB Host Shield zwei verschiedener Hersteller ist hier nichts 
involviert.

Jetzt habe ich "Patient 0" - der läuft einwandfrei und besteht aus einem 
Elegoo Mega2560 und einem USB-Host-Shield, das ich seinerzeit auf Amazon 
gekauft habe und durch intensives Googlen herausgefunden habe, dass man 
drei von vier Lötpads schließen muss, damit das Ding läuft. Und das Ding 
läuft.

Zwei Nachbauten hingegen basieren ebenfalls auf einem zwei Jahre später 
gekauften Elegoo Mega2560 sowie dieses Mal (da das alte USB Host Shield 
auf Amazon nicht mehr verfügbar war) auf Roboterbausatz gekauftes USB 
Host Shields. Diese kamen ebenfalls ohne gesetzte Lötpads, aber die habe 
ich natürlich gemacht.

Als Netzteil verwende ich auf allen dreien dasselbe (nicht "nur" das 
gleiche) einstellbare Ansmann Steckernetzteil mit max. 12W=1A bei 12V 
aus dem Geiz-ist-Geil-Markt, eingestellt auf 7,5V, Center Positiv. Mit 
dem Multimeter gemessen, Spannung ist stabil und so, wie sie sein soll. 
Eurostecker, also keine Erdung. Ob ich meinen Laptop am Netzteil oder im 
Akkubetrieb habe, ändert nichts, und wenn, liefen auch alle an der 
gleichen Steckdosenleiste, ich habe also keine Masseschleife. Auch der 
Spannungsregler vom Arduino arbeitet perfekt, 5V stabil (es schwankt je 
nach angeschlossener Last wie nur USB-Gerät oder USB-Hub zwischen 4,98 
und 5,02, wobei ich das Gefühl habe, mit mehr Last geht es sogar hoch, 
weil der Schaltregler die Last erkennt und mehr Leistung liefert).

Es ist nur das USB Host Shield, das nicht arbeitet. Dass der Arduino 
läuft, sieht man an meinen durchgeführten Tests.
- Nur Arduino, "Hello World" über die USB-Seriell in Endlosschleife: 
Patient 0 und die beiden Nachbauten laufen, über USB und mit 
zugestecktem Netzteil
- Arduino und USB Host Shield, ebenfalls "Hello World", läuft auch 
beides
- Das selbst gebaute Board ändert daran auch nichts
- Das Komplettpaket im Betrieb: Beide Arduinos reagieren auf Handshakes 
und senden beispielsweise Antworten auf den CTS-Low am seriellen UART 
(via MAX232) an den Maustreiber eines angeschlossenen PCs. Aber nur 
Patient 0 nimmt noch Eingaben über USB an, wenn das Netzteil 
angeschlossen ist. Das sieht man auch über Debug-Ausgaben über die 
USB-Seriell, wenn ich das in der Arduino-IDE anzeigen lasse, nur per USB 
kommen bei den beiden Nachbauten Tastatur- und Mausbefehle rein, stecke 
ich das Netzteil dazu, Totenstille auf dem Serial Monitor - außer der 
Retro-PC fragt via Tastatur oder RS232 per 
Handshake/Host-to-Device-Kommunikation was an, das wird angezeigt und 
bearbeitet. Das gilt sowohl für "USB+Netzteil" (da kann ich es per 
Konsole überwachen) wie auch für "nur Netzteil" wo ich halt eben nur 
daraus, dass z.B. der Maustreiber am angeschlossenen PC richtig lädt, 
schließen kann, dass der Arduino arbeitet und nur das USB Host Shield 
keinen Input weitergibt.

Der Basistest ist immer ein billiges Wireless Maus/Tastatur Kit (also 
der Dongle davon) von Logitech, aber auch andere Mäuse und Tastaturen, 
die an Patient 0 laufen, wollen nicht. Die sind aber alle eigentlich 
recht gutmütig und laufen immer.

Das legt ja eigentlich nahe, dass es am Host Shield selbst (zwei kaputte 
glaube ich nicht) liegt, aber es macht für mich trotzdem keinen Sinn. 
Wie gesagt, Lötbrücken am Host Shield sind gesetzt, so wie es auch auf 
dem Produktfoto von Roboterbausatz zu sehen ist (aber selbst gemacht, da 
ohne die Brücken ausgeliefert).

Das mit der Spannung ist halt das, was ich gelesen habe: Ab 7V schaltet 
der Arduino auf externe Spannung um und verwendet den eingebauten 
Schaltregler, um daraus 5V zu machen, 12V verträgt er zwar, muss aber 
mehr Spannung abführen und wird dadurch heißer - klingt erst mal 
nachvollziehbar, wenn auch nicht 100% schlüssig (eigentlich macht ja 
Strom "klein, schwarz und hässlich" und der müsste bei mehr Spannung und 
gleicher Leistung ja niedriger sein), ihr dürft mich aber gerne 
korrigieren. Und da sich irgendwo parasitäre Spannungen einspeisen, wenn 
ich einen Rechner per analogem Joystickport (die 5V-Pins gehen 
eigentlich nur an den DS18030-100 an den Poti-Eingang, macht also keinen 
Sinn) oder Tastaturport (5V geht parallel zu einem 10k 
Pulldown-Widerstand gen Masse an einen GPIO-Pin des Arduinos) anschließe 
und der Arduino angeht, aber nicht genug Saft hat, zu laufen, muss ich 
ihn definitiv dazu bewegen, über Netzteil zu laufen, deshalb und wegen 
der Warnung vor Überhitzung bei 12V die 7,5V. Das wäre jetzt noch das 
Sahnehäubchen für die Schaltplan-Tüftler, aber nicht mein Hauptproblem.

von Volker (dark_lord)


Lesenswert?

Und da während ich geschrieben habe noch Antworten kamen, danke 
insbesondere an Stefan.

Werde das wohl bei künftigen Boardrevisionen (das ist Autoroute, da es 
meine erste Platine überhaupt ist, mehrfach neu durchgeführt und dabei 
evtl. wohl auch das kleine Leiterbahn-Stück vergessen zu löschen) 
beherzigen und vor allem größere Ground-Ebenen und Spannungsleitungen 
einplanen, das hatte ich mir eh vorgenommen. Die LEDs sind bei einem 
Testkandidaten abgeklemmt und wie gesagt, dass das Host Shield nicht 
funktioniert, sobald ein Netzteil steckt, lässt sich auch ohne die 
Platine huckepack erkennen. Es liegt also zu 99,99% nicht an meinem 
layouterischen Verbrechen.

von Stefan F. (Gast)


Lesenswert?

Volker schrieb:
> Also ich probiere es noch mal

Schon wieder nur viel Text, keine Bilder. Das tue ich mir nicht erneut 
an, sorry.

von Thomas W. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Volker schrieb:
>> Also ich probiere es noch mal
>
> Schon wieder nur viel Text, keine Bilder. Das tue ich mir nicht erneut
> an, sorry.

+1

Tut mir leid.

Th.

von Thomas Z. (usbman)


Lesenswert?

um es kurz zu machen:
deine Brücken sind falsch.
- Hast du überhaupt mal nachgeschaut was diese Brücken machen?
- Hast du schon mal nach Unterschieden deiner neuen Shields und dem 
alten Schield geschaut?
- Welche Brücken hast du denn geschlossen?

Noch ein Hinweis: statt von Bildern zu faseln könntest du auch Links 
setzen oder diese gleich hier zeigen.

Deinen ganzen Text könnte man ja darauf reduzieren:
altes Shield läuft - neue Shields laufen nicht. Zeigt mir was falsch ist

von Stefan F. (Gast)


Lesenswert?

Volker schrieb:
> Es liegt also zu 99,99% nicht an meinem Layout

Was nicht heißt, dass das Layout der Chinesischen "Kunstwerke" besser 
ist. Abgesehen davon: Es gab ja noch mehr Hinweise und Rückfragen.

von Info (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Info schrieb:
>>>> bis 12 möglich wäre, aber den Schaltregler stark belasten würde
>>> Seltsam. Da würde mich mal die Begründung interessieren.
>
>> Weil der Miniregler sonst am Wärmetot sterben könnte. W = 7V * I
>
> Wohl kaum. Diese Schaltregler haben einen Wirkungsgrad von 80 - 90%.

Auf den Arduinoboards sitzen keine Schaltregler sondern Linearregler. 
Für die Dinger sind 7,5-9V Ue optimal. Man sollte noch nie größere/viele 
Verbraucher über das Board versorgen.

von Test (Gast)


Lesenswert?

Volker schrieb:
> Lötbrücken am Host Shield sind gesetzt, so wie es auch auf dem
> Produktfoto von Roboterbausatz zu sehen ist (aber selbst gemacht, da
> ohne die Brücken ausgeliefert).

Ohne da jetzt deine Schaltpläne studiert zu haben, aber kann das 
Produktfoto vielleicht von deinem Board abweichen?

Welche Spannung liegt an VBUS an? Sollten 5V sein. Die 3,3V für das USB 
Host Shield liegen auch an?

Anstelle ewigen Beschreibungen würde ich mal alle Spannungsversorgungen 
messen. Mach nur dein Steckernetzteil dran und dann mist du ab dem 
Stecker alles durch was in dem Pfad liegt bis du deine 3,3V und 5V für 
den betrieb des Host Shield an VBUS und IC Power pin hast.

Läuft das USB Host Shield ohne am Arduino zu hängen wenn du es mit 3,3V 
versorgst?

von Sebastian W. (wangnick)


Angehängte Dateien:

Lesenswert?

Volker schrieb:
> - Das Komplettpaket im Betrieb: Beide Arduinos reagieren auf Handshakes
> und senden beispielsweise Antworten auf den CTS-Low am seriellen UART
> (via MAX232) an den Maustreiber eines angeschlossenen PCs.

Welche serielle UART via MAX232? Wie genau sieht dieser Aufbau aus? Aus 
der Beschreibung werd ich nicht schlau ...

Und von welchen Lötbrücken auf den USB-Host-Shields redest du? Kringel 
mal auf dem Bild ein -- oder besser noch mach ein Bild von deinem 
Aufbau ...

LG, Sebastian

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Info schrieb:
> Auf den Arduinoboards sitzen keine Schaltregler sondern Linearregler.

Aber er hat geschrieben dass sein Board einen Schaltregler hat. 
Vielleicht hat er so ein Board: 
https://www.keyestudio.com/new-keyestudio-super-mega-2560-r3-advanced-5v-2a-mp2307dn-sop-8-usb-cable-for-arduino-mega-p0046.html

Da er auf viele Rückfragen nicht eingegangen ist und die Details geheim 
hält, soll er sich halt selbst helfen.

von Volker (dark_lord)


Lesenswert?

Okay, Leute, ihr hattet euren Spaß, das Aufnahmeritual, den Neuling im 
Forum ständig nach einem Schaltplan für "USB Host Shield steckt auf 
Arduino" zu fragen, hat sich totgelaufen.

@Sebastian: Das USB Host Shield von Roboterbausatz hatte ich ja bereits 
verlinkt. https://www.roboter-bausatz.de/p/usb-host-shield-fuer-arduino
Vergleich zum alten Shield von vor 2 Jahren von Amazon, den neuen beiden 
und dem Bild - außer, dass auf dem Produktbild die Marke Keyes 
aufgedruckt ist und bei den gelieferten zwei neuen der quadratische 
Käfer in der Mitte keine Beinchen nach außen, sondern untenliegende 
Lötpads hat. Fair enough. Die erwähnten Lötbrücken sind die mit 3.3V und 
5V beschrifteten an der Stiftleiste unten links sowie die mit 5V 
beschriftete am USB-Port (3.3V dort nicht brücken). Anbei der Ur-Artikel 
anhand dessen ich damals vor 2 Jahren als "Noch nie einen Arduino in der 
Hand gehabt" die Brücken gesetzt habe: 
https://esp8266-notes.blogspot.com/2017/08/defective-arduino-usb-host-shield-boards.html 
da finden sich auch auf dem zweiten Bild die eingekringelten Lötbrücken.

Und jetzt noch mal zum Problem:
- Ein alter und zwei neue Arduinos komplett ohne alles loopen am USB ein 
Serial.println("Hello World") - läuft, egal, ob ich das Netzteil 
einstecke, oder nicht.
- Ich stecke das USB Host Shield dazu und lasse das gleiche laufen - 
läuft, ob mit oder ohne externem Netzteil
- Ich stecke das Host Shield auf und spiele wieder meinen Sketch auf. 
Der gibt über Serial.println die erfassten Tastatur- und Maus-Eingaben 
vom USB aus - bei meinem alten System immer, bei den beiden neuen nur, 
wenn ich nicht das Netzteil einstecke (mit eingestecktem Netzteil kommt 
nix mehr, stecke ich es wieder aus, kann ich 3 Sekunden später wieder 
Eingaben machen). Die Anwesenheit von meiner eigenen Platine spielt 
dabei keine Rolle
- Wenn ich "nur mit Netzteil, ohne USB" testen will, habe ich natürlich 
keine serielle Konsole, kann daher nur vermuten, dass der Arduino was 
macht. Indizien dafür ist die Kommunikation mit den Retro-Computern, die 
an meiner eigenen Platine eingesteckt sind. Verbinde ich diese mit dem 
Tastatur-Port funktioniert der Handshake nach AT-Tastaturprotokoll 
(sonst würde das BIOS des angesprochenen PCs einen Keyboard Error 
schmeißen), verbinde ich eine RS232-Schnittstelle am Rechner damit, 
funktioniert auch das und der Maustreiber lädt durch. @Sebastian Serial2 
TX und RX sowie ein GPIO Pin an das RS232 RTS Signal sind via Max232 
gekoppelt und emulieren eine serielle Maus (Wahlweise Microsoft oder 
Logitech) - das geht, aber bei Eingaben via USB Tastatur und Maus, die 
durchgereicht werden sollten, Schweigen im Walde. Außer auf dem alten 
Gerät.

Alle Spannungen erfreuen sich laut Multimeter bester Gesundheit, egal ob 
via USB oder Netzteil.

von Info (Gast)


Lesenswert?

Programmiere eine blinkende Led dazu und teste erneut. Blinkt die Led 
wenn vermutlich auf der Seriellen nichts mehr geht? Oder blinkt die dann 
auch nicht mehr? Dann wüßte man ob das Programm läuft oder nicht läuft. 
Wenn er nicht läuft, Led nicht blinkt, könnte man in die Richtung 
Dauer-Reset Zustand oder Programmabsturz weiter denken ...
Kannst auch im Setup schnelles blinken und in Loop langsames blinken 
programmieren. Dann wüßte man ob er überhaupt startet und wo er stehen 
bleibt. Oder nutzt die anderen Seriellen für Debaugausgaben. Wofür hast 
du schließlich den Mega? Du kannst alle Möglichkeiten zum Debuggen 
nutzen.

von Info (Gast)


Lesenswert?

... und messe mal zwischen den Masse Potentialen. Ggf. gibt es hier eine 
Verschiebung.

von Info (Gast)


Lesenswert?

... und hat dein Mega nun einen Schaltregler oder ein Linearregler 
drauf?

von Thomas Z. (usbman)


Angehängte Dateien:

Lesenswert?

Ich gebe dir mal ein paar Hinweise:
Der Arduino macht einen Spgvergleich: Wenn am Hohlstecker etwa 7.5V 
anstehen wird VBus von der USB B-Buchse weggeschaltet. Dann muss der LDO 
das Board mit 5V versorgen. Mit einem 2.LDO wird aus den 5V die 3.3V 
erzeugt. Ob das in allen Fällen unterbrechungsfrei funktioniert wage ich 
zu bezweifeln. Zur Not brauchts halt einen Reset. Die Umschaltung hab 
ich mal angehängt. Ein einfacher Komparator ohne jede Hysterese. Ich 
würde mal annehmen, dass das Ding im Einschaltmoment schwingt.

Das Shield braucht 3.3V und 5V deswegen musst du die beiden Lötbrücken 
schliesen. Die dritte Brücke stellt stellt die VBus für den Host bereit. 
Da sind noch eine ganze Reihe zusätzlicher Brücken drauf, z.B auch für 
Reset.
Letztendlich stellt das Shield ja nur eine Bridge von SPI slave <-> USB 
Host bereit.
Die Brücken SJ7 und SJ8 müssen vermutlich auch geschlossen sein (INT und 
SS)

von Info (Gast)


Lesenswert?

Thomas Z. schrieb:
> Ein einfacher Komparator ohne jede Hysterese. Ich
> würde mal annehmen, dass das Ding im Einschaltmoment schwingt.

Das könnte theoretisch auch beim ausschalten schwingen, nur wenn es 
schwingt, dann nur zwischen USB 5V und VIN 5V. Sollte demnach keine 
Rolle spielen bei einer Spannungsdifferenz von vielleicht 0,1V. Für das 
Problem hier irrelevant.

Wenn man nach dem Shield sucht, ist der TO nicht der Erste mit einem 
Kommunikationsproblem.

> That shield communicates over SPI. However the SPI pins it uses are
> the "old" style (10-13) for the Arduino UNO.

> The Mega doesn't use those pins, which is why the "new" style 6-pin
> SPI/ICSP header was added to boards.

> You will have to manually jumper the right pins to the SPI pins of
> the Mega using wires.

Jedenfalls wäre ich mit den 3,3V Jumper vorsichtig, wenn der Mega mit 5V 
versorgt wird sollte man nicht auf 3,3V jumpern.

Mehr Infos sollte dieser Links liefern. Die Links unter Hardware Info 
scheinen interessant zu sein.
https://chome.nerpa.tech/arduino_usb_host_shield_projects/

Der Link ist wiederum von hier.
https://github.com/felis/USB_Host_Shield_2.0

von Thomas Z. (usbman)


Lesenswert?

Info schrieb:
> Für das Problem hier irrelevant.

Das würde ich nicht sagen, der TO hat ja genau das Problem dass bei 
zusätzlicher Versorgung mit dem Hohlstecker die Sache stehen bleibt. 
Zumindest hab ich das so verstanden.

Info schrieb:
> Jedenfalls wäre ich mit den 3,3V Jumper vorsichtig, wenn der Mega mit 5V
> versorgt wird sollte man nicht auf 3,3V jumpern.

Doch das ist notwendig. Das Shield braucht die 3.3V für den Pegelwandler 
und den Max Baustein.

von Sebastian (Gast)


Lesenswert?

Volker schrieb:
> - Ich stecke das Host Shield auf und spiele wieder meinen Sketch auf.
> Der gibt über Serial.println die erfassten Tastatur- und Maus-Eingaben
> vom USB aus - bei meinem alten System immer, bei den beiden neuen nur,
> wenn ich nicht das Netzteil einstecke (mit eingestecktem Netzteil kommt
> nix mehr, stecke ich es wieder aus, kann ich 3 Sekunden später wieder
> Eingaben machen). Die Anwesenheit von meiner eigenen Platine spielt
> dabei keine Rolle

Verbinde einmal den Arduino Pin 53 des Arduino Mega 2560 über einen 
10k-Widerstand mit +5V. Funktioniert es dann?

LG, Sebastian

von Stefan F. (Gast)


Lesenswert?

Volker schrieb:
> Okay, Leute, ihr hattet euren Spaß, das Aufnahmeritual, den Neuling im
> Forum ständig nach einem Schaltplan für "USB Host Shield steckt auf
> Arduino" zu fragen, hat sich totgelaufen.

Wir sind halt keine Hellseher. Du bist nicht der einzige Anfänger der 
erst lernen muss wie wichtig die Schaltungsunterlagen sind.

Volker schrieb:
> Alle Spannungen erfreuen sich laut Multimeter bester Gesundheit, egal ob
> via USB oder Netzteil.

Das reicht nicht, messe mit einem Oszilloskop. Dein Netzteil bewirkt ein 
Problem, also kontrolliere das Netzteil und was es bewirkt. Und zwar 
sehr genau. Und beantworte alle Rückfragen. Gehe den ganzen Thread 
nochmal durch und reiche jede Antwort nach, die noch fehlt.

Tritt der Fehler eigentlich auch auf, wenn du beide Boards NACH dem 
Anschließen des Netzteil resettest?

von Sebastian (Gast)


Lesenswert?

Sebastian schrieb:
> Verbinde einmal den Arduino Pin 53 des Arduino Mega 2560 über einen
> 10k-Widerstand mit +5V. Funktioniert es dann?

Volker, ich weiss das klingt etwas abstrus. Ich aber ernst gemeint.

Auf dem Arduino Mega 2560 ist Arduino Pin 53 verbunden mit PB0 des 
Atmega2560. PB0 hat die Funktion !SS, siehe 
https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/DataSheets/ATmega640-1280-1281-2560-2561-Datasheet-DS40002211A.pdf. 
Die Kommunikation zwischen USB Host Shield und uC läuft über SPI, also 
MISO, MOSI und SCK, über den ISP-Verbinder. Dazu braucht der USB Host 
Shield allerdings noch Chip Select (gejumpert auf Arduino Pin 10) und 
Interrupt (gejumpert auf Arduino Pin 9) -- du solltest diese Jumper auf 
deinen Shields auch finden. Nur: Bei "normalen" Arduinos hat Arduino Pin 
10 auch gleichzeitig die SPI !SS-Funktion. Nicht so beim Arduino Mega 
2560. Dort ist die !SS-Funktion des SPI-Busses eben auf Arduino Pin 53 
zu finden!

Diese !SS-Funktion wird für den SPI Slave Modus benötigt. Sie ist aber 
auch im SPI Master Modus aktiv. Du kannst das im Datenblatt in Kapitel 
21.1, "!SS Pin Functionality" nachlesen: "If the !SS pin is driven low 
by peripheral circuitry when the SPI is configured as a Master with the 
!SS pin defined as an input, [...] the SPI system becomes a Slave. As a 
result of the SPI becoming a Slave, the MOSI and SCK pins become 
inputs."

Ich möchte mit meinem Vorschlag halt die Möglichkeit ausschliessen, dass 
ein zufälliger LOW-Pegel auf dem unbeschalteten Arduino Pin 53-Eingang 
des Mega 2560 die SPI-Kommunikation stört.

LG, Sebastian

von Info (Gast)


Lesenswert?

Volker schrieb:
> - Ich stecke das USB Host Shield dazu und lasse das gleiche laufen -
> läuft, ob mit oder ohne externem Netzteil
> - Ich stecke das Host Shield auf und spiele wieder meinen Sketch auf.

2x aufgesteckt? Das Host Shield ist doch schon aufgesteckt? Oder nicht?

Nochmal wegen schwingen. Wenn es schwingt dann doch nur auf dem ohnehin 
schon  vorhandenen 5V Niveau. Also irrelevant. Zudem falls es schwingt 
ist der Spuk nach paar wenigen ms vorbei.

Wegen Pin 53. Wenn dann als Output und auf High programmieren. Hat was 
mit der SPI Hardwareeinheit zu tun. Ein Pegel von außen hilft da nicht 
wenn es damit zu tun haben sollte. Habe ich aber schon lange nicht mehr 
gesehen, aber vielleicht hilft das hier, weil ggf. deswegen SPI gar 
nicht erst läuft.

von Sebastian (Gast)


Lesenswert?

Info schrieb:
> Ein Pegel von außen hilft da nicht
> wenn es damit zu tun haben sollte.

Doch.

Info schrieb:
> Wegen Pin 53. Wenn dann als Output und auf High programmieren.

Das geht auch. Allein als Output programmieren reicht. Siehe das 
Datenblattkapitel oben. Aber P53 - 10k - VCC5V ist schneller getan ...

LG, Sebastian

von Volker (dark_lord)


Lesenswert?

Danke zusammen,

neben viel spannendem Myth Busting zum Thema Spannungsregler vor allem 
auch noch mal an Sebastian und Info wegen der Pin 53 Geschichte.

Pin 53 Output High in der Init-Routine ist ja schnell gemacht, probiere 
ich mal aus. Im Zweifel beides, das auch mal über einen 10k-Widerstand 
auf 5V zu ziehen. Außerdem gucke ich noch einmal ganz vorsichtig über 
alle Jumper-Brücken auf den beiden Host Shield Versionen, dass ich 
nicht, neben den drei/vier bekannten noch eine übersehen habe, weil 
irgendwo muss da doch bei den neuen Shields der Wurm drin sein. Bislang 
konnte ich nichts erkennen, außer dass der Controller-Chip einmal 
untenliegende und einmal außenliegende Kontakte hat.

Ich weiß noch nicht, ob ich heute noch dazu komme, gebe aber alsbald 
Feedback, wenn ich neue Erkenntnisse habe.

von Info (Gast)


Lesenswert?

@ Euch  :-)

Okay.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.