Forum: Mikrocontroller und Digitale Elektronik USB Spannungsversorgung + Netzteil


von Erwin (Gast)


Lesenswert?

Die Frage ist sicherlich nicht neu, aber ich habe keine 
zufriedenstellende Antwort bisher finden können:

Es geht um die Stromversorgung über USB und zusätzlich extern für einen 
STM32F1 mit USB.

Das Gerät benötigt im idle Modus < 200mW aber während es etwas tut, bis 
zu 4 Watt maximal.

Nur eine externe Stromversorgung ist sicherlich sehr ungünstig, da dann 
nur D+, D- und GND verbunden wird und sofern keine Spannungsversorgung 
vorhanden ist, D+ und D- über die internen Schutzdioden geclampt werden?

Eine Andere Möglichkeit wäre, die 5V des USB Ports für die 
Spannungsversorgung zu nutzen und das externe Netzteil ebenfalls. Beide 
über Dioden, sodass wenn vorhanden, das externe Netzteil mit einer 
Spannung > 5V übernimmt (vor dem BuckConv.).
Dazu würde ich dann noch eine Netzteil-Erkennung einbauen, bevor das 
Gerät in den Betriebsmodus wechselt prüft es, ob das Netzteil vorhanden 
ist und sobald es ausgesteckt ist, schaltet es sofort aus. Die Zeit 
dazwischen sollte ein kleiner Kondensator überbrücken können. (So kann 
die Software den Benutzer freundlich auf die Notwendigkeit des Netzteils 
hinweisen und das ganze wäre fast DAU kompatibel ...)

Leider kommen mir beide Lösungen etwas unprofessionell vor, daher würde 
ich gerne von euch ein paar Ratschläge haben. Es ist zwar nur eine Hobby 
Bastelei, aber wenn man schon etwas bastelt, dann doch sinnvollerweise 
auch vernünftig.

Danke :)

von Stefan F. (Gast)


Lesenswert?

Dazu gibt die Application Note AN4879. Sie bestätigt, dass der STM32 mit 
Spannung versorgt sein muss, bevor die Datenleitungen kontaktiert 
werden.

Dort empfehlen sie einen 3,3V Spannungsregler zwischen USB-Buchse und 
STM32. Zusätzlich kann der STM32 optional von extern versorgt werden. 
Die meisten Spannungsregler (ich kann dazu den LF33 empfehlen) kommen 
damit problemlos klar. Dioden sind nicht nötig.

Auf die Clamping Dioden solltest du dich besser nicht verlassen. Denn an 
den 5V toleranten Eingängen (DP und DM) darf kein positiver Strom 
"injected" werden. Negativer Strom ist bis 5mA erlaubt. Siehe "Absolute 
maximum ratings" im Datenblatt.

Vor DP und DM gehört eigentlich immer eine externe Schaltung zum Schutz.

von Jim M. (turboj)


Lesenswert?

Erwin schrieb:
> Nur eine externe Stromversorgung ist sicherlich sehr ungünstig, da dann
> nur D+, D- und GND verbunden wird und sofern keine Spannungsversorgung
> vorhanden ist, D+ und D- über die internen Schutzdioden geclampt werden?

D+ und D- werden im Host auf GND gezogen, d.h. es macht nix wenn da 
keine Spannung anliegt. USB Stecker stellen mechanisch sicher das GND 
vor D+ u. D- verbunden wird.

von Erwin (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Vor DP und DM gehört eigentlich immer eine externe Schaltung zum Schutz.

Da hätte ich jetzt z.B. den typischen USBLC6-2SC6 genommen, der würde 
dann an USB 5V und USB GND angeschlossen. Danach würde dann der MCU 
kommen.


Ich frage mich aber, wie jetzt folgendes Szenario wäre:

Die gesamte Platine wird nur von externen 12V versorgt, woraus dann die 
3.3V generiert werden. 12V ist jetzt nicht angesteckt. Per USB ist 
lediglich GND, D+ und D- verbunden. Das Gerät wird nur per USB 
eingesteckt. Was passiert nun?

Liegen die Leitungen im "Nullzustand" beide mit Pulldowns auf low und 
warten darauf, vom MCU mit dem 1.5K auf D+ hochgezogen zu werden zwecks 
Initialisierung? Dann wäre das ja ok, denn das passiert ja erst, wenn 
wir 3.3V zur Versorgung des MCUs hätten?

Sorry für meine Fragen, aber USB ist für mich Neuland

von Stefan F. (Gast)


Lesenswert?

Erwin schrieb:
> Was passiert nun?

Der STM32 könnte kaputt gehen. Sonst hätte in der AN nicht gestanden, 
dass der STM32 vorher mit Spannung versorgt werden muss.

von Stefan F. (Gast)


Lesenswert?

Erwin schrieb:
> Liegen die Leitungen im "Nullzustand" beide mit Pulldowns auf low und
> warten darauf, vom MCU mit dem 1.5K auf D+ hochgezogen zu werden zwecks
> Initialisierung? Dann wäre das ja ok, denn das passiert ja erst, wenn
> wir 3.3V zur Versorgung des MCUs hätten?

Wenn danach jemand im laufenden Betrieb das Netzteil des STM32 
abschaltet, hast du an den beiden USB Pins des STM32 Spannungen 
außerhalb der Spezifikation.

von Erwin (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wenn danach jemand im laufenden Betrieb das Netzteil des STM32
> abschaltet, hast du an den beiden USB Pins des STM32 Spannungen
> außerhalb der Spezifikation.

Das stimmt leider. Gibt es denn eine andere Möglichkeit, das Gerät 
extern zu bestromen und dennoch (korrekt) per USB zu verbinden?

Ein (USB) Isolator erscheint mir etwas teuer dafür?

von Stefan F. (Gast)


Lesenswert?

Erwin schrieb:
> Das stimmt leider. Gibt es denn eine andere Möglichkeit, das Gerät
> extern zu bestromen und dennoch (korrekt) per USB zu verbinden?

Ja, wir ich oben schrieb mit einem Spannungsregler. Schau in die 
Application Note!

von Erwin (Gast)


Lesenswert?

Ja, natürlich könnte ich vom USB 5V einfach 3.3V für den MCU generieren. 
Dann würde der erst ein mal funktionieren. Jetzt habe ich aber noch eine 
Menge an anderem Kram auf dem Board, welches auch 3.3V aber eben bis zu 
4W benötigt.

Das würde dann mein Problem auf diese Seite verschieben, wenn im Betrieb 
die 12V wegfallen, würden die SPI & I2C Chips plötzlich kein VCC mehr 
haben und an ihren Eingängen außerhalb der Spezifikationen betrieben 
werden?

Zudem lese ich:

• Self-powered applications: platforms providing their own power supply 
and acting as an upstream port on
the cable insertion. Not allowed, under any condition, to draw any 
current from the USB interface.

• Bus-powered applications: a platform supplied only through VBUS and 
acting as an upstream port.


Entweder ganz oder gar nicht? (3.1.1. vs. 3.1.2.)

von Stefan F. (Gast)


Lesenswert?

Erwin schrieb:
> Ja, natürlich könnte ich vom USB 5V einfach 3.3V für den MCU generieren.
> Dann würde der erst ein mal funktionieren. Jetzt habe ich aber noch eine
> Menge an anderem Kram auf dem Board, welches auch 3.3V aber eben bis zu
> 4W benötigt.

Der muss ja nicht zwingend an den gleichen 3,3V hängen.

Freilich musst du dir dann Gedanken darüber machen, wie du den µC vor zu 
viel Spannung von dieser Peripherie schützt. Dort ist es aber oft 
leichter als am USB Bus, wo strenge Anforderungen an Layout und 
Widerstände gelten.

Oder du nimmst einen größeren STM32, der für USB einen separaten VDDUSB 
Pin hat.

von Erwin (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Oder du nimmst einen größeren STM32, der für USB einen separaten VDDUSB
> Pin hat.

Das wird glaube ich nicht einfacher: When the VDDUSB is connected to a 
separated power supply, it is independent from VDD or VDDA, but it must 
be the last supply to be provided and the first to be removed.

Ich werde mir das noch mal in Ruhe überlegen, wie ich das jetzt 
anstellen werde. Vielen Dank aber für deine Hinweise :)

von Stefan F. (Gast)


Lesenswert?

Erwin schrieb:
> but it must be the last supply to be provided and the first to be removed.

Misst.

von Bauform B. (bauformb)


Lesenswert?

Erwin schrieb:
> Gibt es denn eine andere Möglichkeit, das Gerät
> extern zu bestromen und dennoch (korrekt) per USB zu verbinden?

Es kommt darauf an, wofür USB benutzt wird. Wenn ein virtueller COM-Port 
ausreicht, nehme ich einen FT230XS und 2 Optokoppler. Der FT230XS (und 
nur der) wird Bus Powered betrieben, die eigentliche Schaltung nur mit 
dem externen Netzteil.

Das funktioniert absolut korrekt und sehr zuverlässig, egal, in welcher 
Reihenfolge ein- und ausgesteckt wird. Bonus: keine Masseschleife 
zwischen Maschine und PC-Schutzleiter.

von Stefan F. (Gast)


Lesenswert?

Bauform B. schrieb:
> Wenn ein virtueller COM-Port ausreicht,

Zwei doofe, ein Gedanke. Ich wollte gerade darauf hinweisen, dass der 
Silabs CP2102 an seinen UART Port bis zu 5V verträgt auch wenn er selbst 
noch gar keine Spannungsversorgung hat.

von Erwin (Gast)


Lesenswert?

Nein, er wird als HID Gerät verwendet. Bisher habe ich es allerdings 
ganz genauso gelöst, mit einem FTDI und einem Silabs Isolator ;-)

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.