Forum: Mikrocontroller und Digitale Elektronik 500mA über USB


von jontheodomar (Gast)


Lesenswert?

Hej,

also rein von meinem bisherigen Verständnis gibt mir ein USB-Anschluss 
erstmal 100 mA, wenn ich was angeschlossen habe und wenn ich 500 mA 
möchte, muss ich mir das erst vom USB freigeben lassen.

Nun habe ich eine Applikation in Planung, die normalerweise von einem 
Lipo über einen Buck-Boost-DC-DC-Converter versorgt wird und ein MCU die 
Applikation ausschaltet, wenn eine gewisse Batteriespannung 
unterschritten wird, so dass es nicht zur Tiefentladung kommen kann.

Ausgeschaltet wird auch automatisch, wenn ich die Applikation aus der 
Hülle nehme (das ist sowieso funktions-/handlingbedingt regelmäßig 
nötig) und dann liegt auch ein USB-Anschluss frei, der widerum zum Laden 
des Lipos verwendet werden soll. Das Laden funktioniert auch in meinen 
Gedanken einfach über einen MCP7381, den ich ja wiederrum extern über 
einen Widerstand auf einen Ladestrom von 500mA "programmieren" kann.

Nun wäre meine Frage, wie bekomme ich am einfachsten die 450-500mA aus 
dem USB raus?? Ich meine es gibt ja mittlerweile anscheinend Prototypen 
von selbstenummeriernden Chips (z.B. MAX8895), wo aber schon das 
Datenblatt nur auf Anfrage erhältlich ist. Gibt es da nicht auch 
einfachere Lösungen?
Ich habe schon Ladeschaltungen gesehen, wo einfach vom USB 
D+/D-/ID-Stecker auf Masse kurzgeschlossen sind. Was bewirkt das?

Danke für die Hilfe!

von oszi40 (Gast)


Lesenswert?

Mit externem Netzteil :-)
da sich evtl. mehrere Verbraucher Deinen Strom teilen müssen je nach 
PC-Aufbau.

von Guido Körber (Gast)


Lesenswert?

Das Jumpern und Kurzschließen der Leitungen kann einem USB Gerät das an 
ein Netzteil angeschlossen wird signalisieren wie viel Strom es kriegen 
kann, ist also genau das falsche Ende für Deine Anwendung.

Der IO-Warrior24 PowerVampire ist ein Chip der genau dafür gebaut ist 
Strom vom USB anzufordern:
http://www.codemercs.com/index.php?id=64&L=0

von jontheodomar (Gast)


Lesenswert?

Naja...also es wird sich niemand anderes den Strom klauen, da so wie 
vorgesehen der andere USB-Stecker-Partner nur einfach vorhanden ist (und 
somit theoretisch volle 500 mA geben könnte) und gleichzeitig als 
Aufbewahrung für die Applikation dient, wo man sie halt einfach 
reinsteckt, damit sie nicht im Weg liegt oder verloren geht.

von Leo H. (Gast)


Lesenswert?

FT232R, dort kann man im EEPROM den Strombedarf einstellen und einen Pin 
bei erfolgreicher Anmeldung schalten lassen.
Zusätzlich könntest du so auch den Ladezustand auf dem Terminal 
auswerten, wenn dein Chip ein UART hat.

Kennst du schon LM3658? Der Chip kann wahlweise vom Netzteil oder USB 
laden und stellt den Strom von 100mA bis 1A passend ein, je nach Quelle.
Leider meldet er sich nicht am Bus an.

von Michelle K. (Firma: electronica@tdnet) (michellekonzack) Benutzerseite


Lesenswert?

N'Abend,

jontheodomar schrieb:
> also rein von meinem bisherigen Verständnis gibt mir ein USB-Anschluss
> erstmal 100 mA, wenn ich was angeschlossen habe und wenn ich 500 mA
> möchte, muss ich mir das erst vom USB freigeben lassen.

Also das habe ich gerade noch mal ausprobiert, bevor ich hier
gepostet habe und eins ist sicher, auf einem alten P1/100, K6/200,
AMD Athlon XP 2800, AMD Phenom und AMD Opteron Board kann ich
immer 500mA ziehen, ohne das ich den On-Board USB-Controller
dazu überreden muß.

Und wenn ichd as richtig lese, muß das Device anmelden WIEVIEL
Strom es benötigt und das wars.  Da kein einziges Mainboard über
seperate Power-Switchs verfügt (Unter Windows wird ja beim Eject
die Spannung abgeschaltet), welche den Strom messen, kannste
ziehen, bis die Leitebahn abraucht, denn sonnst könnte man auch
keine externe 2"5 Festplatte am USB-Port betreiben, denn die
zieht beim Anlaufen 1A

> Nun wäre meine Frage, wie bekomme ich am einfachsten die 450-500mA aus
> dem USB raus?? Ich meine es gibt ja mittlerweile anscheinend Prototypen
> von selbstenummeriernden Chips (z.B. MAX8895), wo aber schon das
> Datenblatt nur auf Anfrage erhältlich ist. Gibt es da nicht auch
> einfachere Lösungen?
> Ich habe schon Ladeschaltungen gesehen, wo einfach vom USB
> D+/D-/ID-Stecker auf Masse kurzgeschlossen sind. Was bewirkt das?

Garantiert nicht an der Ladeschaltug, sondern an dem Netzteil das
die 5V über eine USB-Buchse bereitstellt.  Das Kurzschließern
sagt dem USB-Device, das es an einem Netzteil angeschlossen ist
und bedenkenlos 500mA ziehen darf.

Grüße
Michelle

von oszi40 (Gast)


Lesenswert?

Michelle Konzack schrieb:
> denn sonst könnte man auch keine externe 2"5 Festplatte am
> USB-Port betreiben, denn die zieht beim Anlaufen 1A

Das funktioniert NICHT an jedem PC, sondern nur in vielen glücklichen 
Fällen.

von Harald W. (wilhelms)


Lesenswert?

oszi40 schrieb:
> Michelle Konzack schrieb:
>> denn sonst könnte man auch keine externe 2"5 Festplatte am
>> USB-Port betreiben, denn die zieht beim Anlaufen 1A
>
> Das funktioniert NICHT an jedem PC, sondern nur in vielen glücklichen
> Fällen.

Inzwischen ist es anscheinend nicht mehr die Regel, sondern eher
die Ausnahme, das sich dir PCs an die USB-Konventionen halten...
Gruss
Harald
PS: Wie ist das eigentlich bei USB 3 ? Muss dort auch erhöhter
Strombedarf angemeldet werden?

von Michelle K. (Firma: electronica@tdnet) (michellekonzack) Benutzerseite


Lesenswert?

JA

von 123 (Gast)


Lesenswert?

Malzeit

erst mal stellt sich die frage, ob gewerblich eingesetzt, oder privater 
bastelkram. bzw soll es usb konform sein (mot oder ohne kuckuck) oder 
einfach nur laufen?

Wenns einfach nur laufen soll, ausprobieren, und wenns tut sich darüber 
freuen.

Wenn usb konform, dann gibt es da noch ein paar mehr hürden bzw 
allgemeines unwissen.

1. 100mA darf man NUR ziehen wenn man auch über usb kommuniziert / sich 
enummeriren läst. ansonsten darf man nur 2,5mA ziehen. (Suspend)

2. biz zu 500mA muss man am USB Host anfordern, der das auch ablehenen 
kann.

3. ggf mal die USB Charging specification lesen. die ist hier ganz 
aufschlusreich. z.B. bis zu 1,5A zum laden, ...

4. die ganzen USB Ladegeräte (oder wie man sich auch immer nennen mag) 
verhalten sich zum grossen teil nicht nach spec.

5. es gibt auch bei batterie betriebenen usb geräten noch ein paar 
ausnahmen mit jeder menge einschränkungen (z.B. die 100mA für bis zu 
45Min, wenn ..... )

von jontheodomar (Gast)


Lesenswert?

...danke erstmal für die ganzen Antworten! Ich hab mich jetzt 
mittlerweile für den FTDI (FT232R) in Kombination mit dem ohnehin schon 
eingeplanten MCP7381-Lade-IC entschieden...somit bleibt alles konform 
(denn es ist gewerblich...auch wenn man an manchen Antworten ja die 
Konformitätstreue manch anderer gewerblicher Anwendung ablesen 
kann)...auch wenn der FTDI-Chip finanziell ganz schön reinhaut...aber 
ich denke, mit dem kann man das ordentlich realisieren.

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

der FTDI hat nur den Nachteil, das der Anwender einen Treiber 
installieren muss (je nach Betreibssytem) - was zum reinen Laden 
natürlich recht ungünstig ist.
Sonst bräuchte man ein USB-Gerät, das sich als HID anmeldet - das geht 
immer.

Sascha

von bitte Namen einfuegen (Gast)


Lesenswert?

@jontheodomar:

Was macht Deine geplante Applikation eigentlich, wenn der USB-Host auf 
die 500mA-Anforderung antwortet:

"Tut mir leid, die 100mA müssen reichen!"

(Kann zum Beispiel passieren, wenn es ein passiver Hub ist)

von Jens (Gast)


Lesenswert?

jontheodomar schrieb:
> auch wenn der FTDI-Chip finanziell ganz schön reinhaut

Dann nimm halt einen kleinen µC mit USB, z.B. den PIC 18F14K50. Von 
Microchip gibt es komplette Libs für USB so dass die Programmentwicklung 
auch kein größeres Problem ist.

Btw: Mein ASUS-Mainboard (Typ weiß ich grade nicht, Sockel AM3 mit USB3) 
meckert regelmäßig, wenn ich Bastelsachen anstecke, die über 100mA 
ziehen. In dem Fall wird der Port von Windows abgemeldet / nicht 
angemeldet. Dieses Verhalten habe ich aber auch erst jetzt am neuen PC 
festgestellt.

Michelle Konzack schrieb:
> Und wenn ichd as richtig lese, muß das Device anmelden WIEVIEL
> Strom es benötigt und das wars.  Da kein einziges Mainboard über
> seperate Power-Switchs verfügt (Unter Windows wird ja beim Eject
> die Spannung abgeschaltet), welche den Strom messen, kannste
> ziehen, bis die Leitebahn abraucht, denn sonnst könnte man auch
> keine externe 2"5 Festplatte am USB-Port betreiben, denn die
> zieht beim Anlaufen 1A

Falsch. Zuerst ist bei einer externen Platte nur der Controller aktiv, 
der die Platte USB-mäßig am System anmeldet und um den nötigen Strom 
bettelt. Erst wenn der bewilligt ist, wird die Platte eingeschaltet und 
die Laufwerksmotoren laufen an. Bei einem Strom von 1A gibt es aber 
schon öfters Probleme, gerade auch bei neuen PCs. Die (hohe) 
Stromaufnahme von USB-Platten ist übrigens auch der Hauptgrund, warum 
PVR-Receiver vielfach mit denen nicht zusammenarbeiten wollen.

bitte Namen einfuegen schrieb:
> "Tut mir leid, die 100mA müssen reichen!"

Dann liegt es an der Intelligenz der Applikation, dafür einen passenden 
Workaround zu haben. Im Extremfall kann die Anwendung nicht arbeiten, z. 
B. externe Festplatte.

von Εrnst B. (ernst)


Lesenswert?

bitte Namen einfuegen schrieb:
> "Tut mir leid, die 100mA müssen reichen!"

IIRC klappt das bei Windows (XP) sowieso nicht.

Eigentlich ist dafür vorgesehen, dass das Gerät mehrere Configurations 
mit unterschiedlichem Stromverbrauch im Descriptor hat. Wenn der Strom 
nicht für die erste reicht, sollte der Host halt per SetConfiguration 
auf die zweite umschalten.

Windows hat aber nur den Stromverbrauch der ersten Configuration 
geprüft, wenn der zu groß ist, wird das Gerät in den Suspend geschickt, 
ohne die weiteren Configs zu konsultieren.
(Wie gesagt, so wars unter XP, unter 7 hab ich das noch nicht 
ausprobiert)

von jontheodomar (Gast)


Lesenswert?

bitte Namen einfuegen schrieb:
> Was macht Deine geplante Applikation eigentlich, wenn der USB-Host auf
> die 500mA-Anforderung antwortet:
>
> "Tut mir leid, die 100mA müssen reichen!"
>
> (Kann zum Beispiel passieren, wenn es ein passiver Hub ist)

...ist in dem Sinne ein Fehlerfall,dass die Applikation an den falschen 
Host gesteckt wurde...so kann halt dann nur mit 100mA geladen werden 
(Pech für den Anwender)...ich mein eigentlich sollte schon ca. 500mA 
erreicht werden, einfach für die Zeit im allgemeinen Workflow, die 
vorgesehen ist, um das Teil zu Laden...aber in dem Sinne bekommt der 
Benutzer ja über eine Lade-LED angezeigt ob fertig geladen ist oder 
nicht...demzufolge kann er, wenn nach 5h immer noch nicht mit Laden 
Schluss ist, mal in die Bedienungsanleitung schauen und feststellen, 
dass er es doch bitte zum Laden an den bestimmten Host stecken soll, der 
auch dafür vorgesehen ist...

Sascha Weber schrieb:
> Hallo,
>
> der FTDI hat nur den Nachteil, das der Anwender einen Treiber
> installieren muss (je nach Betreibssytem) - was zum reinen Laden
> natürlich recht ungünstig ist.
> Sonst bräuchte man ein USB-Gerät, das sich als HID anmeldet - das geht
> immer.
>
> Sascha

...ist kein Problem...die Software auf Host-Seite ist in meiner Hand 
(die Applikation mit dem Laden über USB ist nur eine Zusatzanwendung zu 
sowieso schon bestehenden Anwendungen)

Jens schrieb:
> Dann nimm halt einen kleinen µC mit USB, z.B. den PIC 18F14K50. Von
> Microchip gibt es komplette Libs für USB so dass die Programmentwicklung
> auch kein größeres Problem ist.

ja...gute Idee...aber im Prototyp soll es erstmal nicht auf 4-5€ 
ankommen...und für AVR hab ich hier schon ein super Developement Board 
mit Atmega16 zu liegen...außerdem soll der µC während des Ladens aus 
sein...

von Gästle (Gast)


Lesenswert?

Es gibt noch zwei andere Stolpersteine:

Billige USB-Kabel:
Dein Gerät meldet sich ordnungsgemäß an, bekommt die 500mA genehmigt, 
erhält aber anstatt 5V nur 3V, der Rest erwärmt das Kabel.

Manche Laptops:
Können nicht mehr als 300mA liefern, obwohl sie etwas anderes behaupten.

Hinzu kommen diverse Varianten von nicht konformen USB-Ladegeräten, da 
der Standard erst im Nachhinein veröffentlicht wurde.

von 123 (Gast)


Lesenswert?

Kabel wo nur 3V rauskommen ist nicht usb konform! wenn da überhaupt ne 
usb kommunikation fuktioniert ist dann schon ein Wunder. bzw der USB 
detect dürfte da dann eigentlich erst gar nicht laufen. da keine 5V 
erkannt werden

ein USB host der nur 300mA liefert obwohl er 500mA Configuration 
aktzeptirt ist auch nicht usb konform.

aber es gibt da noch nen kleinen gemeinen stoplerstein

USB Suspend. 2,5mA düfen da nur gezogen werden. und was machen wenn der 
akku tot ist?

von jontheodomar (Gast)


Lesenswert?

123 schrieb:
> Kabel wo nur 3V rauskommen ist nicht usb konform! wenn da überhaupt ne
> usb kommunikation fuktioniert ist dann schon ein Wunder. bzw der USB
> detect dürfte da dann eigentlich erst gar nicht laufen. da keine 5V
> erkannt werden
>
> ein USB host der nur 300mA liefert obwohl er 500mA Configuration
> aktzeptirt ist auch nicht usb konform.
>
> aber es gibt da noch nen kleinen gemeinen stoplerstein
>
> USB Suspend. 2,5mA düfen da nur gezogen werden. und was machen wenn der
> akku tot ist?

...ich denke mit einem FT232R kann ich den suspend-mode umgehen??...

und das der akku tot geht, wird durch die selbstabschaltung seitens des 
mikrocontrollers verhindert...mein favourisierter 3,7V-akku hat eine 
minimal-spannung von 2,5 V...durch den mikrocontroller wird einfach 
einmal in der minute per timer-interrupt die batterie-spannung über ADC 
(und einen spannungsteiler bei µC-interner bandgap-referenz) 
gemessen...ab 3 V akustisch/per LED gewarnt, dass er bald alle ist...ab 
2,8 V die ganze einheit abgeschaltet...dann ist der akku nur noch sich 
selbst überlassen also mit seiner selbstentladung (ca. 4% pro 
monat)...dann sollte es noch geschafft werden ihn irgendwann mal wieder 
anzuschließen...oder man wäre dann wirklich selbst schuld und der akku 
müsste gewechselt werden (ist ja nicht fest eingelötet oder so)...

von Fritz f. (avrnoob2)


Lesenswert?

Hallo!

Warum nimmst du nicht einfach ein Y-USB-Kabel. Der eine Stecker hat 
Betriebsspannung + Datenleitungen und der 2. Stecker holt sich 
zusätzlich Strom aus der zweiten Buchse. Somit sollten 500mA möglich 
sein, zumindest mein Sony Vaio Notebook kann pro USB-Anschluss 250mA 
liefern. 250mA x 2 = 500mA ;)

von Sascha W. (sascha-w)


Lesenswert?

er wollte es doch einigermaßen konform haben, und nur weil andere das so 
machen (Y-Kabel) muss man den Mist doch nicht nachbauen.

Sascha

von XYZ (Gast)


Lesenswert?

nochmal

ein usb port hat 100mA zu liefern. nach der enumeration / 
setConfiguration kann wenn in der configuration angegeben strom gezogen 
werden, das sind bei USB2.0 bis zu 500mA. läuft keine Usb kommunikation 
(USB Suspend) sind nur noch 2.5mA strom zu ziehen.

ein Y kabel ist genauso daneben, wie ein host port der nur 350mA 
liefert, aber 500mA configurationen akzeptiert.

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.