Forum: Mikrocontroller und Digitale Elektronik RGB LED Steuerung


von Philipp L. (luxor)


Lesenswert?

Hallo,
ich bin neu hier, und bin mir nicht ganz sicher, ob ich hier im 
richtigen Forum bin, aber ich frag einfach mal.

Und zwar habe ich hier fast 1000 RGB LED rum liegen. Und das ist ja 
schade das die hier nur rum liegen, und dachte mir daraus kann man 
sicher ein schöne Lichtwand bauen. Und nun suche ich was schönes und 
besonders einfaches (da ich in dem bereicht nicht so fit bin) steuern 
über den PC. Vieleicht nicht alle 1000 LED´s aber vieleicht so 50 Pro 
Modul, so hätte man 150 PIN´s die ich gerne steuner würde. Geht das?? 
Mit welcher Methode könnte man das machen?
Ich habe in dem Shop was gefunden was ich sehr nett finde:

http://shop.mikrocontroller.net/csc_article_details.php?&saArticle[ID]=78

Wäre es möglich darüber sowas zu realisieren?? Den ein Netzwerk habe 
hier ich schon im ganzen Haus? So könnte man die Module schön verteilen.

Schon mal Danke für eure Antworten.

Gruß

von Di P. (drpepper) Benutzerseite


Lesenswert?

Wie wärs, wenn du mal beschreiben würdest, was du unter "ansteuern" 
verstehst?
Willst du damit eine einfarbige Fläche machen, Filme gucken, oder sonst 
was?

Wenn du zuviele LEDs hast, ich hätte interesse ;)

von Philipp L. (luxor)


Lesenswert?

Sagen wir mal ein Modul hat 5X10 LED´S also 50 LED mit 150 PIN (RGB für 
jede farbe ein PIN)Nun möchte ich einfach sagen können auf welches LED 
mit welchen PIN Strom kommt. Also Filme nicht, aber eben muster.

Ich bin gerne bereicht zu tauschen. LED´s gegen howto zum Steuern ;-)

von Karl H. (kbuchegg)


Lesenswert?

> Nun möchte ich einfach sagen können auf welches LED
> mit welchen PIN Strom kommt. Also Filme nicht, aber eben muster.

Wie schnell muss sich das Muster ändern können.
Wie schauen die Muster aus? Willst du zb in Rot
Abstufungen machen oder reicht Rot Ein/Aus?

Grundsätzlich:
Du kannst die Leds entweder logisch als Matrix anordnen
und multiplexen und über den Multiplex eine PWM realsieren.

Oder aber man könnte natürlich auch die LEDS an eine
entsprechende Schieberegisterkette hängen.


Du siehst, da sind noch einige Fragen offen, bevor man
dir was Vernünftiges vorschlagen kann.

von Philipp L. (luxor)


Lesenswert?

@lafkaschar: Du hast mir eine Nachricht zukommen lassen, leider weiß ich 
nicht wie ich dir darauf antworten kann, daher hier im Forum.
Ja ich will die Farben nur ein und aus schalten, nicht dimmen.

Eine solche LED Matrix klingt gut, heiß ich hätte ein Marix aus 5X10(x3 
für die RGB)

@kbuchegg: Der Wechsel von einem "bild" zum andern sollte schon schnell 
gehen.  So das man schöne Muster bauen kann.

Philipp

von Blaubärs Freund (Gast)


Lesenswert?

Vergiss es. So wenig Ahnung wie du hast wird das niemals etwas!

Ich hab zu Hause viele Autoteile herumliegen (ca. 1000). Wie mach ich 
daraus ein Auto? Ich hab zwar nicht so Ahnung, es sollte aber ca. 220 
km/h können und schön aussehen. Wäre ja schade wenn die Teile nur 
rumliegen.

Verkauf die Leds und fertig!

von Hagen R. (hagen)


Lesenswert?

Der Wechsel von Bild zu Bild ist unkritisch, darüber brauchst du dir 
erstmal keine Gedanken zu machen, egal welche Ansteuerung du benutzt. 
Die maximal notwendige Geschwindigkeit dafür liegt bei 100Hz, du hast 
also sehr viel Zeit -> 10ms pro Bild um die Daten zu verteilen, das ist 
ne sehr lange Zeit für zb. eine Shiftregister Kette das wären 80000 
Ausgänge die man bei 8Mhz Registertakt in 10ms ansteuern könnte. Die 
Länge einer solchen Kette, oder der Strom der diese ziehen würde, oder 
die Impulslast beim Einschalten, IST das Problem.

