.: Details: LED - Würfel "MiniCube" :.

LED - Würfel "MiniCube"

Informationen

ControllerPIC18F1330
Version1.0 alpha (ungetested)

Beschreibung

In diesem Projekt wird eine 4x4x4 - LED - Matrix gebaut, die mit einem Mikrocontroller angesteuert wird um 3D-Effekte zu erzeugen...

ACHTUNG: Da ich dieses Projekt noch nicht aufgebaut habe, ist ein Nachbau nicht empfohlen!
Außerdem ist der Quellcode noch nicht fertig, sodass noch keine Dateien veröffentlicht wurden...

Einleitung

Auf dieser Seite habe ich zum ersten Mal die Idee, einen LED-Würfel zu bauen gesehen. Es geht dabei darum, kleine Lichtspiele im 3D-Raum darzustellen...
Mein Würfel (oder auch Matrix) besteht aus 4x4x4 = 64 LEDs.
Dazu habe ich ein Programm geschrieben, um die Muster zu erstellen. Es hat eine Vorschaufunktion und erzeugt die Arrays für den C-Code direkt.

1. Aufbau

Die wichtigsten Teile der Schaltung sind ein PIC18F1330 (MikroController) und ein MAX7221 (LED-Treiber für max. 64 LEDs oder 8 7-Segment-Anzeigen).
Der Rest sind nur einige Taster, passende Widerstände, ein Potentiometer zur Geschwindigkeitsregelung, Reset-Beschaltung und einem ICSP-Anschluss, um den Controller auch nich in der Schaltung programmieren zu können.

2. Umsetzung auf einem Mikrocontroller

Die einzelnen Lichtmuster werden (zusammen mit der jeweiligen Dauer von 10 bis 200 1/100 Sekunden) in einem Array gespeichert. Da 64 LEDs angeschlossen sind, müssen die einzelnen Bits (für AN/AUS) in 8 einzelnen Elementen á 8 bit (1 byte) gespeichert werden.
Beispiel:
  1. const unsigned char ani0[] = {5,0b10000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,
  2. 10,0b10011000,0b00000000,0b00000011,0b00010000,0b00011100,0b00001100,0b00000000,0b00000000};
Hier würde das erste Muster 5/100 Sekunden und danach das zweite Muster 10/100 Sekunden lang angezeigt werden.
Ein Timer löst jede Millisekunde einen Interrupt aus. In dieser Routine wird eine Variable hochgezählt (im Normalfall bis 10) und dann wird das geprüft, ob das aktuelle Muster fertig ist (dies läuft über einen zweiten Zähler).
Damit die Geschwindigkeit geändert werden kann, wird die Stellung eines Potentiometers über einen ADC-Eingang gemessen und der erste Zähler zwischen 0 und 20 eingestellt.

Der Controller läuft mit internem Takt und 4x PLL auf 32 MHz.

3. Die Hardware

Um die LEDs nicht alle mit einem Vorwiderstand und dazu noch einzeln ansprechen zu müssen, wird hier ein LED-Treiber (MAX7221) verwendet, der per SPI-Bus programmiert werden kann (3 Leitungen) und 64 LEDs ansprechen kann. Man könnte sogar noch weitere dieser ICs hinterherschalten, um jeweils 64 weitere LEDs anzusteuern.
Wichtig ist der Widerstand R1. Der muss je nach verwendeten LEDs angepasst werden. Für 20mA, 2V LEDs werden 30 kΩ benötigt.
Alle vier externen Interrupts sind über Taster auslösbar. Pull-Up Widerstände sind mit eingeplant (R4-R7, bzw. SIP1).

Am MCLR-Pin hängen ein Reset-Taster, sowie ein Pull-Up Widerstand.

Als Letztes habe ich noch einen ICSP-Anschluss mit eingeplant, um den Controller auch innerhalb der Schaltung programmieren zu können. Dazu waren noch Schutz-Dioden nötig, damit die Programmierspannung nicht über die Reset-Schaltung die restliche Schaltung zerstören kann, bzw. die Betriebsspannung des ICSP-Anschlusses nicht in den Spannungsregler gelangt.

Als Spannungsversorgung wird eine 9 Volt-Batterie verwendet mit einem Spannungsregler, der die 5 Volt Betriebsspannung erzeugt.

Der Schaltplan


Klicken zum vergrößern...

Lochrasterlayout


Klicken zum vergrößern...

Klicken zum vergrößern...
Mit ICs

Klicken zum vergrößern...

Wichtig ist die Beschaltung der LEDs (es werden jeweils 8 Kathoden (MINUS) an die Pins DIG0 bis DIG7 des MAX7221 gehängt. Die Anoden (PLUS) werden an die Pins DP, A - G angeschlossen, sodass die gewünschte Matrix entsteht (siehe Schaltplan).
Da das Erklären in 3D etwas schwierig ist, habe ich noch mein 3D-Programm angeschmissen zwinkern. Zunächst müssen jeweils 8 LEDs in zwei Reihen an den Kathoden zusammengelötet werden und ein horizontaler Draht nach außen geführt werden:

Klicken zum vergrößern...


Von diesen "LED-Zeilen" benötigen wir acht Stück. Vier davon werden für die vordere Schicht mit vertikalen Drähten verlötet:

Klicken zum vergrößern...


Diese Schicht muss nun noch einmal gebaut werden und hinter die erste gesetzt werden. Schon hat man die komplette 4x4x4-LED-Matrix:

Klicken zum vergrößern...


Das ganze muss nun an die Schaltung angeschlossen werden:
Seite:Unten:

Klicken zum vergrößern...

Klicken zum vergrößern...

4. Stückliste

Hauptplatine
Symbol(e)AnzahlBeschreibungReichelt-
Bestellnummer
--Draht (z.B. Silberlackdraht)SILBER 0,6MM
-1Stiftleiste, 2-fachSL 1X36G 2,54 (sind 36 Pins)
-2Sockelleiste, 2-fachSPL 64 (sind 64 Buchsen)
-3Sockelleiste, 4-fach"
-1Sockelleiste, 5-fach"
-2Sockelleiste, 9-fach"
-2Sockelleiste, 12-fach"
-64LED, 2, 20 mALED 3MM RT
C1,C2,C5,C64Keramik-Kondensator, 100 nFKERKO 100N
C3,C42Elektrolyt-Kondensator, 470 µFRAD 470/16
D1,D22Universal-Diode, 1N40011N 4001
D31LED, rot, low current (2 mA)LED 3MM 2MA RT
IC11PIC18F1330, DIL18---
IC21MAX7221, DIL24MAX 7221 CNG
R01Widerstand, 1.5 kΩ1/4W 1,5K
R11Widerstand, 33 kΩ, 1 W1W 33K
R21Widerstand, 10 kΩ1/4W 10K
R31Potentiometer, 10 kΩP4M-LIN 10K
R4-R7 (SIP1)2R-Netzwerk 4+1, 10 kΩSIL 5-4 10K
SW11Kippschalter, 1x EinMS 165
T1-T44TasterTASTER 9303
U11Spannungsregler positiv, 7805µA 7805

5. Die Software

Die Software wurde komplett in C geschrieben und ist sehr ausführlich kommentiert. Deshalb spare ich mir zunächst eine genaue Beschreibung an dieser Stelle (wird aber noch kommen zwinkern).

Um schnell eigene Animationen zu erzeugen zu können habe ich einen "Pattern-Generator" geschrieben:

Klicken zum vergrößern...

Die Bedienung sollte selbsterklärend sein...

Als Compiler wurde CCS von Custom Computer Services verwendet. Da ich davon hellauf begeistert bin, kann ich ihn nur jedem (vor allem Anfängern) wärmstens empfehlen...

Das .zip-Archiv enthält folgende Dateien:
  • Sämtliche Bilder (Schaltplan, etc.)
  • Gesamter Quellcode (um eigene Lichtspiele programmieren zu können)
  • .rst-Datei für das Programm Lochmaster (zum Designen von Lochraster-Layouts)
  • .dsn-Datei für das Programm Proteus ISIS (zum Simulieren von Schaltungen, inkl. Mikrocontroller-Emulator)


Changelog

Version 1.0 alpha Kondensatoren C4, C5 und C6 hinzugefügt Diode D1 anders verschaltet Version 0.9 alpha Erste Veröffentlichung

Download(s)


Keine Downloads für dieses Projekt vorhanden.

Kommentare

Ein/Ausblenden
©2006-2010 Chris Kröger • visit Noble-Crow

Valid XHTML 1.0 Transitional, Valid CSS 2.0, Valid RSS 2.0 Featuring Smarty Featuring GeSHi PageRank