WS2811 RGB Led Signal decodieren.

OP #4116122
Lesenswert?

Hallo,
Ich habe eine WS2811 LED Strip den ich mit einem AtTiny45 ansteuere. So 
weit so gut...
Nun habe ich aber auch noch einige normale RGB LED Leuchten die ich 
gerne mit in den Strip einbinden würde. Da ich noch einige AtTinys 
herumliegen hatte habe ich mir gedacht, dass man diese doch nutzen 
könnte um das WS2811 Signal zu decodieren um die LEDs anzusteuern.
Um zu testen habe ich erstmal versucht das Signal mit dem Tiny 
weiterzuleiten. Mit eher weniger Erfolg. (Siehe Bilder, oben das Signal 
das von dem ersten Tiny generiert wurde, unten das das das von dem 2. 
Tiny weitergeleitet wurde)
Ich habe dazu diesen Code auf den Tiny hochgeladen:
1
int inPin = 3;
2
int outPin = 4;
3

4
void setup() {
5
  pinMode(inPin, INPUT);
6
  digitalWrite(inPin, HIGH);
7
  pinMode(outPin, OUTPUT);
8
}
9

10
void loop() {
11
  digitalWrite(outPin, digitalRead(inPin));
12
}

Ist es möglich das Signal irgendwie zu decodieren?
Hier ist eine sehr gute Zusammenfassung des WS2811 Treibersignals: 
http://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to-know-them/

Vielen Dank für eure Antworten
- Busti
Angehängte Dateien:
#4116202
Lesenswert?

Hallo,

Also wenn du die WS2811 per per Tiny45 ansteuerst, erzeugst du doch die 
Daten für die LED-Streifen selbst und kennst also auch die RGB 
Ausgangswerte.
Daher verstehe ich nicht, warum du das Signal an den WS2811 jetzt wieder 
decodieren willst? Oder willst du die zusätzlichen LED über das selbe 
Protokoll mit Daten versorgen? Wie werden denn diese LEDs angesteuert?
Das weiterleiten der Daten sollte eigentlich gehen wenn der ATiny nicht 
zu langsam läuft, decodieren dürfte bei den kleinen Zeiten nicht so 
einfach werden. Es wird wohl einfacher sein für die anderen LED einen 
eigenen Bus aufzumachen.

Sascha
OP #4116677
Lesenswert?

Ja tut sie (~6.5uS)
Mein Denkansatz war, dass wenn man das Treibersignal mit einem AtTiny 
generieren kann könnte man es ja auch mit einem auslesen. Aber selbst 
wenn ich mt Assemblercode arbeite habe ich immernoch eine Zeit von 
62,5nS pro befehl. Das würde wohl nicht ausreichen.

Der Code sollte erstmal nur zeigen ob ich mit dem Tiny überhaupt etwas 
brauchbares erhalte. Und ja ich habe einen gekauften Controller.
#4116770
Lesenswert?

Ben W. schrieb:
> die WS2811 sind überraschend tolerant,
> ich schaffe die zurzeit sogar mit einem SPI anzusteuern eine Abtastrate
> von 312,5nS sollte doch ausreichen, aber vermutlich ist der tiny dafür
> schlicht zu langsam.

Da hier von einer Arduino Umsetzung geredet wird, brauchst du dir um die 
native Geschwindigkeit des Tinys noch keine Gedanken zu machen. Das 
wäre, als wenn man über die maximale Geschwindigkeit des Space Shuttle 
reden würde, während es von 100 fußkranken Rentnern mit ihren Rollatoren 
durch die Fußgängerzone geschoben wird.
#4116821
Lesenswert?

Moritz Bust schrieb:
> Ich habe eine WS2811 LED Strip den ich mit einem AtTiny45 ansteuere.

wenn du den Source hast weisst du was an die LEDs geschickt wird, das 
kannst du per PWM auch an normale RGB LEDs schicken.

Willst du den Bitstrom dekodieren (OK ich kenne mich nur mit WS2812b 
aus, IMHO sind WS2811 die ICs die in WS2812B Leds verbaut sind sollte 
also ähnlich ablaufen) musst du erst den gesammten Bitstrom aufnehmen im 
1,25µs Raster und um die Umschaltung zu erkennen mit min 3-fach 
oversampling könnte knapp reichen, das Ende erkennst du erst nach der 
Pause, Lücke und dann hinterher die 24 Bit Nullen und Einsen rausholen 
für die drei Grundfarben 8 Bit pro Farbe 24 Bit pro LED, von hinten 
versteht sich.

Es müssen wieder genausoviele Bits erkannt werden 0 oder 1 wie 24 x LED 
Anzahl ergibt, dann könntest du Erfolg haben.

Wird aber ne heftige Bitschubserei und Rechnerei, ob dem Tiny da nicht 
die Puste sprich RAM ausgeht?
Die Bits sammeln im Zeitraster von ca. 300-400ns mag ja in ASM noch 
angehen, diese speichern ist RAM abhängig.

Der Rest was für ASM oder C Profis, Echtzeit? eher nicht auf dem Tiny 
oder AVR oder?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren