Forum: Analoge Elektronik und Schaltungstechnik PC-USB --> RP2040 --> WS2812: Kabellänge


von Dietmar B. (theq)


Angehängte Dateien:

Lesenswert?

Hallo,

ich steuere eine WS2812 LED Kette, die auf einem E-Piano über den Tasten 
liegt, von einem MIDI PC Programm an.
Ziel: ich spiele ein MIDI File ab und die jeweiligen LEDs über den 
E-Piano Tasten leuchten auf.
Funktioniert im Prinzip auch. Allerdings leuchten immer mal wieder LEDs 
auf die nicht leuchten sollten (und umgekehrt, falsche Farben, usw.). 
Also gibt es keine saubere Signalübertragung.

Die gesamte Strecke zwischen PC und E-Piano(WS2812 Kette) sind so 
~4..5m.
~3m für USB. Der RP2040 unterstützt USB1.1 d.h. die 3m Meter sind schon 
grenzwertig.
Pegelwandlung 3,3V auf 5V mit einem HEF4093B.
Und dann noch mal ~1.5m twisted pair zu der WS2812 Kette.

Bevor ich jetzt alles Mögliche ausprobiere, hat jemand eine Idee wie man 
die Signalübertragung robuster macht?

- noch einen HEF4093B direkt vor die WS2812 Kette?
- USB länger und twisted pair kürzer?
- twisted pair länger und USB kürzer?
- geschirmtes Kabel statt twisted pair?
- twisted pair im geschirmten Kabel?
- von WS2812 auf WS2815 umsteigen?
- oder ....?
: Bearbeitet durch User
von F. (radarange)


Lesenswert?

Das sollte eigentlich unproblematisch sein.
1) Die WS2812 nehmen gegebenenfalls auch 3.3V-Pegel; tritt das Problem 
immer noch auf, wenn der Pegelwandler weggelassen wird?
2) Stimmt der Code?
3) Wie sieht die Spannungsversorgung aus, wieviele LEDs leuchten 
gemeinsam bei welcher Helligkeit? WS2812 brauchen ggf. schon recht viel 
Strom.
von Dietmar B. (theq)


Lesenswert?

F. schrieb:
> Das sollte eigentlich unproblematisch sein.
> 1) Die WS2812 nehmen gegebenenfalls auch 3.3V-Pegel; tritt das Problem
> immer noch auf, wenn der Pegelwandler weggelassen wird?
> 2) Stimmt der Code?
> 3) Wie sieht die Spannungsversorgung aus, wieviele LEDs leuchten
> gemeinsam bei welcher Helligkeit? WS2812 brauchen ggf. schon recht viel
> Strom.

1) ja, deshalb habe ich den Pegelwandler erst eingebaut ...hat aber 
nichts verbessert.
2) ja
3) Wieviele LEDs gleichzeitig leuchten hängt vom MIDI Musikstück ab. 
Aber da ich Klavierstücke abspiele (max. 10 Finger), sind es also max. 
10 LEDs gleichzeitig. Helligkeit aller WS2812 ist auf 20% reduziert. Die 
Stromaufnahme liegt so bei <300mA.
von Gerd E. (robberknight)


Lesenswert?

USB verwendet Prüfsummen. Wenn es auf USB-Ebene Probleme geben würde, 
würdest Du entweder eine ungewöhnlich hohe Latenz sehen, also Ruckeln, 
oder das Gerät wird gleich ganz rausgeworfen und neu erkannt, also 
Aussetzer von 2-3 Sekunden plus Eintrag im Syslog.

Ich vermute eher Probleme mit dem HEF4093B oder dem Twisted Pair Kabel.

Hast Du mal nen anderen Peglewandler probiert? Ich würde z.B. 74LVC1T45 
empfehlen. Natürlich 2 Keramikkondensatoren direkt an dessen beide 
Spannungseingänge. Das GND von dem Twisted-Pair-Kabel direkt an das GND 
des 74LVC1T45.

Die 5V zur Versorgung der WS2812 und ein dickes GND dazu separat zum 
5V-Netzteil führen. So dass der Strom zur Versorgung der WS2812 
möglichst nicht durch das Twisted-Pair zum Pegelwandler fliesst.
von Falk B. (falk)


Lesenswert?

Dietmar B. schrieb:

> Funktioniert im Prinzip auch. Allerdings leuchten immer mal wieder LEDs
> auf die nicht leuchten sollten (und umgekehrt, falsche Farben, usw.).

Aha.

> Die gesamte Strecke zwischen PC und E-Piano(WS2812 Kette) sind so
> ~4..5m.
> ~3m für USB. Der RP2040 unterstützt USB1.1 d.h. die 3m Meter sind schon
> grenzwertig.

Nö.

> Pegelwandlung 3,3V auf 5V mit einem HEF4093B.

Falscher IC. Nimm einen 74HCTirgendwas. Und dann eine 
Serienterminierung, hier ca.33 Ohm.

> - noch einen HEF4093B direkt vor die WS2812 Kette?

Nö.

> - USB länger und twisted pair kürzer?

Nein.

> - twisted pair länger und USB kürzer?
> - geschirmtes Kabel statt twisted pair?
> - twisted pair im geschirmten Kabel?
> - von WS2812 auf WS2815 umsteigen?
> - oder ....?

Alles nein. Siehe oben. Außerdem eine andere Masseanbindung. Dein 
Netzteil muss DIREKT zum Eingang der LED-Kette gehen! VOn dort dann die 
VErdrillte Leitung mit Masse + Signal zum RP2040.

http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%202.pdf#page=83

Beitrag "Re: Differnz-Signal für WS2812B"
von Εrnst B. (ernst)


Lesenswert?

Falsch leuchtende Pixel können auch von Timing-Problemen in der Software 
kommen, IRQ während der Übertragung etc.

Sollte beim RP2040 eigentlich ausgeschlossen sein, wenn die 
Möglichkeiten der Hardware genutzt werden (PIO+DMA bietet sich an).

Aber um schnell zu prüfen ob's ein Hardware oder Software Problem ist:

Spiel einfach eins der vielen tausenden Beispielprogramme für 
RP2040+WS2812 drauf, eins was ohne USB usw. einfach nur ein Muster, 
Farbverlauf o.Ä. ausgibt. Wenn das auch falsche Pixel zeigt => Hardware.
von Reinhard R. (reirawb)


Lesenswert?

Hallo,

ich stand letztens bei einem Projekt vor ähnlichen Fragen. Längere 
Leitungen zwischen einzelnen WS2815 und zwischen der Signalquelle und 
der eresten WS2815. Dafür habe ich im Voraus einige Versuche am 
Basteltisch mit max. 3,5m Länge durchgeführt (Bild), wobei in meinem 
Projekt max. 0,8m vorkommen. Ich hatte dafür aber gleich 
Reihenwiderstände von 100 Ohm in der Signalleitung zwischen den WS2815 
vorgesehen. Keine Probleme.

Nach Fertigstellung hatte ich aber ähnliche Probleme mit falschen Farben 
und LEDs. Dann fiel mir auf, dass zwischen der Signalquelle (µC mit 
3,3V) und der ersten LED kein Widerstand war. Nachdem ich deisen 
Widerstand eingefügt hatte, läuft alles wie geplant, auch mit 
3,3V-Quelle ohne Pegelwandler.
von Reinhard R. (reirawb)


Angehängte Dateien:

Lesenswert?

Sorry, Bilder fehlten.
von Vanye R. (vanye_rijan)


Lesenswert?

Dein 4093 ist kacke! Oh..und dein Aufbau, also der auch...

Nimm irgendeinen modernen leistungsfaehigen Bustreiber. Und sieh zu das 
der direkt an seinen Beinen einen 100nF hat weil der ja ziemlich schnell 
schalten muss um das bekloppte WS2812 Protokoll zu fahren.
Und falls dein Nachbar Amateurfunker ist kann es sein das der die Tage 
mit rotem Kopf bei dir klingelt weil du vermutlich jede Menge Stoerungen 
erzeugst. :-)

Falls du es deutlich besser machen willst dann mach die Uebertragung mit 
schnellen RS485 Treibern. Also z.B ST485AB und verdrill die beiden 
Kabel.
Dann sollte es mit den Nachbarn und der Uebertragung klappen.
Bedenke das die WS2812 einen wackeligen 1Mhz Basistakt haben. Da sind 
Oberwellen bis 10Mhz notwendig und bis zu UKW vermutlich vorhanden.

Vanye
: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

Dietmar B. schrieb:
> ~3m für USB. Der RP2040 unterstützt USB1.1 d.h. die 3m Meter sind schon
> grenzwertig.

