Cube3D

Idee

Die Idee eines 3D-Würfels aus RGB-LEDs ist nicht neu, Beispiele gibt es z.B. den Borg3D oder den Hypnocube. Nicht schlecht ist auch dieses Teil.
Leider sind die Jungs alle mit technischen Details sehr sparsam und deshalb muss man mal wieder erfinderisch sein. Und da wird man natürlich gleich anspruchsvoll und will weitere Features, die die Anderen nicht haben...

Der Plan

Geplant war also ein 4x4x4 Würfel aus RGB-LEDs, die einzeln dimmbar sein sollen. Dass das geht zeigten meine ersten Tests, in denen ein AVR Mega8 192 LEDs ansteuerte (mit Schieberegistern).
Eine Ebene wird mit Schieberegistern angesteuert, dazu sind 48 Ausgänge, also 6 Schieberegister 74HC595 nötig. Zwischen den 4 Ebenen wird dann im Zeitmultiplex umgeschalten.

Die LEDs, die per 6-Bit-PWM gedimmt werden (RGB je 64 Stufen, also 643 = 262.144 Farben!), werden Spannungsgesteuert betrieben. Das klingt erst mal bescheuert, funktioniert aber gut, da LEDs keine so steile Kennlinie haben, wie normale Dioden und einem daher einen Spielraum von >100mV zum Regeln der Spannung lassen. Der große Vorteil ist, dass man nicht die Hälfte der Leistung in den Vorwiderständen der LEDs verheizen muss, sondern mit einem Schaltnetzteil mit hohem Wirkungsgrad genau die nötige Spannung erzeugen kann. Als günstige Spannung für unsere LEDs (bei eGay direkt aus Taiwan bestellt) hat sich 3,2-3,3V erwiesen. Bei dieser Spannung leuchtet die LED gerade zufällig weiß und die Ströme sind auch alle unter 30mA. Ein 100Ω Widerstand an Blau macht das Weiß perfekt.

Wichtig ist ein Stück Heißklebestick (2,5cm lang / 11mm dick) das man auf die LEDs steckt als Diffusor, sonst wird nur die Decke angeleuchtet.

Schaltung

Endlich ist auch die Platine gekommen und die Schaltung läuft... --> Säng!

Netzteil

Da die LEDs wie oben erwähnt mit Konstantspannung betrieben werden brauche ich ein Schaltnetzteil, das aus ca. 12V möglichst konstante 3,2-3,3V liefert. Dazu habe ich mir einen Schaltregler-IC ausgesucht, genauer gesagt den MC34063A. Und weil der eine etwas ungünstige Endstufe für einen Buck-Converter eingebaut hat (Darlington NPN) und auch sonst etwas schwach zu sein scheint habe ich ihn mit einem p-Mos aufgemotzt. PNP würde natürlich auch gehen, da sind eben die Verluste etwas höher, aber auch nicht tragisch.
Der Mosfet links kann das Netzteil an/ausschalten (high-aktiv). Da die Schieberegister beim anschalten einen undefinierten Zustand haben ist das zweckmäßig. So kann die Versorgung zugeschaltet werden, wenn die SRs zu 0 initialisiert sind.
Der Eingangsstrom ist bei mir meist unter 100mA bei 12V. Mögliche Eingangsspannungen sind ca. 10-20V. Die Untergrenze bildet Ugs plus die 3,3V, die Obergrenze ist bei mit der Eingangselko (16V), wenn man da nen spannungsfesteren einsetzt ist irgendwann Ugs der Mosfets (v.a. der IRF5210) am Oberlimit.
Davon abgesehen steigt die Verlustleistung im 7805 stark an.

Steuerung

Die Ansteuerung der LEDs geschieht über Schieberegister - woher bekommt man sonst 48 Ports aus dem AVR? Damit das ganze auch flott geht hängen die am SPI und sind in Reihe geschaltet - alle Daten werden also durch alle Schieberegister geschleift bis sie im richtigen Pin sind und dann an die LEDs gelegt. Das passiert mit ca. 8kHz. Zum SPI müssen ca 1,6MBit/s raus kommen, man sieht also, dass es hier zeitkritisch zugeht.

Cube Schieberegister
Die LEDs sind hier nur durch 3 Pins modelliert, außerdem sind es nur 16xRGB. Das kommt daher, dass hier nur eine Ebene (4x4) dargestellt ist. Die Schaltung ist für LEDs mit gemeinsamer Anode entwickelt. Alle Anoden einer Ebene werden verbunden und an den Ebenentreiber angeschlossen (16xRGB Anoden pro Ebenentreiber).
Die 48 Kathoden einer Ebene werden mit den Kathoden der gleichen LED der anderen Ebenen verbunden und an die Schieberegister angeschlossen (immer 4 Kathoden an einen Ausgang)

Ebenentreiber

Für den Zeitmultiplex der 4 Ebenen brauche ich schnelle Schalter, die große Ströme vertragen. Dabei denke ich sofort an einen IRF540. Weil die RGB-LEDs eine gemeinsame Anode haben muss dafür die +3,3V-Leitung (hier VSS) geschaltet werden. Die Logikpegel des AVRs gehen bis 5V, damit stünde nur noch eine Gate-Source-Spannung von 1,7V für den IRF zur Verfügung, was natürlich zu wenig ist. Daher hier noch ein Levelshifter (Inverter) davor, damit Ugs auf 0-12V gebracht wird und der Mosfet anständig schaltet und möglichst keine Spannung an ihm abfällt.
Die Leitung oben kommt vom AVR und schaltet die Ebene an/aus (low-aktiv).

Diese Schaltung brauchen wir für jede Ebene, also insgesamt 4 mal.

Ebenentreiber

Komplettansicht

In der kompletten Schaltung haben wir noch den Mega32 und ein wenig Kleinkram untergebracht.

Cube Komplett

Anmerkungen

  • Der 1Ohm Widerstand beim Netzteil ist nur ein Dummy. Ich werde hier eine Drahtbrücke einlöten, habe so aber später die Möglichkeit, eine Strombegrenzung einzubauen.

Eindrücke

Ja, der Cube läuft und ja, er ist ULTRA!!

History (die Testschaltung auf dem Breadboard)

Nachbau

So, da sich mittlerweile wohl doch einige für dieses Projekt interessieren, möchte ich den Weg ebnen, um dieses Projekt nachzubauen...

Hardware

Die Platine ist mit Target geroutet, es sind allerdings zu viele Pins für die Light-Version. Anschauen und drucken kann man es aber auch ohne die Professional-Version. 

Download Target Platine:

Die Platine ist ein teurer Spaß, da sie sehr groß ist und man normalerweise keine 10 Stück davon braucht.
Vielleicht kann ich ja bei Bedarf gelegentlich eine Sammelbestellung organisieren, schickt mir bei Interesse einfach eine eMail, damit ich weiß, ob das überhaupt jemand will.
Es wird wohl so auf 40Eur/Stück bei 10 Stück rauslaufen.

Bei der Auswahl der LEDs ist zu beachten:
Die Schaltung ist darauf angewiesen, dass es eine Anodenspannung gibt, bei der die LED ohne Vorwiderstand weiß leuchtet. Außerdem darf bei dieser Spannung der Strom (vor allem für die rote LED) nicht zu groß werden (<40mA ist sinnvoll).
Der Spannungsteiler im Schaltnetzteil (R14-R16) muss dann auf diese Spannung angepasst werden - siehe Datenblatt des MC34063.

Zum Verdrahten ist 0,8mm Silberdraht bestens geeignet. Ich habe davon 2 Rollen (Reichelt) gebraucht.

Software

Die Software ist zwar noch nicht perfekt, aber macht schon ganz coole Effekte. Daher hier mal eine Beta-Version:

Alles ist in C geschrieben (AVR-GCC) und einigermaßen lesbar.

Danke

Dank geht vor allem an Stefan (Dr. Acid) für die Entwicklung des Tannenbaums. Ohne den Tannenbaum hätte es den Cube vermutlich nie gegeben...