Hallo zusammen, ich möchte gerne ein WS2812-LED-Band mit meinem Raspberry Pi 2 Model B steuern.\ Das funktioniert auch soweit ziemlich gut, solange das Band kurz genug ist. Wenn das Band allerdings länger wird, setzt es die Befehle nicht mehr richtig um, sondern fängt an in jeden erdenklichen Farben zu flackern. Jede LED für sich. Angesteuert wird das Band über ein PWM-Signal, welches das Pi generiert. Da ich gelesen habe, dass das Band das PWM-Signal mit 5V erwartet, das Pi das Signal aber nur mit 3,3V raushaut, gehe ich davon aus, dass diese 3,3V über die entsprechende Länge dann einfach zu schwach werden. Auch beim Download des SDK wird empfohlen, dies entsprechend zu verstärken, was unsere Vermutung verstärkt. Allerdings haben wir sehr wenig Platz an dem Ort, wo sich das Pi befindet. Und deshalb wäre da die Frage, wie kann ich das PWM-Signal überhaupt entsprechend auf 5V verstärken? Weil der Verstärker ja eine entsprechend niedrige Reaktionszeit auch braucht, weil der High- und Low-Pegel ja ziemlich schnell wechseln. Noch ein weiterer Hinweis:\ Ich habe bei dem Projekt zwar jemanden dabei, der sich mit Elektrik und Elektronik auskennt, der jedoch selbst etwas seine Grenzen dabei gerät, ich selbst habe aber keinerlei elektronischen Kenntnisse. Daher danke ich euch für eure Mithilfe!\ Mit Freundlichen Grüßen\ Leon
Develeon64 schrieb: > Wenn das Band allerdings länger wird, setzt es die Befehle nicht mehr > richtig um, sondern fängt an in jeden erdenklichen Farben zu flackern Das ist zwar kein PWM-Signal, sondern ein serieller Bus. Macht aber nix. 1. Auch bei längerem Band stabile Spannungsversorgung sicherstellen 2. Lösung wie hier... Beitrag "WS2812b über STM32 flackert ohne Logic Analyzer" ...oder hier.... https://forum.arduino.cc/t/einfache-schaltung-3-3v-5v-teensy-3-1-ws2812b-msgeq7/260172 ...anwenden. mfg mf
Du hast das Symptom falsch gedeutet. Die erste LED "verstärkt" das Signal bereits auf 5V. Du hast sehr wahrscheinlich dein Netzteil oder die Leitungen überfordert. Ab einer gewissen Länge muss man zwischendurch zusätzlich Stromversorgung einspeisen. Develeon64 schrieb: > wie kann ich das PWM-Signal > überhaupt entsprechend auf 5V verstärken? Siehe Beitrag "Re: Esp8266 mit ca. 13 m ws2812b"
Stefan ⛄ F. schrieb: > Die erste LED "verstärkt" das Signal bereits auf 5V. Nicht unbedingt, daher gibt es ja auch die Pf Opferpixelmethode https://forum.iobroker.net/topic/29833/wled-led-streifen-ws2812b-ws2811-sk6812-apa102-bedienen/425?lang=en-GB Ich kann mir vorstellen, dass die Stromversorgung in die Knie geht und die Daten beim ersten Pixel nicht gut genug aufbereitet werden. Aber das hab ich ja schon gesagt ;) mfg mf
Develeon64 schrieb: > Angesteuert wird das Band über ein PWM-Signal Nich wirklich, das ist ein 1Wire-Protokoll. Develeon64 schrieb: > Da ich gelesen habe, dass das Band das PWM-Signal mit 5V erwartet, das > Pi das Signal aber nur mit 3,3V raushaut, gehe ich davon aus, dass diese > 3,3V über die entsprechende Länge dann einfach zu schwach werden. Nein, die erste LED arbeitet dann als Level-Shifter. Geht aber meist schief. Gug also hier mal rein: Beitrag "Led streifen mit 5V versorgen, signal aber nur 3,3V" Dein Hautproblem ist sicher die Stromversorgung des LED-Streifens. Dazu kannst Du hier auch mal die Suchfunktion bemühen.
Achim M. schrieb: > Nicht unbedingt, Bei ihm schon, denn ein kurzer LED Streifen funktioniert ja. Also hat er die 3,3V kompatible Version. Develeon64 schrieb: > Das funktioniert auch soweit ziemlich gut, solange das Band kurz genug > ist.
Develeon64 schrieb: > Da ich gelesen habe, dass das Band das PWM-Signal mit 5V erwartet, das > Pi das Signal aber nur mit 3,3V raushaut, gehe ich davon aus, dass diese > 3,3V über die entsprechende Länge dann einfach zu schwach werden. Setze als Pegelwandler ein 74HCTxx Gatter deiner Wahl dazwischen. Stefan ⛄ F. schrieb: > Bei ihm schon, denn ein kurzer LED Streifen funktioniert ja. Also hat er > die 3,3V kompatible Version. Gibt es dazu auch ein Datenblatt, dass das garantiert oder ist das einfach nur Glück?
Wow, die Antworten kamen echt schnell! Vielen Dank für eure Antworten! Als wir das Band zum ersten Mal in Betrieb genommen haben, hatten wir eine Animation verwendet, die das Band LED für LED einschaltet (ein Beispiel, das im SDK dabei war). Dort hielt das Band für ca. 2-3 Meter, bevor es dann auf der gesamten Länge anfing zu flackern. Da haben wir bereits an die Stromversorgung gedacht. Deshalb hat das Band nun ein Netzteil erhalten, was bis zu 30A liefern kann. Bemessen haben wir das auf der Basis des Verbrauches einer LED, den wir auf einer Internetseite gefunden haben. Bei der Menge der LEDs reicht (nach unseren Daten) das Netzteil dicke aus. Außerdem speisen wir alle ~1,5 Meter neuen Strom ein. Bemerkenswert ist außerdem, dass das Band im Raum getrennt ist. Ein Band is 4 Meter lang, dann (in Reihe) mit einer Lücke von 4 Metern per Draht mit dem zweiten Stück verbunden, das nochmals 2 Meter lang ist. Wie ich bereits berichtete, lief das Band zunächst auf etwa 2-3 Meter stabil. Mit dem neuen Netzteil auf seiner ganzen Länge von 5 Metern der Rolle. Jetzt sind es insgesamt 6 Meter, plus die Kabel"brücke", und interessanterweise funktioniert es jetzt nur noch auf den ersten 4 Metern, statt wie vor der Brücke 5. Außerdem ist der Unterschied zum ersten Mal, dass es dann nicht auf der gesamten Länge anfängt zu flackern, sondern nur exakt der zweite Teil. (Ich hoffe man versteht, wie das gemeint ist?)
Wolfgang schrieb: > Gibt es dazu auch ein Datenblatt, dass das garantiert oder ist das > einfach nur Glück? Es gibt ein Dabla mit den Versionsänderungen. Als ich es das letzte mal sah, gings bis V6. Finde es aber grad nicht im Netz u. auf diesem Computer. Ab V4/5 is das Reset-Signal wirklich 50µs lang. Mehr weiß ich nich mehr.
Teo D. schrieb: > Ab V4/5 is das Reset-Signal wirklich 50µs lang. Mehr weiß ich nich mehr. Dein Wissen täuscht dich, zumindest wenn man den Datenblätter glaubt. Die sagen ganz etwas anderes. Sowohl die WS2812B-V4 als auch die WS2812B-V5 verlangen nach einer Reset-Zeit von mindestens 280µs. Als minimaler High-Pegel des Eingangssignal ist für die V4 ein Wert von 0.7*VDD @ VDD=4.5~5.5V garantiert, was dann bei 5V einen spezifizierten Mindestwert von 3.5V ergibt. Damit ist diese Version nicht 3.3V kompatibel. Die WS2812B-V5 ist lt. Datenblatt 3.3V kompatibel. Für diesen Typ ist ein minimaler High-Pegel des Eingangssignals von nur 2.7V erforderlich.
Stefan ⛄ F. schrieb: > Bei ihm schon, denn ein kurzer LED Streifen funktioniert ja. Also hat er > die 3,3V kompatible Version. Das ist ein Fehlschluss. Für die 5V-Version ist NICHT garantiert, dass sie unterhalb von 3.5V ein Signal nicht als High-Pegel erkennt. Vielmehr ist garantiert, dass bei einem Pegel von 0.7*VDD das Signal sicher als High erkannt wird. Darunter gibt es eine Grauzone, wo's noch funktionieren KANN oder auch nicht.
Leon D. schrieb: > Dort hielt das Band für ca. 2-3 Meter, bevor es dann auf der gesamten > Länge anfing zu flackern. Flackern. Hmm. Ein Schaltnetzteil schaltet wegen Überlastung ab (hicup) und nach kurzer Zeit wieder ein ? Leon D. schrieb: > Mit dem neuen Netzteil auf seiner ganzen Länge von 5 Metern der Rolle. So so, du hast also nach Fehlfunktion das Netzteil gewechselt, dann ging es plötzlich. Leon D. schrieb: > Jetzt sind es insgesamt 6 Meter, plus die Kabel"brücke", und > interessanterweise funktioniert es jetzt nur noch auf den ersten 4 > Metern, statt wie vor der Brücke 5. Außerdem ist der Unterschied zum > ersten Mal, dass es dann nicht auf der gesamten Länge anfängt zu > flackern, sondern nur exakt der zweite Teil. Das hat jetzt natürlich BESTIMMT nichts mit der Stromversorgung und deren schlechter Verdrahtung (nicht nur plus, sondern auch auf Masse fliesst Strom) zu tun.
Leon D. schrieb: > Wie ich bereits berichtete, lief das Band zunächst auf etwa 2-3 Meter > stabil. > Jetzt sind es insgesamt 6 Meter... und > interessanterweise funktioniert es jetzt nur noch auf > den ersten 4 Metern. Wenn der Signalpegel aus dem Mikrocontroller dein Problem wäre, würde gar keine LED richtig arbeiten. Jede LED liefert an ihrem Ausgang 5V Pegel zur jeweils nächsten LED.
Wie viele LED pro Meter hat dein LED-Streifen? Die gibt es in unterschiedlichen Ausführungen. Leon D. schrieb: > Außerdem speisen wir alle ~1,5 Meter neuen Strom ein. Es wäre einfach mal interessant zu sehen, wie du das gelöst hast. Ein Foto wäre hilfreich. Weil: Nicht nur die VCC-Leitung sondern auch die GND-Leitung müssen verstärkt werden und das mit einem Draht, der einiges mehr als 1.5mm² an Querschnitt hat. Und gerne auch öfters neu einspeisen ... > Mit dem neuen Netzteil ... Kann durchaus sein, die Netzteile haben eben nicht exakt 5.000V. Hat das neue 200mV mehr oder weniger als das alte, kann das den Effekt u.U. schon erklären. Develeon64 schrieb: > Da ich gelesen habe, dass das Band das PWM-Signal mit 5V erwartet, das > Pi das Signal aber nur mit 3,3V raushaut, gehe ich davon aus, dass diese > 3,3V über die entsprechende Länge dann einfach zu schwach werden. Ja, üblicherweise wollen die WS2812 ein 5V-Signal. Wie schon gesagt wurde, wenn es mit einem 3.3V-Signal auch geht, ist das Zufall und du hattest Glück. Das kann dich aber schnell verlassen, schon bei anderen Temperaturen. Die allereinfachste Abhilfe ist die Versorgung der ersten LED mit weniger Spannung; man nimmt gerne eine Si-Diode von VCC der zweiten LED zu VCC der ersten und speist die 5V erst an der zweiten LED ein. Somit sieht die erste nur 4.3V und die 70% VCC für den Signalpegel sind erfüllt. Die erste LED leuchtet trotzdem, vielleicht nur etwas dunkler. Ob es auffällt? Ein weiterer Punkt ist die Signalintegrität des Datensignal. Du hast offenbar längere Leitungen zwischen den Abschnitten, da kann das Datensignal schon verfälscht werden. Ich würde als erstes am Pi-Ausgang und am Ausgang jedes Teilstreifens einen Serien-R mit 30-50Ω einbauen. Und natürlich das Datensignal schön parallel zur GND-Leitung führen.
Wolfgang schrieb: > Für die 5V-Version ist NICHT garantiert, dass sie unterhalb von 3.5V ein Signal nicht als High-Pegel erkennt. Das kommt wie gesagt auf die Revision des Chips an. In der aktuellen Diskussion geht es allerdings nicht um Garantien. Ein paar Meter funktionieren, und erst dahinter tritt das Problem auf. Dort wo das Problem auftritt, haben die Signale 5V. Da helfen deine Bemerkungen dem TO nicht, egal wie richtig sie sind.
Nachtrag: Hast du auch mal das Timing des Datensignal nachgemessen? Der Pegel wird durch jede LED regeneriert, das Timing jedoch nicht. Und wenn es anfangs bereits grenzwertig war, kann es durchaus sein, dass sich das auch nach hinten verschlechtert.
By the way: Ich möchte nochmal daran erinnern, dass ich weiter oben auf den anderen Thread verlinkt habe wo ich einen Pegelwandler mit 1 Transistor und die korrekte Leitungsführung der Stromversorgung beschrieb. Stefan ⛄ F. schrieb: > Siehe Beitrag "Re: Esp8266 mit ca. 13 m ws2812b" Man darf das natürlich ignorieren und noch ein paar Ehrenrunden drehen. Nur darf man sich dann nicht darüber wundern oder gar beklagen, wenn es nicht zufriedenstellend funktioniert.
HildeK schrieb: > Und wenn es anfangs > bereits grenzwertig war, kann es durchaus sein, dass sich das auch nach > hinten verschlechtert. Bei 4m Kabel zur nächsten LED, mit Sicherheit. Bei schlechtem Timing, kann es sogar zu einer scheinbaren Funktionalität kommen. Ändert man dann das Bitmuster, kommt es zu "merkwürdigen" Reaktionen der LEDs.
Stefan ⛄ F. schrieb: > Das kommt wie gesagt auf die Revision des Chips an. Nein, auch den älteren Chip-Revisionen mit U_IH min = 0.7*VDD ist es nicht verboten, ein 3.3V Signal noch zu verstehen.
Wolfgang schrieb: > Nein, auch den älteren Chip-Revisionen mit U_IH min = 0.7*VDD ist es > nicht verboten, ein 3.3V Signal noch zu verstehen. Jaja, der Oberlehrer Wolfgang muss NATÜLICH wieder oberschlau daher reden. Hast du sonst keine sinnvollen Inhalte in deinem Leben?
Stefan ⛄ F. schrieb: > Ein paar Meter > funktionieren, und erst dahinter tritt das Problem auf. Dort wo das > Problem auftritt, haben die Signale 5V. Schon ein Spannungsabfall von 100mV auf der Gnd-Leitung kann darüber entscheiden, ob es gerade noch so geht oder eben nicht. Und der Spannungsabfall auch für die 1.LED kann sich ändern, wenn die Kette länger wird. Bisher kennt keiner die Verdrahtung.
Wolfgang schrieb: > Schon ein Spannungsabfall von 100mV auf der Gnd-Leitung kann darüber > entscheiden, ob es gerade noch so geht oder eben nicht. ACH! Aber 5min vorher noch lauthals verkünden, daß man so eine LED mit 3,3V ansteuern darf . . . Mann O Mann! Such dir nen guten Therapeuten!
Wolfgang schrieb: > Schon ein Spannungsabfall von 100mV auf der Gnd-Leitung kann darüber > entscheiden, ob es gerade noch so geht oder eben nicht. Und der > Spannungsabfall auch für die 1.LED kann sich ändern, wenn die Kette > länger wird. Deswegen habe ich einen Pegelwandler empfohlen. Der wird aber nicht das vom TO gemeldete Problem lösen. Also lass uns mal auf die Frage des TO konzentrieren! Wenn ich mit einem gebrochenen Bein und Schuppen auf dem Kopf ins Krankenhaus komme behandelt man auch zuerst das Bein, nicht die Schuppen.
Stefan ⛄ F. schrieb: > Wenn ich mit einem gebrochenen Bein und Schuppen auf dem Kopf ins > Krankenhaus komme behandelt man auch zuerst das Bein, nicht die > Schuppen. Nö. man macht erstmal einen C****A Test! Sicher ist Sicher! ;-)
Falk B. schrieb: > Nö. man macht erstmal einen C****A Test! Sicher ist Sicher! ;-) Selbst wenn der positiv ausfällt wird man trotzdem erst das Bein behandeln. Die Infektion wird man wahrscheinlich gar nicht behandeln sondern aussitzen.
Falk B. schrieb: > ACH! Aber 5min vorher noch lauthals verkünden, daß man so eine LED mit > 3,3V ansteuern darf . . . Mann O Mann! Such dir nen guten Therapeuten! Was man darf, steht in den Absolute Maximum Ratings, was garantiert funktioniert, steht in den Electrical Characteristics. Alles andere kann, aber muss nicht funktionieren. Das solltest du doch wohl wissen - ist doch nicht das erste Datenblatt, dass dir vor die Nase kommt.
Stefan ⛄ F. schrieb: > Deswegen habe ich einen Pegelwandler empfohlen. Der wird aber nicht das > vom TO gemeldete Problem lösen. Da wäre ich nicht so sicher. Der Einwurf von HildeK bezüglich des Timing ist nicht von der Hand zu weisen und könnte tatsächlich ebenfalls zu den beschriebenen Symptomen führen. Ohne selber am konkreten Objekt zu messen, würde ich das also keinesfalls pauschal ausschließen. Aber klar: wahrscheinlicher ist schon eine unzureichende Versorgung, insbesondere eine unzureichende Masseführung.
Leute, Leute... Technik ist doch keine Religion und somit keine Glaubensfrage. Technik hat Bedingungen, unter denen sie gut funktioniert, Bedingungen, unter denen sie schlecht funktioniert und Bedingungen, unter denen sie gar nicht funktioniert. Ich habe hier ein konkretes Szenario, unter dem sie schlecht funktioniert. Meine Frage bezieht darauf, unter welchen Bedingungen sie gut funktionieren würde und wie ich diese Bedingungen schaffen kann. Und nicht, wer den besten Therapeuten hat, dafür wäre ein anderes Forum sicherlich hilfreicher. Also, wenn ihr mehr Informationen zu etwas braucht, bin ich derjenige, der euch diese liefern kann. Fragt mich einfach :) Auf den Kommentar desjenigen, der es lieber vorzog einfach nur anzugreifen, statt zur Lösung beizutragen, gehe ich mal gar nicht erst weiter drauf ein, denn ich denke, dass man schon richtig lesen können sollte, sollte jedem hier klar sein. Wir sind ja alle erwachsen ;) Also: um auf das eigentliche technische Problem zurückzukommen: Ich habe eine kleine Zeichnung der Verdrahtung angehängt, wie sie auch real vorliegt. Das ist besser, als Worte. Die ungefähren Längen und Anzahl der LEDs (60/m) sollten daraus hervorgehen. Falls noch was unklar sein sollte, einfach gerne fragen. Die Länge der Leitungen zwischen Netzteil/Pi und Anfang des ersten (oberen) Bandes beträgt ca. Dazu sei allerdings folgendes gesagt: Als das erste Band (obere) noch seine vollen 5m hatte, funktionierte es wunderbar. Dann haben wir den letzten Meter abgeschnitten, diesen um einen weiteren Meter verlängert und entsprechend parallel angebracht. Seitdem verhält sich nur das untere Band unkontrolliert, während das Erste noch immer auf seinen ganzen 4m voll funktioniert. Außerdem ist mit flackern nicht gemeint, dass es hell und dunkel wird. Mit Flackern meine ich, dass jede LED in allen Farben blinkt, aber nicht die, die durch das Programm vorgegeben sind. Und zwar jede LED für sich. Ich kann gerne noch versuchen ein Video davon zu machen? Das Szenario, indem ein stärkeres Netzteil half, welches ich in meinem vorherigen Post beschrieben habe, verhielt sich anders: Das Band war auch 5m lang, funktionierte auch problemlos, bis auf eine bestimmte Länge. Wenn man aber dann eine LED zu viel einschaltete, fing in diesem Szenario das gesamte Band an zu spinnen, statt nur die LED, die zu viel für das Netzteil war. Um dieses Szenario geht allerdings nicht primär. Ich wollte es nur als weiteren Punkt einbringen, weil mir dort ein unterschiedliches Verhalten aufgefallen war.
:
Bearbeitet durch User
Leon D. schrieb: > Ich habe eine kleine Zeichnung der Verdrahtung angehängt, wie sie auch > real vorliegt. Das ist besser, als Worte. Jepp. Die Versorgung ist definitiv Mist. Es liegt ganz sicher daran.
c-hater schrieb: > Die Versorgung ist definitiv Mist Der erste grobe Fehler besteht schon darin, dass Signal und Versorgung durch eine gemeinsame GND Leitung laufen. Der Spannungsabfall auf der GND Leitung versaut dir das Signal. Schau dir meine Zeichnung (und Erklärung) an auf die ich bereits 2x verwiesen habe. Dort steht, wie man es richtig macht.
Stefan ⛄ F. schrieb: > Schau dir meine Zeichnung (und Erklärung) an auf die ich bereits 2x > verwiesen habe. Dort steht, wie man es richtig macht. Mir ist deine Zeichnung nicht entgangen :) Vielen Dank für den Hinweis darauf. Wir werden die Verdrahtung nun überdenken und schauen, was das Band dann sagt.
Stefan ⛄ F. schrieb: > Der erste grobe Fehler besteht schon darin, dass Signal und Versorgung > durch eine gemeinsame GND Leitung laufen. Der Spannungsabfall auf der > GND Leitung versaut dir das Signal. In der Tat. Der Masseanschluß vom Pi muss mit einer separaten Masseleitung an den Massepunkt NAH an der 1. LED. Das ist echte, sternförmige Masseführung. Dann fällt dort auch keine nennenswerte Spannung ab. So wie beim OP ist der Massepunkt am Netzteil. Das hört man auch immer wieder ist, hier aber falsch, denn die lange Leitung zur 1. LED spuckt dabei in die Suppe. Ein 5V Pegelwandler hinter dem Raspberry Pi ist sehr zu empfehlen.
Falk B. schrieb: > Ein 5V Pegelwandler hinter dem Raspberry Pi ist sehr zu empfehlen. Solange nicht klar ist, welche Revision der WS2812 in der Kette verbaut ist, ist völlig unklar, ob der nominelle Signalpegel das Problem ist. Schaden kann es natürlich nicht.
Leon D. schrieb: > Leute, Leute... > > Technik ist doch keine Religion und somit keine Glaubensfrage. Nö, aber ein Thema für viele Schwätzer mit Halbwissen: > Ich habe eine kleine Zeichnung der Verdrahtung angehängt, wie sie auch > real vorliegt. Das ist besser, als Worte. Naja. > Die ungefähren Längen und Anzahl der LEDs (60/m) sollten daraus > hervorgehen. Falls noch was unklar sein sollte, einfach gerne fragen. > Die Länge der Leitungen zwischen Netzteil/Pi und Anfang des ersten > (oberen) Bandes beträgt ca. > > Dazu sei allerdings folgendes gesagt: > Als das erste Band (obere) noch seine vollen 5m hatte, funktionierte es > wunderbar. Dann haben wir den letzten Meter abgeschnitten, diesen um > einen weiteren Meter verlängert und entsprechend parallel angebracht. > Seitdem verhält sich nur das untere Band unkontrolliert, während das > Erste noch immer auf seinen ganzen 4m voll funktioniert. Weil der Spannungsabfall auf GND zwischen benachbarten LEDs klein ist. > Um dieses Szenario geht allerdings nicht primär. Ich wollte es nur als > weiteren Punkt einbringen, weil mir dort ein unterschiedliches Verhalten > aufgefallen war. Du hast 2 wesentliche Probleme. 1.) Hoher Spannungsabfall auf GND und VCC auch grund der vielen LEDs. Dagegen hilft Einspeisung an mehreren Punkten mit dicken Leitungen, so 1,5-2mm^2 im Querschnitt. Beitrag "Re: Frage zu IR-Remote+LED-Strips an AVR" Außerdem musst du den Spannungsabfall auf der Leitung zwischen Raspberry Pi und der 1. LED minimieren. D.h. eine getrennte Masseleitung vom Anfang des 1. Streifens zum Raspberry Pi. Siehe Skizze von Stefan. https://www.mikrocontroller.net/attachment/534320/IMG20211029091714.jpg 2.) Halbwegs HF-taugliche Signalführung vom Raspberry Pi zur 1. LED sowie vom Ende des 1. Streifen zum Anfang des 2. Streifens. Denn auch wenn das Signal scheibar mit 800kbit/s langsam erscheint im Gbit-Zeitalter, so hat es doch VERDAMMT steile Flanken! Beitrag "Re: Differnz-Signal für WS2812B" Sprich, Daten und GND sollten verdrillt sein, damit erreicht man einen halbwegs brauchbaren Wellenwiderstand. Man kann auch CAT3 oder CAT5 Netzwerkkabel nehmen, dann aber immer ein verdrilltes Paar für Daten und GND! Das Gleiche gilt für die Datenverbindung zwischen dem 1. und 2. LED-Streifen!
Leon D. schrieb: > Also, wenn ihr mehr Informationen zu etwas braucht, bin ich derjenige, > der euch diese liefern kann. Fragt mich einfach :) Ich hatte ein Foto vom Aufbau angefragt. Und in der Zeichnung sind keine Leitungslängen eingetragen, nur die Stripe-Längen. Läuft die Datenleitung wirklich so alleine vom zweiten zum vierten Strang? Man sollte die Masse hier mitführen. Über die verwendeten Kabelquerschnitte der Versorgung hast du auch nichts gesagt (oder ich habe es übersehen, dann sorry).
Stefan ⛄ F. schrieb: > Bei ihm schon, denn ein kurzer LED Streifen funktioniert ja. Also hat er > die 3,3V kompatible Version. Da wäre ich aber nicht zu sicher. Wenn der Pegel einigermaßen gut ist, könnte er auch bei einem 5V-System reichen. Sporadische Ausfälle lassen mich eher vermuten, dass es genau so etwas ist. Vielleicht mal einen kleinen pull-up an den Eingang halten (soforn der Ausgang des Treibers da nicht meckert) und schauen, ob es sich verbessert?
Jürgen S. schrieb: > kleinen pull-up an den Eingang halten (soforn der Ausgang des Treibers > da nicht meckert) und schauen, ob es sich verbessert? Was soll sich da verbesser? Ein Pull-Up Widerstand erhöht nicht die Ausgangsspannung eines Push-Pull Ausgangs! Bestenfalls um ein paar mV, für alle Pedanten dort draußen!
c-hater schrieb: > Der Einwurf von HildeK bezüglich des Timing > ist nicht von der Hand zu weisen und könnte tatsächlich ebenfalls > zu den beschriebenen Symptomen führen Vermutlich meinst du diesen Einwurf: HildeK schrieb: > Ein weiterer Punkt ist die Signalintegrität des Datensignal. Du hast > offenbar längere Leitungen zwischen den Abschnitten, da kann das > Datensignal schon verfälscht werden. Jede einzelne LED bereitet nicht nur die Signalpegel auf, sondern auch das Timing. Zwischen den LEDs sind laut Datenblatt bis zu 5 Meter Kabel ohne weitere Maßnahmen verwendbar. Ich denke, wenn man deutlich darunter bleibt und am Anfang der Leitung einen 100Ω Widerstand gegen Reflexionen einbaut, ist man auf der sicheren Seite. Natürlich vorausgesetzt, die Stromversorgung ist in Ordnung.
Stefan ⛄ F. schrieb: > Jede einzelne LED bereitet nicht nur die Signalpegel auf, sondern auch > das Timing. Den Signalpegel ja, aber das Timing? Nach welchen Vorgaben denn, es gibt ja keinen Takt? Wenn die Flanken verschliffen bzw. langsamer ansteigen, dann wird die nächste LED eben bei ihrer Schwelle schalten und so ist ein Verfälschen der Puls- und Pausendauern denkbar. Oder haben die LEDs einen Taktrückgewinnung drin und machen wieder neues korrektes Timing? Kann ich mir nicht vorstellen.
HildeK schrieb: > Den Signalpegel ja, aber das Timing? Ja auch das Timing steht so im Datenblatt und auf einigen Webseiten. Das Signal wird mit Takt abgetastet und verzögert aufbereitet wieder ausgegeben. HildeK schrieb: > Nach welchen Vorgaben denn, es gibt ja keinen Takt? Es gibt einen internen R/C Oszillator. "It internal include intelligent digital port data latch and signal reshaping amplification drive circuit. Also include a precision internal oscillator" und "After transmission for each pixel, the signal to reduce 24bit. pixel adopt auto reshaping transmit technology, making the pixel cascade number is not limited the signal transmission, only depend on the speed" https://www.tme.eu/Document/64e8d425b90f84990264129a9679149c/WS2812B-V5.pdf "One of the first observations was that the delay between the leading edge of the input pulse and the leading edge of the output pulse, T_delay_in_out, was constant regardless of the timing of the input pulse." "An interesting observation is that the timing values for both LEDs are multiples of a smaller number, ~208 ns for the WS2812B and ~166 ns of the WS2812. It appears that the internal controller circuit is actually a clocked design – possibly realized by a small state machine." https://cpldcpu.wordpress.com/2014/01/14/light_ws2812-library-v2-0-part-i-understanding-the-ws2812/# Leider ist das Datenblatt immer noch so scheiße, dass man einige Details nur durch Experimentieren heraus finden kann.
Danke, Stefan F., für das Zusammentrage dieser Infos. Aus dem Datenblatt alleine mag ich das nicht ableiten (Reshaping könnte auch nur die Regeneration der Pegel heißen), aber offenbar hat dieser Tim in seinem Blog sich das genauer angeschaut. Trotzdem, wenn das Datensignal am Eingang schon grenzwertig war, dann kann auch die zeitliche Aufbereitung nicht alles lösen; schließlich muss das Ganze kausal bleiben. Dann könnten die im Blog ermittelten Grenzen verletzt worden sein.
1 | A “0” can be encoded with a pulse as short as 62.5 ns, but should not be longer than ~500 ns (maximum on WS2812). |
2 | A “1” can be encoded with pulses almost as long as the total cycle time, but it should not be shorter than ~625 ns (minimum on WS2812B). |
Recht hast du natürlich mit den Aussagen, dass die Stromversorgung und -verteilung sowie ggf. Reflexionen des Datensignals die Hauptprobleme sein dürften für den TO.
HildeK schrieb: > Trotzdem, wenn das Datensignal am Eingang schon grenzwertig war, dann > kann auch die zeitliche Aufbereitung nicht alles lösen; Klar. Ich wollte nur ein paar zusätzliche Infos liefern über die ich heute morgen gestolpert bin als ich herausfinden wollte wie lange die Pausen zwischen den Impulsen mindestens sein müssen und maximal sein dürfen. Die maximal Angaben im Datenblatt fand ich nämlich ziemlich unplausibel.
HildeK schrieb: > Trotzdem, wenn das Datensignal am Eingang schon grenzwertig war, dann > kann auch die zeitliche Aufbereitung nicht alles lösen; Leider hat der TO nichts über sein Timing gesagt - oder habe ich das übersehen? Nur dann könnte man schätzen, ob das Timing schon am Beginn der Kette knapp ist und ein Fehler in der Länge eines Taktschritts schon zuviel ist.
Dietrich L. schrieb: > Nur dann könnte man schätzen, ob das Timing schon am Beginn der Kette > knapp ist Die Tatsache dass die ersten drei Meter tadellos funktionieren sagt mir, dass es mit hoher Wahrscheinlichkeit OK sein wird.
Stefan ⛄ F. schrieb: > Die Tatsache dass die ersten drei Meter tadellos funktionieren sagt mir, > dass es mit hoher Wahrscheinlichkeit OK sein wird. Mir sagt das aber noch nicht. Wenn das Timing knapp an der Grenze liegt (auf der "guten" Seite), kann es dauerhaft und stabil funktionieren. Nach der nächsten Stufe kann es aber verändert knapp auf der "schlechten" Seite liegen und dann nicht mehr stabil funktionieren.
Falk B. schrieb: > Jürgen S. schrieb: > >> kleinen pull-up an den Eingang halten (soforn der Ausgang des Treibers >> da nicht meckert) und schauen, ob es sich verbessert? > > Was soll sich da verbesser? Ein Pull-Up Widerstand erhöht nicht die > Ausgangsspannung eines Push-Pull Ausgangs! Bestenfalls um ein paar mV, > für alle Pedanten dort draußen! Vielleicht ist es ja ein TTL-Raspberry ... ;-)
Dietrich L. schrieb: > Nach der nächsten Stufe kann es aber verändert knapp auf der > "schlechten" Seite liegen und dann nicht mehr stabil funktionieren. Nein, das kann nicht sein, weil auch das Timing von jeder einzelnen LED aufbereitet wird. Wenn das Timing nicht in Ordnung wäre, würden die ersten 3 Meter auch nicht funktionieren. Lies doch mal die Seite auf die ich verlinkt habe. https://cpldcpu.wordpress.com/2014/01/14/light_ws2812-library-v2-0-part-i-understanding-the-ws2812/#
Jens G. schrieb: > Vielleicht ist es ja ein TTL-Raspberry Man kann die Ausgänge die Raspberry Pi auf ungefähr 4 Volt hochziehen, liegt damit aber außerhalb seiner Spezifikation.
Stefan ⛄ F. schrieb: > Nein, das kann nicht sein, weil auch das Timing von jeder einzelnen LED > aufbereitet wird. Wenn das Timing nicht in Ordnung wäre, würden die > ersten 3 Meter auch nicht funktionieren. Ich gebe zu, ich habe mich in die spezielle Technik ber WS2812 nicht eingearbeitet, besomders wie genau das Eingangssignal aufbereitet und weitergegeben wird, und was dabei passieren kann. Aber ich gehe mal vom physikalischem Verständniss bei einer serielle Datenübertragung Typ "daisy chain" aus: jede Stufe kann zusätzliche Timingfehler bewirken, sodass nach x Stufen die Summer aller Fehler die Toleranzschwelle des nächsten Empfängers überschreitet. Ab hier sind die Daten dann falsch, bei aller davor ist die Welt noch in Ordnung. Denn jede Stufe verzögert nicht nur, sondern ändert auch das Tastverhältnis: die Signalflanken sind begrenzt schnell und können sich beim Übergang High->Low und Low->High unterscheiden. Außerdem ist die Schaltschwelle des Empfängers nicht exakt in der Mitte der Flanke.
:
Bearbeitet durch User
Stefan ⛄ F. schrieb: > Nein, das kann nicht sein, weil auch das Timing von jeder einzelnen LED > aufbereitet wird. Wenn das Timing nicht in Ordnung wäre, würden die > ersten 3 Meter auch nicht funktionieren. Um das so sicher behaupten zu können, müßte man die NICHT dokumentierte Funktionsweise der Aufbereitung kennen. Es könnte natürlich sein, dass du sie ausgemessen hast. Würde ich aber bezweifeln. Jemandem wie S. Landolt hingegen würde ich eine derartige Behauptung ziemlich unbesehen abkaufen. Aber auch nicht völlig unkritisch, denn selbst der vergißt bei seinen Bemühungen gelegentlich, auch die Grenzen abzuklopfen und kommt deshalb gelegentlich zu falschen Schlüssen. Ich sehe das immer so: Was würde ICH machen, um die Funktion der Hardware möglichst billich umzusetzen. Wo würde ich sparen, wo wären dementsprechend die Schwachstellen. Wenn man das durchdenkt, weiss man schon recht gut, was genau man messen muss, wenn was nicht dokumentiert ist...
Dietrich L. schrieb: > Aber ich gehe mal vom physikalischem Verständniss bei einer serielle > Datenübertragung Typ "daisy chain" aus: jede Stufe kann zusätzliche > Timingfehler bewirken, sodass nach x Stufen die Summer aller Fehler die > Toleranzschwelle des nächsten Empfängers überschreitet. Genau das ist hier nicht der Fall. Die LEDs erkennen die Länge des Impulses am Eingang. Es gibt nur eine ganz simple Unterscheidung: kurz=0 und lang=1. Am Ausgang geben sie ein neu erzeugtes Signal aus: kurz=1 Takt, lang=2 Takte. Also liefert jede LED ein Signal mit perfektem Timing.
c-hater schrieb: > Um das so sicher behaupten zu können, müßte man die NICHT > dokumentierte Funktionsweise der Aufbereitung kennen. Auch für dich gilt: Lies was auf der Seite https://cpldcpu.wordpress.com/2014/01/14/light_ws2812-library-v2-0-part-i-understanding-the-ws2812/# steht, denn genau dies hat der Mensch untersucht und dokumentiert.
Stefan ⛄ F. schrieb: > Am Ausgang geben sie ein neu erzeugtes Signal aus: kurz=1 Takt, lang=2 > Takte. Also liefert jede LED ein Signal mit perfektem Timing. Jetzt ist es vollkommen klar: du bist dir der Implikationen des Problems überhaupt nicht bewusst. Tipp: entwerfe eine eigene Statemachine mit der Aufgabe, das WS2811-Protokoll bestmöglich zu recyclen (unter dem Umstand, selber nur einen nicht allzu hoch über dem Protokolltakt liegenden Systemtakt zu haben)... Dann werden dir die Probleme wohl bewusst werden (das wiederum traue ich dir schon zu).
Nein c-hater, ich denke du hast die Lage nicht verstanden. Jede einzelne LED bereitet das Signal so auf, dass an ihrem Ausgang ein perfektes 0 oder 1 Bit heraus kommt. Genau das steht so im Datenblatt der WS2812 und der Tim hat es in seinem Blog durch Messungen bestätigt. Zum Vergleich: Nimm einen PC mit einem Programm dass die Daten con COM1 nach COM2 durch reicht. Du kannst beliebig viele PC's miteinander verketten. Solange der erste PC die Eingabe richtig erkannt hat, werden alle Computer die Daten perfekt aufbereitet weiter reichen. Die Kette kann beliebig lang werden. c-hater schrieb: > entwerfe eine eigene Statemachine mit der > Aufgabe, das WS2811-Protokoll bestmöglich zu recyclen Leis noch mal die Seite. Genau das hat er dort beschrieben. Seine WS2812 hat offenbar einen Taktgeber mit 208 ns. Wenn das Eingangssignal kürzer als 3 Takte ist wird es als 0 Bit gewertet. Wenn es länger als 3 Takte ist wird es als 1 Bit gewertet. Ausgangsseitig wird das kurze Bit mit 2 Takten ausgegeben und das lange Bit mit 4 Takten. Beides ist ist der nächsten LED wieder eindeutig mit 3 Takten vergleichbar.
Stefan ⛄ F. schrieb: > Nein c-hater, ich denke du hast die Lage nicht verstanden. Jede einzelne > LED bereitet das Signal so auf, dass an ihrem Ausgang ein perfektes 0 > oder 1 Bit heraus kommt. Du hast es nicht verstanden: Das Problem ist: inwiefern kann sie das? Doch natürlich bestenfalls mit der Auflösung ihres eigenen Taktes! Und der ist SCHEISSE. Relativ gering bezüglich des Protokolltaktes und obendrein nicht besonders stabil. RC-Oszi halt.
c-hater schrieb: > Doch natürlich bestenfalls mit der Auflösung ihres eigenen Taktes! Und > der ist SCHEISSE. Ist er nicht. Nochmal zum mitmeißeln: Am Eingang wird ein Impuls als kurz (0) gewertet wenn er weniger als 3 Takte lang ist. Ansonsten ist es ein langer (1) Impuls. Am Ausgang hat ein kurzer Impuls 2 Takte und ein langer Impuls 4 Takte. Selbst wenn ein R/C Oszillator 20% Abweichung zur vorherigen LED hätte, könnte er das Signal immer noch einwandfrei erkennen und weiter geben. Der nächste der behauptet, die LED's würde das Signal ohne neuen Takt durch reichen und Fehler aufaddieren möge das bitte mit Messprotokollen belegen!
Stefan ⛄ F. schrieb: > Ist er nicht. Nochmal zum mitmeißeln: Du bist wirklich zum Scheißen zu blöd, selbst mit freundlicher Nachhilfe. Tip: Jedes einzelne WS28xx-Teil hat seinen eigenen Takt, der in keinster Weise mit dem seiner Nachbarn synchronisiert ist. Begreifst du es (mit dieser schon etwas unfreundlicheren Nachhilfe) endlich? Bin gespannt...
Lieber c-hater, wenn dir die Argumente ausgehen beleidigst du. Muss das sein? Ich habe meine Annahmen mit dem Datenblatt und Verweisen auf Tims Messprotokolle belegt. Du hast deine anderen Vermutungen hingegen nicht belegt. Du hast auch weder zu meinen noch zu den Aussagen von Tim einen Widerspruch im Datenblatt aufgezeigt. c-hater schrieb: > Jedes einzelne WS28xx-Teil hat seinen eigenen Takt, der in keinster > Weise mit dem seiner Nachbarn synchronisiert ist. Na und? Das tut nichts zur Sache, außer dass die Abweichung der Taktfrequenzen in gewissen Grenzen bleiben muss, die sehr leicht einzuhalten sind, wie ich aufzeigte. Das ganze Internet basiert übrigens auch auf asynchroner Taktung. Nach deiner Logik kann das Internet nicht funktionieren, tut es aber.
Stefan ⛄ F. schrieb: >> Vielleicht ist es ja ein TTL-Raspberry > > Man kann die Ausgänge die Raspberry Pi auf ungefähr 4 Volt hochziehen, Wenn diese als Eingang oder Open Drain geschaltet werden. Logisch, 3,3V + ca. 0,7V für die Klemmdioden nach VCC. > liegt damit aber außerhalb seiner Spezifikation. Er wird es überleben.
Stefan ⛄ F. schrieb: > Am Ausgang geben sie ein neu erzeugtes Signal aus: kurz=1 Takt, lang=2 > Takte. Also liefert jede LED ein Signal mit perfektem Timing. Das könnte man messen, indem man die Eingangspulse verändert und dabei die Ausgangspulse beobachtet.
Stefanus hat schon recht: jede LED bereitet das Signal so auf, dass die folgende es sicher erkennen kann - die Toleranzen des eigenen und nächsten Taktgenerators sind im Timing berücksichtigt. Das einzig kumulierende ist die Verzögerung der steigenden Flanke - jede LED erhöht sie um einen konstanten Wert. Ich sehe aber nicht, wie das zu einem Fehler führen kann.
Falk schrieb: > Das könnte man messen, indem man die Eingangspulse verändert und dabei > die Ausgangspulse beobachtet. Genau das hat der ja in dem verlinkten Artikel gemacht.
Extra für dich c-hater: Nehmen wir mal an, die erste LED hätte 208 ns Takte, dann ist deren Schwelle zwischen 0 und 1 Bits genau 624 ns. Nun speise die Lichterkette mit dem schlechtesten Signal dass weit außerhalb der Spezifikation ist dennoch so gerade eben erkannt wird: 0 Bits mit 623 ns Länge (das DB erlaubt 250 ... 550) 1 Bits mit 625 ns Länge (das DB erlaubt 650 ... 950) Dann wird diese erste LED (wie beim TO) korrekt aufleuchten. An ihrem Ausgang kommt folgendes Timing heraus: 0 Bits mit 416 ns Länge (das DB erlaubt 250 ... 550) 1 Bits mit 832 ns Länge (das DB erlaubt 650 ... 950) Das Signal wurde durch die erste LED erheblich verbessert. Da ist kein Fehler, der sich aufaddiert hat. Nun stellen wir uns einfach mal vor, die nächste LED hätte einen 20% langsameren Takt von 250 ns. Die Schwelle ist dann 750 ns. 416 ns ist viel kürzer als 750 ns, also eindeutig ein 0 Bit. 832 ns ist deutlich länger als 750 ns, also eindeutig ein 1 Bit. Sie liefert an ihrem Ausgang das aufbereitete Signal: 0 Bits mit 500 ns Länge (das DB erlaubt 250 ... 550) 1 Bits mit 1000 ns Länge (das DB erlaubt 650 ... 950) Hoppla, diese LED erfüllt nicht mehr die Spec, sie funktioniert trotzdem! Nun stellen wir uns vor, die nächste LED hätte einen 25% schnelleren Takt (relativ zu der davor), also 188 ns. Die Schwelle ist dann 564 ns. 500 ns ist kürzer als 564 ns, also eindeutig ein 0 Bit. 1000 ns ist viel länger als 564 ns, also eindeutig ein 1 Bit. Sie liefert an ihrem Ausgang das aufbereitete Signal: 0 Bits mit 376 ns Länge (das DB erlaubt 250 ... 550) 1 Bits mit 752 ns Länge (das DB erlaubt 650 ... 950) Obwohl ich in diesem Szenario eine LED verwendet habe, die sogar außerhalb der Spec liegt, funktioniert die LED Kette noch und liefert an ihrem Ausgang ein taldelloses Signal für weitere WS2812 Leuchtdioden. Ich beziehe mich hier auf dieses Datenblatt: http://www.world-semi.com/solution/details-140-4.html
Stefan ⛄ F. schrieb: > Das hat der Tim ja auch gemessen, auf dessen Blog ich verwies. jaja, hab ich erst danach gelesen. Gute Arbeit, schön dargestellt.
foobar schrieb: > Das einzig kumulierende ist die Verzögerung der steigenden > Flanke - jede LED erhöht sie um einen konstanten Wert. Entsprechend dem Satz im Datenblatt "the pixel cascade number is not limited the signal transmission, only depend on the speed"
Dietrich L. schrieb: > Aber ich gehe mal vom physikalischem Verständniss bei einer serielle > Datenübertragung Typ "daisy chain" aus: jede Stufe kann zusätzliche > Timingfehler bewirken, sodass nach x Stufen die Summer aller Fehler die > Toleranzschwelle des nächsten Empfängers überschreitet. Nicht, wenn das Signal beim Einlesen auf einen Taktgenerator synchronisiert wird und damit auch die Flankenlagen regeneriert werden.
Mir ist da übrigens eine Unstimmigkeit aufgefallen bei T1H aufgefallen. Ich habe im Netz erheblich unterschiedliche Angaben gefunden, siehe angehängte Screenshots. Nun hat der Tim ermittelt, dass seine WS2812B mindestens 625 ns benötigt, was im Rahmen der damals aktuellen Dokumentation liegt. Aber im Datenblatt v5 steht 580 ns, das ist weit von den bisherigen Angaben entfernt. Es gibt ein Migrations-Dokument das scheinbar alle Unterschiede zwischen v5 und vorherigen Versionen auflistet. Von einem geänderten Timing steht darin aber nichts. Kann es sein, dass im Datenblatt v5 ein Zahlendreher passiert ist: 580 versus 850? Was meint ihr dazu? Ich würde das ja gerne selbst ausmessen, aber mir fehlt das nötige Equipment, und ich habe auch nur die älteren Versionen des Chips vorliegen.
Stefan ⛄ F. schrieb: > Die LEDs erkennen die Länge des Impulses am Eingang. Es gibt nur eine > ganz simple Unterscheidung: kurz=0 und lang=1. > > Am Ausgang geben sie ein neu erzeugtes Signal aus: kurz=1 Takt, lang=2 > Takte. Also liefert jede LED ein Signal mit perfektem Timing. Stefan ⛄ F. schrieb: > Sorry, sollte heissen: > > kurz=2 Takte, lang=4 Takte Ok, jetzt bin ich bei dir. Ich habe den von dir zitierten Blog jetzt auch durchgelesen: alles OK!
Wolfgang schrieb: > Nicht, wenn das Signal beim Einlesen auf einen Taktgenerator > synchronisiert wird und damit auch die Flankenlagen regeneriert werden. Da hast du recht!
Hast du meinen obigen Vermerk zum möglichen Zahlendreher gesehen? Wenn es kein Zahlendreher ist, muss sich die Abtastmethode bei der Version 5 fundamental geändert haben.
Falk B. schrieb: > Was soll sich da verbesser? Ein Pull-Up Widerstand erhöht nicht die > Ausgangsspannung eines Push-Pull Ausgangs! Da es darum geht, dass es sporadisch zu gehen scheint, bzw an der Grenze bewegt und sich das zeitlich und sogar über die Dimension ändert, scheint es wohl an den Taktflanken zu liegen. Da dort einiges an Last dran liegt (die sich HL-konform über die Zeit=Erwärmung erhöht) machen wenige mV Hub schon etwas aus - vor allem, weil der Ausgangs-R offenbar so hoch ist, dass er in Probleme kommt, weil er runtergezogen wird. Den kann man also auch leicht hochziehen.
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.