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
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.
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.
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.
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"
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.
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.
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
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.


