Forum: Mikrocontroller und Digitale Elektronik Erstes Projekt mit RGBA Stripes - Ganz oder garnicht


von MaxWe (Gast)


Angehängte Dateien:

Lesenswert?

Moin Moin,

kurzum: Ich bin ein Amateur, der hier versucht sein erstes cooles 
Projekt mit RGBA Stripes und dem Arduino zu realisieren. Natürlich nicht 
im kleinen, sondern direkt mit Schmackes :D

Meine Idee kann man hoffentlich auf dem Bild erkennen.. Kurz erläutert: 
Ich habe 12 digitale Ziffern, die mittels RGBA Stripes dargestellt 
werden. Jede Ziffer besteht aus 2,5m Stripe und wird seperat gesteuert.

Die Daten:
Stripes
 - Insgesamt ~30m Stripe-länge
 - SMD 5050 / WS2812B Controller
 - 30 LED/m => ~10 w/m
 - 5V
 - Strom insgesamt: 300/5 = 60A
Netztteil
 - Output: 5V / 350W
 - 
https://www.aliexpress.com/snapshot/0.html?spm=a2g0s.9042647.6.2.3fbf4c4d3dvZoR&orderId=8009567906145821&productId=4000127459933 
(Bitte keine Diskussion über China Produkte :) )

Ich hoffe das sind erstmal alle Daten :)

Für die Leitungen zu den Stripes habe ich 2,5mm² Leitung geplant. Für 
die Daten 0,75mm² wenn ich mich nicht irre..

Wenn ich mich nicht vergucke, dann bietet das Netzteil mehrere Ausgänge. 
Das würde ich nutzen und 2 Hauptleitungen mit jeweils Phase,GND legen => 
Obere Reihe + Untere Reihe. Damit würde ich schon einmal den Strom pro 
Leitung auf 30A bei maximaler Last halbieren.. Von den Hauptleitungen 
aus zweige ich dann immer die Leitungen für die Stripes ab.
Für die Daten lege ich 12 Leitungen, jede Ziffer eine eigene Leitung.

Das Netzteil möchte ich über den Arduino mittels einem 5V/230V Relais 
Aus-/Einschalten, so dass dieses nicht dauerhaft läuft. Schalten würde 
ich den Neutral. Der Arduino wird einfach über USB angeschlossen.


Ist das überhaupt so realisierbar?
Wenn ja.. Was sollte ich noch beachten? Ich habe schon häufiger von 
einem Widerstand in der Datenleitung gelesen, habt ihr einen kurzen Rat 
diesbezüglich?

Zusätzlich würde ich dann noch die Hauptleitungen durch 
"Strommess-sensoren" schicken, um mir den Strom auf einem kleinem OLED 
Display anzeigen zu lassen. Als kleines Gimmick^^

In der Hoffnung hier nicht verrissen zu werden..
Grüße und schönen Restsonntag!

von W.Nickel (Gast)


Lesenswert?

Das A in RGBA steht normalerweise für Alpha. Du kannst die LEDs nicht 
auf durchsichtig schalten. RGB reicht also.

OLED brennt nach einigen Monaten ein. Nimm LCD, wenn du kein Bock auf 
Bildschirmschoner hast.

Wenn es kein UNO ist, bei dem du den Mikrocontroller wechseln kannst. 
Denke über Puffer-Shield für die Datenleitungen nach.

von Rene K. (xdraconix)


Lesenswert?

W.Nickel schrieb:
> Wenn es kein UNO ist, bei dem du den Mikrocontroller wechseln kannst.
> Denke über Puffer-Shield für die Datenleitungen nach.

Was für ein Ding? Für was soll das denn gut sein?

von Maximilian W. (maximilian_w348)


Lesenswert?

Ich kann meinen Beitrag leider nicht mehr bearbeiten, da ich den 
Facebook Login Button erst danach sah....

Ich meine Addressable RGB... Sorry für die Verwirrung!

Was genau macht ein Puffer-Shield? Zu meiner Verwunderung spuckt google 
nichts darüber aus?

von W.Nickel (Gast)


Lesenswert?

Ich meinte den 74HCT245 o.Ä.
War mir sicher, dass es dafür auch Shields geben muss. Finde irgendwie 
auch keine auf die Schnelle. So ist wohl die Arduino-Welt.

Wenn du 10m lange Zuleitung hast, musst du sie irgendwie sauber Treiben. 
UND den Arduino schützen.

von Maximilian W. (maximilian_w348)


Lesenswert?

W.Nickel schrieb:
> Ich meinte den 74HCT245 o.Ä.
> War mir sicher, dass es dafür auch Shields geben muss. Finde irgendwie
> auch keine auf die Schnelle. So ist wohl die Arduino-Welt.
>
> Wenn du 10m lange Zuleitung hast, musst du sie irgendwie sauber Treiben.
> UND den Arduino schützen.

Will das ganze eigentlich mit dem Elegoo Nano realisieren. Von den PINs 
her reicht es.

Bei addressable RGBs gibt die Datenleitung doch nur Signale weiter. Ist 
hier nicht eher die Frage ob die Signale noch sauber ankommen? Was würde 
man da machen um die Signale zu verstärken?

von Rene K. (xdraconix)


Lesenswert?

W.Nickel schrieb:
> Wenn du 10m lange Zuleitung hast, musst du sie irgendwie sauber Treiben.
> UND den Arduino schützen.

Das mit dem sauberen Treiben würde ich ja einsehen (siehe dazu aber 
weiter unten) aber vor was willst du den Arduino schützen?! Mehr als 5V 
können nicht auf den Port kommen, da garkeine höheren Spannungen im 
System sind.

