Forum: Mikrocontroller und Digitale Elektronik RGB Led Band von Action


von Robert P. (robertoo)


Lesenswert?

Hallo Liebe Leute

Habe mir heute so ein dünnes RGB Led Band von der Firma Action gekauft.
Mit Controller und für USB Anschluss

Habe das mal zerlegt und da sind kleine SMD-Leds drauf mit 4 
Anschlüssen.
Farben sind nur RGB (kein weiß) (Spannung ca. 4 Volt)

Jetzt würde ich gerne wissen, wie könnte ich die selber ansteuern.

Habe mal das Signal am Osci angeschaut

Das Datenpaket schau so aus:

16 Bits (1Bit hat 1,2 µs Länge)
Pause von 3µs
8 Bits

Die Dattenpakete kommen alle 100ms

Habe mal so nach Leds geschaut, die in Frage kommen könnten:
z.B. WS2812
Aber da scheint der Datenstrom durchgehend 24 Bit zu sein.
Die scheinen auch 6 Anschlüße zu haben ?!

Was könnte das für eine RGB-LED sein ????

Jemand eine Idee ?

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Robert P. schrieb:
> Jetzt würde ich gerne wissen, wie könnte ich die selber ansteuern.
> Habe mal das Signal am Osci angeschaut
> Das Datenpaket schau so aus:
> 16 Bits (1Bit hat 1,2 µs Länge)
> Pause von 3µs
> 8 Bits

Da fehlt noch etwas zur Synchronisation.
Warum zeigst du keinen Screen Shot

> Die Dattenpakete kommen alle 100ms
> ...
> Jemand eine Idee ?

Schick einfach solche Datenpakete, wie du sie auf dem Oszi (mit 'z') 
gesehen hast. Dann kann dir der Typ egal sein.

Zeig einmal ein vernünftiges Bild von den LEDs und verrate die 
Abmessungen.

: Bearbeitet durch User
von Robert P. (robertoo)


Angehängte Dateien:

Lesenswert?

Wie gewünscht:
Die Led hat ca. 2*2mm

von Robert P. (robertoo)


Angehängte Dateien:

Lesenswert?

Oszi

von Einhart P. (einhart)


Lesenswert?


von Robert P. (robertoo)


Lesenswert?

Ok, Danke
Also ein WS2812er ?
Warum sind dann die 16 Bit von den 8 Bit so getrennt oder ist das normal 
für den ?

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Robert P. schrieb:

> Also ein WS2812er ?

Sehr wahrscheinlich, ja.

> Warum sind dann die 16 Bit von den 8 Bit so getrennt

Hat nix mit den LEDs selber zu tun, sondern mit der Ansteuerung. Die ist 
halt Scheisse. Allerdings nicht so Scheisse, dass nix mehr geht.

Die WS281x haben nicht wirklich ein starres Timing, sondern reichlich 
(undokumentierte) Spielräume, die im konkreten Fall offensichtlich von 
der Ansteuerung teilweise genutzt werden.

Hier hat sich jemand mal ausführlich mit diesen Timing-Spielräumen 
beschäftigt:

https://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to-know-them/

von Rainer W. (rawi)


Lesenswert?

Robert P. schrieb:
> Warum sind dann die 16 Bit von den 8 Bit so getrennt oder ist das normal
> für den ?

Solange die Pause nicht die Grenze für die Reset-Zeit überschreitet, ist 
das egal.

Robert P. schrieb:
> IMG_20251128_223819.jpg

p.s.
Die USB-Buchse an deinem Oszi hast du gesehen? ;-)

von Nemopuk (nemopuk)


Lesenswert?

Jede einzelne LED verwendet ein Paket von 24 Impulsen. Das sind 3 Bytes 
welche die Helligkeit der Farben grün, rot und blau (in dieser 
Reihenfolge) bestimmen. Jede LED-Farbe kann also Helligkeitswerte von 0 
bis 255 annehmen. Das höherwertige Bit wird zuerst übertragen.

Eine 0 überträgt man durch einen kurzen HIGH Impuls mit 250 … 380 ns.

Eine 1 überträgt man durch einen langen HIGH Impuls mit 750 … 1000 ns.

Mit der nachfolgenden LOW Phase muss jedes Bit insgesamt 1250 … 5000 ns 
lang sein.

Nachdem alle LEDs ihre Helligkeitswerte erhalten haben, halte die 
Daten-Leitung für mindestens 280 µs auf LOW. Dann ändert sich die 
Helligkeit aller LEDs auf den vorher festgelegten Wert.

Dieses Timing ist zu allen Versionen der WS2812 kompatibel.

: Bearbeitet durch User
von Robert P. (robertoo)


Lesenswert?

Danke ob.s für den Link
Danke Nemopuk für die Erklärung

Ganz ist mir die Funktionosweise vom dem WS2812 noch nicht klar.

Wenn ich z.B. 10 Leds habe (WS2812er)
Muss ich dann 10* 24 Bit reinschieben und dann den Reset auslösen und 
dann werden die Werte auf die 10 Leds durchgeschaltet ?

Also alle Leds zuerst laden und dann Reseten?!

Oder kann ich eine Led laden, reseten und dann immer um eins 
weiterschieben lassen ?

Bei mir habe ich nämlich immer ein 24Bit Signal und dann 100ms Pause und 
dann wieder 24Bit.
Und es entstehen Lauflichter, Muster usw..

von Rahul D. (rahul)


Lesenswert?

Robert P. schrieb:
> Muss ich dann 10* 24 Bit reinschieben und dann den Reset auslösen und
> dann werden die Werte auf die 10 Leds durchgeschaltet ?
>
> Also alle Leds zuerst laden und dann Reseten?!

Eher anders herum.
Erst resetten, damit alle "wissen", dass jetzt Daten kommen. (ist aber 
nur meine Vermutung).

Robert P. schrieb:
> Bei mir habe ich nämlich immer ein 24Bit Signal und dann 100ms Pause und
> dann wieder 24Bit.
Könnte die Pause nicht auch vorher kommen, und du siehst sie nicht (nach 
dem Einschalten)?

> Und es entstehen Lauflichter, Muster usw..
Naja, das ist ja nur eine Änderung der Helligkeiten (der drei Farben) 
bei jedem Aktualisierungszyklus).

Das Timing ist eigentlich halbwegs gut im Datenblatt
( https://cdn-shop.adafruit.com/datasheets/WS2811.pdf )
auf Seite 4 (graphisch) mit einem Beispiel für drei LEDs beschrieben.

Zum Testen habe ich mir einfach mal einen Arduino mit einem Neopixels 
Beispiel bespielt.

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

Robert P. schrieb:
> Ganz ist mir die Funktionosweise vom dem WS2812 noch nicht klar.

Die einzelnen Bits werden wie eine Zelle betrachtet:
Hi:400ns, Lo:850ns  => ›0‹
Hi:800ns, Lo:450ns  => ›1‹

' >=50µs (50000ns) Lo wird als Reset erkannt.
Dann n*24 Zellen (für n-LEDs) werden am Stück gesendet.
Die erste LED greift sich die ersten 24 Zellen und reicht alles Folgende 
an die dahinter liegende Kette weiter.

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

Norbert schrieb:
> ' >=50µs (50000ns) Lo wird als Reset erkannt.
> Dann n*24 Zellen (für n-LEDs) werden am Stück gesendet.
> Die erste LED greift sich die ersten 24 Zellen und reicht alles Folgende
> an die dahinter liegende Kette weiter.

Sonst würde es wohl kaum "Reset" heißen, sondern eher "Latch" oder so.

von Nemopuk (nemopuk)


Lesenswert?

Robert P. schrieb:
> Wenn ich z.B. 10 Leds habe (WS2812er)
> Muss ich dann 10* 24 Bit reinschieben und dann den Reset auslösen und
> dann werden die Werte auf die 10 Leds durchgeschaltet ?

ja

Der Begriff "Reset" ist hier ein bisschen irreführend, aber dafür kann 
ich nichts.

: Bearbeitet durch User
von Robert P. (robertoo)


Lesenswert?

Rahul D. schrieb:
> auf Seite 4 (graphisch) mit einem Beispiel für drei LEDs beschrieben.

ja, diese Diagramm habe ich eben nicht verstanden..... jetzt schon eher.

Aber trotzdem lässt sich meine Lichterkette damit nicht erklären.
Habe da ein paar hundert Leds in der Kette und es kommen nur einmal 
24Bit und dann 100ms Low und dann erst wieder einmal 25 Bit

Müssten da dann nicht 100 mal 24Bit kommen und dann Pause (Reset) ?

von Norbert (der_norbert)


Lesenswert?

Robert P. schrieb:
> Aber trotzdem lässt sich meine Lichterkette damit nicht erklären.
> Habe da ein paar hundert Leds in der Kette und es kommen nur einmal
> 24Bit und dann 100ms Low und dann erst wieder einmal 25 Bit
>
> Müssten da dann nicht 100 mal 24Bit kommen und dann Pause (Reset) ?

Nicht wenn die DataIn Eingänge parallel liegen.

von Robert P. (robertoo)


Lesenswert?

sind seriell in einer Kette

von Norbert (der_norbert)


Lesenswert?

Robert P. schrieb:
> sind seriell in einer Kette

Dann sind's wohl keine WS2812, sondern welche die alle eingehenden 
Daten einfach weiter geben.

von Klaus F. (klaus27f)


Lesenswert?

Robert P. schrieb:
> Oszi

Tolles Bild.

Man könnte auch Butterbrotpapier in Bildschirmgröße zurechtschneiden,
das dann auf den Bildschirm legen und mit Blei- oder Buntstift abmalen.
So machte man das vor 50 Jahren, wenn man keinen Poloroid-Vorsatz für 
sein Scope hatte.

von Teo D. (teoderix)


Lesenswert?

Ob S. schrieb:
> Die WS281x haben nicht wirklich ein starres Timing, sondern reichlich
> (undokumentierte) Spielräume, die im konkreten Fall offensichtlich von
> der Ansteuerung teilweise genutzt werden.

Es ist alles bestens* dokumentiert"!
Leider interpretieren die meisten das nur falsch.

Norbert schrieb:
> Die einzelnen Bits werden wie eine Zelle betrachtet:
> Hi:400ns, Lo:850ns  => ›0‹
> Hi:800ns, Lo:450ns  => ›1‹

Die Lo Zeit ist hier als Minimum zu erachten. Max. Frequenz...
850ns bis knap vor "Reset"
450ns bis knap vor "Reset"


*) Die Fehler in den Ersten Dablas, mal außen vor. :}

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

Teo D. schrieb:
> Die Lo Zeit ist hier als Minimum zu erachten. Max. Frequenz...

Nicht laut Datenblatt, und das ist für mich die einzig maßgebliche 
Instanz.

Vom Timing der einzelnen Pulse bzw. Pausen kann jedoch sowohl ›+‹ als 
auch ›-‹ 150ns abgewichen werden.

von Robert P. (robertoo)


Lesenswert?

Klaus F. schrieb:
> Robert P. schrieb:
>> Oszi
>
> Tolles Bild.
>
> Man könnte auch Butterbrotpapier in Bildschirmgröße zurechtschneiden,
> das dann auf den Bildschirm legen und mit Blei- oder Buntstift abmalen.
> So machte man das vor 50 Jahren, wenn man keinen Poloroid-Vorsatz für
> sein Scope hatte.

Najaa.. ein Bild wurde gewünscht und die Timings hatte ich vorher ja 
schon angegeben..
So ging es halt schneller und einfacher
Mit einer hohen Auflösung hättest du vermutlich auch nicht mehr Infos 
herausgelesen ?

---------------------------------

Aber ich habe jetzt meinen Denkfehler gefunden.... (peinlich)
Ich hatte das Oszi ja am Ende der Lichterkette angehängt (ups)
Am Anfang sieht das natürlich anders aus!
Habe jetzt Daten von 9000µs länge
Die einzelnen 24 Bit sind 32µs lang
Sind also so ca. 280 Leds

Die komische Lücke (3µs) von den ersten 16Bit zu den letzten 8 Bit ist 
noch immer, aber scheint so zu funktionieren....

Also alles klar.
Danke für die Antworten!  :-)

l.G. Robert

von Teo D. (teoderix)


Lesenswert?

Norbert schrieb:
> Nicht laut Datenblatt, und das ist für mich die einzig maßgebliche
> Instanz.

Doch, das steht so im Dabla, man muss es nur richtig lesen können.

von Norbert (der_norbert)


Angehängte Dateien:

Lesenswert?

Teo D. schrieb:
> Norbert schrieb:
>> Nicht laut Datenblatt, und das ist für mich die einzig maßgebliche
>> Instanz.
>
> Doch, das steht so im Dabla, man muss es nur richtig lesen können.

Ich weiß ja nicht woher dieses Verlangen kommt, ständig persönlich zu 
werden…
Alles zwischen den gezeigten Werten und der magischen 50µs Schwelle ist 
nicht definiert und gilt deshalb als nicht definiert. Im Sinne von ›Es 
ist nicht definiert‹

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Robert P. schrieb:

> Die komische Lücke (3µs) von den ersten 16Bit zu den letzten 8 Bit ist
> noch immer

Vermutlich wurde da eine 16Bit-SPI-Einheit ohne Hardware-Buffer zur 
Ausgabe benutzt. Die 3µs sind einfach die Zeit, die bnötigt wird, um das 
nächste Datenwort in die Hardware zu laden.

von Teo D. (teoderix)


Lesenswert?

Norbert schrieb:
> Alles zwischen den gezeigten Werten und der magischen 50µs Schwelle ist
> nicht definiert und gilt deshalb als nicht definiert. Im Sinne von ›Es
> ist nicht definiert‹

Das sind Bauteiltoleranzen.
Das ist ein Dabla, da wird dir nicht vorgeschrieben was DU einhalten 
must. Da garantiert dir der Hersteller, was für Grenzen das Bauteil 
einhält. Die Logischen Konsequenzen daraus, musst du schon selber 
ziehen.

von Norbert (der_norbert)


Lesenswert?

Teo D. schrieb:
> Die Logischen Konsequenzen daraus, musst du schon selber
> ziehen.

Ja, mache ich. Da erschließen sich zwei Möglichkeiten:
1. So wie im Datenblatt beschrieben
2. Ich denke mir einfach etwas aus was mir gerade passt. Einen weiteren 
Teil wünsche ich mir und den Rest lese ich aus dem Kaffeesatz. 
Mitternacht, Vollmond, Friedhof, tote Katze, heftig schwenken.

von Rainer W. (rawi)


Lesenswert?

Teo D. schrieb:
> Das sind Bauteiltoleranzen.

Nein, nicht unbedingt. Es sagt was der Hersteller garantiert. Und wenn 
er auf die Idee kommt, ein Re-Design des Chips durchzuführen, kann sich 
das Zeitverhalten der Bauteile ändern. Bei Einhaltung der genannten 
Zeiten funktioniert dann der neue Chip genauso, ohne dass an der 
Software etwas geändert werden muss.

Robert P. schrieb:
> Ich hatte das Oszi ja am Ende der Lichterkette angehängt ...

Dann passt vermutlich die Anzahl der gesendeten Datenblöcke nicht zur 
Anzahl deiner LEDs. Sonst dürfte hinten nichts mehr raus kommen.

: Bearbeitet durch User
von Teo D. (teoderix)


Lesenswert?

Rainer W. schrieb:
> Teo D. schrieb:
>> Das sind Bauteiltoleranzen.
>
> Nein, nicht unbedingt. Es sagt was der Hersteller garantiert. Und wenn
> er auf die Idee kommt, ein Re-Design des Chips durchzuführen, kann sich
> das Zeitverhalten der Bauteile ändern, bleibt aber innerhalb der laut
> Datenblatt garantierten Zeiten.

Ja, der Begriff mag hier etwas hacken aber wenn, und das hat er hier 
mehrfach getan, Bauteilwerte sich ändert, gibts auch ein neues Dabla zu.
Erst waren die angegebenen 15ms bis zum Reset, doch nur 5ms... Was so 
einige MCs und deren Programmierer ins Schwitzen brachte. Dann kam V2 wo 
die 15ms eingehalten wurden... Mein letzter Stand ist V6. Reset-Time 
50ms und was an den LED Strömen geändert o. nur im Dabla korrigiert(?). 
Ein Abblock-C ist da auch schon verbaut... Oder ist der C erst V7 
integriert?



PS: V6 scheint die Letzte V zu sein. 280µs bis Reset (sorry das ich hier 
immer ms angegeben habe) und voller 3,3V Support (zuvor nur 3,5V) und 
integriertem C.
http://world-semi.com/web/userfiles/productfile/WS2812B-2020-V6_V1.0_EN.pdf

"RESET time>280μs , it won't cause wrong reset while interruption, it 
supports the lower frequency and inexpensive
MCU."

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Teo D. schrieb:
> Ja, der Begriff mag hier etwas hacken aber wenn, und das hat er hier
> mehrfach getan, Bauteilwerte sich ändert, gibts auch ein neues Dabla zu.

Was meinst du in diesem Zusammenhang  mit "hacken"?
https://www.google.com/search?q=hacken+bedeutung&oq=hacken

Solange die Daten sich innerhalb der im Datenblatt genannten 
Spezifikationen bewegen, gibt es KEIN neues Datenblatt. Du bemerkst 
i.d.R. gar nicht, ob ein Chip in einem neuen Prozess hergestellt wurde 
oder in einer anderen Fab produziert wurde.

von Harald K. (kirnbichler)


Lesenswert?

Rainer W. schrieb:
> Was meinst du in diesem Zusammenhang  mit "hacken"?
> https://www.google.com/search?q=hacken+bedeutung&oq=hacken

Er meint sicherlich "haken". Mit gedehntem "a" gesprochen (und deswegen 
gerade nicht mit "ck" geschrieben).

"Etwas hakt" - es läuft nicht glatt, nicht problemlos

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.