Gruß Hagen

von Karl H. (kbuchegg)


Lesenswert?

> Der Wechsel von einem "bild" zum andern sollte schon schnell
> gehen.  So das man schöne Muster bauen kann.

Das hab ich nicht gemeint.
Die Frage ist: Wie oft soll sich das Muster ändern. 1 mal
pro Sekunde, 10 mal, 100 mal.

> Die maximal notwendige Geschwindigkeit dafür liegt bei 100Hz

Mitlerweile hat er auch bekannt gegeben, dass er
keien PWM braucht. Reines Ein/Aus reicht.
Also: massig Zeit.

> Die Länge einer solchen Kette, oder der Strom der diese ziehen würde,
> oder die Impulslast beim Einschalten, IST das Problem.

Yep.
Ich würde bei sovielen LEDs trotzdem eher zu einer Matrix-Lösung
und Multiplexing tendieren.

von Philipp L. (luxor)


Lesenswert?

> Karl heinz Buchegger wrote:
> Das hab ich nicht gemeint.
> Die Frage ist: Wie oft soll sich das Muster ändern. 1 mal
> pro Sekunde, 10 mal, 100 mal.

Einmal die Sekunde reicht vollkommen, mehr wäre nett aber kein muss.

von Karl H. (kbuchegg)


Lesenswert?

Philipp Loens wrote:
>> Karl heinz Buchegger wrote:
>> Das hab ich nicht gemeint.
>> Die Frage ist: Wie oft soll sich das Muster ändern. 1 mal
>> pro Sekunde, 10 mal, 100 mal.
>
> Einmal die Sekunde reicht vollkommen, mehr wäre nett aber kein muss.

Also massig Zeit für den µC.

Vom Stromverbrauch her wäre eine gemultiplexte Matrix
sicherlich die bessere Lösung. Ist allerdings vom Verständnis
her etwas schwieriger.

Wie stellst du dir ein Modul vor?
Soll das eine eher flächige Sache oder eher eine
lineare Lösung (ala Weihnachtskette) werden.

Wie auch immer. Überschlagsmässig: Wenn du dir einen Mega8 holst,
hast du ausreichend Rechenpower und genügend Anschlüsse. Mega16
wäre auch eine gute Wahl, auch wenn er grösser ist. Da ist einfach
etwas mehr Speicher drinnen, da musst dann von der Programmierung
her nicht sparen.

Zuallererst würde ich mal die Idee als solches vergessen und einfach
mal eine LED an so einen Prozessor dranhängen und mit dieser einen
LED spielen. Wirst sehen: Der Appetit kommt mit dem Essen. Plötzlich
kommst du nämlich drauf, dass mehrer Farbabstufungen kein Fehler
wären, dann kann man nämlich schöne Farbübergänge von einer
Farbe zur nächsten machen. Etc. etc.

von Hagen R. (hagen)


Lesenswert?

>> Die maximal notwendige Geschwindigkeit dafür liegt bei 100Hz

>Mitlerweile hat er auch bekannt gegeben, dass er
>keien PWM braucht. Reines Ein/Aus reicht.

Und darauf habe ich geantwortet, 100Hz -> 100 mal pro Sekunde, also 100 
Bilder oder eben Muster pro Sekunde. Mehr ist unnötig. Du hast mich da 
also falsch verstanden, nichts mit PWM oder so.

>Vom Stromverbrauch her wäre eine gemultiplexte Matrix
>sicherlich die bessere Lösung. Ist allerdings vom Verständnis
>her etwas schwieriger.

Nein, meiner Meinung nach ist es die kompliziertere Lösung, aus Sicht 
der Strombelastung.

1.) braucht man nicht weniger Strom als bei einer nicht gemultiplexten 
Ansteuerung. Bei Multiplexing muß man nämlich in kürzerer Zeit eine 
proportional höheren Strom benutzen als bei Dauerstrom.

2.) durch die kürzere Zeit der Ansteuerung beim Mulitplexing entstehen 
höhere Strombelastungen, ergo merh Aufwand.

Multiplexing hat nur den Vorteil das man mit wesentlich (quadratisch) 
weniger Verdrahtungsaufwand auskommt. Lichttechnisch hat es keinen 
Vorteil.

Auch ich würde von vorn herein eine Full-RGB Ansteuerung in Betracht 
ziehen, sprich nicht nur 6 Farben.

Es gibt nun zwei Vorgehensweisen:

1.) nimm komplexe und readymade Bausteine wie die TLC/STPIC 
Shiftregister die dich vom komplexen Hardwarefummeln befreien. Diese 
werden dezentral als Modul mit zb. 4 RGB LEDs verteilt und zentral durch 
einen AVR angesteuert. Du brauchst dann zur Verbindung der Module nur 
max. 6 Leitungen. Diese Lösung ist par Euro teurer dafür aber einfacher 
zu warten, aufzubauen, zu verkabeln und die PWM Ansteuerung in fast 
Echtfarben ist inklusive (TLC Bausteine vorausgesetzt).

2.) mach alles selber, sprich eigene Verdrahtung und zentrale 
Ansteuerung. Der Aufwand beim Verlegen der LEDs ist dann dementspechen 
höher und das am Ende irgendwas nicht läuft höher wahrscheinlich. Bei 
150*3 LEDs braucht das Minimum Multiplexing 21+22 Datenleitungen. Das 
setzt aber vorraus das die RGB LEDs einzeln ansteuerbar sind. Diese 43 
Datenleitungen müssen quasi an jede der LEDs herangeführt werden. 
Ziemlich komplex bei 10m^2 Bodenfläche ;)

Ich würde ja 1.) bevorzugen.

Gruß Hagen

von Matthias (Gast)


Lesenswert?

Die maximal notwendige Geschwindigkeit dafür liegt bei 100Hz, du hast
also sehr viel Zeit -> 10ms pro Bild um die Daten zu verteilen, das ist
ne sehr lange Zeit für zb. eine Shiftregister Kette das wären 80000
Ausgänge die man bei 8Mhz Registertakt in 10ms ansteuern könnte...

Hahaha..
Du hast sowas scheinbar noch nie praktisch aufgebaut..
Rein rechnerisch mag die Zahl ja stimmen, aber schon mal darüber 
nachgedacht, dass diese 80000 (=10Kilobyte PRO BILD) Ausgänge, die du da 
rausschieben willst, auch irgendwo hergeholt werden müssen? Das bei der 
SPI schnittstelle jedes Bytes "per Hand" abgeschickt werden muss (bei 
8Mhz Schiebetakt alle 1Mikrosekunde ein Byte)? Das diese ausgeschobenen 
Daten auch zeitgleich dann ausgegeben werden müssen...?

So, und unter der Annahme das sei gelöst, dann: Wo kommen die Daten her, 
die ausgegeben werden sollen...? Es sind ja immerhin 10Kilobyte pro 
Bild!! Bei nur 100Hz Wiederholrate wären das ja nur 1Megabyte 
Videostrom...

von Blaubärs Freund (Gast)


Lesenswert?

Ist gar nicht so schwer. Kannst du löten? Wenn ja dann löte die 1000 
Leds zusammen (mit Zinn) Dann nimmst du noch dein ENC-Modul und machst 
es dran. Dazwischen natürlich noch ein Atmega. Am besten mit Bascom 
programmieren weil einfach!
Für die Stromversorgung ein PC-Netzteil, da dieses genug Power hat.
Fertig!

von Hagen R. (hagen)


Lesenswert?

>>Hahaha..

Hahaha ;)

>>Du hast sowas scheinbar noch nie praktisch aufgebaut..

Doch habe ich.

>>Rein rechnerisch mag die Zahl ja stimmen, aber schon mal darüber

Jo, sie stimmt sogar exakt, schon mal nachgerechnet ?

>>nachgedacht, dass diese 80000 (=10Kilobyte PRO BILD) Ausgänge, die du da
>>rausschieben willst, auch irgendwo hergeholt werden müssen?

Steht ja noch garnicht zur Debatte ;)

Denoch ist das nicht so schwer.

1.) 8Mhz SPI Takt auf einem AVR bedeutet das dieser mit minimal 16Mhz 
getaktet wird. Das heist auch das wir pro Datenbyte exakt 18 Takte Zeit 
haben um das nächste Datenbyte zu holen. In 18 Takten können wir ohne 
Probleme das nächste Datenbyte aus dem SRAM holen oder es live 
berechnen.

