Forum: Mikrocontroller und Digitale Elektronik USB OTG Laden von USB OTG Gerät


von Fpdragon F. (fpdragon)


Lesenswert?

Ich habe einen etwas exotischen Anwendungsfall.

Ich benutze einen Mikrocontroller um per USB über eine virtuelle 
serielle Schnittstelle mit einem USB Host (zB. PC) zu Kommunizieren.
Ein zweiter Mikrocontroller macht das selbe bei einem anderen 
Mobil-Gerät. Sprich dieses Gerät läuft im OTG Modus.
Das funktioniert soweit ganz gut.

Ziel ist es nun, das zweite Gerät vom ersten aus zu laden. Also 
elektrisch, mit den 500mA max.

Ich könnte jetzt natürlich einfach die USB 5V und GND  der beiden Geräte 
direkt miteinander verbinden und sehen was passiert aber das halte ich 
für etwas riskant weil ich noch nicht verstanden haben wie sich OTG 
verhält? Beide Geräte sind im "USB Host Modus" sprich sie "suchen" nach 
Geräten und treiben mit 5V. Im ersten Moment dachte ich, das kann nur 
ein no go sein, weil dann zwei Host Geräte gegeneinander treiben würden 
und vl sogar ein Kurzschluss entsteht zwischen den beiden Power Busen.
Dann hab ich festgestellt, dass im OTG Modus sehr wohl das Laden 
ermöglicht wird. Es gibt ja diese speziellen Y Kabeln, die einfach nur 
GND und 5V auf eine zusätzlich Buchse führen um ein normales USB 
Ladegerät anschließen zu können.

Jetzt habe ich die Vermutung, dass ein OTG Gerät nur dann mit 5V treiben 
wird wenn noch keine 5V am Bus anliegen? Wenn die 5V schon da sind, dann 
lädt das Gerät einfach von dieser Quelle? Bitte um Bestätigung.

Was passiert aber unter dieser Annahme wenn ich 2 USB OTG Geräte 
miteinander verbinde? Prinzipiell ist nicht definiert welches Gerät die 
Ladequelle und welches die Ladesenke ist. Ist es da "Zufall" welches 
Gerät vorher mit 5V treibt und das ist dann die Ladequelle?

Kann ich die Laderichtung irgendwie mit eine Art idealen Diode (MOS) an 
der 5V Verbindung definieren? Sprich das eine Gerät kann die Spannung 
vom anderen sehen, falls vorhanden, aber nicht umgekehrt? So dass immer 
einer als Ladegerät funktioniert und einer als zu Ladender.

Oder vl verhält es sich auch ganz anders?
Vl treiben OTG Geräte immer mit 5V und wenn sich mit einem anderen Host 
verbunden werden zählt nur wer die geringfügig höhere Spannung hat, und 
so fließt dann der Strom?

Die OTG Kabeln selbst sind ja scheinbar sehr einfach aufgebaut und 
verwenden nur einen zusätzlichen Sense Pin.

Mir wäre sehr geholfen wenn es hier Experten gäbe die dazu Inputs geben 
könnten.

lG

von foobar (Gast)


Lesenswert?

Ein OTG-Port (mit Mini- oder Micro-B Buchse) ist normalerweise im 
Device-Mode und damit Stromsenke.  Wird (im Stecker) der Sense-Pin auf 
GND gelegt, schaltet der Port auf Host-Mode und wird Stromquelle. 
Entsprechend hat ein OTG-Adapter einen B-Stecker (mit gegroundetem 
Sense-Pin) und am anderen Ende eine A-Buchse (ohne Sense-Pin).  Da 
Quelle und Senke unterschiedliche Steckertypen haben (A=Quelle, 
B=Senke), kann es keine Verwechselung geben (es gibt keine 
A-auf-A-Kabel).  Ein OTG-Adapter an einem nicht-OTG-Port führt nur dazu, 
dass zwei Senken verbunden werden - harmlos.

von foobar (Gast)


Lesenswert?

Abschlusssatz vergessen: wenn du also OTG mit OTG verbinden willst, muss 
auf einer Seite der Sense-Pin geerdet werden - die wird Quelle.  Der 
andere Sense-Pin bleibt offen (Senke).  Wenn du beide auf Masse ziehst 
knallt es ...

von Fpdragon F. (fpdragon)


Lesenswert?

foobar schrieb:
> Ein OTG-Port (mit Mini- oder Micro-B Buchse) ist normalerweise im
> Device-Mode und damit Stromsenke.  Wird (im Stecker) der Sense-Pin auf
> GND gelegt, schaltet der Port auf Host-Mode und wird Stromquelle.
> Entsprechend hat ein OTG-Adapter einen B-Stecker (mit gegroundetem
> Sense-Pin) und am anderen Ende eine A-Buchse (ohne Sense-Pin).  Da
> Quelle und Senke unterschiedliche Steckertypen haben (A=Quelle,
> B=Senke), kann es keine Verwechselung geben (es gibt keine
> A-auf-A-Kabel).  Ein OTG-Adapter an einem nicht-OTG-Port führt nur dazu,
> dass zwei Senken verbunden werden - harmlos.

Hmmm... ganz so einfach kann es nicht sein. Oder ich verstehe vl nicht 
was du sagen willst.

Ein Gerät im OTG Modus MUSS 5V bereitstellen weil ja sonst ein 
angeschlossenes Gerät wie Stick, Maus usw nicht versorgt wäre. Es kann 
also nicht nur Stromsenke sein.
Trotzdem ist es definitiv möglich, dass man OTG und eine Ladegerät 
gleichzeitig verwendet. Die Schematics die ich im Internet finde hängen 
da einfach die 5V des Netzteils parallel zu den 5V des USB OTG. 
Zusätzlich wird typischerweise eine Widerstand zum Sense Pin - GND 
verbunden.

Ich denke das OTG Gerät wird irgendwie erkennen können ob jetzt schon 5V 
da sind oder ob das Gerät selber die 5V bereitstellen muss. 
Wahrscheinlich über den Widerstand auf der Sense Leitung.

Die Frage bleibt aber: Wenn man zwei OTG Geräte miteinander Verbindet, 
wie kann ich die Laderichtung festlegen?

Meine Ideen sind:
1.) Irgendwie den Stromfluss elektrisch definieren über z.B. eine ideale 
Diode.
2.) Vl läuft alles über die Widerstände an der Sense Leitung und ich 
muss nur zum einen Gerät "mit Ladefunktion" und zum anderen "ohne 
Ladefunktion" mit den entsprechenden Sense Widerständen konfigurieren. 
Die 5V und die GND Leitungen wären in diesem Fall einfach nur zu 
verbinden.

Was ich aber nicht kapiere. Ich habe ein USB OTG Y Kabel. Dieses 
funktioniert sowohl mit als auch ohne Ladegerät. Das heißt irgendwie 
muss das OTG Gerät erkennen könne ob jetzt 5V vom Ladegerät da sind oder 
ob es jetzt selbst die 5V für z.B. einen USB Stick bereitstellen muss. 
Und der Y Adapter hat sicher immer den selben Sense Widerstand...

Ich blick noch nicht ganz durch.

: Bearbeitet durch User
von Fpdragon F. (fpdragon)


Lesenswert?

foobar schrieb:
> Abschlusssatz vergessen: wenn du also OTG mit OTG verbinden willst, muss
> auf einer Seite der Sense-Pin geerdet werden - die wird Quelle.  Der
> andere Sense-Pin bleibt offen (Senke).  Wenn du beide auf Masse ziehst
> knallt es ...

Ahhh das macht schon mehr Sinn für mich.

Aber die Seite mit der offenen Seite wird ja dann wieder keine 
Datenkommunikation zulassen mit dem Mikrocontroller oder? Weil das Gerät 
ja dann keinen USB Host spielt.

von Fpdragon F. (fpdragon)


Lesenswert?

Auszug aus Wikipedia:
> Three additional ID pin states are defined[5] at the nominal resistance values 
of 124 kΩ, 68 kΩ, and 36.5 kΩ, with respect to the ground pin. These permit the 
device to work with USB Accessory Charger Adapters that allows the OTG device to 
be attached to both a charger and another device simultaneously.[7]

> These three states are used in the cases of:

> 1.) A charger and either no device or an A-device that is not asserting VBUS 
(not providing power) are attached. The OTG device is allowed to charge and 
initiate SRP but not connect.[7]
> 2.) A charger and an A-device that is asserting VBUS (is providing power) are 
attached. The OTG device is allowed to charge and connect but not initiate SRP.[7]
> 3.) A charger and a B-device are attached. The OTG device is allowed to charge 
and enter Host mode.[7]

Bin mir aber noch nicht sicher was genau mit den drei Modis gemeint ist.

SRP ist scheinbar der Modus in dem ein USB Gerät "Client" ist.
Und Host ist Host.

In meinem Fall hätte ich also zwei Host Geräte die jeweils mit einem SRP 
Mikrocontroller kommunizieren.

Ein Gerät soll den VBUS versorgen und das Andere soll davon Laden.

: Bearbeitet durch User
von Flip B. (frickelfreak)


Lesenswert?

mittels herstellerspezifischer widerstandswerte am ID pin lassen sich 
einige OTG geräte in den Host mode setzen, während sie selbst ebenfalls 
strom aufnehmen statt abzugeben. Die Busspannung muss dann von aussen 
angelegt werden.

von Fpdragon F. (fpdragon)


Lesenswert?

Flip B. schrieb:
> mittels herstellerspezifischer widerstandswerte am ID pin lassen sich
> einige OTG geräte in den Host mode setzen, während sie selbst ebenfalls
> strom aufnehmen statt abzugeben. Die Busspannung muss dann von aussen
> angelegt werden.

Danke!

Hab mittlerweile noch folgendes gefunden:

"Some phones / tablets allow battery charging during USB OTG mode. I've 
seen documentation for two different schemes.

1) Normal OTG mode (no battery charging): ID pin is connected to the 
ground pin.

2) OTG mode with battery charging v1: ID pin connected to ground via 20k 
resistor.

3) OTG mode with battery charging v2: ID pin connected to ground via 
120k resistor.

These mode work with a small subset of all the OTG-capable devices. But 
it's pretty easy to try with your particular device to see if it might 
work with it."

Scheint als müsse ich einfach nur ein wenig mit den Widerständen spielen 
und wie foobar schon richtig gesagt hat: Bloss nicht auf beiden seiten 
Sense auf GND ziehen sonst treiben die Geräte gegeneinander.

Danke!

von Frank K. (fchk)


Lesenswert?

Ich hab hier die OTG-Spezifikation für USB 2.0 vor mir. Da steht drin:

"An OTG device is required to have one, and only one USB connector: a 
Micro-AB receptacle as defined in [Micro-USB1.01]. This receptacle is 
capable of accepting either a Micro-A plug or a Micro-B plug attached to 
any of the legal cables and adapters defined in [Micro-USB1.01].
The OTG device with the A-plug inserted is called the A-device and is 
responsible for powering the USB interface when required and by default 
assumes the role of host. The OTG device with the B-plug inserted is 
called the B-device and by default assumes the role of peripheral. An 
OTG device with no plug inserted defaults to acting as a B-device. If an 
application on the B-device requires the role of host, then the HNP 
protocol is used to temporarily transfer the host role to the B-device.

OTG devices attached either to a peripheral-only B-device or a 
standard/embedded host will have their role fixed by the cable since in 
these scenarios it is only possible to attach the cable one way around."

Ein Gerät, was OTG kann, MUSS eine USB-MicroAB Buchse haben. Ein Gerät 
mit MicroB kann gemäß dieser Spezifikation kein standardkonformes 
OTG-Gerät sein.

Zwei Geräte werden mit einem Micro-USBA<->Micro-USBB Kabel verbunden. 
Kabel mit gleichen Steckern an beiden Seiten sind nicht zulässig. Das 
Gerät, wo der A-Stecker steckt, ist Host, das Gerät, wo der B-Stecker 
steckt, ist Device. Sollen Host und Device die Rollen tauschen, muss das 
per HNP ausgehandelt werden. Das setzt voraus, dass beide Seiten das 
unterstützen.

Damit ist sichergestellt, dass nicht beide Seiten sich gegenseitig 
speisen wollen.

fchk

von Fpdragon F. (fpdragon)


Lesenswert?

Frank K. schrieb:
> Ich hab hier die OTG-Spezifikation für USB 2.0 vor mir. Da steht drin:
>
> "An OTG device is required to have one, and only one USB connector: a
> Micro-AB receptacle as defined in [Micro-USB1.01]. This receptacle is
> capable of accepting either a Micro-A plug or a Micro-B plug attached to
> any of the legal cables and adapters defined in [Micro-USB1.01].
> The OTG device with the A-plug inserted is called the A-device and is
> responsible for powering the USB interface when required and by default
> assumes the role of host. The OTG device with the B-plug inserted is
> called the B-device and by default assumes the role of peripheral. An
> OTG device with no plug inserted defaults to acting as a B-device. If an
> application on the B-device requires the role of host, then the HNP
> protocol is used to temporarily transfer the host role to the B-device.
>
> OTG devices attached either to a peripheral-only B-device or a
> standard/embedded host will have their role fixed by the cable since in
> these scenarios it is only possible to attach the cable one way around."
>
> Ein Gerät, was OTG kann, MUSS eine USB-MicroAB Buchse haben. Ein Gerät
> mit MicroB kann gemäß dieser Spezifikation kein standardkonformes
> OTG-Gerät sein.
>
> Zwei Geräte werden mit einem Micro-USBA<->Micro-USBB Kabel verbunden.
> Kabel mit gleichen Steckern an beiden Seiten sind nicht zulässig. Das
> Gerät, wo der A-Stecker steckt, ist Host, das Gerät, wo der B-Stecker
> steckt, ist Device. Sollen Host und Device die Rollen tauschen, muss das
> per HNP ausgehandelt werden. Das setzt voraus, dass beide Seiten das
> unterstützen.
>
> Damit ist sichergestellt, dass nicht beide Seiten sich gegenseitig
> speisen wollen.
>
> fchk

Danke für deinen Beitrag aber es ging mir eigentlich nicht um die 
Stecker. Ich gehe davon aus, dass mit handelsüblichen und 
standardkonformen Adaptern keine Probleme zu erwarten sind.

Wie beschrieben, baue ich ein eigenes Gerät, an dem 2 unabhängigen USB 
Host Geräte angeschlossen werden sollen. Die Frage war ob bzw wie ich 
das eine Host Gerät dann mit der Versorgung des anderen Host Geräts 
laden kann.
Also ums bildhafter zu machen. Mein Gerät wird mit einem Handy und einem 
PC verbunden, per USB. Das Handy soll im OTG Modus laufen und der PC ist 
sowieso ein USB Host. Mit einer entsprechenden OTG 
Widerstandsbeschaltung sollte es dann möglich sein, dass das Handy den 
VBUS des PCs verwendet um zu laden. Selbst mit 2 OTG Geräten (zB Handy 
und Tablet) sollte das möglich sein so lange das Handy einen 
entsprechenden Sense Widerstand hat und das Tablet ein Verbindung zum 
GND.

Bzgl Stecker ist klar, dass zum Handy zB nur ein micro USB Stecker in 
Frage kommt mit entsprechenden Sense Pin Widerstand (für OTG ohne power 
als ladesenke). Zum anderen Gerät könnte es auch ein normaler USB A 
Stecker (PC) oder ein micro USB Stecker mit GND Sense pin sein (für OTG 
mit power supply/ladequelle). Damit wäre dem Standard dann wieder genüge 
getan.

Ein 5 Pin micro USB Kabel ist bestellt. Bin gespannt ob es hin hauen 
wird.

: Bearbeitet durch User
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.