Jump to content

LED WS2812 Neopixel funktionieren! Helle Begeisterung!


Loetkolben

Recommended Posts

Hallo zusammen.

 

Durch das Update des "LED Strip Bricklets" funktionieren nun auch die WS2812B Chips.  ;D

Benutzte LED Bricklet Firmware 2.0.2

 

Vielen Dank an das Tinkerforge Team dafuer.

 

 

Ein Problem habe ich noch: Die 10 Stueck WS2812B "starten" manchmal nicht. Da muss ich LED-Power mehrmals ab-/an-stecken und dann geht es? Chip oder Timingproblem? Mal sehen.

 

Edit: Stelle gerade fest, dass ab und zu beim Brickviewertestprogramm ein paar Pixel ab und zu "aufblitzen", also mit hoher Helligkeit strahlen. Ursache unbekannt.

 

Edit2: Nun laesst sich der Streifen gar nicht mehr zum arbeiten bewegen.  :(

 

Edit3: Weitere Infos zum defekten Streifen weiter unten.

 

 

Der Loetkolben

20140703_231848.jpg.eba46495a34b90c5a2ec1545625db64e.jpg

20140703_232002.jpg.fefed323e18841a9879eab85b01214ea.jpg

Link zu diesem Kommentar
Share on other sites

Ist vielleicht ein Timing Problem. Wir halten die im Datenblatt angegebenen Timings noch nicht auf die ns genau ein, da wir hier keine Probleme damit hatten hab ich es aber einfach erstmal ignoriert. Das kann ich aber nächste Woche noch verbessern, mal gucken ob es noch mal Feedback diesbezüglich gibt.

 

Edit: Ich hab mich schonmal daran Versucht die Protokollimplementierung zu verbessern: https://github.com/Tinkerforge/led-strip-bricklet/commit/1f70acb7021b5fa49e1ac8c2527d085f0f971c37

 

Wir werden das nochmal mit ein paar unterschiedlichen WS2812 Strips durchtesten.

Link zu diesem Kommentar
Share on other sites

Wir werden das nochmal mit ein paar unterschiedlichen WS2812 Strips durchtesten.

 

Auch wenn ich den Quellcode nicht verstanden habe und bin ich gerne beim testen mit dabei.

 

Ich dachte immer die WS2812 haetten, zumindest laut Datenblatt, alle das gleiche Timing?! Sind die Timings so kritisch?

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

Hey, das ist ja Super G***l! Danke!

Habe das soeben mit einem 4m strip (HC-F5V-60L-60LED-W) probiert!

Geht wie Butter. (Habe nur 160LEDs von 240LED prüfen können, da ich statt des Master-Bricks 'nur grad' eine DC-Brick zur Verfügung hatte)

 

Jetzt kann ich endlich richtig loslegen.

 

Danke

Link zu diesem Kommentar
Share on other sites

Hallo zusammen,

 

bin erst 5 Minuten vorm Anstoss angekommen und bin immer noch vollkommen "besoffen" vom Ergebnis.  ;D

 

Hier aber ein Kurztest:

FW 2.0.3: Auch hier funktioniert meine erste Leiste nicht mehr. Die scheint platt zu sein, aber warum?

 

Habe hier nun einen neuen 12er WS2812B Ring von watterott, da passiert folgendes:

FW 2.0.3: Alle Farben haben einen Grundanteil von RGB. Beim "Moving Color Gradient" hat man den Eindruck, dass alle 3 LED pro Farbe schon einen Grundwert von ca. 40 haben. Dementsprechend sind sie "halbweis" und das eigentliche Farbspiel sieht man kaum. -> Bitte pruefen!

FW 2.0.2: Der Farbtest sieht gut aus. Die Frage ist wie lange? ::)

 

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

Ich hab eine mögliche Fehlerquelle gefunden, der WS2812 hat andere Timings als der WS2812B! Das war mir nicht bewusst. ich hab die Timings des WS2812 implementiert.

 

Vergleiche Seite 4 in den beiden Datenblättern:

http://acrobotic.com/datasheets/WS2812.pdf

http://acrobotic.com/datasheets/WS2812B.pdf

 

Interessanterweise hatten wir auf der Maker Faire einen WS2812B Streifen und der lief mit den WS2812 Timings über zwei Tage ohne Probleme ;D.

 

Support für den WS2812B füge ich dann noch hinzu ;).

 

Du kannst zwischen WS2812B und WS2812 anhand der Anzahl der Pinne der LED unterscheiden. 2812 hat 6 Pinne und WS2812B hat 4.

Link zu diesem Kommentar
Share on other sites

...  der WS2812 hat andere Timings als der WS2812B!

...

Du kannst zwischen WS2812B und WS2812 anhand der Anzahl der Pinne der LED unterscheiden. 2812 hat 6 Pinne und WS2812B hat 4.

 

Das war mir auch nicht bewusst.  :-[

Hier ein interessanter Beitrag der das genau aufschluesselt: Understanding the WS2812

 

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

Wenn ich nach dem gehe was er so schreibt sind die Timings ja nahezu egal. Er verwendet für WS2811, WS2812 und WS2812B in seiner lib den gleichen Code der folgende Einschränkungen einhält:

 

* A reset is issued as early as at 9 µs, contrary to the 50 µs mentioned in the data sheet. Longer delays between transmissions should be avoided.

* The cycle time of a bit should be at least 1.25 µs, the value given in the data sheet, and at most ~9 µs, the shortest time for a reset.

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

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

 

Wenn wir danach gehen ist der Code von V2.0.3 absolut OK.

Link zu diesem Kommentar
Share on other sites

Tja, ich hab nochmal ein wenig rumgetestet. Folgende Feststellungen:

 

Bei mir funktioniert es mit einem WS2812B Strip sowie mit einem 256 WS2812B-Pixel-Array mit folgenden Vorgehensweisen:

 

* Einfaches Sleep der Zeiten wie sie im Datenblatt stehen (Zeiten für Funktionsaufrufe etc. werden nicht beachtet)

* Kalibriertes Sleep damit die Zeiten die im Datenblatt stehen exakt eingehalten werden

* Zeiten so nutzen wie sie in Tims Blog beschrieben werden

 

Dabei kann ich jeweils keinerlei Flackern o.ä. feststellen.

 

 

Ich hab mal eine Firmware gebaut die die gemessenen Zeiten aus dem Blogeintrag möglichst gut einhalten:

 

* Low Phase von 250ns (genau zwischen 60 und 500ns)

* High Phase von 1250ns (mehr als das Minimum von 625ns)

* Gesamtzeit 1500ns (250ns über der Minimalgesamtzeit von 1250ns)

 

Damit haben wir in jeder Richtung reichlich Abstand zu den Minima und Maxima.

 

Funktioniert das bei dir besser, Loetkolben?

bricklet_led_strip_v2_0_4_beta1.bin

Link zu diesem Kommentar
Share on other sites

Ja mit der "beta_2.0.4_beta1" funktioniert es. Der 12er WS2812B Ring funktioniert.

 

Hier ein paar ausfuehrliche Infos:

 


Test 1 nur der Ring:

FW 2.0.3 mit 12er WS2812B Ring. Bild 1

Die LEDs haben einen hohen Weissanteil und die rotierenden Farben sind kaum zu erkennen, aber sie rotieren. Auf dem Foto kann man es im Prinzip nur erraten.

 

FW 2.0.4 mit 12er WS2812B Ring. Bild 2

Farben und Rotation sind wie erwartet.

 


Test 2 Ring und Streifen parallel:

FW 2.0.3 mit 12er WS2812B Ring und PARALLEL 5er WS2812B LED Streifen. Bild 3

Dieser 5er Streifen ist ein Teil desjenigen Streifens auf dem mir beim Testen eine LED kaputtgegangen ist. (Unten mehr)

MAN BEACHTE: Der Ring ist wieder fast weiss (Wie in Bild 1), ABER die erste LED des Rings hat die volle Farbe! Der 5er Streifen hat auch die vollen Farben.

 

Vermutung/Glaskugellesen: Durch das parallelschalten aendert sich Kapazitaet an der (jeweils) ersten LED durch die beiden Kondensatoren.

Oder das D-IN Signal am Eingang wird durch das andere Element verschliffen und so passt auf einmal das Timing. Warum die nachfolgenden LEDs wieder fast weiss (mit wenig Farbe) sind kann ich nicht erklaeren.

 

Idee: Da die Kondensatoren auf dem Ring kleiner als auf dem Streifen sind, koennte ich mir vorstellen, dass allein durch Austausch der Kondensatoren auf dem Ring dieser mit der FW 2.0.3 funktionieren koennte!

 

Nochwas: Wenn man in diesem Zustand mit dem Finger unten auf die Eingangskontakte des Rings fasst und somit das Signal verbrummt sind beim Ring auch alle Farben richtig. (Gut das es ein FW Update gibt, sonst muesste man die ganze Zeit den Finger dranhalten  ;D )

 

FW 2.0.4 mit 12er WS2812B Ring und PARALLEL 5er WS2812B LED Streifen. Bild 4

Farben und Rotation sind wie erwartet, auch der Streifen ist weiterhin Vollfarbig.

 

 

Der Loetkolben

IMG_9163.JPG.6a865fade4474261c6ee4bc063afa9ee.JPG

IMG_9166.JPG.bda9a4a542f636a6e6d5350573f6a2d4.JPG

IMG_9171.JPG.a0c6fff5e9c683269e81e26671a3d776.JPG

IMG_9173.JPG.078ebe46167b3fb967855cabc61854b2.JPG

Link zu diesem Kommentar
Share on other sites

Hier eine Info zu dem defekten Streifen vom Anfang des Threads:

 

Wie bereits oben im ersten Beitrag geschrieben ist mir bei dem ersten Test der 10er Streifen kaputt gegangen. Nach ca. 30 Minuten ging er nicht mehr. Auch ein Power ON/OFF/ON/OFF hat irgendwann nicht mehr geholfen.

 

Ich habe dann einfach mal die 3 Leitungen (+5/GND/DATA) in die mitte an die 5. LED angeloetet, aber auch hier keine Reaktion. Warum geht dann keine er restlichen 5 LEDs?

 

Es hat sich spaeter herausgestellt, das "nur" die erste LED defekt ist und nicht das LED Bricklet. Nach dem abtrennen der ersten LED konnte ich den Streifen weiter verwenden.

 

Warum ist ueberhaupt ohne weitere Einwirkungen die erste LED kaputt gegangen?

Hier finden sich auch solche Hinweise: Schutzschaltung für WS2812-Pixel

 

Spekulation: Villeicht lag es bei mir an dem noch Pi-mal-Daumen Timing der FW 2.0.2?

 

Jetzt habe ich 5 LEDs des Streifens mit der FW 2.0.4 seit einiger Zeit problemlos am laufen. Siehe einen Beitrag hoeher.

 

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

Spekulation: Villeicht lag es bei mir an dem noch Pi-mal-Daumen Timing der FW 2.0.2?

Das halte ich für sehr unwahrscheinlich. Wenn du Lust hast das zu testen und noch eine LED Opfern kannst, kannst du ja einfach mal Spannung auf eine LED legen und auf dem Daten-Pin zufällige Daten mit einer IO-4 o.ä. schicken. Ich hätte keine Erklärung dafür warum dadurch etwas kaputt gehen soll.

 

In den WS281* ICs ist doch nichts weiteres als ein Shift Register, ein Hold Register und ein Timer sowie Logik zum erzeugen des PWMs anhand des Hold Registers (so ist meine Vorstellung davon ;)).

Link zu diesem Kommentar
Share on other sites

Das halte ich ebenfalls fuer unwahrscheinlich, deshalb habe ich es als "Spekulation" betitel.

 

Wenn ich normal etwas Zeit finde, lasse ich nochmals die FW 2.0.2 auf die LEDs los. Mal sehen was passiert. Aber es ja komisch, dass es (Die erste LED defekt) wohl mehreren passiert und die sogar Schutzplatinen dagegen bauen.  :o

 

 

In den WS281* ICs ist doch nichts weiteres als ein Shift Register, ein Hold Register und ein Timer sowie Logik zum erzeugen des PWMs anhand des Hold Registers (so ist meine Vorstellung davon ).

 

Schau dir nochmal meinen Beitrag etwas hoeher mit Bild 3 an. Warum ist bei der Parallelschaltung die erste LED des Ring in Ordnung die anderen aber nicht. Auch ich dachte immer was rein geht, muss auch so wieder raus gehen.  ???

 

 

BTW: Hier laueft im Moment alles prima.

 

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...