Forum: Mikrocontroller und Digitale Elektronik Led Cube (Fragen Multiplexing)


von Marc S. (frimel)


Lesenswert?

Hallo alle zusammen,

ich habe schon öfters bei euch im Forum gelesen und einiges mitgenommen.
Ein Video im Internet von einem 3x3x3 LED Cube hat mich fasziniert und 
daraufhin habe ich mich etwas damit beschäftigt. Und ja es gibt hier 
schon ne Menge zu dem Thema, aber ich habe ein paar Fragen, die glaube 
ich nicht direkt in die anderen Beiträge passen.
Ich möchte mir einen 12x12x12 LED RGB Cube basteln. Ja das ist schon 
etwas gewagt, zumal ich erst drei Wochen mit Mikrocontrollern bastele.

Ziel ist es, dass der Würfel von einem PIC betrieben wird (mehrere wären 
auch ok).
Die LEDs möchte ich gerne mit 7 Helligkeitsstufen und "aus" ansteuern 
und zwar pro Farbe, also 8x8x8x Farben (512). Die LEDs, die ich bestellt 
habe sind vom Typ Gemeinsame Anode und diffus und extrahell.

Meine ersten Gedanken sind
-Alle LEDs übereinander werden die drei Kathoden verbunden (3 Farben 12 
LED x 12 LED = 432 Leitungen)
-In einer Reihe verbinde ich die Gemeinsamen Anoden (12 Pro Reihe x 12 
Pro Ebene = 144 Leitungen)
-Multiplexing von den Reihen in jeder Ebene, also statt 144 Leitungen 
12+12=24 Leitungen
-Alles Multiplexen geht ja wegen der Farben und der zu hohen Ströme 
nicht.
-Shieberegister sollen zu langsam bei der Menge an LEDs sein, wenn ich 
das richtig aus verschiedenen Projekten interpretiere.
-Die LEDs sollen durch Latches angesteuert werden, allerdings ist mir 
nicht klar, ob ich mit denen auch wie beim Schieberegister ein Software 
PWM erstellen kann.
-Nach den Latches sind in einem Beispiel, bei jemand anderem UDN2981 
Source Driver. Die bräuchte ich wohl auch.
-Gibt es Latches und die Source Driver auch für 16 BIT( oder vielleicht 
für 12 Bit), welche eignen sich besonders? Die Latches werden dann je 
nach Größe, quasi das fehlende Multiplexing ersetzen.

Also falls ich ne Menge Schrott geschrieben habe, würde ich mich um 
Berichtigungen, Anregungen und dergleichen freuen.

: Verschoben durch Moderator
von Guest (Gast)


Lesenswert?

>Ich möchte mir einen 12x12x12 LED RGB Cube basteln.
Du weißt dass du da über 5000 einzelne LEDs hast?

>Ziel ist es, dass der Würfel von einem PIC betrieben wird
Dann kanns ja nur was werden...

>Die LEDs möchte ich gerne mit 7 Helligkeitsstufen und "aus" ansteuern
>und zwar pro Farbe
Dann lass mal rechnen. 8 Stufen sind 3bit. Das heißt ein Pixel wären 
3*3bit=9bit. Runden wir mal auf ein Byte ab. Du hast nun also 
12*12*12bytes. Das macht über 1,7kByte. Eine Animation braucht 
mindestens, sagen wir, 10Frames pro Sekunde (ruckelt dann zwar aber 
hinnehmbar) und ist bestimmt 5 Sekunden lang. Das macht dann 85kByte für 
eine Animation. Jetzt guck mal nach, wieviel RAM dein PIC hat. Oder 
Flash. Allein deswegen kannst du das vergessen.
Desweiteren, lass mal was anderes rechnen. 10 Frames pro Sekunde bei 
3bit PWM macht 80 PWM Zyklen pro Sekunde. In jedem Zyklus musst du für 
jede Farbe jeder LED den Wert aus dem RAM laden und mit dem aktuellen 
Wert vergleichen. Dann musst du ein Bit ausgeben. Rechnen wir also dafür 
mal 10 Takte. Du wirst sehen dass du VIEL MEHR brauchst, ich will nur 
zeigen dass es völlig unsinnig ist. Du hast also 5000*10*80*10 Takte pro 
Sekunde die du brauchst. Das sind dann mal 40 Millionen Takte. Auch 
bekannt als 40MHz. Nichtmal das wird dein PIC schaffen.
Ich weiß außerdem nicht wie dir die Latches groß helfen sollen.
Wie setzt man nun sowas um? Ich würde es mal mit 
Konstantstromquellen-Schieberegister-LED-Treiber ICs versuchen und dann 
ein ARM Prozessor pro Ebene. 144*3 LEDs kann man noch vernünftig 
ansteuern. Wobei du beim Multiplexing (12x12) wahrscheinlich auch schon 
Probleme mit dem Strom kriegst. Da könnte man dann umordnen.
Wieso versuchst dus nicht einfach erstmal im kleinen?

von hagen fragen (Gast)


Lesenswert?

Guest schrieb:
> Wieso versuchst dus nicht einfach erstmal im kleinen?

kann dem absolut beipflichten. außerdem hast du dir mal überlegt, dass 
bei 12Leds Seitenlänge fast 7000 Lötverbindungen nötig sind? das ganze 
noch äußerst sorgfältig aufgebaut dass es auch symetrisch wirkt und zum 
schluss merkste, dass irgendwo bei einer Led in der mitte der draht ab 
ist. da fluchst du dir dann das kreuz ab.

So ein vorhaben in der größenordnung muss hardware- und 
softwaretechnisch bis aufs kleinste geplant werden. und die planung 
fängt gewiss nicht mal schnell mit irgendeinem 0815 pic an...

von Marc S. (frimel)


Lesenswert?

12x12x12 LEDs sind 1728 RGB Leds und ja 6912 Lötstellen. Das 
Aneinanderlöten muss man sicherlich vorsichtig machen und so oft, wie es 
geht prüfen, ob alles aneinander ist. Das Ausrichten, dazu Bastel ich 
mir ne Schablone auf nem Holzbrett( und die wird genau genug, ich bin 
zwar kein Elektronikspezialist, dafür aber Maschinenbauer;) ). Es muss 
ja nicht mit einem PIC funktionieren, man kann ja auch beispielsweise 13 
Pics nehmen und dann jeweils eine Spalte mit 12x12 Leds ansteuern und 
dann einen Pic, der das Signal aufspaltet.
Und eine Beschreibung für einen 8x8x8 Cube RGB mit einem Mikroprozessor 
gibt es ja bei Stefan Weigerts  Homepage schon.
Ich will nur den PIC, weil ich damit angefangen habe und mir eine 
Testplatine gebaut habe, auf der mein einfarbiger 3x3x3 Led Cube auch 
bestens läuft;)

von Karl H. (kbuchegg)


Lesenswert?

Marc S. schrieb:

> ja nicht mit einem PIC funktionieren, man kann ja auch beispielsweise 13
> Pics nehmen und dann jeweils eine Spalte mit 12x12 Leds ansteuern und
> dann einen Pic, der das Signal aufspaltet.

Wenn schon, dann ist eine halbwegs vernünftige Aufteilung:
8 Teilcubes zu machen, von denen jeder 6*6*6 groß ist.
Aber selbst dann wird es mit dem Timing eng, wenn du auch noch 
Helligkeitssteuerung machen willst.

: Wiederhergestellt durch User
von MaWin (Gast)


Lesenswert?

> -Multiplexing von den Reihen in jeder Ebene, also statt 144 Leitungen
> 12+12=24 Leitungen

Hast du im Datenblatt nachgeguckt und nachgerechnet, ob deine LED 
wirklich 1:12 Multiplex aushalten, oder träumst du bloss ? Gerade blaue 
LEDs sind selten davon erbaut.

> -Shieberegister sollen zu langsam bei der Menge an LEDs sein, wenn ich
> das richtig aus verschiedenen Projekten interpretiere.

Also Schieberegister mit Sch können das und sind nicht das Problem der 
Schaltung, man betreibt mehrere (z.B. 8) parallel damit man byteweise 
die Daten ausgeben kann. Dann ist das fast ähnlich zu programmieren wie 
Latches, nur spart man sich den Adressdecoder.

> -Nach den Latches sind in einem Beispiel, bei jemand anderem UDN2981
> Source Driver. Die bräuchte ich wohl auch.

Ich glaube, du unterschätzt die nötigen Ströme ganz gewaltig.

Nehmen wir mal an, die blauen LEDs halten 100mA aus und sind dabei 5 mal 
so hell wie bei 20mA, und man verwendet 1:5 Multiplex, dann braucht RGB 
5 Spalten, und 1037 Zeilen z.B. durch 130 TPIC6B595. Die 104 Ampere 
schafft kein UDN2981. Lange nicht. Man verwendet MOSFETs die jeweils nur 
1/3 der LEDs, also 35A, schalten, also parallel am Netzteil und parallel 
angesteuert aber nicht mehr am Drain parallel zusammengefasst sondern 
jeder bedient seinen Teil der LEDs. Und ein 105A Netzteil braucht man 
auch.

Wenn man 50 Bilder/Sekunde darstellen will, muß man pro Bild 5184 bits 
rausschieben, oder 216 24 bit Worte. Das schafft ein 16MHz AVR in 20us, 
wenn die Daten vorbereitet im RAM liegen (dafür ist den meisten AVR das 
RAM zu klein), also in 1/1000 der Zeit die er dafür hätte, so daß er das 
problemlos 3 mal für 8 Helligkeitsufen per PWM machen kann, 
vorausgesetzt man kann ordentlich Assembler programmieren und quält sich 
nicht mit BASCOM.

Die Frage ist, wie viel Rechenzeit man braucht, um diese Daten erst mal 
passend strukturiert ins RAM zu bekommen. Wenn man dazu nebenbei einen 
MPEG-Video dekomprimieren muß, wird's eng. Rein algorithmisch hat ein 16 
MHz AVR aber gut 97% seiner Rechenleistung noch übrig.

von MaWin (Gast)


Lesenswert?

> Das schafft ein 16MHz AVR in 200us,

Da fehlt eine 0

wenn die Daten vorbereitet im RAM liegen (dafür ist den meisten AVR das
RAM zu klein), also in 1/100 der Zeit die er dafür hätte, so daß er das
problemlos 3 mal für 8 Helligkeitsufen per PWM machen kann,
vorausgesetzt man kann ordentlich Assembler programmieren und quält sich
nicht mit BASCOM.

Die Frage ist, wie viel Rechenzeit man braucht, um diese Daten erst mal
passend strukturiert ins RAM zu bekommen. Wenn man dazu nebenbei einen
MPEG-Video dekomprimieren muß, wird's eng. Rein algorithmisch hat ein 16
MHz AVR aber gut 70% seiner Rechenleistung noch übrig.

von Marc S. (frimel)


Lesenswert?

also ich warte erstmal bis die LEDs da sind, bestellen im Ausland geht 
ja nicht immer gut. Die hab ich bestellt 
http://ledz.com/led.datasheet/599R2GBC-CA.pdf

Wenn ich alles in Reihen und Spalten aufteile (keine ganzen Ebenen), 
dann muss ich doch nur 12 mal multiplexen, das sollte doch klappen, dann 
hab ich bei 120 mA ja 10 mA, das sollte doch für einigermaßen starkes 
Leuchten reichen oder?

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Marc S. schrieb:
> Wenn ich alles in Reihen und Spalten aufteile (keine ganzen Ebenen),
> dann muss ich doch nur 12 mal multiplexen, das sollte doch klappen,

egal, ob du irgendwas zeilenweise, spaltenweise, oder kreuz und quer 
multiplext: Sofern du eine LED mit einer gewissen Helligkeit haben 
willst, mußt du eine bestimmte Strommenge da durchjagen.

bei 10 mA pro Farbe bei "maximal-Beleuchtung":

(12 x 12 x 12) x 3 x 10 mA  = 50 A muß dein Netzteil mindestens liefern 
können

Daß deine Treiber bei einem "ungeeigneten" Multiplex ein Vielfaches als 
Spitzenstrom abkönnen müssen, ist halt noch was anderes ....


> dann hab ich bei 120 mA ja 10 mA, das sollte doch für einigermaßen
> starkes Leuchten reichen oder?

Das von dir gepostete Datenblatt meint dazu (reweils R-G-B)

IF Average Forward Current Per Chip 30 30 30 mA
IPF Peak Forward Current Per Chip (Duty=0.1,1KHZ) 60 120 70 mA

Das Diagramm mit forward current / forward voltage zeigt bei 10 mA noch 
nicht sehr vielversprechend aus was die Lichtausbeute angeht.

Mußt du dir halt als Folgeprojekt noch einen Restlichtverstärker bauen, 
damit du was am Cube erkennen kannst

von Marc S. (frimel)


Lesenswert?

Ich hab mir bei Stefan Weigerts Homepage die Baubeschreibung für den 
8x8x8 Würfel angeschaut, er hat ebenso diffuse LEDs, es mag sein, dass 
sich die Werte von meinen Leds unterscheiden, aber vielleicht auch 
nicht. Er hat seine 16fach multigeplext. Angeblich ist das hell genug. 
Der Strom würde sich dann von 50 auf 34 Ampere senken. Er beschreibt, 
dass grün so hell ist, dass der Strom dort nochmals um 80 % gesenkt 
wird. Alles in allem hat er einen Verbrauch von 6,6 A für 512 Leds 
berechnet, hochgerechnet wären das bei mir dann 22,75A, nicht wenig aber 
schon eher machbar. Das Farbempfinden ist ja nicht ganz linear;) Werde 
dann, sobald die Leds da sind, einfach mal 16 Stück zusammeln basteln 
und dann mal die Helligkeit beim Multiplexing testen.
Probieren geht über studieren;)

von Stryker (Gast)


Lesenswert?

Konntest du einen Rabatt rausschlagen? ich komme da auf ~950€...

PS: Neben den ganzen anderen Problemen (Stromaufnahme, Verkabelung) ist
das zwar so gerade noch machbar, jedoch wirst du über den µC oder ggf.
deren Kaskadierung nochmal nachdenken müssen...
Das Hauptproblem ist hier nicht umbedingt a) die Rechenzeit zum
ausgeben, oder b) die Speicherfrage oder c) die Synchonität sondern
soziemlich alles 3 gleichzeitig. Ich würde hier gleich mit einem FPGA
und dediziertem Speicher ran gehen (zum Vergleich: in der Monovariante
hast du schon das 64 fache (!!!) an allem, was du für deinen 3³ er
brauchtest - dann kommen noch 3 Farben dazu... ).

PS: Falls man mal einen Programmierfehler hat in dem er wärend des
Multiplexens in der Highphase hängen bleibt sind gehen deine 950€ in
einem Wunderschönen Licht auf und sterben kreischend den thermalen Tod
;-)

von Marc S. (frimel)


Lesenswert?

Naja bei Programmierfehler hatte ich mir gedacht, ich nehme erstmal 
größere Widerstände teste und wenn was nicht passt, müsste ich das 
hoffentlich erkennen. Wenn alles gut aussieht kommen die richtigen 
Widerstände rein.

Und nein 950 Euro hab ich nicht gezahlt, 300 Euro, war ein Restposten 
bei Ebay, hatte erst ein paar bestellt, weil schreiben kann man viel und 
ob es dann auch die entsprechenden Leds sind, weiß man nicht, wenn der 
Preis recht günstig ist. Die ersten kamen und die waren schon ganz schön 
vom Abstrahlwinkel und Licht geben sie auch noch ab. Da hab ich dann die 
restlichen auch noch bestellt und bei 1750 ergibt sich zwangsläufig 
12x12x12 ;)

Vielleicht ist es auch einfach zu kompliziert gedacht, dann nimmt man 
einfach mehrere Mikroprozessoren, quasi einen für 12x12, der muss ja 
nicht einmal 12 fach geplext sein, man kann den auch so verbinden, das 
er 8 mal geplext wird. Den Strom spaltet man dann auch einfach auf in 
ein paar kleine Transformatoren nebeneinander, die dann jeweils nur für 
12x12 zuständig sind.
Und einen Mikroprozessor, der quasi ein Bild mit den Infos einließt dann 
aufspaltet und an die einzelnen Prozessoren ausgibt. Kann mir gar nicht 
vorstellen, dass das so kompliziert ist... Fast ein kleines Fraktal;)

von MaWin (Gast)


Lesenswert?

> dann hab ich bei 120 mA ja 10 mA, das sollte doch für
> einigermaßen starkes Leuchten reichen oder?

Also ich lese 60mA, aber du scheinst lieber selektiv nur
das in einem Datenblatt wahrzunehmen, was dir gefällt.

1:6 Multiplex für halbe Helligkeit oder 1:3 Multiplex für
volle Helligkeit.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

> dann hab ich bei 120 mA

das ist dann ja auch ziemlich ... ärgerlich wenn man sich "mitten drin" 
im 12 x 12 x 12 Cube irgendeine LED zerschossen hat, und die nur noch 
"Glühwürmchen-Leistung" hat oder gar nicht mehr leuchtet aufgrund von 
Überlastung

von Hotte (Gast)


Lesenswert?

Hi. Der letzte Post ist zwar nen paar Jährchen her aber mich würde mal 
interessieren ob das Projekt letztendlich geglückt ist? :-D

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.