Zum Thema sauberes Treiben: er muss ausschließlich bis zur ersten LED 
treiben. Jede LED wirkt als eigenständiger Treiber. Ich persönlich habe 
die ersten LED via STM32 mit 3V3 getrieben, nach der ersten LED wurde 
dies auf saubere 5V gezogen.

MaxWe schrieb:
> Für die Daten lege ich 12 Leitungen, jede Ziffer eine eigene Leitung.

Damit wirst du an Leistungsgrenzen stoßen. Zumindest wenn du nur einen 
Arduino einsetzen willst. Ich persönlich habe ausschließlich 8 Reihen 
geschafft zu bedienen. Und das war kein Arduino sondern STM32 der die 
Daten per DMA rausgeschoben hat.

Wenn ich dein Bild so betrachte, dann brauchst du auch keine 12 
Leitungen, wenn die Ziffern beieinander stehen, dann nutze nur eine 
Leitung. Ich habe eine Wohnung mit genau 12.540 LEDs (die Zahl werde ich 
nie vergessen ???) mit nur einem Kanal gefüttert (wie gesagt: STM32, 
Doppel gepuffert, via DMA) und man hat so gut wie keinerlei Verzögerung 
in der Reihe gehabt. Das größte Problem war jedoch der Strom. Also 
spätestens alle 2 Meter muss ein neuer Stromzweig ran - dann das sieht 
man deutlich an der Verfärbung der Leuchtkraft (werden schwächer, weiß 
wird zu gelb) und der Mangel an RAM im STM32 12.540 mal 
24bit+2Stoppbit... Und das zur Doppelbufferung mal zwei... Das summiert 
sich auf, ohne externen RAM nicht lösbar gewesen.

Und... Einen "Puffer-Shield" oder was auch immer... Habe ich nicht 
benötigt ? und die Stripe läuft nun schon seit vier Jahren an 3v3.

von Maximilian W. (maximilian_w348)


Lesenswert?

Danke für die lange Antwort Rene :)

Das aufsplitten auf 12 Datenleitungen wäre eine reine Bequemlichkeit in 
der Programmierung^^

Wenn du aber sagst, dass das Probleme machen könnte, dann würde ich das 
vielleicht auf 2 Datenleitungen reduzieren und nur oben und unten 
trennen.

Was heißt denn das "Treiben" bei LEDs? Quasi eine Verstärkung des 
Signals vom Arduino bis zur ersten LED? Habt ihr da vielleicht einen 
Link für mich? Ich kenne lediglich die Treiber für Motoren^^

Wie gesagt, bin ich leider ein Amateur und kann mit vielen Begriffen 
nichts anfangen :/

Strom habe ich ja geplant alle 2,5m Ziffern parallel anzuschließen, also 
nie mehr als 2,5m. Da ist noch die Frage nach der Zuleitung offen, ob 
das ein Problem werden könnte..

von Guest (Gast)


Lesenswert?

W.Nickel schrieb:
> Das A in RGBA steht normalerweise für Alpha. Du kannst die LEDs nicht
> auf durchsichtig schalten

In meiner Welt steht das A für Amber. Vergleiche RGBW...

MaxWe schrieb:
> Für die Daten lege ich 12 Leitungen, jede Ziffer eine eigene Leitung.

12 Leitungen kannst du mit einem Arduino vergesse. Und ich weiß jetzt 
schon, das gleich ein Arduino Jünger um die Ecke kommt der es besser 
weiß. Theoretisch kannst du alles mit einer Datenleitung machen. Mehrere 
Datenleitung können sich lohnen wenn du die LEDs schnell updaten willst. 
Dazu gab es hier mal einen Beitrag in dem das diskutiert wurde, ich 
finde ihn aber gerade nicht. Das aus Bequemlichkeit zu machen ist 
eigenivh Quatsch, das macht es unter Umständen komplizierter als es ist.

Du solltest schauen das du einen Buffer IC nimmst das 5V hat und ein 
paar mA treiben kann, wenn du dann entsprechend die Leitung terminierst 
solltest du Recht wenig Probleme haben.

von Maximilian W. (maximilian_w348)


Lesenswert?

Haha ich persönlich glaube euch gern, dass die 12 Outputs am Arduino 
nicht klappen :D

Verkabelungstechnisch ist mir die Lösung mit 2 Leitungen am 
zweitliebsten.
Hmm ich glaube das ist Meinungssache wie es logisch komplizierter ist :) 
Mit 12 Leitungen hättest du 12 getrennte OUTPUTS, die im besten Falle 
alle gleich positionierte LEDs haben, wodurch sich am Ende in der 
Theorie leicht Zeichen/Zahlen darstellen lassen :) So muss ich nun genau 
die Bereiche der Ziffern identifizieren, aber das ist kein großes Übel.

Uff tut mir echt Leid, in dem Bereich bin ich halt wirklich nicht 
kundig.. Was wäre denn ein solches Buffer IC?
Ich nehme an, dass damit das Signal verstärkt wird?

Ist das denn wirklich nötig? Wenn ich schlau bin und die Stripes von 
Rechts nach links aufbaue, dann ist die Datenleitung zum Stripe maximal 
1,5m lang. Hier wurde angemerkt, dass nur diese Strecke entscheidend 
ist?

von Guest (Gast)


Lesenswert?

Vor kurz gab es hier eine Beitrag der eine ähnliche Zuleitungslänge 
hatte. Bei dem haben die ersten LEDs immer die Farbe gewechselt wenn er 
einen Verbraucher irgendwo ein oder aus geschaltet hat.

