Forum: Mikrocontroller und Digitale Elektronik PWM-Signal verstärken


von Develeon64 (Gast)


Lesenswert?

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

von Achim M. (minifloat)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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"

von Achim M. (minifloat)


Lesenswert?

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

von Teo D. (teoderix)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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?

von Leon D. (develeon64)


Lesenswert?

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?)

von Teo D. (teoderix)


Lesenswert?

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.

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von MaWin (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von HildeK (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von HildeK (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Teo D. (teoderix)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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?

von Wolfgang (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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!

von Stefan F. (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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! ;-)

von Stefan F. (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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.

von Leon D. (develeon64)


Angehängte Dateien:

Lesenswert?

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
von c-hater (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Leon D. (develeon64)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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!

von HildeK (Gast)


Lesenswert?

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).

von J. S. (engineer) Benutzerseite


Lesenswert?

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?

von Falk B. (falk)


Lesenswert?

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!

von Stefan F. (Gast)


Lesenswert?

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.

von HildeK (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von HildeK (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Dietrich L. (dietrichl)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Dietrich L. (dietrichl)


Lesenswert?

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.

von Jens G. (jensig)


Lesenswert?

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 ... ;-)

von Stefan F. (Gast)


Lesenswert?

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/#

von Stefan F. (Gast)


Lesenswert?

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.

von Dietrich L. (dietrichl)


Lesenswert?

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
von c-hater (Gast)


Lesenswert?

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...

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> kurz=1 Takt, lang=2

Sorry, sollte heissen:

kurz=2 Takte, lang=4 Takte

von c-hater (Gast)


Lesenswert?

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).

von Stefan F. (Gast)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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!

von c-hater (Gast)


Lesenswert?

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...

von Stefan F. (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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.

von foobar (Gast)


Lesenswert?

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.

von foobar (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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"

von Wolfgang (Gast)


Lesenswert?

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.

von Stefan F. (Gast)



Lesenswert?

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.

von Dietrich L. (dietrichl)


Lesenswert?

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!

von Dietrich L. (dietrichl)


Lesenswert?

Wolfgang schrieb:
> Nicht, wenn das Signal beim Einlesen auf einen Taktgenerator
> synchronisiert wird und damit auch die Flankenlagen regeneriert werden.

Da hast du recht!

von Stefan F. (Gast)


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.