2.) wer erzählt was davon das diese Daten irgendwo hergeholt werden 
müssen ? Sie können genausogut live berechnet werden, zb. aus einem 
Zeichensatz.


Worauf ich aufmerksam machen wollte, da ich eben sowas ähnliches schon 
gebaut habe, sind ganz andere Sachverhalte. Nämlich der Punkt das zb. 
100Hz Bildwiederholrate ausreichend sind, das man dann alle 10ms ein 
Bild ausgeben müsste, das man in diesen 10ms mit einem 16Mhz AVR 
rechnerisch 80000 LEDs seriell ohne "Probleme" ansteuern könnte, das 
diese 80000 LEDs insgesamt 27000 RGB-LEDs wäre und das das viel mehr als 
nur 1000 RGB-LEDs sind, das das nur ein Siebenundzwanzigstel der Menge 
ist, das also die Frage nach Zeitproblemen bei der Ansteuerung von 1000 
LEDs, nach der Bildwiederholrate oder ähnlichem, absolut überflüssig und 
voreilig sind. Das alles sind nicht die realen Probleme über die man 
nachdenken sollte. Es sind Fragen wie:

- Verdrahtungsaufwand
- Stromlast
- Hardwarekomplexität

jeweils ob man nun alles selber macht, per Multiplexing oder nicht, oder 
ob man fertige Bausteine dafür nimmt die mehr kosten.


>>Das diese ausgeschobenen Daten auch zeitgleich dann ausgegeben werden
>> müssen...?

Hm, du solltest nicht Anderen vorwerfen das sie keine Ahnung haben ;)

Denn eigentlich müsste dir bekannt sein das man fast alle Shiftregister 
durch ihr internes Latch im Hintergrund mit Daten füllen kann. Erst mit 
einem Enable Signal werden diese Daten dann zeitgleich durch alle 
Register real ausgegeben. Das heist also -> es ist absolut kein Problem 
die Daten für das nächste Bild, während noch das aktuelle angezeigt 
wird, in die Register reinzischieben und dann zeitgleich für alle 
Register anzeigen zu lassen.

(Die gleiche Technik ist übrigens auch bei der SPI Ausgabe mit dem AVR 
möglich. Also auch hier kann man, wärend ein Byte per HW-SPI 
rausgeschoben wird, das nächste Datenbyte vorbereiten oder zb. aus dem 
SRAM holen. Wie gesagt stehen dafür AVR-Taktfrequenz/SPI-Taktfrequenz*8 
+ 2 Takte an Zeit zur Verfügung, also ausreichend Zeit)

Ergo: für die Berechnung und Aausgabe des nächsten Bildes stehen volle 
10ms an Zeit zur Verfügung. Das ist in jedem Falle, auch wenn es 10KByte 
an Daten wären, ausreichend Zeit, auch für einen AVR. Da man eben

1.) die Bytedaten beim SPI quasi im Hintergrund holen kann, man also 
volle 8Mhz SPI ohne Zeitverlust erreichen kann
2.) die Shiftregister mit neuen Daten füllen kann obwohl sie gerade ein 
Bild anzeigen

Es wird zu anderen Problemen kommen. Zb. werden durch diese 
zeitgleiche/gemultiplexte Anzeige enorm hohe Impulsströme entstehen. 
Schau dir mal das Datenblatt des TLC59xx Registers an. TI hat bei diesen 
Registern aus diesem Grunde die Übernahme der Daten an die einzelnen 16 
Ausgänge um jeweils +20ns versetzt. D.h. bei neuen Daten werden die 16 
Ausgänge nicht gleichzeitig sondern einzeln um 20ns versetzt aktiviert. 
Das reduziert die Stromlast erheblich beim Multiplexing etc.pp.
Um so mehr man multiplext um so höher müssen aber wiederum die LED 
Ströme eingestellt werden um die gleiche Helligkeit zu erreichen als 
wenn man mit Dauerstom die LED ansteuern würde. Das Multiplexing 
verringert also einerseits den Verdrahtungsaufwand eorm, erhöht aber 
dementsprechend die LED Ströme und damit die Impluslast der 
Shiftregister usw.

Gruß Hagen

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.