Maximilian W. schrieb:
> Zeichen/Zahlen darstellen lassen :) So muss ich nun genau die Bereiche
> der Ziffern identifizieren, aber das ist kein großes Übel.

Die Anzahl der LEDs pro Ziffer ist doch bekannt. Da gibt's 1000 
Möglichkeiten das effizient zu machen. Wie gesagt mehrere Leitungen 
machen auch nur Sinn wenn du die Updaterate hoch halten willst. Und das 
geht auch nur bei einer parallelen Übertragung der Kanäle. Also irgend 
eine Perepherie im uC (Timer, SPI) und DMA. Mit Soft PWM brauchst du da 
nicht anfangen.

von Wolfgang (Gast)


Lesenswert?

MaxWe schrieb:
> - Strom insgesamt: 300/5 = 60A

> Für die Leitungen zu den Stripes habe ich 2,5mm² Leitung geplant.

Entweder sind das 60A auf einer 2.5mm²-Leitung (hüstel) oder deine 
Zeichnung stimmt nicht (fehlende Masse). Damit bei den LEDs kein 
Helligkeitsabfall zum Strangende auftritt, müssen Versorgungsspannung 
und Ground zumindest an entgegengesetzten Enden angeschlossen werden.

von Maximilian W. (maximilian_w348)


Lesenswert?

Guest schrieb:
> Die Anzahl der LEDs pro Ziffer ist doch bekannt. Da gibt's 1000
> Möglichkeiten das effizient zu machen. Wie gesagt mehrere Leitungen
> machen auch nur Sinn wenn du die Updaterate hoch halten willst. Und das
> geht auch nur bei einer parallelen Übertragung der Kanäle. Also irgend
> eine Perepherie im uC (Timer, SPI) und DMA. Mit Soft PWM brauchst du da
> nicht anfangen.
Irgendwie habe ich das Gefühl, dass hier immer noch angenommen wird, 
dass ich RGBW nutze :O
Ich verbaue addressable RGB Stripes (!), mit einem Datenkanal und so^^ 
Die Updaterate im allgemeinen ist aber egal bei mir, will da kleine 
blinkenden Epilepsie auslösenden Effekte haben..

Wolfgang schrieb:
> Entweder sind das 60A auf einer 2.5mm²-Leitung (hüstel) oder deine
> Zeichnung stimmt nicht (fehlende Masse). Damit bei den LEDs kein
> Helligkeitsabfall zum Strangende auftritt, müssen Versorgungsspannung
> und Ground zumindest an entgegengesetzten Enden angeschlossen werden.
Hab da jetzt nicht extra eine Masse eingezeichnet^^ Also bei den 2,5m 
jeweils Ground ans Ende und Spannung an den Anfang?

Genau über diese Ströme mache ich mir ja sorgen.. Ich halbiere das 
allerdings wenigstens auf 30A, indem ich oben und unten getrennt Speise. 
Aber selbst das macht mir Sorgen..

: Bearbeitet durch User
von Guest (Gast)


Lesenswert?

Maximilian W. schrieb:
> Irgendwie habe ich das Gefühl, dass hier immer noch angenommen wird,
> dass ich RGBW nutze :O

Das ist durchaus klar aber diese Adressleitung musst du ansprechen und 
mal davon abgesehen gibt es sowohl RGB, RGBA und RGBW als Adressierbare 
LED siehe sk6812.

hast du dir mal Gedanken dazu gemacht wie diese LEDs angesteuert werden?

von Maximilian W. (maximilian_w348)


Lesenswert?

Guest schrieb:
> Das ist durchaus klar aber diese Adressleitung musst du ansprechen und
> mal davon abgesehen gibt es sowohl RGB, RGBA und RGBW als Adressierbare
> LED siehe sk6812.
>
> hast du dir mal Gedanken dazu gemacht wie diese LEDs angesteuert werden?
Oke mein Fehler, sorry! Dann sind es adressierbare RGB Stripes.

Inwiefern Gedanken? Die Stripes haben 3 Anschlüsse: GND,5V und DATA. 
DATA verbinde ich mit einem digitalen I/O des Arduino. Der Rest ist 
Software.

von Dieter (Gast)


Lesenswert?

Maximilian W. schrieb:
> Der Rest ist
> Software.

Stimmt die Magie die niemand verstehen will und dann hier rumweint wenn 
mal etwas nicht funktinoiert :D

von Maximilian W. (maximilian_w348)


Lesenswert?

Dieter schrieb:
> Stimmt die Magie die niemand verstehen will und dann hier rumweint wenn
> mal etwas nicht funktinoiert :D
Diese Magie verstehe ich Gott sei Dank :D Zwar habe ich keine 
Erfahrungen im Programmieren von Mikocontrollern, aber ich übe aktuell 
schon und die Arduino IDE und allgemein der Code ist ja wirklich 
intuitiv :)

Ich hab eher Probleme mit der Hardwareseite und wenn es daran 
scheitert..

von Dieter (Gast)


Lesenswert?

Maximilian W. schrieb:
> Diese Magie verstehe ich Gott sei Dank :D

Offensichtlich nicht sonst wärst du über die Aussage mit dem Timer und 
SPI nicht verwirrt gewesen ;)

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Maximilian W. schrieb:
> Inwiefern Gedanken? Die Stripes haben 3 Anschlüsse: GND,5V und DATA.
> DATA verbinde ich mit einem digitalen I/O des Arduino. Der Rest ist
> Software.

 Von der du keine Ahnung hast...
 Stripes mit 30 Led/m haben eine Segmentlänge von 10cm. Nach deinen
 Angaben gehen etwa 25 Led-Segmente in eine Ziffer und das kann man
 -selbst wenn man Dezimalpunkt dazurechnet- nicht vernünftig auf die
 Segmente einer Ziffer verteilen. Bei 3 Led-Segmenten pro Ziffer-
 -Segment hätten die Ziffern eine Höhe von min. 65cm, das ganze
 Display etwa 1,5m.

MaxWe schrieb:
> Für die Daten lege ich 12 Leitungen, jede Ziffer eine eigene Leitung.

 Und die steuerst du dann mit einem Arduino?
 Weisst du überhaupt wie du die einzelnen Pins steuern kannst?

Maximilian W. schrieb:
> Diese Magie verstehe ich Gott sei Dank :D Zwar habe ich keine
> Erfahrungen im Programmieren von Mikocontrollern, aber ich übe aktuell
> schon und die Arduino IDE und allgemein der Code ist ja wirklich
> intuitiv :)

 Sicher.
 Nur kann der Arduino Code leider nur einen einzigen Pin steuern und
 das auch noch schlecht.

 Üblicher Troll Beitrag am Wochenende.

von Rene K. (xdraconix)


Lesenswert?

Um das mal aufzudrösseln und dir das Prinzip hinter den addressierbaren 
LEDs zu erklären. Die LEDs haben drei Eingänge: VDD, Data und VSS. VDD 
und VSS ist klar. Nun kommen wir aber zu "Daten"... Die Krux an der 
Geschichte ist, wie du bereits erkannt hast, es gibt nur ein (1) 
Datensignal. Nun müsste bei der der logische Bolzen schnallzen: "Woher 
weiß die LED welche Daten gerade da sind?!?" genau... Garnicht! Deswegen 
gibt es eine "Startsequenz" darauf erwartet die LED in einem gewissen 
Abstand das nächste Datenbit. Quasi die LED wartet, liest den Datenpin 
ob da high oder low liegt, wartet und liest den nächsten Bit die ersten 
24 Bit plus 2 Stoppbits nutzt diese LED und reicht den Rest der 
ankommenden Daten an die nachfolgenden LEDs über den Data Out Pin 
weiter.

Nun ist aber das Problem: die LED erwartet die Daten sehr schnell, 
seeehr schnell! Und das auch noch im richtigen Timing. Sprich: es darf 
keine Lücke (Nachladen im Code) dabei sein. Deswegen werden die Daten 
meistens über eine schnelle Schnittstelle (SPI, UART, DMA über PP) des 
MCs (in deinem Fall der Arduino) herausgegeben.

Deswegen sind 12 Stripes nicht machbar. Weil der Arduino die 
Geschwindigkeit dafür nicht aufbauen kann - nichtmal ansatzweise.

Du stellst dir das, so glaube ich, ein bisschen zu einfach vor.

Dann nicht vergessen: Bei 30x30m sind das 900 LEDs das macht 2925 byte 
nur für die LED Daten zum rausschieben. (Wie gesagt, die müssen ja an 
einem Stück rausgeschoben werden!) Da hast du noch keine andere Variable 
deklariert, berechnet oder bereitgestellt. Geschweige denn von einem 
Doppelpuffer Gebrauch gemacht. Was aber eigentlich zu empfehlen ist, um 
eine saubere Transition zu bekommen damit deine "Animation" nicht 
ruckelt.

Du willst einen Eleego Nano verwenden. Auf diesem läuft ein 
Atmega328P... Dieser hat allerdings nur 2KB RAM, das ist schon zu wenig. 
Aus dem ROM lesen: zu langsam... Vom ROM ins RAM kopieren und lesen: zu 
langsam...

Du wirst sehen... Da kommen einige Baustellen auf dich zu. Empfehlung 
von mir: Besorg dir ein paar (so einen Meter) LEDs und probiere dich mal 
aus - ob du es ans laufen bekommst.

von Maximilian W. (maximilian_w348)


Lesenswert?

Umso später, desto besser die Gäste, hm?

Ich frage hier als Amateur in dieser Welt und Frage nach ernst gemeinter 
Hilfe.

Allerdings habe ich die Basis glaube ich falsch gelegt! Tut mir Leid, 
dass ich euch umsonst die bisherige Zeit gekostet hab.
Ich spreche von Pixelstreifen: 
https://de.aliexpress.com/item/32830000665.html?spm=a2g0s.9042311.0.0.4be44c4dQ9DBou
(Die Qualität der Streifen gehört nicht hier her..)

Bei 30 LED/m ist hier ein Pixel ~33mm Breit.
33cm Ziffernbreite und ~66cm Höhe ist ungefähr das was ich geplant hab. 
JA das "Display" soll 1,5m hoch werden ;) Und sogar 2,5m Breit. Ich baue 
ja keine Matrix in diesen Dimensionen, sondern lediglich einzelne 
Ziffern.
Dann besteht eine Ziffer aus 70 Pixeln. ~0,3W pro Pixel (Bei 10W / m)
machen 21W pro Ziffer => 252W Gesamt => 50,4A . Also bei richtiger 
Rechnung sogar noch etwas weniger als Gedacht.

Die Steuerung erfolgt mittels den digitalen I/O Pins vom Arduino.
Zur Vereinfachung gibs dann bereits fertige Bibliotheken zum Ansteuern.
Als Beispiel: https://www.youtube.com/watch?v=UVISnxXh_VY

Ich hoffe das erklärt meine eigene Verwirrtheit gegenüber den diversen 
hier geäußerten Empfehlungen und Problematiken.

von Maximilian W. (maximilian_w348)


Lesenswert?

Rene K. schrieb:
> Um das mal aufzudrösseln und dir das Prinzip hinter den addressierbaren
> LEDs zu erklären. Die LEDs haben drei Eingänge: VDD, Data und VSS. VDD
> und VSS ist klar. Nun kommen wir aber zu "Daten"... Die Krux an der
> Geschichte ist, wie du bereits erkannt hast, es gibt nur ein (1)
> Datensignal. Nun müsste bei der der logische Bolzen schnallzen: "Woher
> weiß die LED welche Daten gerade da sind?!?" genau... Garnicht! Deswegen
> gibt es eine "Startsequenz" darauf erwartet die LED in einem gewissen
> Abstand das nächste Datenbit. Quasi die LED wartet, liest den Datenpin
> ob da high oder low liegt, wartet und liest den nächsten Bit die ersten
> 24 Bit plus 2 Stoppbits nutzt diese LED und reicht den Rest der
> ankommenden Daten an die nachfolgenden LEDs über den Data Out Pin
> weiter.
>
> Nun ist aber das Problem: die LED erwartet die Daten sehr schnell,
> seeehr schnell! Und das auch noch im richtigen Timing. Sprich: es darf
> keine Lücke (Nachladen im Code) dabei sein. Deswegen werden die Daten
> meistens über eine schnelle Schnittstelle (SPI, UART, DMA über PP) des
> MCs (in deinem Fall der Arduino) herausgegeben.

Danke! Das hilft mir doch mal weiter.. Deswegen arbeitet der Code 
vereinfacht gesagt in einer loop. Wenn ich beispielsweise 1 / 10 LEDs 
Rot leuchten lassen will, dann setze ich das entsprechende Signal im 
Code und der Arduino schickt das immer und immer wieder an den Stripe. 
So in etwa richtig?

Das mit dem Speicher hatte ich tatsächlich einfach noch nicht so 
bedacht.. Da müsste also etwas größeres her.. Die Nanos sind zum Üben 
aber ja trotzdem ok :)

Rene K. schrieb:
> Deswegen werden die Daten
> meistens über eine schnelle Schnittstelle (SPI, UART, DMA über PP) des
> MCs (in deinem Fall der Arduino) herausgegeben.
Sollte man also auf ganz andere Boards setzen, oder gibt es da eventuell 
Erweiterungen für normale Arduino Boards?

Rene K. schrieb:
> Du wirst sehen... Da kommen einige Baustellen auf dich zu. Empfehlung
> von mir: Besorg dir ein paar (so einen Meter) LEDs und probiere dich mal
> aus - ob du es ans laufen bekommst.
Das werde ich gleich mal machen :) Bestelle mir gleich mal nen Meter 
meines geplanten Typs und schaue mir das mal an.

: Bearbeitet durch User
von Guest (Gast)


Lesenswert?

Maximilian W. schrieb:
> Ich frage hier als Amateur in dieser Welt und Frage nach ernst gemeinter
> Hilfe.

Nagut dann warte mal schön auf ernst gemeinte Hilfe denn die Leute die 
dir durchaus berechtigte Hinweise gegeben haben helfen dir vermutlich 
nicht mehr :D

Jedem hier ist klar was du für LEDs du verwendest und wie sie zu 
betreiben sind. Der einzige der glaube ich nicht ganz versteht worauf 
alle hinaus wollen bist du.

Maximilian W. schrieb:
> Die Steuerung erfolgt mittels den digitalen I/O Pins vom Arduino.
> Zur Vereinfachung gibs dann bereits fertige Bibliotheken zum Ansteuern.

Auch das ist jedem klar und die meisten hier kennen auch die Libs. Das 
ändert nichts an der Tatsache, dass die eigentlich gedacht sind um 
NeoPixel Leuchtringe und einzelne Streifen zu betreiben. Der Kerl in dem 
Video verwendet weniger als 1/10 der LEDs die du hast. Es ist durchaus 
möglich mit einem Arduino so viel LEDs zu steuern, sofern du es schaffst 
ein Programm zu schreiben das den Speicher effizient nutzt. Aber 
verabschiede dich davon das du 12 IOs von deinem Arduino nutzen kannst 
und das noch einigermaßen in Echtzeit zu berechnen.

von Maximilian W. (maximilian_w348)


Lesenswert?

Guest schrieb:
> Maximilian W. schrieb:
>> Ich frage hier als Amateur in dieser Welt und Frage nach ernst gemeinter
>> Hilfe.
>
> Nagut dann warte mal schön auf ernst gemeinte Hilfe denn die Leute die
> dir durchaus berechtigte Hinweise gegeben haben helfen dir vermutlich
> nicht mehr :D
>
> Jedem hier ist klar was du für LEDs du verwendest und wie sie zu
> betreiben sind. Der einzige der glaube ich nicht ganz versteht worauf
> alle hinaus wollen bist du.
>
> Maximilian W. schrieb:
>> Die Steuerung erfolgt mittels den digitalen I/O Pins vom Arduino.
>> Zur Vereinfachung gibs dann bereits fertige Bibliotheken zum Ansteuern.
>
> Auch das ist jedem klar und die meisten hier kennen auch die Libs. Das
> ändert nichts an der Tatsache, dass die eigentlich gedacht sind um
> NeoPixel Leuchtringe und einzelne Streifen zu betreiben. Der Kerl in dem
> Video verwendet weniger als 1/10 der LEDs die du hast. Es ist durchaus
> möglich mit einem Arduino so viel LEDs zu steuern, sofern du es schaffst
> ein Programm zu schreiben das den Speicher effizient nutzt. Aber
> verabschiede dich davon das du 12 IOs von deinem Arduino nutzen kannst
> und das noch einigermaßen in Echtzeit zu berechnen.

Der Rene hat das zum Glück ja grad mal aufgeschlüsselt :) Nun verstehe 
ich die Problematik auch.. Die ernst gemeinte Hilfe bezieht sich 
hauptsächlich auf den Troll Vorwurf... Es bringt halt nix bei einem 
Anfänger mit Fachbegriffen um sich zu werfen. Wie soll ich die als 
Amateur verstehen? Rene hat es grad einfach mal super erklärt, danke 
nochmal dafür!

Zum Rest habe ich ja grad schon geantwortet

von Guest (Gast)


Lesenswert?

Maximilian W. schrieb:
> Es bringt halt nix bei einem
> Anfänger mit Fachbegriffen um sich zu werfen

Ist Google dieser Tage kaputt? Nagut beschränken wir uns hier auf das 
Forum.

https://www.mikrocontroller.net/articles/WS2812_Ansteuerung

von Rene K. (xdraconix)


Lesenswert?

Maximilian W. schrieb:
> Deswegen arbeitet der Code vereinfacht gesagt in einer loop. Wenn ich
> beispielsweise 1 / 10 LEDs Rot leuchten lassen will, dann setze ich das
> entsprechende Signal im Code und der Arduino schickt das immer und immer
> wieder an den Stripe. So in etwa richtig?

Jain... Wenn du eine einzelne LED setzt, bleibt diese in diesem Zustand 
bis die nächste Änderung kommt. Wenn du also dein Display nur einmal pro 
Stunde aktualisierst, dann brauchst du die Daten für alle (du musst 
immer für alle schreiben nicht für eine einzelne) auch nur einmal in 
dieser Stunde schicken.

Im Prinzip arbeitet jede LED wie ein Schieberegister.

Jetzt kommt aber wieder das Aaaaber ?... Du kannst während er die Daten 
rauschickt diese nicht ändern ohne dein Timing beim Ausgang 
durcheinander zu bringen. Das heißt die Daten für alle LEDs müssen 
bereits im RAM liegen.

von Maximilian W. (maximilian_w348)


Lesenswert?

Guest schrieb:
> Ist Google dieser Tage kaputt? Nagut beschränken wir uns hier auf das
> Forum.
>
> https://www.mikrocontroller.net/articles/WS2812_Ansteuerung
Danke für den Link! Der hat mir grad auch nochmal geholfen das mit den 
Timings zu verstehen..

Rene K. schrieb:
> Jain... Wenn du eine einzelne LED setzt, bleibt diese in diesem Zustand
> bis die nächste Änderung kommt. Wenn du also dein Display nur einmal pro
> Stunde aktualisierst, dann brauchst du die Daten für alle (du musst
> immer für alle schreiben nicht für eine einzelne) auch nur einmal in
> dieser Stunde schicken.
>
> Im Prinzip arbeitet jede LED wie ein Schieberegister.
>
> Jetzt kommt aber wieder das Aaaaber ?... Du kannst während er die Daten
> rauschickt diese nicht ändern ohne dein Timing beim Ausgang
> durcheinander zu bringen. Das heißt die Daten für alle LEDs müssen
> bereits im RAM liegen.
Ja, so habe ich das durch den Link nun auch verstanden! Danke! :)
Will ich also eine Animation mit vielen aufeinanderfolgenden "Befehlen" 
darstellen, dann muss der Fluss durch die Stripes sehr schnell erfolgen, 
der nächste bereits wieder vorbereitet werden und schnell wieder 
rausgeschickt werden. Verstehe langsam warum das schwierig werden könnte 
:)

Ich möchte allerdings lediglich feste Farben einstellen. Selbst, wenn 
ich die Uhrzeit darstellen wollen würde, ändert sich nur jede Minute das 
Signal. Hier wäre dann doch eher mangelnder Speicher ein Problem oder?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Rene K. schrieb:
> Dann nicht vergessen: Bei 30x30m sind das 900 LEDs das macht 2925 byte
> nur für die LED Daten zum rausschieben. (Wie gesagt, die müssen ja an
> einem Stück rausgeschoben werden!) Da hast du noch keine andere Variable
> deklariert, berechnet oder bereitgestellt. Geschweige denn von einem

 Nicht ganz richtig.
 Es sind praktisch nur 300 Leds anzusteuern und dafür braucht man 900 
Byt.

Rene K. schrieb:
> Datensignal. Nun müsste bei der der logische Bolzen schnallzen: "Woher
> weiß die LED welche Daten gerade da sind?!?" genau... Garnicht! Deswegen
> gibt es eine "Startsequenz" darauf erwartet die LED in einem gewissen
> Abstand das nächste Datenbit. Quasi die LED wartet, liest den Datenpin
> ob da high oder low liegt, wartet und liest den nächsten Bit die ersten
> 24 Bit plus 2 Stoppbits nutzt diese LED und reicht den Rest der

 Auch das ist nicht ganz richtig.
 Es gibt keine Startsequenz und auch keine 2 Stoppbits.
 Daß das Ganze aber in einem Stück raus muss, stimmt allerdings.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Maximilian W. schrieb:
