8x8x8 LED Cube

Nachdem ich schon mehrere 3x3x3 LED Würfelchen für Bekannte und Familie aufgebaut habe, wollte ich mir auch mal einen größeren gönnen. Die Vorteile auch ASCII-Zeichen darstellen zu können sind doch überzeugend
Auf eine Ausführung mit Verschiedenen Farben (RGB) habe ich aufgrund des exorbitanten Preises solcher LEDs doch ersteinmal verzichtet. Bei einem bekannten Internetauktionshaus ergatterte ich 1000 ultrahelle weiße 3mm-LEDs für nicht einmal 20€ (kostenloser Versand!). Natürlich gilt es selbige dann nachher ordentlich zu Prüfen da sie mit Sicherheit unselektiert sein werden...

1000 weiße LEDs 3mm

Ein paar Wochen später, die bestellten Teile sind da.

Mechanischer Aufbau der Matrix:

Als erste Amtshandlung habe ich mir eine Lötschablone angefertigt. Ein Holzbrett 210x210mm auf welchem 3mm-Löcher im Abstand von 25mm gebohrt wurden. Zusätzlich habe ich noch dicke Holzschrauben an den Rändern eingeschraubt, um später die 0,6mm Kupferdrähte besser verlöten zu können. Die Idee jede LED per Hand zu Biegen um auch die Kathode zu nutzen um auf den Draht verzichten zu können habe ich Aufgrund des enormen Arbeitsaufwandes bei 512 LEDs verworfen.

Löthilfe

Damit war erstmal eine Grundlage geschaffen, damit ich unter der Woche nach Feierabend mal ne' Stunde pro Abend mit den LEDs verbringen kann.
Die LEDs sind in der gleichen Art und Weise verschalten, wie beim 3x3x3 Cube, d.h. alle Kathoden einer Ebene werden zusammengeschlossen, und alle Anoden einer "Säule".

So...pro Ebene benötige ich im Schnitt eine Stunde (nebenbei Fernsehen ). In der Lötmatrix sieht das Ganze so aus:

Eine Ebene ist fertig...

Das einzige Problem ist den 0,6mm Draht richtig gerade zu bekommen. Sicher hätte ich mir eine tollere Spann-Konstruktion überlegen können, aber der Aufwand wärs nicht wert. Mit etwas Geschick bekommt man das auch so hin!

Boaa...also nach dem Stress hab ich bestimmt erstmal keinen Bock mehr auf LED-Basteleien. Jede LED wurde in mehreren Arbeitsgängen angepasst....für den rohen LED-Würfel kamen ungefähr 30 "Arbeitsstunden" zusammen (Ebene Stecken, verlöten, LEDs bemalen, LED Beine biegen, Ebenen verlöten etc.). Auf jeden Fall eine Geduldsübung.

Aber endlich ist er geschafft. Und das Ergebnis kann sich durchaus sehen lassen. Bevor ich die Ebenen zusammengefügt habe, wurde jede mehrere Stunden lang geprüft. Das Problem ist wie beim 3x3x3 LED Cube die Bezugsquelle der LEDs. Unselektierte Ostasiatische LEDs sind nunmal um einiges Preiswerter, aber eben auch "ausfälliger". Um sich später mühevolle Fingerakrobatik beim LED-Wechsel ersparen zu können ist ein längeres Testen daher unabdingbar.

die fertige LED-Matrix

Zugegeben...die Drähte sind leider nicht exakt gerade hinzubekommen. Aber im Dunkeln fällt dies nicht weiter auf.

Die Steuerplatine ist da schon ein weinig komplizierter als die des 3x3x3 Cubes. Zum Einsatz kommt ein AtMega32. Nun hat dieser ja "nur" 32 IOs, was mit dem System welches beim 3x3x3 Cube verwendet wurde nicht ausreichen würde. Daher ist die Verwendung von D-Latches notwendig. Dies erlaubt mir mit nur 3 Ports zu je 8 Bit den kompletten Cube ansteuern zu können. Der vierte Port ist damit allein für den ISP-Anschluss zu Verfügung (evtl später noch USB-Support). Die Spannungsversorgung für die LEDs und ICs übernimmt wie immer ein 7805 Linearregler. Eventuell werde ich in Zukunft noch eine blanko-USB-Buchse auf das Board bringen, um den Cube mit USB-5V versorgen zu können (bei ca 300mA Stromaufnahme kein Problem). Je ein D-Latch ist für eine "Reihe" (man könnte auch Senkrechte Ebene sagen) zuständig. Die waagerechten Ebenen (alle Kathoden der Ebene) werden mit den Mosfets geschalten. In Worten soll der Cube folgendermaßen gemultiplext werden:

-> Bitmuster an erstes D-Latch anlegen
-> erstes D-Latch ansprechen
-> Daten setzen
-> nächstes D-Latch ansprechen
-> Daten setzen
-> das selbe mit allen 8 Latches
-> Mosfet Schalten

Geschrieben werden also immer 8 Bit (eintsprechen einer Zeile einer Ebene), wobei dann erst eine bestimmte Ebene durchgecastet wird, und dann die jeweils anderen. Anfänglich hatte ich bedenken bezüglich der für den Menschen wahrnehmbaren Helligkeit der LEDs, da jede LED bei diesem Multiplexing nur für 1/8 der Zyklusszeit angeschalten ist. Dies gilt es dann Programmtechnisch zu lösen . Die Mosfets (ich verwende hier IRLZ34N, wobei die deutlich überdimensioniert , aber auch am preiswertesten sind) werden mit einem Gatevorwiderstand von 47Ohm beschalten, sowie einen Pull-Down von 100kOhm. Der Gatevorwiderstand ist nötig, um die Ladeströme der Kanalkapazität zu limitieren (siehe dazu Datenblatt des jeweiligen FETs). Der Pull-Down sorgt dafür, dass beim flashen des µC die Mosfets nicht willkürlich schalten und die Schaltflanken deutlich steiler verlaufen.

Die Vorwiderstände für die LEDs verdienen besondere Aufmerksamkeit! Die D-Latches (74HC573) können insgesamt bis zu 70mA sourcen (auf allen 8 Bit insgesamt). Pro Bit allerdings bis zu 35mA Spitze. Da es aber durchaus vorkommt, dass alle 8 LEDs leuchten müssen, ist darauf zu achten den Maximalstrom von 70mA nicht zu überschreiten. Pro LED erbegen sich daraus 8,75mA. Nicht viel für Ultrahelle LEDs, allerdings mehr als genug um die LED ausreichend leuchten zu lassen. An dieser Stelle der Verweis auf die Erläuterung der Vorwiderstandsberechnung beim 3x3x3 LED Cube. Die LEDs sind nichtlineare Bauelemente, deshalb unbedingt Ausmessen oder Arbeitspunkt festlegen (wenn Datenblatt vorhanden). Ich entschied mich für 330Ohm Vorwiderstände welche die LEDs mit 7mA Strom limitieren. Genug Luft nach oben und auch die Leuchtstärke ist zufriedenstellend. Für mehr Leuchtkraft empfiehlt es sich noch LED-Treiber wie ULN2803 o.ä. hinter die Latches zu schalten.

Schaltplan der Steuerplatine:
Schaltplan

Aufgebaut wurde die Schaltung auf einer Lochraster-Platine 100x160mm. Der Cube ist über 8-Pin Header trennbar von der Platine ausgelegt, um mein späteres Vorhaben eines Plexiglas-Gehäuses für den Cube noch ohne Lötaktionen realisieren zu können.

Bestückungsseite der Steuerplatine

Aufgrund der vielen Leitungen habe ich mich für die Datensignale zu Flachbandkabeln entschieden. Die Optik der Platine fällt im Endeffekt dennoch gut aus.

Lötseite der Steuerplatine

Ein optischer Leckerbissen Da hab ich mir echt Mühe gegeben um den 0,6mm Kupferdraht so schön auf das Lochraster zu bringen. Im übrigen bin ich nach diesem Projekt dabei auf Printed Layouts umzusteigen und stelle mir damit solch große Platinen selbst her (Ätzen). Per Hand mach ich mir den Stress nur ungern noch einmal!

Programmierung:

Programmiert wurde der Würfel im AVR Studio in C. Organisiert ist der Würfels als 8x8 Array vom Typ uint8_t, womit ein Bild nur insgesamt 64Bytes belegt. Das ist vor allem dann sinnvoll, wenn kompliziertere Animationen die keinen Algorithmus folgen in den Flash hart einprogrammiert werden. Den Code gebe ich vorerst nicht raus. Zum einen ist er nicht besonders schön, zum anderen steckt dort die meiste Zeit drin. Viel zu schade um ihn einfach so zur Verfügung zu stellen. Eventuell erstelle ich irgend wann einmal ein Demo-Projekt, welches jeder einfach erweitern kann.

Ein erster Funktionstest (nur eine Animation) läuft zu meiner vollsten Zufriedenheit. Auf dem Bild scheinen nicht alle LEDs zu leuchten, weil eine Art Explosion animiert wird.

erster Funktionstest

Fürs erste (damit der Würfel in der Position steht wie er soll) wurde eine Holzplatte gebohrt und schwarz lackiert (um reflexionen zu vermeiden). Die Steuerplatine kommt erstmal mit auf das Brett, damit Alles in Allem kompakt auf den Schreibtisch passt.

der BETA-Testaufbau

Die Flachbandkabel sehen natürlich noch etwas "wild" verlegt aus. Aber zumindest sind die erstmal gebündelt und außerhalb der Sicht- und "Verfang"-Reichweite.

Acryl-Case

Um den Würfel besser zu Geltung zu bringen, bekommt er ein schönes Show-Case aus Acyrlglas. Hier ein paar Impressionen vom Aufbau und der Implementation des Würfels:

Video:



Projekt von: 01/2012 - 06/2012