Forum: Mikrocontroller und Digitale Elektronik USB 2.0 versus viele RGB LEDs (Stromversorgung) [STM32]


von Stephan K. (stoffel1403)


Lesenswert?

Hallo ihr Lieben,

ich halte mich so kurz wie möglich.

Aktuell entwerfe ich eine Platine für ein Lenkrad (Simracing). Die 
Platine wird über USB 2.0 versorgt. Somit stehen maximal 0,5A zur 
Verfügung.

Das Lenkrad wird 12 bis 14 SMD-Drucktaster haben. Von denen soll im 
Idealfall jeder eine eigene RGB LED (SMD) haben, damit sich jeder 
Druckknopf farblich verändern lässt und einzeln ansteuerbar ist. Ich 
nutze transparente Kappen.

Ich werde sehr wahrscheinlich einen STM32F103C8T6 nutzen.

Ich habe mich schlau gemacht und verschiedene digitale LEDs (APA102C, 
WS2812-B, WS2813-B,...) herausgesucht. Jedoch ziehen alle soweit ich das 
feststellen kann relativ viel Strom unter Volllast (circa 0,06A). Zwölf 
oder gar vierzehn RGB LEDs wird der USB 2.0 also sehr wahrscheinlich 
nicht versorgen können.

Nur zu meinen Fragen:

Kennt ihr RGB LEDs, die kaskadierbar und einzeln steuerbar sind welche 
nicht so viel Strom benötigen? (Erfahrungen mit WS2813-C/D?)

Da ich den Fahrer nicht blenden möchte, würden die LEDs wahrscheinlich 
sowieso auf halber Stärke oder weniger laufen. Wie viel Stromeinsparung 
kann ich damit erwarten? Kann ich so vielleicht doch 12 WS2813-B nutzen?

Wie funktioniert das bei einer dieser RGB "Gamer" Tastaturen? Die haben 
doch jede Menge RGB LEDs und werden auch über USB betrieben.

Ich möchte sehr ungern ein zusätzliches Netzteil anschließen.

Viele Grüße
Stephan

P.S.: Mache das erst seit einer Woche. Bitte seid gnädig. :D

: Verschoben durch User
von Ntldr -. (ntldr)


Lesenswert?

Wenn man die WS2812 nicht gerade auf volle Helligkeit stellt ist das 
kein Problem. Volllast ist ja wie du ja schon bemerkt hast gar nicht 
dein Anwendungsfall. Aufpassen würde ich da aber ggf. mit dem 
Startzustand beim Einschalten. Einige Varianten sind da auf voller 
Helligkeit weiß, andere bleiben aus.

Stephan K. schrieb:
> Wie funktioniert das bei einer dieser RGB "Gamer" Tastaturen? Die haben
> doch jede Menge RGB LEDs und werden auch über USB betrieben.

Die haben einfach kleinere LEDs die deutlich weniger Strom haben wollen. 
Mit den WS2812 könnte man mit der gleichen Anzahl schon einen ganzen 
Raum beleuchten, eine Tastatur braucht das eher nicht. Teils kommen die 
dann aber trotzdem über die 500mA.

Da gibt es dann zwei Varianten (gerne auch als Kombination für maximale 
Kompatibilität):
- Einen zweiten USB Stecker dranhängen und die Last auf 2 Ports 
verteilen -> 1000mA insgesamt
- USB 3.0 aushandeln und 900mA über einen Port ziehen.

von Horst (Gast)


Lesenswert?

Ntldr -. schrieb:
> - Einen zweiten USB Stecker dranhängen und die Last auf 2 Ports
> verteilen -> 1000mA insgesamt

Gut daß der Pfusch durch USB3 ausstirbt.
USB2 liefert ohne Anmeldung 100mA, man verläß sich also bei mindestens 
einem Anschluß darauf, daß er immer 500mA liefert. Außerdem bringt die 
Paralleschaltung der beiden Spannungsleitungen jedes Strommanagement 
einer vernünftigen USB-Implementierung zum Verzweifeln.

von Wühlhase (Gast)


Lesenswert?

Stephan K. schrieb:
> Wie funktioniert das bei einer dieser RGB "Gamer" Tastaturen? Die haben
> doch jede Menge RGB LEDs und werden auch über USB betrieben.

Ich kann da nur von meiner uralten G11 berichten: Die hatte neben der 
blauen Beleuchtung noch zwei USB-Anschlüsse, und wenn ich da meinen 
USB-Stick angestöpselt habe kam die Meldung, daß ein USB-Gerät zuviel 
Strom zog und daher abgeschaltet wurde.


Stephan K. schrieb:
P.S.: Mache das erst seit einer Woche. Bitte seid gnädig. :D

Eine Idee zur Realisierung: Dimm die LEDs per Pulsweitenmodulation, am 
Besten an der gemeinsamen Kathode/Anode. Den Leistungsbedarf kannst du 
dann einfach mit dem Pulsbreitenverhältnis skalieren.
Dann vernünftig filtern. (Baue einen LC-Tiefpass, lege dessen 
Resonanzfrequenz auf ca. der zehnfachen Schaltfrequenz aus und statte 
diesen mit Eingangskondensatoren aus, die bei den vorgesehenen 
Spannungen und Strömen mindestens soviel Energie enthalten wie die 
Drossel.)

Du kannst den Filter auch kleiner auslegen, wenn du die LEDs nicht alle 
gleichzeitig schaltest. Sondern z.B. die LEDs in zwei Gruppen aufteilst, 
beide jeweils mit einem Pulsbreitenverhältnis von 50%, aber gegenläufig: 
Wenn die eine Gruppe aus ist, leuchtet jeweils die andere. Die effektive 
Stromaufnahme ist dabei genauso groß wie wenn du alle LEDs mit der 
gleichen Pulsbreite gleichzeitig schaltest, der Wechselanteil am Eingang 
deiner Schaltung wäre jedoch praktisch deutlich geringer (rein 
theoretisch sogar null).

Nimm für die PWM keinen Mikrocontroller oder so...das wird unnötig 
kompliziert und ist mit Kanonen auf Spatzen geschossen. Ein einfacher 
Oszillator, ein oder zwei Logikbausteine und zwei FETs reichen dafür.

von Stephan K. (stoffel1403)


Lesenswert?

Vielen Dank für die Antworten!

Horst schrieb:
> USB2 liefert ohne Anmeldung 100mA, man verläß sich also bei mindestens
> einem Anschluß darauf, daß er immer 500mA liefert.

Bedeutet es das das Betriebssystem die Anmeldung akzeptieren muss und 
dann die 500mA freigibt? Wie stelle ich sicher das das passiert?

Ntldr -. schrieb:
> Aufpassen würde ich da aber ggf. mit dem
> Startzustand beim Einschalten.

Regelt das nicht mein Code?

Wühlhase schrieb:
> Eine Idee zur Realisierung:

Vielen Dank für die Idee. Wenn ich es richtig verstanden habe, wäre 
immer nur eine der LED-Gruppen an. Das würde so schnell passieren, dass 
der Nutzer es gar nicht mitbekommt, richtig?
Klingt super interessant. Ich habe mit meiner begrenzten Erfahrung nur 
keinen Plan wie ich das umsetzen soll. Kennst du vielleicht ein 
Beispielprojekt bei dem ich mir Inspiration holen kann?
Werde die gesamten Fachbegriffe und Vorschläge gleich mal googlen. Mal 
sehen was ich allein hinbekomme. :D

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Stephan K. schrieb:
> Bedeutet es das das Betriebssystem die Anmeldung akzeptieren muss und
> dann die 500mA freigibt?

Ja.

Stephan K. schrieb:
> Wie stelle ich sicher das das passiert?

Der den USB ansteuernde Mikrocontroller muss das entsprechend 
implementieren, also vermutlich dein STM32F103C8T6. Im 
Konfigurations-Deskriptor stellst du den gewünschten Strom ein. Wenn der 
PC mit SET_CONFIGURATION mit wValue = 1 die Konfiguration aktiviert, ist 
der Strom freigegeben. Wenn er die Konfiguration mit wValue = 0 wieder 
abschaltet, musst du die LEDs wieder abschalten.

So wie hier:
https://github.com/Erlkoenig90/f1usb/blob/usbpower/src/usb.cc#L539
https://www.mikrocontroller.net/articles/USB-Tutorial_mit_STM32#Stromversorgung_per_USB

von Wühlhase (Gast)


Lesenswert?

Stephan K. schrieb:
> Wühlhase schrieb:
>> Eine Idee zur Realisierung:
>
> Vielen Dank für die Idee. Wenn ich es richtig verstanden habe, wäre
> immer nur eine der LED-Gruppen an. Das würde so schnell passieren, dass
> der Nutzer es gar nicht mitbekommt, richtig?
> Klingt super interessant. Ich habe mit meiner begrenzten Erfahrung nur
> keinen Plan wie ich das umsetzen soll. Kennst du vielleicht ein
> Beispielprojekt bei dem ich mir Inspiration holen kann?
> Werde die gesamten Fachbegriffe und Vorschläge gleich mal googlen. Mal
> sehen was ich allein hinbekomme. :D

Genau...das Auge ist so träge, daß es das Geflacker nicht mehr als 
Geflacker wahrnimmt.

Ich habe gerade gelesen, du hast ja doch einen Mikrocontroller 
dabei-wenn der schonmal da ist, dann nimm doch lieber den. Wie du das 
machen sollst...naja...einfach die LEDs ein- und ausschalten. Timer sind 
da sehr hilfreich.

von Ntldr -. (ntldr)


Lesenswert?

Stephan K. schrieb:
> Ntldr -. schrieb:
>> Aufpassen würde ich da aber ggf. mit dem
>> Startzustand beim Einschalten.
>
> Regelt das nicht mein Code?

Ich spreche ja gerade von dem Zustand zwischen reinstecken des USBs und 
anlaufen des µCs. Da läuft noch kein Code.

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.