Forum: Projekte & Code WS2812B über USB-UART ansteuern


von Thomas F. (thomas_fr)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich hoffe ich bin hier richtig? Wenn nicht einfach in die richtige
Rubrik verschieben.

Beim prüfen eines USB-UART Adapters auf die erreichbare Geschwindigkeit, 
bin ich auf die Idee gekommen, direkt einen LED-Streifen mit WS2812B 
LEDs anzusteuern. Im Netzt konnte ich im nach hinein nur einen Beitrag 
finden der sich mit dem gleichen Thema beschäftigte. Der Ansatz wurde 
dort aber
nicht probiert.

Das Ganze funktioniert nur wenn die Signale invertiert ausgegeben 
werden.
Wegen Start-. und Stoppbit und des Ruhepegels des UARTs. Deswegen 
braucht man eine Pegelwandler im Anhang ist eine Möglichkeit.
Diese benutze ich auch mit MCs. Geht mit 3,3V und 5V.

Ich habe vier Umsetzer getestet. Leider funktionieren nur die Umsetzer 
mit einem PL2302 Chip. Sind aber auch die günstigsten.
1. PL2302HXA OK
2. PL2302TA  OK
3. FT232RL   NOK  Datenstrom setzt bei 3MBaud sporadisch aus.
4. CP2102    NOK  keine 3MBaud

Das ganze wurde unter XP, W7 und W10 getestet.
Bei W10 muss man einen alten Prolific Treiber installieren der Standard
Treiber unterstützt die PL2302HXA nicht mehr.

Das Timing ist nicht 100% nach Spezifikation.
Für den einen oder anderen ist die Spielerei bestimmt Interessant.
Wenn man z.B. C# erlernt ist das bestimmt eine Abwechslung zu den Forms.
Für eine PC-Beleuchtung langt es auf jeden Fall.

Ab 5 LEDs (>500mA) ein separates Netzteil benutzen!

Das Beispielprogramm ist auf 120 LEDs bei 100Hz konfiguriert.
Kann man im Code auf eigene Bedürfnisse leicht anpasse.

Programm ist mit VS210 Express erstellt worden (.Net4.0)

Viel Spaß beim Probieren.

: Verschoben durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Thomas F. schrieb:
> Bei W10 muss man einen alten Prolific Treiber installieren der Standard
> Treiber unterstützt die PL2302HXA nicht mehr

Das hat bei mir nicht funktioniert.
Ich bekomme nur einen Errorcode 10 im Geräte-Manager.

Welchen Treiber hast Du genommen und wie hast Du den unter W10 
installiert?

von Thomas F. (thomas_fr)


Lesenswert?

Torsten C. schrieb:
> Thomas F. schrieb:
>> Bei W10 muss man einen alten Prolific Treiber installieren der Standard
>> Treiber unterstützt die PL2302HXA nicht mehr
>
> Das hat bei mir nicht funktioniert.
> Ich bekomme nur einen Errorcode 10 im Geräte-Manager.
>
> Welchen Treiber hast Du genommen und wie hast Du den unter W10
> installiert?

Ich hab den Prolific 3.2.0.0 vom 31.07.2007 benutzt.
Nach dem Installieren im Treiber auf den Button
"Vorheriger Treiber" drücken.
Dann hat es bei mir funktioniert.

von Thomas F. (thomas_fr)


Lesenswert?

Thomas F. schrieb:
> Torsten C. schrieb:
>> Thomas F. schrieb:
>>> Bei W10 muss man einen alten Prolific Treiber installieren der Standard
>>> Treiber unterstützt die PL2302HXA nicht mehr
>>
>> Das hat bei mir nicht funktioniert.
>> Ich bekomme nur einen Errorcode 10 im Geräte-Manager.
>>
>> Welchen Treiber hast Du genommen und wie hast Du den unter W10
>> installiert?
>
> Ich hab den Prolific 3.2.0.0 vom 31.07.2007 benutzt.
> Nach dem Installieren im Treiber auf den Button
> "Vorheriger Treiber" drücken.
> Dann hat es bei mir funktioniert.

Ich hab es noch mal getestet.
Unter W10 funktioniert PL2303HXA, PL2303HXB, PL2303TA

PL2303HXB <- wusste gar nicht das ich den hab!

Ich hab zwei Treiber heruntergeladen
1. PL2303_Prolific_DriverInstaller_v1_12_0.zip
2. baofengprolificvista.zip

Kann aber nicht mehr sagen welchen ich installiert habe.

von Thomas F. (thomas_fr)


Angehängte Dateien:

Lesenswert?

Ich wollte hier niemanden verwirren.
Es handelt sich um die PL2303 Chips.

W10 ist eine 32-Bit Installation.
XP 32
W7 64

Im Programm sind die Chips jetzt auch richtig bezeichnet.

Gruß Thomas

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Thomas F. schrieb:
> Ich hab den Prolific 3.2.0.0 vom 31.07.2007 benutzt.
> Nach dem Installieren im Treiber auf den Button
> "Vorheriger Treiber" drücken.

Die Frage "Vorheriger Treiber" kam bei mir nicht. Aber 3.2.0.0 hat 
geklappt. Zunächst Code 14: Sie müssen den Computer neu starten, …
Und nach dem Neustart dann ohne Code 10 im Geräte-Manager. :-)

Danke. Ich dachte schon, ich kann meine ganzen Adapter entsorgen.

von Thomas F. (thomas_fr)


Angehängte Dateien:

Lesenswert?

Ich hab noch eine UART Konfiguration gefunden mit der die WS2812B 
Signale besser abgebildet werden können.

    Start + 8Bit + Parität + Stopp
    S0123 4567Pss
 00 11000 0110000
 01 11000 0111100
 10 11110 0110000
 11 11110 0111100

Bei 6 MBaud (UART) ergibt das ca.840 kBit (WS2812B)

UART Einstellungen:
serialPort.BaudRate = 6000000;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
serialPort.Parity   = Parity.Even;

Getestet mit PL2023HXA  PL2023HXB  PL2023TA

Stoppbit ist doppelt aufgeführt weil es in der Realität länger ist wie 
eine Bit-Zeit.

Mit dieser Einstellung ist die Low-Phase um 50ns außerhalb der WS2812B 
Spezifikation. Die ja zum Teil recht widersprüchlich ist. Die Low-Phase 
ist bei 650ns die wird sicher erkannt werden.

Die Oszibilder entstanden mit dem PL2023TA.

1Meter.PNG
Direkt gemessen am Ende der Adapterleitung.

27MeterCAT7.PNG
Kanal A: Gemessen am Ende der Adapterleitung.
Kanal B: Gemessen vor dem Pegelwandler nach 27 Meter CAT7-Leitung.
Die Quellimpedanz des Adapters scheint zufällig zu passen.

240_LEDS.PNG
Bei den Tests habe ich 240 LEDs angeschlossen (100Hz). Es konnte kein 
Flackern oder anderen Fehler festgestellt werden.


Testumgebung:
CPU Xeon E3-1230V2 @3,3GHz
BIOS Einstellungen:
Hyper Threading Aus
C States alle Aus bis auf C2
Diese Einstellungen verbessern die Reaktionszeiten auf Ereignisse.


In dem Programm wurde die Enumeration der Adapter geändert und
zwei neue UART Konfiguration hinzugefügt.

von Thomas F. (thomas_fr)


Lesenswert?

> Getestet mit PL2023HXA  PL2023HXB  PL2023TA

Ist natürlich der PL2303.

Gruß Thomas

von Torsten C. (torsten_c) Benutzerseite


Angehängte Dateien:

Lesenswert?

Nachdem das automatische Update den Treiber überschrieben hatte, musste 
ich erstmal herausfinden, was zu tun ist: Den richtigen Treiber von Hand 
erneut auswählen, wie in diesem Video:

https://www.youtube.com/watch?v=H394FnMzeFo

von Lars R. (lrs)


Lesenswert?

Thomas F. schrieb:
> Im Netzt konnte ich im nach hinein nur einen Beitrag
> finden der sich mit dem gleichen Thema beschäftigte. Der Ansatz wurde
> dort aber
> nicht probiert.

Hier Beitrag "Re: low-cost WiFi Chip ESP8266 Projekte mit dem Internet der Dinge (IoT)" 
mein Post vom 03.11.2014. Dort habe ich auch von einer Variante mit 7 
Datenbits und 2.5Mbps geschrieben. ...ebenfalls nicht probiert...

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.