Das ist eine Fehlannahme. Der RP2040 läuft mit Full-Speed (12MBit/s) und 
der USB Standard erlaubt damit 5m.

Wenn sicher gestellt ist, dass das Signal unverfälscht ankommt, dann 
scheint mir wackeliges Timing, damit schließe ich mich meinen Vorrednern 
an, ein guter Kandidat zu sein.

Gerne wird so etwas ja mittels möglichst schlechter Software-Routinen 
realisiert, weil's in irgendeiner Lib so drin ist.
Obwohl es ja erstklassige eingebaute Hardware (PIO und DMA wurden schon 
genannt) gibt.

Noch etwas, wenn du sowieso nur 20% Helligkeit brauchst, dann lass die 
Kette mit ca. 4V laufen. Dann sind die PICO Ausgangspegel für die LEDs 
im erlaubten Bereich und man kann sich die Inverter durchaus sparen.
Einfach zwei/drei Ausgänge (die können je 12mA) über jeweils 100Ω 
verbinden und damit das Signal generieren. Auf der Empfangsseite darf 
man dann sogar einen angemessenen Pull-Down Widerstand an den 
LED-Eingang legen.
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Dietmar B. schrieb:
> Also gibt es keine saubere Signalübertragung.
Ich würde in diesem Falls mit einem Oszilloskop die Signalqualität 
(Timing, Pegel, Flanken, Über- und Unterschwinger, Klinglen) direkt am 
Eingang der 1. LED messen. Wenn die dort nicht den im Datenblatt 
angegebenen Werten entspricht, dann empfängt schon die 1. LED Käse und 
gibt den dann ungeschnitten weiter.

> oder ....?
Messen statt Raten! Mir ist völlig unklar, wie man einen seriellen Bus 
ohne Oszilloskop zuverlässig in Betrieb nehmen will. Das ist doch nur 
Bastelen und Frickeln.

Reinhard R. schrieb:
> Dann fiel mir auf, dass zwischen der Signalquelle (µC mit 3,3V) und der
> ersten LED kein Widerstand war.
Dieser Widerstand zur Serienterminierung(**) gehört nicht irgendwo 
"zwischen" den Treiber und die 1. LED, sondern direkt an den Ausgang des 
Treibers. Der richtige Wert kann an der Signalqualität an der 1. LED 
kontrolliert werden. Siehe dazu z.B. den 
Beitrag "Signalproblem bei langem Kabel" und meine Messungen im 
Beitrag "Re: Serienwiderstand bei Hochfrequenz"

Norbert schrieb:
> Auf der Empfangsseite darf man dann sogar einen angemessenen Pull-Down
> Widerstand an den LED-Eingang legen.
Wozu soll der dann gut sein? Der pfuscht doch nur an der 
Leitungsimpedanz rum und hebelt die Serienterminierung aus.

(**) siehe Wellenwiderstand
: Bearbeitet durch Moderator
von Norbert (der_norbert)


Lesenswert?

Lothar M. schrieb:
> Wozu soll der dann gut sein? Der pfuscht doch nur an der
> Leitungsimpedanz rum und hebelt die Serienterminierung aus.

Wenn drei parallele Ausgänge über je 100Ω das Signal auf die Reise 
schicken und an der Empfangsseite ein 1kΩ Widerstand gegen Masse liegt, 
dann wird der High-Pegel nur um ca. 3% gesenkt. Gleichzeitig geistert 
aber nicht jeder aufgefangene Störimpuls in die ›Din‹ der ersten LED.
Und bei gerade mal 800kHz sieht das Signal auch bei 12m noch prima aus.
Genau so seit Jahren im bewährten Einsatz.
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Norbert schrieb:
> Wenn drei parallele Ausgänge über je 100Ω das Signal auf die Reise
> schicken und an der Empfangsseite ein 1kΩ Widerstand gegen Masse liegt,
> dann wird der High-Pegel nur um ca. 3% gesenkt.
Und die Serienterminierung wird zum Glück auch nur um 3% verfehlt.

> Gleichzeitig geistert aber nicht jeder aufgefangene Störimpuls in
> die ›Din‹ der ersten LED.
Warum sollte ohne diesen 1k Widerstand irgendwas geistern können? Denn 
es werden ja beide Pegel (High und Low) niederimpedant aktiv getrieben.

> Und bei gerade mal 800kHz sieht das Signal auch bei 12m noch prima aus.
Wenn du die Signalform gemessen hast, dann passt das ja.
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.