> Der Rene hat das zum Glück ja grad mal aufgeschlüsselt :) Nun verstehe
> ich die Problematik auch.. Die ernst gemeinte Hilfe bezieht sich
> hauptsächlich auf den Troll Vorwurf... Es bringt halt nix bei einem
> Anfänger mit Fachbegriffen um sich zu werfen. Wie soll ich die als
> Amateur verstehen? Rene hat es grad einfach mal super erklärt, danke
> nochmal dafür!

 Und warum machst du es dann nicht so wie jeder normale Anfänger und
 wie dir Rene das vorgeschlagen hat?

 Probiere es mal mit 1m, das sind gerade mal 10 Segmente a 3 Led.

 Aber gleich mit 12 Ziffern, 12 Leitungen, 1,5m Höhe...

von Maximilian W. (maximilian_w348)


Lesenswert?

Marc V. schrieb:
> Maximilian W. schrieb:
>> Der Rene hat das zum Glück ja grad mal aufgeschlüsselt :) Nun verstehe
>> ich die Problematik auch.. Die ernst gemeinte Hilfe bezieht sich
>> hauptsächlich auf den Troll Vorwurf... Es bringt halt nix bei einem
>> Anfänger mit Fachbegriffen um sich zu werfen. Wie soll ich die als
>> Amateur verstehen? Rene hat es grad einfach mal super erklärt, danke
>> nochmal dafür!
>
>  Und warum machst du es dann nicht so wie jeder normale Anfänger und
>  wie dir Rene das vorgeschlagen hat?
>
>  Probiere es mal mit 1m, das sind gerade mal 10 Segmente a 3 Led.
>
>  Aber gleich mit 12 Ziffern, 12 Leitungen, 1,5m Höhe...
Wie kommst du denn auf die Segmente? Verstehe ich das falsch? Bei den 
Pixel Stripes ist doch jede SMD für sich?
Tatsächlich habe ich mir das aber Steuerungstechnisch leichter 
vorgestellt. Ich habe gedacht die leichten Tutorials die es so gibt sind 
nach oben skalierbar. Ich hätte eher gedacht, dass die Stromversorgung 
große Probleme macht^^

Der 1m Stripe ist bereits bestellt und kommt die Woche :)

von Rene K. (xdraconix)


Lesenswert?

Marc V. schrieb:
> Nicht ganz richtig.
>  Es sind praktisch nur 300 Leds anzusteuern und dafür braucht man 900
> Byt.

Haben mich meine Rechenkünste im Stich gelassen? Nach Adam Ries sind 30 
LEDs je Meter bei 30 Metern immer noch 900 LEDs? Und somit (rein Daten) 
2700byte.

30×30×24÷8 =2700

Marc V. schrieb:
> Auch das ist nicht ganz richtig.
>  Es gibt keine Startsequenz und auch keine 2 Stoppbits.
>  Daß das Ganze aber in einem Stück raus muss, stimmt allerdings.

Gut, wenn man es über ein Timer rausschiebt und dann mit DMA arbeitet 
waren 2 Byte (beide 0x00) immer genau das Zeitfenster zum snycen ? die 2 
Byte haben sich immer so eingebrannt. Über DMA ist es umständlicher nach 
den 3 Byte ne Pause zu machen anstatt den DMA einfach durchrennen zu 
lassen und zwei leere Byte einzufügen, ja war daran hab ich nicht 
gedacht, die können weggelassen werden natürlich beim Bit-Banging.


Maximilian W. schrieb:
> Ich hätte eher gedacht, dass die Stromversorgung große Probleme macht^^

Ein Problem nach dem anderen bitte! ??

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Maximilian W. schrieb:
> Wie kommst du denn auf die Segmente? Verstehe ich das falsch? Bei den
> Pixel Stripes ist doch jede SMD für sich?

 Bei 30 Led/m ist jeder Segment 10cm lang und besteht aus 3 Leds, die
 nicht einzeln, sondern nur zusammen (in Gruppen a 3 Leds) angesteuert
 werden können.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Rene K. schrieb:
> Haben mich meine Rechenkünste im Stich gelassen? Nach Adam Ries sind 30
> LEDs je Meter bei 30 Metern immer noch 900 LEDs? Und somit (rein Daten)
> 2700byte.
>
> 30×30×24÷8 =2700

 Richtig was den Stromverbrauch angeht, aber nicht richtig wenn es um
 Steuerung geht.
 Diese Leds werden in Gruppen a 3 Leds angesteuert, deswegen 900/3.

von Rene K. (xdraconix)


Angehängte Dateien:

Lesenswert?

Marc V. schrieb:
> Diese Leds werden in Gruppen a 3 Leds angesteuert, deswegen 900/3.

Marc V. schrieb:
> Bei 30 Led/m ist jeder Segment 10cm lang und besteht aus 3 Leds, die
>  nicht einzeln, sondern nur zusammen (in Gruppen a 3 Leds) angesteuert
>  werden können.

Ähm nein?! Kenne ich garnicht so. Jede LED einzeln und auch jede einzeln 
trennbar. Segmente aus mehreren LEDs kenne kenne ich garnicht.

Ich kenne nur diese, siehe Bild.

von Marc V. (Firma: Vescomp) (logarithmus)


Angehängte Dateien:

Lesenswert?

Rene K. schrieb:
> Ähm nein?! Kenne ich garnicht so. Jede LED einzeln und auch jede einzeln
> trennbar.

 Ja, aber diese lohnen sich doch gar nicht für sein Projekt, 3Leds/Seg
 sind billiger.
 Es werden sowieso nur ganze Ziffernsegmente angesteuert, deswegen ist
 weniger in diesem Falle besser - weniger RAM, 3 Mal schnellere
 Ausgabe...

Rene K. schrieb:
> Segmente aus mehreren LEDs kenne kenne ich garnicht.

 Bei 30 Leds/m ist das eher die Regel als die Ausnahme.

: Bearbeitet durch User
von Dieter (Gast)


Lesenswert?

Marc V. schrieb:
> Richtig was den Stromverbrauch angeht, aber nicht richtig wenn es um
>  Steuerung geht.
>  Diese Leds werden in Gruppen a 3 Leds angesteuert, deswegen 900/3.

Was sollen das bitte für LEDs sein? egal ob WS2812 oder sk6812 jede LED 
ist einzeln steuerbar....

von Rene K. (xdraconix)


Lesenswert?

Marc V. schrieb:
> Ja, aber diese lohnen sich doch gar nicht für sein Projekt, 3Leds/Seg
>  sind billiger.
>  Es werden sowieso nur ganze Ziffernsegmente angesteuert, deswegen ist
>  weniger in diesem Falle besser - weniger RAM, 3 Mal schnellere
>  Ausgabe...

Nee, waren mir neu. Dann ist das aber der 2811 richtig? Ob er die 
Ziffern jeweils nur in einer Farbe darstellen will, hat er ja nicht 
gesagt. In Sachen Ressourcen natürlich besser. In Sachen Optik aber ein 
ganz klarer Abschnitt.

von Maximilian W. (maximilian_w348)


Lesenswert?

Moin,
diese stripes habe ich auch gesehen, allerdings sind diese scheinbar 
nicht mehr die Regel in den Normalo Shops aka Amazon und Co. Bei 
Aliexpress und sicher auch bei reichelt findet man die stripes mit den 
externen Controllern noch.

Rene K. schrieb:
> Nee, waren mir neu. Dann ist das aber der 2811 richtig? Ob er die
> Ziffern jeweils nur in einer Farbe darstellen will, hat er ja nicht
> gesagt. In Sachen Ressourcen natürlich besser. In Sachen Optik aber ein
> ganz klarer Abschnitt.

Ich möchte mir zumindest die Option nicht nehmen, immerhin verbaue ich 
hier ja auch ein paar meter=euros.. Da setze ich lieber auf die 
integrierten Controller und damit einzeln trennbar/steuerbaren.
Ich mache es mir lieber einmal schwer und bin dann zufrieden, als nun 
den leichteren weg zu nehmen..


Eine Frage nochmal bezüglich der Leistung des MC und des Outputs: Könnt 
ihr mir vielleicht sagen ob ein RasPi 3B reichen würde? So einen hab ich 
hier noch liegen. Ich mein von der Leistung her ist der um ein 
viiielfaches stärker als ein kleiner Arduino, nur ob der Output damit 
auch vernünftig gelingt?

von Johnny B. (johnnyb)


Lesenswert?

Maximilian W. schrieb:
> RasPi 3B reichen würde

Theoretisch schon, aber in der Praxis ist das benötigte Timing nur 
schwer einzuhalten.
Also am besten machst Du nur die Bildaufbereitung auf dem Raspi und zur 
Ansteuerung der Lichterkette nimmst Du einen Mikrocontroller (mit DMA).
Als Kommunikationsprotokoll dazwischen würde ich tpm2 verwenden, denn 
dann kannst Du auf dem Raspi auch Glediator verwenden als Alternative.
https://oneguyoneblog.com/download/glediator-v2-0-3/

Selber habe ich sowas ähnliches mit einem USD 1.60 BluePill Board 
realisiert. Das RAM vom STM32F103C8T6 reicht locker aus um mit der 
"SPI-Methode und DMA" über 650 Stück WS2812 anzusteuern und FreeRTOS 
laufen zu lassen. Als Schnittstelle nach Aussen dient USB (CDC, 
Virtueller COM-Port).
Vom Mikrocontroller brauchst Du nur ein einziges 5V tolerantes I/O (fast 
alle sind das) welches Du als OpenDrain definierst und mit einem Pull-Up 
auf 5V ziehst. Nebst dem BluePill ist also nur noch ein Widerstand nötig 
und fertig.

: Bearbeitet durch User
von Maximilian W. (maximilian_w348)


Lesenswert?

Johnny B. schrieb:
> Maximilian W. schrieb:
> RasPi 3B reichen würde
>
> Theoretisch schon, aber in der Praxis ist das benötigte Timing nur
> schwer einzuhalten.
> Also am besten machst Du nur die Bildaufbereitung auf dem Raspi und zur
> Ansteuerung der Lichterkette nimmst Du einen Mikrocontroller (mit DMA).
> Als Kommunikationsprotokoll dazwischen würde ich tpm2 verwenden, denn
> dann kannst Du auf dem Raspi auch Glediator verwenden als Alternative.
> https://oneguyoneblog.com/download/glediator-v2-0-3/
>
> Selber habe ich sowas ähnliches mit einem USD 1.60 BluePill Board
> realisiert. Das RAM vom STM32F103C8T6 reicht locker aus um mit der
> "SPI-Methode und DMA" über 650 Stück WS2812 anzusteuern und FreeRTOS
> laufen zu lassen. Als Schnittstelle nach Aussen dient USB (CDC,
> Virtueller COM-Port).
> Vom Mikrocontroller brauchst Du nur ein einziges 5V tolerantes I/O (fast
> alle sind das) welches Du als OpenDrain definierst und mit einem Pull-Up
> auf 5V ziehst. Nebst dem BluePill ist also nur noch ein Widerstand nötig
> und fertig.

Okay, dann werd ich mir das mal anschauen.. Mein teststreifen kommt die 
Woche :) Dann kann ich sowohl mitm arduino mal etwas spielen, also auch 
mitm RasPi.

Danke für die ausführliche Antwort :)

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.