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 ?!
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.
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:
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.
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..
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.
' >=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.
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.
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) ?
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) ?
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.
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.
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....
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‹
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.
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.
Die Logischen Konsequenzen daraus, musst du schon selber
ziehen.
Ja, mache ich. Da erschließen sich zwei Möglichkeiten:
So wie im Datenblatt beschrieben
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.
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.
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?
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.