Projekt 43: LED-Würfel 2.0: Unterschied zwischen den Versionen
Zeile 316: | Zeile 316: | ||
Der aktuelle Schaltplan ist hier hinterlegt: | Der aktuelle Schaltplan ist hier hinterlegt: | ||
== Software == | |||
=== Grundlagen Programmierung === | |||
==== Grundlegende Einstellungen Atmel Studio 6.2 ==== | |||
==== Mikrocontroller ATmega32 - Einstellungen ==== | |||
==== Mikrocontroller ATmega32 - Pins setzen ==== | |||
==== Mikrocontroller ATmega32 flashen ==== | |||
==== Schieberegister ==== | |||
=== C-Programm LED-Würfel === | |||
==== Gewählte Einstellungen ATmega32 ==== | |||
==== main-Funktion ==== | |||
==== Funktionen ==== | |||
===== Funktion "LEDan" ===== | |||
===== Funktion "LEDan_Matlab" ===== | |||
===== Funktion "LEDaus" ===== | |||
===== Funktion "Ebenean" ===== | |||
===== Funktion "Ebeneaus" ===== | |||
===== Funktion "Test" ===== | |||
===== Funktion "LEDControlStateMachine" ===== | |||
===== Funktion "UART_init" ===== |
Version vom 31. Januar 2015, 15:26 Uhr
Autoren: Valentina Merkel, Julia Müller
Betreuer: Prof. Göbel
Aufgabe
Erstellen Sie eine Steuerungssoftware für den bestehenden LED-Würfel. Lesen Sie die Daten in einem geeigneten Format (erstellt in Matlab) ein und erzeugen Sie damit beliebige Lichtmuster.
Erwartungen an Ihre Projektlösung
- Darstellung der Theorie
- Entwurf einer Steuerung.
- Recherche zu bestehenden Lösungen
- Programmierung in Matlab und C
- Erstellung eines Benutzerleitfadens für die Anwendung der Software
- Test und wiss. Dokumentation
- Live Vorführung während der Abschlusspräsentation
Schwierigkeitsgrad
Anspruchsvoll (***)
→ zurück zum Hauptartikel: Angewandte Elektrotechnik (WS 14/15)
Einleitung
Ein LED-Würfel (engl.: LED-Cube) ist aktuell ein beliebtes Projekt. Dieses Projekt wurde bereits öfters realisiert und so findet man im Internet auch einige Beispiele für LED-Würfel. Die Komplexität des LED-Würfels kann dabei stark variieren. Sie hängt hauptsächlich von der Anzahl der LEDs und der Wahl der LED (einfarbig oder RGB) ab. Ein Beispiel für ein sehr komplexen LED-Würfel ist in dem Bild Beispiel für ein LED-Würfel zu sehen.
Ziel aller LED-Würfel ist es dreidimensionale Symbole, Figuren und Texte. Dies sollen sich dann im dreidimensionalen LED-Würfel bewegen, d.h. durchlaufen oder drehen. Durch die Komplexität der Muster und Bewegungen wird die Komplexität des Projektes weiter beeinflusst. Für die Realisierung eines LED-Würfels benötigt man Erfahrungen, bzw. Interesse im Bereich Elektrotechnik und Informatik. Die elektrotechnische Komponente befasst sich mit dem Aufbau des LED-Würfels und der Realisierung der Steuerungsschaltung. Man muss sich Gedanken darüber machen, wie die LEDs miteinander verbunden werden und wie man sie anschließend elektrisch ansteuern will. Die elektrische Ansteuerung erfolgt dann über die Steuerungsschaltung. Diese muss programmiert werden, dies führt einen zu dem Bereich der Informatik. Man benötigt je nach gewähltem Mikrocontroller entsprechende Programmierkenntisse. Weiterer Faktor für die Komplexität ist somit die Wahl der Programmierung (Sprache, Oberfläche, etc.). Dieses Projekt lässt sich in der Komplexität durch viele Komponenten steuern. Es ist somit ein Projekt, das sowohl für Einsteiger als auch für Erfahrene geeignet ist. Jeder kann dieses Projekt so gestalten, dass es seinem Können entspricht.
Aufgabenstellung
In diesem Projekt ist die Komplexität bereits bestimmt. Der LED-Würfel ist bereits elektrotechnisch aufgebaut. Es handelt sich um einen LED-Würfel aus 512 einfarbigen LEDs. Herzstück der Steuerungsschaltung ist der Mikrocontroller ATmega32 von der Firma Atmel. Das Ziel dieses Projekts "LED-Würfel" 2.0 besteht darin eine Steuerungssoftware für den vorhandenen LED-Würfel zu erstellen, um beliebige Lichtmuster realisieren zu können. Die Muster sollen in die Software MATLAB der Firma The MathWorks generiert und an den Mikrocontroller übergeben werden. Der Mikrocontroller soll die empfangenen Befehle interpretieren können und die entsprechenden Muster mittels der LEDs erzeugen.
Benötigte Komponenten
Die Hauptkomponente ist der LED-Würfel. Er besteht aus einem Gehäuse, in dem die Platine mit der benötigten Hardware verbaut ist, und dem eigentlichen LED-Würfel, der aus 512 grünen Leuchtdioden aufgebaut ist (siehe Bild Unser LED-Würfel). Der LED-Würfel besteht aus einer Matrix von 8 x 8 x 8 grünen 3mm-Leuchtdioden. Es besitzt somit 8 Ebenen und eine Ebene besteht aus 64 LEDs. Diese lassen sich unabhängig voneinander steuern. Der LED-Würfel ist auf dem Gehäuse der Schaltung aufgebaut worden. Das Gehäuse besteht aus vier Holzplatten mit einer Dicke von 1,5 cm, die mit weißer Klebefolie überzogen wurden. Die Maße betragen 30 cm x 13 cm x 30 cm (B x H x T). Das Gehäuse für die Schaltung dient somit gleichzeitig als Sockel für den Würfel. Die Kabel des LED-Würfels werden direkt ins Gehäuse geführt und mit der Schaltung verkabelt. Weitere benötigte Komponenten sind ein Computer mit der Software Atmel-Studio 6.2 zur Programmierung des Mikrocontrollers und der Software Matlab zur Generierung der Muster. Das Programm für den Mikrocontroller muss auf den Mikrocontroller geflasht werden. Daher wird zusätzlich ein Flash-Gerät benötigt. Die Kommunikation von Matlab zum Mikrocontroller muss noch festgelegt werden, dafür wird dann eine zusätzliche Kommunikationsschnittstelle aufgebaut werden müssen.
Vorgehensweise
Zu Beginn wird die Funktionsweise des LED-Würfels analysiert. Hierzu werden der Aufbau des Würfels, d.h. die Schaltung,die verwendete Hardware und das vorhandene Beispielprogramm näher betrachtet. Es folgt die Planung des weiteren Vorgehens und die Beschreibung des angestrebten Lösungsweges. Auf Basis des Lösungskonzeptes wird eine Steuerung entworfen, wobei bestehende Lösungen analysiert und eingebunden werden. Die Programmierung erfolgt dabei in Atmel-Studio 6.2 und Matlab. Nach der erfolgreichen Programmierung wird ein Benutzerleitfaden für die Anwendung der Software erstellt. Anschließend wird die Vorgehensweise zur Ansteuerung des LED-Würfels dokumentiert und das Ergebnis im Rahmen der Abschlusspräsentation vorgeführt.
Aufbau
Dieser Abschnitt beschreibt den vorgefundenen Aufbau der gesamten Hardware und wie das Funktionsprinzip der Schaltung konzipiert wurde. Die Informationen über den Aufbau des LED-Würfels stammen aus der Dokumentation der Vorgängergruppe. Die Beschreibung der Hardware und des Schaltungsaufbaus sind notwendig, um den Würfel korrekt programmieren zu können.
Der LED-Würfel
Der LED-Würfel besteht wie bereits erwähnt aus 512 grünen LEDs, die um eine dreidimensionale Matrix zu erhalten miteinander verbunden werden mussten. Jede LED besitzt zwei Beinchen, eine Anode und eine Kathode. Die erste grundlegende Entscheidung, die die Vorgängergruppe getroffen hat, war zu bestimmen, wo die Anode, bzw. die Kathode anschlossen werden. Sie entschieden sich dazu alle Kathoden einer Ebene miteinander zu verbinden. Um nun jede LED einer Ebene einzeln ansteuern zu können, darf zwischen den Anoden keine Verbindung entstehen. Es gibt daher 64 Anodenanschlüsse. Um nun nicht jede Anode einzeln anschließen zu müssen, wurden die 8 übereinanderliegenden LEDs zu einer Reihe zusammengefasst. Die 512 Leuchtdioden unterteilen sich somit in acht Kathoden-Ebenen und 64 Anoden-Reihen. Zur Verdeutlichung siehe Bild Kathodenebenen und Anodenreihen. Durch dieses Konzept ist es nun möglich jede LED einzeln anzusteuern. Man muss für die entsprechende LED dann die passende Anodenreihe bestromen und die Kathodenebene auf Ground setzen. Wie dies schaltungstechnisch geregelt wird, wird im Anschnitt Projekt 43: LED-Würfel 2.0#Die Platine.
Der Aufbau der Ebenen wurde wie folgt realisiert. Zunächst wurde das Kathoden-Beinchen, wie in Bild Vorbereitung einer LED zu sehen, um 90° abgewinkelt. Grundsätzlich sollte man sich überlegen die Dichte der LED’s, d.h. die Anzahl der LED’s in einem LED-Würfel, auf die Größe des Würfels abzustimmen. Daraus ergibt sich ein bestimmter Abstand zwischen den LED’s, der eine günstige Darstellung der 3D-Muster ermöglicht. Wird der Abstand zu klein gewählt, werden die hinteren Lichtquellen nicht wahrgenommen. Andererseits wird bei zu großem Abstand die Darstellung zu sehr gedehnt und kann somit schwierig als ein Muster erkannt werden. Bei dem vorliegenden Projekt wurde eine Schablone aus Holz angefertigt, sodass die LED’s sowohl in der Ebene als auch in der Höhe in gleichmäßigem Abstand zueinander angeordnet werden konnten. Die Schablone wurde mit 64 Sacklochbohrungen (Durchmesser: 3,2 mm) versehen, wobei die Länge der Kathoden, die etwa 23 mm beträgt, den Abstand zwischen den Bohrlöchern und damit auch zwischen den einzelnen Leuchtdioden, vorgegeben hat (Bild Schablone für LED-Ebene).
Die LED’s wurden mit dem Kopf in die Löcher gesteckt und jeweils an der Kathode miteinander verlötet. Beim Verlöten der Kathoden entstehen acht Reihen. Um den Kontakt zwischen den acht Reihen herzustellen, wurde ein Silberdraht mit dem Durchmesser von 8 mm an drei Stellen der Ebene angebracht. Dieser Draht trägt zusätzlich zur Stabilität der Konstruktion bei. Eine Ebene sieht dabei wie auf Bild eine verlötete Ebene zu sehen aus. Dieser Vorgang wurde für alle acht Ebenen wiederholt. Im Anschluss wurden die Anoden der Leuchtdioden miteinander verlötet. Es wurde eine Schicht nach der anderen auf den Würfel aufgesetzt und die 64 Anoden jeweils mit der Reihe verbunden. Das Bild fertiger LED-Würfel zeigt den vollständig aufgebauten Würfel.
Die Platine
Das Herzstück der Platine ist der 8-Bit-Mikrocontroller der Firma Atmel (ATMEGA 32-16 DIP). Über den Mikrocontroller werden die 8 Kathodenebenen und 64 Anodenreihen gesteuert. Der Mikrocontroller verfügt über 40 Pins. Es ist somit nicht möglich gewesen, alle Ebenen und Reihen direkt an den Mikrocontroller anzuschließen. Die Anschlüsse der Ebenen und der Reihen werden durch das Gehäuse zur Platine geführt.
Die 8 Kathodenebenen sollen die Verbindung zu Ground realisieren, um den Stromkreis zu schließen und die LED zum Leuchten zu bringen. Die 8 Ebenen können nicht direkt mit Ground verbunden werden, da ansonsten bei Bestromen einer LED-Reihe die ganze Reihe leuchten würde. Es muss somit geregelt werden, das man die Verbindungen der Ebenen zu Ground einzeln schließen oder öffnen kann. Dies wird durch acht MOSFETs (IRF 630) realisiert. Bei den MOSFETS handelt es sich um N-Kanal, normal sperrende MOSFETs (siehe Bild Schaltzeichen N-Kanal MOSFET, normal sperrend ), d.h. im Ausgangszustand ist keine Verbindung / kein Stromfluss zwischen Drain und Source. An Drain wird jeweils das Kabel der Ebene angeschlossen und Source wird auf Ground gelegt. An 8 Pins (PD0 - PD7) des Mikrocontrollers werden die jeweilige Steuerleitung, d.h. das Gate, des MOSFETs gelegt. Liegt an dem jeweiligen Pin, also am Gate, eine 1 an, so wird ein Stromfluss von Drain nach Source freigegeben. Der Stromkreis wird geschlossen und die LED kann leuchten.
Die 64 Kabel der Reihen werden über acht Schieberegister (74HC 595) mit dem Mikrocontroller verbunden. Das Schaltbild eines Schieberegisters sieht wie in Abbildung Schaltbild Schieberegister dargestellt aus. Die Ansteuerung der Schieberegister erfolgt über den Mikrocontroller. Die Ausgänge QA bis QH sind mit den Kabeln der Reihen verbunden. Jeweils 8 Reihen hängen somit an einem Schieberegister. Ein Schieberegister bildet somit eine Spalte der Matrix ab. Jedes Schieberegister besitzt 5 Eingangspins, einen Seriellen Eingang (SER, Pin 14), einen Schiebetakt (SCK, Pin 11), ein Reset für das Schieberegister (SCL, Pin 10), einen Speichertakt (RCK, Pin 12) und eine Ausgangssteuerung (G, Pin 13). Die Schiebetakte der 8 Schieberegister sind miteinander verbunden und auf den Pin 23 ((SDA)PC1) des Mikrocontrollers gelegt worden. Das Gleiche gilt für die Speichertakte. Sie liegen auf Pin 24 ((TCK)PC2) des Mikrocontrollers. Der Reset wurde auf die 5V-Versorgung gelegt und kann somit nicht ausgelöst werden. Die Ausgangssteuerung G ist auf Ground gelegt. Dies bedeutet, das an den Ausgängen der entsprechend über den seriellen Dateneingang eingegebene Pegel anliegt. Die Eingangspegel werden durch den Mikrocontroller bestimmt. Die seriellen Dateneingänge liegen nicht auf demselben Pin und sind nicht miteinander verbunden. Jeder serielle Dateneingang liegt an einem Pin des Mikrocontrollers. Details zur Pinbelegung sind unter Projekt 43: LED-Würfel 2.0#Pinbelegung des Mikrocontrollers zu finden. Die Funktionsweise eines Schieberegisters wird im Zusammenhang mit der Programmierung des Schieberegisters im Kapitel Projekt 43: LED-Würfel 2.0#Schieberegister. Des Weiteren sind an den Mikrocontroller ein externer Quarz zur Takterzeugung und eine ISP-Schnittstelle zum Flashen des Mikrocontrollers angeschlossen. Zu den wesentlichen Komponenten, die für die Ansteuerung der LEDs verantwortlich sind, kommen Vorwiderstände, Dioden und Kondensatoren, die zum Schutz der anderen Bauteile benötigt werden. Von uns wurde eine UART-Schnittstelle zur seriellen Kommunikation ergänzt. Die Datenleitungen mussten an die entsprechenden Pins des Mikrocontrollers angeschlossen werden. Da die Pins bereits durch zwei Ebenen belegt werden, mussten die Anschlüsse der Ebenen auf zwei andere Pins umgelegt werden. Die aktuelle Pinbelegung befindet sich unter Projekt 43: LED-Würfel 2.0#Pinbelegung des Mikrocontrollers .
Auflistung der Komponenten für die Platine
Eine detaillierte Auflistung aller Komponenten ist in den folgenden Tabellen enthalten.
Komponente | Bezeichnung/Größe | Datenblatt |
LED | LED 3mm ST GN | |
Silberdraht | Silber 0,8mm | |
ATMEGA32 | ATMEGA 32-16 DIP | |
N-MOSFET | IRF 630 | |
Kondensator | 22 pF | |
Tantal-Chip-Kondensator | 10uF | |
Kondensator | 1nF | |
Vorwiderstände | 150 Ohm | |
Spannungsregler, Low Drop, TO-220 | LM 1085 IT5,0 | |
8-Bit Schieberegister | 74HC 595 | |
IC-Sockel 20-polig | GS 20 | |
IC-Sockel 40-polig | GS 40 | |
Treiber/Empfänger | MAX 232 CPE | |
Standardquarz | 14,7456-HC49U-S | |
Rippen-Kühlkörper | V 4330N |
Pinbelegung des Mikrocontrollers
Die Pins des Mikrocontrollers sind jeweils für bestimmt Aufgaben bestimmt. Die Bestimmung findet sich in der Bezeichnung wieder. Bei mehreren Pins liegt eine Doppelbelegung für mehrere Funktionen vor. Außerdem kann man die Pins zwischen Eingang und Ausgang umschalten. Die Konfiguration der Pins erfolgt über die Software, die auf den Mikrocontroller geflasht wird.
In der nachfolgenden Tabelle ist die aktuelle Pinbelegung des Mikrocontrollers dargestellt:
Pin | Pin-Bezeichnung | angeschlossen an |
1 | PB0 (XCK/T0) | frei |
2 | PB1 (T1) | frei |
3 | PB2 (INT2/AIN0) | Gain MOSFET für Ebene 2 |
4 | PB3 (OC0/AIN1) | Gain MOSFET für Ebene 1 |
5 | PB4 (SS) | frei |
6 | PB5 (MOSI) | ISP-Schnittstelle zum Flashen |
7 | PB6 (MISO) | ISP-Schnittstelle zum Flashen |
8 | PB7 (SCK) | ISP-Schnittstelle zum Flashen |
9 | RESET | +5V Versorgung, d.h. kein Reset möglich |
10 | VCC | +5V Versorgung |
11 | GND | Ground |
12 | XTAL2 | externer Quarz |
13 | XTAL1 | externer Quarz |
14 | PD0 (RXD) | UART-Schnittstelle für Kommunikation |
15 | PD1 (TXD) | UART-Schnittstelle für Kommunikation |
16 | PD2 (INT0) | Gain MOSFET für Ebene 3 |
17 | PD3 (INT1) | Gain MOSFET für Ebene 4 |
18 | PD4 (OC1B) | Gain MOSFET für Ebene 5 |
19 | PD5 (OC1A) | Gain MOSFET für Ebene 6 |
20 | PD6 (ICP1) | Gain MOSFET für Ebene 7 |
21 | PD7 (OC2) | Gain MOSFET für Ebene 8 |
22 | PC0 (SCL) | frei |
23 | PC1 (SDA) | Schiebetakt SCK aller Schieberegister |
24 | PC2 (TCK) | Speichertakt RCK aller Schieberegister |
25 | PC3 (TMS) | frei |
26 | PC4 (TDO) | frei |
27 | PC5 (TDI) | frei |
28 | PC6 (TOSC1) | frei |
29 | PC7 (TOSC2) | frei |
30 | AVCC | +5V-Versorgung |
31 | GND | Ground |
32 | AREF | frei |
33 | PA7 (ADC7) | Serieller Dateneingang Schieberegister 8 für LED 57 - 64 |
34 | PA6 (ADC6) | Serieller Dateneingang Schieberegister 7 für LED 49 - 56 |
35 | PA5 (ADC5) | Serieller Dateneingang Schieberegister 6 für LED 41 - 48 |
36 | PA4 (ADC4) | Serieller Dateneingang Schieberegister 5 für LED 33 - 40 |
37 | PA3 (ADC3) | Serieller Dateneingang Schieberegister 4 für LED 25 - 32 |
38 | PA2 (ADC2) | Serieller Dateneingang Schieberegister 3 für LED 17 - 24 |
39 | PA1 (ADC1) | Serieller Dateneingang Schieberegister 2 für LED 9 - 16 |
40 | PA0 (ADC0) | Serieller Dateneingang Schieberegister 1 für LED 1 - 8 |
Schaltplan
Der aktuelle Schaltplan ist hier hinterlegt: