Frei Schwebende LED Matrix (32×8)

Vor ein paar Monaten hatten wir die Idee, eine LED-Matrix zu bauen. Das klingt erstmal nicht so besonders.

Allerdings sollen die LEDs nicht auf einer Leiterplatte verlötet werden oder hinter einer Milchglas-Scheibe verschwinden. Sie sollen sehr gut sichtbar sein und dabei nur von den Drähten gehalten werden, die Zeilen und Spalten verbinden.

20120915-193526.jpg 20120916-144922.jpg 20120916-144946.jpg

Eine frei schwebende LED-Matrix.

Bei solch ein Projekt entstehen immer kleinere Herausforderungen, deren Lösungen wir hier einmal vorstellen wollen.

Drähte und LEDs

20120915-193312.jpgSichtbare Drähte bedeuten sauber gelötete Lötstellen („einfach“ sauber arbeiten ist die Lösung dafür) und vor allem gerade Drähte. Wie bekommt man einen Draht, der auf Rollen geliefert wird, gerade? Durch Verdrehen unter Zug. Der Draht wird auf einer Seite eingehängt und mit dem anderen Ende in eine Handbohrmaschine gespannt. Den Draht straff halten und verdrehen. Wenn man den Platz hat, gleich mehrere Meter des Drahtes so zu spannen, um so besser. Spannend ist vor allem, den Draht dann aus der Bohrmaschine zu lösen. Es empfiehlt sich, lieber ein paar Drehungen zurückzudrehen, denn sonst kann sich der Draht beim Entlasten wieder verbiegen.

Wie bewahrt man den Draht gerade auf? In einem Rohr natürlich. Ein kleines Plasterohr aus dem Baumarkt reicht vollkommen. Ideal wäre ein Rohr in der Länge, die der Draht haben soll und es sollte auf einer Seite verschlossen sein. Dann kann man den gerichteten Draht gleichzeitig aufsammeln und zuschneiden. (Wir richten gern mal 6m Draht am Stück.)

Das exakte Positionieren der LEDs ist extrem wichtig für dieses Projekt. Wir haben uns deshalb eine Montagehilfe fertigen lassen. So richtig mit einer CNC-Maschine. Bei dieser Matrix überschneiden sich Zeilen und Spalten genau im Mittelpunkt der LEDs. Deshalb müssen die LEDs zuerst montiert werden. Anschliessend werden die ersten Leitungen darüber gespannt und verlötet, schliesslich die zweite Ebene. Achtung: Beim Löten sollte man darauf achten, den Drähten genügend Zeit zum abkühlen zu geben. Also definitiv nicht gleich hintereinander alle Lötstellen eines Drahtes machen! Durch das Löten erwärmt sich der Draht, dehnt sich aus und es kommt zu hässlichen Beulen in der Matrix.

Wenn man auf diese Weise eine Matrix gelötet hat, muss sie als nächstes „schwebend“ in einen Rahmen montiert werden.

Mechanik

20120915-193437.jpgDie Größe der Matrix (32×8 LEDs bei einem Pixelabstand von 25 mm) bringt eine Herausforderung: Die Drähte dürfen nicht durchhängen und natürlich auch nicht reißen. Deshalb sind die Drähte mit Federn leicht gespannt. Auch Themperaturschwankungen sind dann für die bis zu einem knappen Meter langen Zeilen-Drähte leichter zu verkraften.

Mehrere Drähte auch nur leicht zu spannen, verlangt nach einem Rahmen, der das auch aushält. Gleichzeitig soll der Rahmen aber auch leicht aussehen. Wir haben uns deshalb für einen Rahmen aus einem Stück 15mm starkem Plexiglas entschieden. Die Aussparung für die Matrix wird von einem 120 mm breiten Rahmen umgeben. Diese 120x15mm sollen den Rahmen davor schützen, sichtbar durchzuhängen. Die Fertigung des Rahmens haben wir wieder den Profis mit der CNC-Maschine übertragen. Gute Arbeit und angemessen vom Preis (also nicht billig).

Um die Drähte zu spannen, haben wir sie paarweise auf kleine Leiterplatten gelötet, die auch ein Loch für die Befestigung am Rahmen (mit Feder, M3-Schraube und Kontermutter) hat. Die Bohrungen im Rahmen sind mittig in der Dicke (bei 7,5mm), die horizontalen und vertikalen Drähte der Matrix haben aber einen Abstand von 5mm. Um nur eine Art der Mini-Leiterplatten zu haben, werden die Leiterplatten also leicht schräg gespannt. Wem das nicht gefällt, der kann ja den Rahmen asymetrisch anbohren lassen. Für uns hat sich die hier vorgestellte Lösung als vollkommen ausreichend erwiesen.

Nun muss der Rahmen natürlich auch aufgestellt werden. Zwei Füße, die durch eine verdeckte Gewindestange am Wegklappen gehindert werden, fassen von unten um den Rahmen und geben ihm so Halt. (Alternativ könnte man auch Ösen oben am Rahmen montieren, und ihn an die Decke hängen.)

Mit einer Höhe von 720 mm und einer Breite von 1200 mm ist die LED-Matrix und ihr Rahmen zwar nicht klein, aber sie wirkt leicht. Ungeachted dessen, bringt sie mehr als 10 kg auf die Waage. Für den (gelegentlichen) Transport werden wir uns wohl noch eine spezielle Kiste fertigen lassen, denn das Material ist doch recht anfällig.

Elektronik

Die Schaltung ist einfach und enthält keine Besonderheiten. Die Spalten (Kathoden der LEDs einer Spalte) sind auf je einen Ausgang eines TLC5940 verbunden. Wir verwenden zwei kaskadierte Breakout-Boards von Sparkfun und haben sie gleich im Rahmen untergebracht. Natürlich sind an den TLC-Boards noch zusätzliche Kondensatoren zur Spannungsstabilisierung positioniert.

Die Zeilen (Anoden der LEDs einer Zeile) werden von einem UDN 2981A (8-fach Treiber) angesteuert, der eingangsseitig wiederum aus einem 74HC595 gespeist wird. Die Zeilentreiberei ist auf einem Prototype-Shield aufgelötet, weil es ja ein Einzelstück ist. Die Elektronik ist also wirklich nichts Besonderes.

Die Verbindung zwischen Rahmen und Prototyp-Board wird über eine 16polige Flachbandleitung (mit Steckern/Buchsen an jedem Ende) realisiert. Acht Adern für die Zeilen, je eine für Plus und Minus und die sechs restlichen für die serielle Ansteuerung der TLC-Kaskade. Natürlich könnte man die Zeilentreiber auch noch in den Rahmen bringen und so ein paar Leitungen sparen. Aber ein Shield war eh nötig, um den Arduino einzubinden. Warum also nicht gleich den Platz dort nutzen?

Software

Die LED-Matrix wird zeilenweise angesprochen. Es leuchten immer nur die LEDs, die auf eben dieser Zeile liegen. Indem aber in sehr schneller Folge jede dieser 8 Zeilen angesprochen wird (Multiplexing), scheint es dem trägen menschlichen Auge so, als ob alle LEDs gleichzeitig an wären. Der Arduino UNO schafft es, 30 Bilder pro Sekunde darzustellen.

Eine erste Herausforderung war, die Leuchtdauer jeder Zeile exakt gleich zu machen. Das bedeutet eben auch, dass nicht erst zur Laufzeit gross berechnet werden kann, was denn nun dargestellt werden soll.

Aktueller Status und Ausblick

Die Matrix ist mechanisch und elektrisch fertig. Softwaretechnisch ist bisher jedoch nur eine binäre Steuerung der LEDs realisiert, obwohl ja über den TLC 5940 eine Pulsweitenmodulierung mit vielen „Grau“-Stufen möglich ist. Angesichts des Pixelabstandes von 25 mm scheinen die Leuchtpunkte beim Textscrolling noch etwas zu springen. Durch Pulsweitenmodulation der Spalten sollte dieser Effekt jedoch erheblich reduziert werden. Jedoch wird ja auch der PWM-Takt über das Flachbandkabel übertragen. Eine all zu hohe PWM-Frequenz ist damit ausgeschlossen, denn es soll ja kein Störsender werden. Aktuell arbeiten wir mit 8kHz. Vielleicht bringen wir zumindest einen kleinen Rechteckgenerator (1MHz oder so) noch in den Rahmen, dann muss diese Aufgabe nicht mehr der Arduino übernehmen und es wird eine Ader frei, die dann den als weitere Minus-Verbindung fungieren könnte.

Die Entwicklung geht weiter.

Tags: