Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Einen beeindruckenden 5x5x5 LED-Würfel mit Arduino Mega bauen

Komponenten und Zubehör

Arduino Mega 2560 1
Blaue LED 125
NTE85 NPN-Transistor 5
22 AWG verzinntes Kupferdraht 1
180 Ohm Widerstand, 1/4 Watt 25
9 cm x 15 cm Lochrasterplatine 1
330 Ohm Widerstand, 1/4 Watt 5
Optional: 9-Volt-Netzteil für Mega 1

Benötigte Werkzeuge und Maschinen

Apps und Online-Dienste

Über dieses Projekt

Einführung

Die meisten Menschen lieben LED-Würfel, aber große Exemplare wie 8x8x8 erfordern viel Arbeit – sowohl beim Bau als auch bei der Programmierung. Kleine Würfel (3x3x3 oder 4x4x4) sind einfach zu bauen, da sie weder viele LEDs noch externe Hardware wie Schieberegister und High-Side-Treiber benötigen. Doch sie bieten nicht das gleiche Erlebnis wie ein großer Würfel.

Mein Ziel war es, einen einfach zu bauenden Würfel zu entwickeln und genug coole Software zu schreiben, damit man das Gefühl eines großen Würfels genießen kann – ohne den ganzen Aufwand. Das Ergebnis ist ein 5x5x5-Würfel, der direkt von einem Arduino Mega gesteuert wird, ohne Schieberegister oder zusätzliche Hardware außer 5 Transistoren (um die Kathoden einer ganzen Ebene – 25 LEDs – auf Masse zu ziehen). Warum Schieberegister vermeiden? Weil sie beim Handverdrahten absolut schrecklich sind (ich habe es versucht). Man braucht wirklich eine designte und gefertigte Leiterplatte, um sie zu nutzen.

Ich habe in der Vergangenheit viel Code für große Würfel geschrieben und eine Reihe bestehender Animationen für diesen 5x5x5-Würfel angepasst.

Hinweis: Ich bin nicht der Erste, der einen 5x5x5-Würfel mit einem Mega vorschlägt. MEGA DAS veröffentlichte 2017 ein ähnliches Projekt. Die Hardware ist fast identisch. Ich hatte das frühere Projekt erst beim Schreiben dieses Artikels gesehen, daher sind meine Pinbelegungen und Widerstandswerte anders, aber ansonsten ist die Hardware fast gleich. Ich veröffentliche dies vor allem wegen meiner Erfahrung mit Würfel-Software – ich hoffe, sie überzeugt ein paar Leute, einen Würfel zu bauen, die es sonst nicht tun würden!

Das Video oben zeigt eine Sinuswellen-Funktion, bei der die Amplitude auf der Z-Achse und die Zeit als horizontale Distanz vom Würfelmittelpunkt dargestellt wird. Ein klassischer Effekt auf großen Würfeln, der auch auf diesem 5x5x5 beeindruckend aussieht.

Ich habe zwei weitere Videos beigefügt, beide zeigen 14 Animationen für den 5x5x5-Würfel. Ich bin mir nicht sicher, welches besser ist, daher beide. Und falls nicht offensichtlich: Würfel sehen in echt viel cooler aus als im Video!

Hardware

Der Mega bietet viele digitale I/O-Pins. Wir nutzen 5 Pins, um die Transistoren anzusteuern, die die Kathoden jeder Ebene auf Masse ziehen, und 25 weitere Pins, um die Anoden der 25 LEDs innerhalb einer Ebene high zu schalten. Mit diesem Ansatz hat der Mega theoretisch genug Pins für einen 6x6x6-Würfel. Aber ein weiterer Aspekt für Einfachheit ist die Stromversorgung. Die Stromgrenzen des Mega betragen 40 mA pro Pin und 200 mA gesamt. Blaue LEDs haben eine Vorwärtsspannung von ca. 3 V, unsere Common-Cathode-Transistoren weitere 0,7 V. Bei 5 V Versorgung und 180 Ohm Vorwiderstand fließen pro LED ca. 7,2 mA. 25 LEDs pro Ebene ziehen 180 mA, wenn alle leuchten. Da immer nur eine Ebene aktiv ist, erfüllen wir alle Stromlimits des Mega – vorausgesetzt, wir nutzen NPN-Transistoren, um alle Kathoden einer Ebene auf Masse zu ziehen. Der Basisstrom eines Transistors fügt weitere 5 mA zur Gesamtlast hinzu, aber wir bleiben bei ca. 185 mA unter 200 mA. Deshalb wählte ich 180-Ohm-Widerstände für die LEDs.

Einen beeindruckenden 5x5x5 LED-Würfel mit Arduino Mega bauen

Die Grafik zeigt, wie die digitalen Pins des Mega mit dem Würfel verbunden sind. Pins 22–26 steuern die 5 Transistoren für die Ebenen-Kathoden. Pins 27–51 gehen über die 180-Ohm-Widerstände zu den Anoden der 25 LEDs einer Ebene.

Die Pinbelegung mag etwas verwirrend wirken. Meine Software nutzt direkten Portzugriff statt digitalWrite, um die Anoden zu konfigurieren – also um jede der 25 LEDs einer Ebene ein- oder auszuschalten. Das spart viel Zeit, sodass die LEDs länger leuchten als bei vielen digitalWrite-Aufrufen. Die Pinbelegung ist so angeordnet, dass sie die Referenzierung dieser digitalen Ports erleichtert, nicht die eigentlichen Pin-Nummern. Mehr dazu im Software-Abschnitt.

Würfel-Bau

Es gibt viele Meinungen zum Bau eines Würfels, egal welcher Größe. Die Arbeit ist mühsam, egal welchen Ansatz man wählt. Man muss sorgfältig und geduldig vorgehen, um ein gutes Ergebnis zu erzielen. Ich zeige, wie ich diesen gebaut habe, aber es gibt auch andere Anleitungen online.

Der Bau beginnt mit dem Formen der Drähte und dem Löten der LEDs zu Säulen aus 5 Stück. Dann werden 5 Säulen zu einer Ebene verlötet, und schließlich werden 5 Ebenen zum Würfel zusammengefügt. Wer noch nie einen Würfel gebaut hat, unterschätzt, wie schwer es ist, einen perfekten Würfel zu bauen. Kleine Fehler in den Drahtwinkeln addieren sich schnell, und schon kleine Abweichungen im Abstand sind gut sichtbar. Der Schritt des Drahtformens ist daher kritisch. Wenn man sich Zeit nimmt und es richtig macht, wird der Würfel nicht perfekt, aber vernünftig aussehen.

Einen beeindruckenden 5x5x5 LED-Würfel mit Arduino Mega bauen

Die Anoden sind die längeren Anschlüsse der LED und zeigen nach unten, müssen aber seitlich abgebogen werden, damit sich vertikale Reihen von Anoden verlöten lassen. Der Anodenversatz und der Kathodenanschluss müssen im 90-Grad-Winkel zueinander stehen, wie auf den Fotos gezeigt.

Ich finde das Drahtformen sowohl mühsam als auch anstrengend für die Hände, daher forme ich 25 LEDs und baue dann eine Ebene. Man braucht eine Vorrichtung sowohl für die Säulen als auch für die Ebenen. Ich nutze BlueTack, einen wiederverwendbaren Kleber. LEDs können in das BlueTack gedrückt werden und bleiben beim Löten der Säulen und Ebenen an Ort und Stelle. Die Vertiefungen ermöglichen es, die Prozesse mit exakt gleichen Abständen zu wiederholen. Beim ersten Mal ist es wichtig, alles sehr sorgfältig zu vermessen. Ich verwendete 0,6 Zoll (ca. 15,24 mm) Abstand zwischen LEDs in alle drei Richtungen, sodass der fertige Würfel in eine Platine mit standardmäßigem 0,1-Zoll-Lochraster passt.

Einen beeindruckenden 5x5x5 LED-Würfel mit Arduino Mega bauen
Einen beeindruckenden 5x5x5 LED-Würfel mit Arduino Mega bauen

Hinweis zum Verlöten von LEDs: Der Albtraum jedes Würfelbauers: Den Würfel fertig gebaut und dann eine kalte Lötstelle im Inneren entdecken, wo man nicht mehr hinkommt! Achtet beim Bau jeder LED-Säule auf gute Lötstellen.

Einen beeindruckenden 5x5x5 LED-Würfel mit Arduino Mega bauen
Einen beeindruckenden 5x5x5 LED-Würfel mit Arduino Mega bauen

Wenn eine Ebene fertig ist, sollte man sie testen. Wiederum deshalb, weil eine kalte Lötstelle oder eine defekte LED im fertigen Würfel katastrophal wäre!

In der Software ist ein kleiner Sketch zum Testen einer Ebene enthalten. Dazu verbindet man die 5 vertikalen Anodenanschlüsse mit 5 Widerständen (330 Ohm oder ähnlich) und diese mit den Pins 40–44 (die Anoden-Pins für Spalte 0). Dann verbindet man die 5 Kathoden-Pins mit den Pins, die normalerweise die Kathoden treiben: Pins 22–26. Eine gute Ebene sieht aus wie im Video oben. (Als Hinweis: Wir nutzen noch keine Transistoren für die Kathoden, daher treibt dieser Test die Kathoden low, um eine LED einzuschalten. Sobald die Transistoren eingebaut sind, machen wir das Gegenteil: Kathoden high treiben, um die Transistoren einzuschalten, die dann die Kathoden auf low ziehen.)

Wenn 5 Ebenen gebaut und getestet sind, können wir den Würfel zusammenbauen – aber पहले müssen wir die Hauptplatine vorbereiten, indem wir alle benötigten Widerstände und Transistoren einbauen und verbinden.

Einen beeindruckenden 5x5x5 LED-Würfel mit Arduino Mega bauen

Ich platzierte die 180-Ohm-Widerstände direkt neben jeder Anoden-Spalte und die Kathoden-Transistoren mit ihren Basiswiderständen im Raum zwischen Würfel und Mega. Der Abstand zwischen Anoden-Spalten beträgt in beide Richtungen 0,6 Zoll, also 5 leere Löcher auf der Platine zwischen jedem Loch mit einer Anoden-Spalte.

Jetzt ist ein guter Zeitpunkt, den Arduino auf der Platine zu befestigen. Er kann auf Abstandshaltern montiert werden, falls vorhanden. Ich habe einfach ein kleines Stück Plastik und etwas Kleber verwendet, um meinen Mega ca. 6 mm über der Platine zu befestigen.

Die Ebenen werden nun an der Hauptplatine angelötet. Stellt sicher, dass jede Anoden-Spule wirklich im richtigen Loch ist, bevor ihr lötet – schon ein Loch Versatz fällt im fertigen Würfel auf. Und achtet darauf, dass alle Ebenen gleich ausgerichtet sind, also alle Kathodenanschlüsse auf derselben Seite herauskommen.

Einen beeindruckenden 5x5x5 LED-Würfel mit Arduino Mega bauen

Als Nächstes müssen wir die Ebenen miteinander verbinden, sodass alle Kathoden einer gegebenen Ebene verbunden sind. Das gelingt mit einem geraden Stück verzinnten Kupferdraht, das die fünf Kathoden-Leitungen einer Ebene miteinander verbindet.

Einen beeindruckenden 5x5x5 LED-Würfel mit Arduino Mega bauen

Nun sind wir bereit, die Kathoden jeder Ebene zur Hauptplatine zu führen. Die Kreise im Bild oben zeigen, wo die Kathoden jeder Ebene angeschlossen und zum Kollektor eines Transistors geführt werden. Wieder verwenden wir ein gerades Stück verzinnten Kupferdraht.

Nachdem alle Leitungen von den Widerständen zum Mega verbunden sind, können wir endlich den fertigen Würfel testen. In der Software ist ein Sketch zum Testen des Würfels enthalten. Er lässt jede LED des Würfels der Reihe nach kurz aufleuchten. Da ihr jede Ebene bereits getestet habt, werden Probleme jetzt höchstwahrscheinlich die jüngsten Kathodenverbindungen betreffen. Man könnte also eine Ebene finden, die nicht funktioniert, oder Teile einer Ebene. Wieder ist eine kalte Lötstelle die wahrscheinlichste Ursache.

Software

Der Status jeder LED im Würfel wird durch ein globales 5x5x5-Byte-Array cube[][][] definiert. Eine 1 bedeutet, die LED ist an, eine 0 bedeutet aus. Alle Animationen entstehen also durch das Setzen von 1ern und 0ern in diesem Array.

Das Herzstück jeder Würfel-Software ist der zeitgesteuerte Interrupt, der den Würfel aktualisiert. Meine Interrupt-Routine wird in setup() initialisiert und befindet sich am Ende des Programms. Sie wird alle 10 ms aufgerufen und braucht ca. 6 ms, um den Würfel zu aktualisieren. Das lässt 4 ms zwischen den Aktualisierungen für die Ausführung des Hauptprogramms.

Während der Aktualisierung wird jede Ebene für 1,2 ms eingeschaltet. Die Aktualisierung erfolgt 100-mal pro Sekunde. Eine einzelne LED, die eingeschaltet ist, leuchtet also 120 ms pro Sekunde – ein Tastverhältnis von 12 %. Die 100 Hz sind schnell genug, damit das menschliche Auge ein kontinuierliches Leuchten wahrnimmt, und 12 % Tastverhältnis reicht für eine überraschend helle Leuchtkraft – nicht ganz so hell wie bei Dauerlicht, aber erstaunlich nah dran.

Um den Aktualisierungszyklus so kurz wie möglich zu halten und die Zeit, in der die LEDs leuchten, zu maximieren, vermeiden wir zeitraubende digitalWrite-Befehle und nutzen direkten Portzugriff für die Pin-Konfiguration. Schaut man in den Code der Interrupt-Routine, sieht man 25 separate Zeilen für diesen direkten Portzugriff – das sieht nicht hübsch aus, ist aber viel, viel schneller als die wenigen Zeilen Code, die man für digitalWrite bräuchte.

Die loop()-Funktion ruft einfach jede Animation auf, geht durch die Liste und fängt dann von vorne an. Die Animationen liegen jeweils in eigenen Unterroutinen. Manche rufen weitere Routinen auf. Im Code selbst finden sich Erklärungen zu den verschiedenen Animationen. Es gibt auch einige Hilfsroutinen, die von allen Animationen genutzt werden, wie clearCube() (alle LEDs ausschalten) oder copyDown() (Inhalt jeder Ebene eine Ebene nach unten schieben, oberste Ebene löschen).

Es gibt drei verschiedene Sketches zum Download. Der Hauptsketch enthält die 15 Animationen aus dem Video. Die Panel-Test- und Cube-Test-Sketches dienen nur zum Testen während des Baus.

Code

Enthält 3 Sketches: Panel Test, Cube Test und The Show mit allen 15 Animationen.

Gehäuse (optional)

Falls ihr Zugang zu einem 3D-Drucker habt und das Gehäuse aus meinen Videos wollt: Hier ist die Datei.

Schaltpläne

Ein Schaltplan der Grundlagen sowie die genauen Verbindungen zwischen Würfel und Mega.

Herstellungsprozess

  1. Bügelbrett-Fertigung: Design, Materialien und Produktionsprozess
  2. Rubiks Würfel: Von der Erfindung zum modernen Puzzle
  3. Leiterplatten (PCB): Design, Fertigung und Zukunftstrends
  4. Surfboard-Konstruktion und Design: Von polynesischen Wurzeln zur modernen Innovation
  5. Leuchtdioden (LED): Von der Entdeckung zur 100-Jahre-Lebensdauer
  6. RasPiRobot Board V2: Raspberry Pi zum leistungsstarken Roboter-Controller erweitern
  7. DIY Arduino Word Clock – Elegante Wortuhr mit RTC & Schieberegistern
  8. Arduino Coffin Dance Melodie-Projekt – Viralen Hit nachbauen & abspielen
  9. Smart Touch-Schalter mit Temperaturanzeige: Aus alt mach neu
  10. LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung