<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fornax</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fornax"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Fornax"/>
	<updated>2026-04-10T21:41:31Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Rotor_scheme.png&amp;diff=63366</id>
		<title>Datei:Rotor scheme.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Rotor_scheme.png&amp;diff=63366"/>
		<updated>2012-01-19T18:44:23Z</updated>

		<summary type="html">&lt;p&gt;Fornax: hat eine neue Version von „Datei:Rotor scheme.png“ hochgeladen:&amp;amp;#32;LED Polaritaet war verdreht, fix.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:POV-Display&amp;diff=62537</id>
		<title>Diskussion:POV-Display</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:POV-Display&amp;diff=62537"/>
		<updated>2011-12-18T14:39:57Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Abk. POV für den engl. Begriff Persistence of vision bzw. Nachbildwirkung&lt;br /&gt;
http://de.wikipedia.org/wiki/Nachbildwirkung&lt;br /&gt;
&amp;lt;br&amp;gt;[[Benutzer:Stefan|Stefan]] 14:31, 18. Dez. 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Klingt sinnvoll, habs ergänzt. [[Benutzer:Fornax|Fornax]] 15:39, 18. Dez. 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62536</id>
		<title>POV-Display</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62536"/>
		<updated>2011-12-18T14:33:54Z</updated>

		<summary type="html">&lt;p&gt;Fornax: +wikipedia link zu Nachbildwirkung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel wird die Realisierung eines POV-Displays (persistence of vision, siehe http://de.wikipedia.org/wiki/Nachbildwirkung) beschrieben.&lt;br /&gt;
Der besondere Effekt eines solchen Displays liegt darin, dass das Bild&lt;br /&gt;
erst durch die Trägheit des Auges entsteht. Bei Bauarten wie dieser&lt;br /&gt;
kann damit ein Bild mehr oder weniger schwebend in der Luft erzeugt werden.&lt;br /&gt;
Die Technik wird in verschiedensten Varianten eingesetzt, beispielhaft&lt;br /&gt;
wird hier ein Globus mit 40 RGB-[[LED]]s gezeigt.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll vor allem Anregungungen zum Aufbau, zu speziellen &lt;br /&gt;
Details und Bauteilen bieten wie auch als Codegrundlage dienen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:globe_11_1024.jpg|right|300px]]&lt;br /&gt;
&lt;br /&gt;
Demoanwendung mit einigen Animationen:&lt;br /&gt;
http://youtu.be/ziD_1fVdDWQ&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 40 RGB LEDs, Bildfläche 80x40 Pixel mit 7 Farben (+ echtem Alphachannel)&lt;br /&gt;
* Globus mit 20cm Durchmesser&lt;br /&gt;
* ATMega644&lt;br /&gt;
* selbstregelnde Refresh-Rate über optischen Sensor&lt;br /&gt;
* ca. 1/2 ASCII-Text Support&lt;br /&gt;
* Bildkonverter&lt;br /&gt;
&lt;br /&gt;
== Mechanische Konstruktion ==&lt;br /&gt;
Es gibt neben dem hier beschriebenen Rotor auch noch weitere Techniken wie &lt;br /&gt;
geschlitzte Abdeckungen.&lt;br /&gt;
=== Rotor ===&lt;br /&gt;
[[Bild:globe_04_1024.jpg|thumb|right|Trägerkonstruktion aus Alu]]&lt;br /&gt;
Grundsätzlich sind 3 Arten von Rotoren typisch: flach, zylindrisch und kugelförmig.&lt;br /&gt;
Zylindrische und flache Rotoren sind recht simpel zu bauen, wobei bei letzterem natürlich&lt;br /&gt;
noch der Softwareaufwand für die Umrechnung kartesisch-&amp;gt;polar hinzukommt.&lt;br /&gt;
Kugelförmige Rotoren haben das Problem, dass es unter einer gewissen Groesse kaum möglich&lt;br /&gt;
ist, Treiber und LEDs auf eine Platine zu setzen. Mein Rotor war mit d=20cm dafür zu klein, &lt;br /&gt;
deshalb kommt hier eine etwas wüste, fliegende Konstruktion zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Bei allen Rotoren ist natürlich auf eine mechanisch stabile Auslegung zu achten, besonders&lt;br /&gt;
bei größeren Durchmessern. Ein Rotor mit einem Durchmesser von 50cm hätte bei 25Hz bereits &lt;br /&gt;
eine Zentrifugalbeschleunigung von über 628g im Rand!&lt;br /&gt;
Dementsprechend wichtig ist auch das genaue Auswuchten des fertigen Rotors.&lt;br /&gt;
&lt;br /&gt;
=== Antrieb ===&lt;br /&gt;
[[Bild:globe_12_1024.jpg|thumb|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Am besten würde sich natürlich ein Antrieb eignen, der seine Drehzahl sehr genau&lt;br /&gt;
halten kann, was aber zumindest eine entsprechende Regelstrecke voraussetzt. &lt;br /&gt;
&lt;br /&gt;
Als einfache Alternative habe ich deshalb einen Speed 700BB 12V verwendet, der&lt;br /&gt;
für meinen Rotor ausreicht wenn er aktiv gekühlt wird.&lt;br /&gt;
Ein guter Richtwert für die Drehzahl sind etwa 20-25Hz.&lt;br /&gt;
Die statische Steuerung erfolgt über eine unspektakuläre [[PWM]] aus einem ATTiny45&lt;br /&gt;
und grossem [[FET]]. Da die Drehzahl bei dieser Methode nicht konstant ist,&lt;br /&gt;
wird eine Regelung der Bildwiederholrate notwendig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
[[Bild:globe_13_1024.jpg|thumb|right|Simpler Schleifkontakt]]&lt;br /&gt;
Die Stromversorgung des Rotors lässt sich am einfachsten über Schleifkontakte&lt;br /&gt;
bewerkstelligen. Wenn man auf eine Spannungsregelung auf der Controllerplatine&lt;br /&gt;
verzichten will muss die Spannung dort unbedingt gut gepuffert werden. Dazu mehr&lt;br /&gt;
im entsprechenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
Ich habe 2 Schleifringe aus Messingrohr mit Epoxy aufgeklebt, gross genug&lt;br /&gt;
um darunter das Kabel des darunterliegenden Schleifrings verlegen zu können.&lt;br /&gt;
Die schwarze Kunststoffplatte drückt die 2 Schleifkontakte dagegen.&lt;br /&gt;
Man könnte natürlich kleinere Ringe nehmen und das 2. Kabel im Trägerrohr&lt;br /&gt;
verlegen.&lt;br /&gt;
&lt;br /&gt;
Eine verschleiß- und geräuschfreie Alternative wären Induktionsspulen.&lt;br /&gt;
&lt;br /&gt;
Als Stromquelle dient die 5V Schiene eines Computernetzteils.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
Das Gehäuse ist bei mir reines Mittel zum Zweck (wie man vermutlich sieht).&lt;br /&gt;
Ich habe dicke Spanplatten verbaut, um es verwindungssteif und gleichzeitig&lt;br /&gt;
schwer zu machen, da ein 100%iges Auswuchten fast unmoeglich ist.&lt;br /&gt;
&lt;br /&gt;
== LEDs und Treiber ==&lt;br /&gt;
[[Bild:globe_06_1024.jpg|thumb|right|aussen LEDs, innen Schieberegister]]&lt;br /&gt;
Als LEDs kamen die verbreiteten RGB-LEDs der Bauform 5050 zum Einsatz, die sich&lt;br /&gt;
sehr gut in den Punkten Helligkeit, Abstrahlwinkel, Farbmischung und&lt;br /&gt;
Ansteuerbarkeit (keine gemeinsame Anode/Kathode) eignen.&lt;br /&gt;
&lt;br /&gt;
Um die LEDs gleichmäßig aufzukleben habe ich einen Papierstreifen zugeschnitten,&lt;br /&gt;
mit Bleistift Markierungen gesetzt und diesen mit Sekundenkleber (getränkt) auf&lt;br /&gt;
den Ring aufgeklebt. Die LEDs wurden dann mit etwas Epoxy darauf geklebt.&lt;br /&gt;
&lt;br /&gt;
Getrieben wird alles mit 15 Schieberegistern 74HC595, diese sind pro Farbe&lt;br /&gt;
auf jeweils 5 in Serie aufgeteilt. Siehe dazu den -&amp;gt; Schaltplan für eine &lt;br /&gt;
&amp;quot;Stufe&amp;quot; aus 8 LEDs, dort sind auch die entsprechenden Ausgangspins am &lt;br /&gt;
Atmel angegeben.&lt;br /&gt;
Da die Schieberegister auf Vcc und GND nur 70mA aushalten, habe ich den auch&lt;br /&gt;
schon im [[AVR-Tutorial: Schieberegister]] Trick angewendet und jeweils&lt;br /&gt;
4 LEDs mit Anoden links und 4 mit Kathoden links abgewechselt.&lt;br /&gt;
&lt;br /&gt;
Dadurch treten allerdings 3 Effekte auf: Zum einen liegen die einzelnen Chips&lt;br /&gt;
in den LEDs nicht mehr exakt auf einer Linie, was bei genauerer Betrachtung bzw. &lt;br /&gt;
ohne zusätzlichen Diffusor auffällt.&lt;br /&gt;
Zum anderen muss das jeweilige Vertauschen von Blau und Grün entweder in der&lt;br /&gt;
Verkabelung oder im Code (meine Methode) beachtet werden, genau wie die&lt;br /&gt;
Tatsache, dass dann je 4 LEDs active high und 4 active low sind.&lt;br /&gt;
[[Bild:rotor_scheme.png|thumb|right|Schaltplan LEDs+Register]]&lt;br /&gt;
Versorgungs- und Steuerleitungen habe ich im Trägerrohr verlegt.&lt;br /&gt;
Nach dem Funktionstest habe ich die fliegende Konstruktion noch mit einer&lt;br /&gt;
entsprechenden Menge Epoxy vergossen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Controllerplatine ==&lt;br /&gt;
[[Bild:povglobe_scheme.png|thumb|right|Schaltplan Controllerplatine]]&lt;br /&gt;
Die Controllerplatine befindet sich im Gehäuse und ist sehr simpel gehalten,&lt;br /&gt;
sie beinhaltet im wesentlichen den ATMega644 mit ISP-Header und Anschlüssen für die&lt;br /&gt;
Schieberegister, einer Pufferung für die Versorungsspannung und 2 OPAMP-Stufen,&lt;br /&gt;
die mit einer Fotodiode + Schmitt-Trigger den externen Interrupt aktivieren.&lt;br /&gt;
Die Pufferung ist wichtig, da die Schleifkontakte keine saubere Versorgung&lt;br /&gt;
gewährleisten können.&lt;br /&gt;
&lt;br /&gt;
Zu meiner Dektektorschaltung noch ein Hinweis: Am besten vorher am Breadboard&lt;br /&gt;
die Werte prüfen und danach auch am Controller testen ob die Triggerung auf &lt;br /&gt;
steigende oder fallende Flanke besser funktioniert. Ausserdem könnte man noch &lt;br /&gt;
einen kleinen Kondensator parallel zu R9 schalten (Tiefpass).&lt;br /&gt;
&lt;br /&gt;
Layout und der Bestückungsplan (von Kupferseite aus gesehen) finden sich im .tgz.&lt;br /&gt;
Auch die Platine sollte ausgewuchtet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Die Firmware für den [[AVR-GCC]] geschrieben worden.&lt;br /&gt;
Als Buffer für das aktuelle Bild dient das uint8_t globe[80][5][3] Array,&lt;br /&gt;
welches in x-Position (in Drehrichtung), Zeile und Farbindex unterteilt ist. &lt;br /&gt;
Das Byte repräsentiert die 8 vertikalen Bits einer Zeile, ähnlich wie bei einem &lt;br /&gt;
graphischen LCD.&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der Bildwiederholrate ===&lt;br /&gt;
Ich habe den 16bit-Timer-Overflow als Zeitgeber missbraucht, der im Sollfall&lt;br /&gt;
320x (80 x-Werte x4) so schnell auslöst wie die Rotordrehzahl. Die vierfache&lt;br /&gt;
Zählgeschwindigkeit dient dabei der Anpassung der Geschwindigkeit an die&lt;br /&gt;
tatsächliche Drehzahl.&lt;br /&gt;
Bei jedem 4. Timerüberlauf wird dann der entsprechende Längengrad auf die Register geschoben.&lt;br /&gt;
Die [[ISR]] ist natürlich sehr lang, dafür muss aber bei komplexeren Transformationen/Animationen &lt;br /&gt;
nicht auf Laufzeiten geachtet werden. Wichtig dabei: Alle anderen Operationen werden als nicht &lt;br /&gt;
zeitkritisch betrachtet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere ISR wird beim Auftreten des Detektorinterrupts ausgelöst. Diese setzt&lt;br /&gt;
Index und Zählerregister zurück und korrigiert die Wiederholrate anhand des&lt;br /&gt;
tatsächlich erreichten Index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bildkonverter ==&lt;br /&gt;
Um ganze Bilder, wie z.B. die Weltkarte einfach auf den Globus zu bekommen, habe ich&lt;br /&gt;
einen kleinen quick&amp;amp;dirty (!) Bildkonverter mit perl und perl-imagemagick geschrieben, der&lt;br /&gt;
direkt einen passenden Header (PROGMEM) generiert. Das Script befindet sich ebenfalls &lt;br /&gt;
im .tgz und sollte hoffentlich mit perl auch unter Windows funktionieren.&lt;br /&gt;
Ein Bild benötigt etwas über 1,2kB Flash. In der animations.c befindet sich die &lt;br /&gt;
passende Ladefunktion + Beispielaufruf.&lt;br /&gt;
&lt;br /&gt;
Es sei darauf hingewiesen, dass das Programm ungefragt die Zieldateien überschreibt!&lt;br /&gt;
Erwartet wird 80x40pix Bild, am besten als .bmp. &lt;br /&gt;
&lt;br /&gt;
Im Script oben können die Schwellenwerte für die Farben eingestellt werden &lt;br /&gt;
(0-1, Werte &amp;gt;1 blenden die Farbekomplett aus), dazu wird noch ein Bild generiert, um&lt;br /&gt;
diese Werte testen zu können, ohne es live auf dem Globus ausprobieren zu müssen.&lt;br /&gt;
&lt;br /&gt;
Aufruf: img2globe.pl image.bmp &amp;lt;Name des Arrays&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Zur Videoaufnahme: Es ist recht schwer richtige Lichtverhältnisse zu finden, da die Kamera ständig nachregeln will. Beste Erfahrungen habe ich mit sehr viel Licht gemacht. Ausserdem sollte dazu die Drehzahl etwas hochgefahren werden, um schwarze Balken zu vermeiden. &lt;br /&gt;
* Der Atmel ist mal wieder sehr an seiner Grenze. Würde ich nochmal einen Globe bauen, käme vermutlich ein Cortex-M3 rein.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/povglobe.php&lt;br /&gt;
* [http://www.leyanda.de/light/files/povglobe_v10.tgz Source, Schaltpläne, Layout etc.]&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Benutzer_Diskussion:Fornax&amp;diff=62534</id>
		<title>Benutzer Diskussion:Fornax</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Benutzer_Diskussion:Fornax&amp;diff=62534"/>
		<updated>2011-12-18T14:28:52Z</updated>

		<summary type="html">&lt;p&gt;Fornax: /* POV ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== POV ? ==&lt;br /&gt;
&lt;br /&gt;
Wofür steht denn &amp;quot;POV&amp;quot;? --[[Benutzer:Gjlayde|Gjlayde]] 14:24, 18. Dez. 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
persistence of vision, habs im Artikel gerade ergänzt. Danke für den Hinweis.&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62533</id>
		<title>POV-Display</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62533"/>
		<updated>2011-12-18T14:27:43Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel wird die Realisierung eines POV-Displays (persistence of vision) beschrieben.&lt;br /&gt;
Der besondere Effekt eines solchen Displays liegt darin, dass das Bild&lt;br /&gt;
erst durch die Trägheit des Auges entsteht. Bei Bauarten wie dieser&lt;br /&gt;
kann damit ein Bild mehr oder weniger schwebend in der Luft erzeugt werden.&lt;br /&gt;
Die Technik wird in verschiedensten Varianten eingesetzt, beispielhaft&lt;br /&gt;
wird hier ein Globus mit 40 RGB-[[LED]]s gezeigt.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll vor allem Anregungungen zum Aufbau, zu speziellen &lt;br /&gt;
Details und Bauteilen bieten wie auch als Codegrundlage dienen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:globe_11_1024.jpg|right|300px]]&lt;br /&gt;
&lt;br /&gt;
Demoanwendung mit einigen Animationen:&lt;br /&gt;
http://youtu.be/ziD_1fVdDWQ&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 40 RGB LEDs, Bildfläche 80x40 Pixel mit 7 Farben (+ echtem Alphachannel)&lt;br /&gt;
* Globus mit 20cm Durchmesser&lt;br /&gt;
* ATMega644&lt;br /&gt;
* selbstregelnde Refresh-Rate über optischen Sensor&lt;br /&gt;
* ca. 1/2 ASCII-Text Support&lt;br /&gt;
* Bildkonverter&lt;br /&gt;
&lt;br /&gt;
== Mechanische Konstruktion ==&lt;br /&gt;
Es gibt neben dem hier beschriebenen Rotor auch noch weitere Techniken wie &lt;br /&gt;
geschlitzte Abdeckungen.&lt;br /&gt;
=== Rotor ===&lt;br /&gt;
[[Bild:globe_04_1024.jpg|thumb|right|Trägerkonstruktion aus Alu]]&lt;br /&gt;
Grundsätzlich sind 3 Arten von Rotoren typisch: flach, zylindrisch und kugelförmig.&lt;br /&gt;
Zylindrische und flache Rotoren sind recht simpel zu bauen, wobei bei letzterem natürlich&lt;br /&gt;
noch der Softwareaufwand für die Umrechnung kartesisch-&amp;gt;polar hinzukommt.&lt;br /&gt;
Kugelförmige Rotoren haben das Problem, dass es unter einer gewissen Groesse kaum möglich&lt;br /&gt;
ist, Treiber und LEDs auf eine Platine zu setzen. Mein Rotor war mit d=20cm dafür zu klein, &lt;br /&gt;
deshalb kommt hier eine etwas wüste, fliegende Konstruktion zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Bei allen Rotoren ist natürlich auf eine mechanisch stabile Auslegung zu achten, besonders&lt;br /&gt;
bei größeren Durchmessern. Ein Rotor mit einem Durchmesser von 50cm hätte bei 25Hz bereits &lt;br /&gt;
eine Zentrifugalbeschleunigung von über 628g im Rand!&lt;br /&gt;
Dementsprechend wichtig ist auch das genaue Auswuchten des fertigen Rotors.&lt;br /&gt;
&lt;br /&gt;
=== Antrieb ===&lt;br /&gt;
[[Bild:globe_12_1024.jpg|thumb|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Am besten würde sich natürlich ein Antrieb eignen, der seine Drehzahl sehr genau&lt;br /&gt;
halten kann, was aber zumindest eine entsprechende Regelstrecke voraussetzt. &lt;br /&gt;
&lt;br /&gt;
Als einfache Alternative habe ich deshalb einen Speed 700BB 12V verwendet, der&lt;br /&gt;
für meinen Rotor ausreicht wenn er aktiv gekühlt wird.&lt;br /&gt;
Ein guter Richtwert für die Drehzahl sind etwa 20-25Hz.&lt;br /&gt;
Die statische Steuerung erfolgt über eine unspektakuläre [[PWM]] aus einem ATTiny45&lt;br /&gt;
und grossem [[FET]]. Da die Drehzahl bei dieser Methode nicht konstant ist,&lt;br /&gt;
wird eine Regelung der Bildwiederholrate notwendig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
[[Bild:globe_13_1024.jpg|thumb|right|Simpler Schleifkontakt]]&lt;br /&gt;
Die Stromversorgung des Rotors lässt sich am einfachsten über Schleifkontakte&lt;br /&gt;
bewerkstelligen. Wenn man auf eine Spannungsregelung auf der Controllerplatine&lt;br /&gt;
verzichten will muss die Spannung dort unbedingt gut gepuffert werden. Dazu mehr&lt;br /&gt;
im entsprechenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
Ich habe 2 Schleifringe aus Messingrohr mit Epoxy aufgeklebt, gross genug&lt;br /&gt;
um darunter das Kabel des darunterliegenden Schleifrings verlegen zu können.&lt;br /&gt;
Die schwarze Kunststoffplatte drückt die 2 Schleifkontakte dagegen.&lt;br /&gt;
Man könnte natürlich kleinere Ringe nehmen und das 2. Kabel im Trägerrohr&lt;br /&gt;
verlegen.&lt;br /&gt;
&lt;br /&gt;
Eine verschleiß- und geräuschfreie Alternative wären Induktionsspulen.&lt;br /&gt;
&lt;br /&gt;
Als Stromquelle dient die 5V Schiene eines Computernetzteils.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
Das Gehäuse ist bei mir reines Mittel zum Zweck (wie man vermutlich sieht).&lt;br /&gt;
Ich habe dicke Spanplatten verbaut, um es verwindungssteif und gleichzeitig&lt;br /&gt;
schwer zu machen, da ein 100%iges Auswuchten fast unmoeglich ist.&lt;br /&gt;
&lt;br /&gt;
== LEDs und Treiber ==&lt;br /&gt;
[[Bild:globe_06_1024.jpg|thumb|right|aussen LEDs, innen Schieberegister]]&lt;br /&gt;
Als LEDs kamen die verbreiteten RGB-LEDs der Bauform 5050 zum Einsatz, die sich&lt;br /&gt;
sehr gut in den Punkten Helligkeit, Abstrahlwinkel, Farbmischung und&lt;br /&gt;
Ansteuerbarkeit (keine gemeinsame Anode/Kathode) eignen.&lt;br /&gt;
&lt;br /&gt;
Um die LEDs gleichmäßig aufzukleben habe ich einen Papierstreifen zugeschnitten,&lt;br /&gt;
mit Bleistift Markierungen gesetzt und diesen mit Sekundenkleber (getränkt) auf&lt;br /&gt;
den Ring aufgeklebt. Die LEDs wurden dann mit etwas Epoxy darauf geklebt.&lt;br /&gt;
&lt;br /&gt;
Getrieben wird alles mit 15 Schieberegistern 74HC595, diese sind pro Farbe&lt;br /&gt;
auf jeweils 5 in Serie aufgeteilt. Siehe dazu den -&amp;gt; Schaltplan für eine &lt;br /&gt;
&amp;quot;Stufe&amp;quot; aus 8 LEDs, dort sind auch die entsprechenden Ausgangspins am &lt;br /&gt;
Atmel angegeben.&lt;br /&gt;
Da die Schieberegister auf Vcc und GND nur 70mA aushalten, habe ich den auch&lt;br /&gt;
schon im [[AVR-Tutorial: Schieberegister]] Trick angewendet und jeweils&lt;br /&gt;
4 LEDs mit Anoden links und 4 mit Kathoden links abgewechselt.&lt;br /&gt;
&lt;br /&gt;
Dadurch treten allerdings 3 Effekte auf: Zum einen liegen die einzelnen Chips&lt;br /&gt;
in den LEDs nicht mehr exakt auf einer Linie, was bei genauerer Betrachtung bzw. &lt;br /&gt;
ohne zusätzlichen Diffusor auffällt.&lt;br /&gt;
Zum anderen muss das jeweilige Vertauschen von Blau und Grün entweder in der&lt;br /&gt;
Verkabelung oder im Code (meine Methode) beachtet werden, genau wie die&lt;br /&gt;
Tatsache, dass dann je 4 LEDs active high und 4 active low sind.&lt;br /&gt;
[[Bild:rotor_scheme.png|thumb|right|Schaltplan LEDs+Register]]&lt;br /&gt;
Versorgungs- und Steuerleitungen habe ich im Trägerrohr verlegt.&lt;br /&gt;
Nach dem Funktionstest habe ich die fliegende Konstruktion noch mit einer&lt;br /&gt;
entsprechenden Menge Epoxy vergossen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Controllerplatine ==&lt;br /&gt;
[[Bild:povglobe_scheme.png|thumb|right|Schaltplan Controllerplatine]]&lt;br /&gt;
Die Controllerplatine befindet sich im Gehäuse und ist sehr simpel gehalten,&lt;br /&gt;
sie beinhaltet im wesentlichen den ATMega644 mit ISP-Header und Anschlüssen für die&lt;br /&gt;
Schieberegister, einer Pufferung für die Versorungsspannung und 2 OPAMP-Stufen,&lt;br /&gt;
die mit einer Fotodiode + Schmitt-Trigger den externen Interrupt aktivieren.&lt;br /&gt;
Die Pufferung ist wichtig, da die Schleifkontakte keine saubere Versorgung&lt;br /&gt;
gewährleisten können.&lt;br /&gt;
&lt;br /&gt;
Zu meiner Dektektorschaltung noch ein Hinweis: Am besten vorher am Breadboard&lt;br /&gt;
die Werte prüfen und danach auch am Controller testen ob die Triggerung auf &lt;br /&gt;
steigende oder fallende Flanke besser funktioniert. Ausserdem könnte man noch &lt;br /&gt;
einen kleinen Kondensator parallel zu R9 schalten (Tiefpass).&lt;br /&gt;
&lt;br /&gt;
Layout und der Bestückungsplan (von Kupferseite aus gesehen) finden sich im .tgz.&lt;br /&gt;
Auch die Platine sollte ausgewuchtet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Die Firmware für den [[AVR-GCC]] geschrieben worden.&lt;br /&gt;
Als Buffer für das aktuelle Bild dient das uint8_t globe[80][5][3] Array,&lt;br /&gt;
welches in x-Position (in Drehrichtung), Zeile und Farbindex unterteilt ist. &lt;br /&gt;
Das Byte repräsentiert die 8 vertikalen Bits einer Zeile, ähnlich wie bei einem &lt;br /&gt;
graphischen LCD.&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der Bildwiederholrate ===&lt;br /&gt;
Ich habe den 16bit-Timer-Overflow als Zeitgeber missbraucht, der im Sollfall&lt;br /&gt;
320x (80 x-Werte x4) so schnell auslöst wie die Rotordrehzahl. Die vierfache&lt;br /&gt;
Zählgeschwindigkeit dient dabei der Anpassung der Geschwindigkeit an die&lt;br /&gt;
tatsächliche Drehzahl.&lt;br /&gt;
Bei jedem 4. Timerüberlauf wird dann der entsprechende Längengrad auf die Register geschoben.&lt;br /&gt;
Die [[ISR]] ist natürlich sehr lang, dafür muss aber bei komplexeren Transformationen/Animationen &lt;br /&gt;
nicht auf Laufzeiten geachtet werden. Wichtig dabei: Alle anderen Operationen werden als nicht &lt;br /&gt;
zeitkritisch betrachtet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere ISR wird beim Auftreten des Detektorinterrupts ausgelöst. Diese setzt&lt;br /&gt;
Index und Zählerregister zurück und korrigiert die Wiederholrate anhand des&lt;br /&gt;
tatsächlich erreichten Index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bildkonverter ==&lt;br /&gt;
Um ganze Bilder, wie z.B. die Weltkarte einfach auf den Globus zu bekommen, habe ich&lt;br /&gt;
einen kleinen quick&amp;amp;dirty (!) Bildkonverter mit perl und perl-imagemagick geschrieben, der&lt;br /&gt;
direkt einen passenden Header (PROGMEM) generiert. Das Script befindet sich ebenfalls &lt;br /&gt;
im .tgz und sollte hoffentlich mit perl auch unter Windows funktionieren.&lt;br /&gt;
Ein Bild benötigt etwas über 1,2kB Flash. In der animations.c befindet sich die &lt;br /&gt;
passende Ladefunktion + Beispielaufruf.&lt;br /&gt;
&lt;br /&gt;
Es sei darauf hingewiesen, dass das Programm ungefragt die Zieldateien überschreibt!&lt;br /&gt;
Erwartet wird 80x40pix Bild, am besten als .bmp. &lt;br /&gt;
&lt;br /&gt;
Im Script oben können die Schwellenwerte für die Farben eingestellt werden &lt;br /&gt;
(0-1, Werte &amp;gt;1 blenden die Farbekomplett aus), dazu wird noch ein Bild generiert, um&lt;br /&gt;
diese Werte testen zu können, ohne es live auf dem Globus ausprobieren zu müssen.&lt;br /&gt;
&lt;br /&gt;
Aufruf: img2globe.pl image.bmp &amp;lt;Name des Arrays&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Zur Videoaufnahme: Es ist recht schwer richtige Lichtverhältnisse zu finden, da die Kamera ständig nachregeln will. Beste Erfahrungen habe ich mit sehr viel Licht gemacht. Ausserdem sollte dazu die Drehzahl etwas hochgefahren werden, um schwarze Balken zu vermeiden. &lt;br /&gt;
* Der Atmel ist mal wieder sehr an seiner Grenze. Würde ich nochmal einen Globe bauen, käme vermutlich ein Cortex-M3 rein.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/povglobe.php&lt;br /&gt;
* [http://www.leyanda.de/light/files/povglobe_v10.tgz Source, Schaltpläne, Layout etc.]&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62530</id>
		<title>POV-Display</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62530"/>
		<updated>2011-12-18T14:18:17Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel wird die Realisierung eines POV-Displays beschrieben.&lt;br /&gt;
Der besondere Effekt eines solchen Displays liegt darin, dass das Bild&lt;br /&gt;
erst durch die Trägheit des Auges entsteht. Bei Bauarten wie dieser&lt;br /&gt;
kann damit ein Bild mehr oder weniger schwebend in der Luft erzeugt werden.&lt;br /&gt;
Die Technik wird in verschiedensten Varianten eingesetzt, beispielhaft&lt;br /&gt;
wird hier ein Globus mit 40 RGB-[[LED]]s gezeigt.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll vor allem Anregungungen zum Aufbau, zu speziellen &lt;br /&gt;
Details und Bauteilen bieten wie auch als Codegrundlage dienen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:globe_11_1024.jpg|right|300px]]&lt;br /&gt;
&lt;br /&gt;
Demoanwendung mit einigen Animationen:&lt;br /&gt;
http://youtu.be/ziD_1fVdDWQ&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 40 RGB LEDs, Bildfläche 80x40 Pixel mit 7 Farben (+ echtem Alphachannel)&lt;br /&gt;
* Globus mit 20cm Durchmesser&lt;br /&gt;
* ATMega644&lt;br /&gt;
* selbstregelnde Refresh-Rate über optischen Sensor&lt;br /&gt;
* ca. 1/2 ASCII-Text Support&lt;br /&gt;
* Bildkonverter&lt;br /&gt;
&lt;br /&gt;
== Mechanische Konstruktion ==&lt;br /&gt;
Es gibt neben dem hier beschriebenen Rotor auch noch weitere Techniken wie &lt;br /&gt;
geschlitzte Abdeckungen.&lt;br /&gt;
=== Rotor ===&lt;br /&gt;
[[Bild:globe_04_1024.jpg|thumb|right|Trägerkonstruktion aus Alu]]&lt;br /&gt;
Grundsätzlich sind 3 Arten von Rotoren typisch: flach, zylindrisch und kugelförmig.&lt;br /&gt;
Zylindrische und flache Rotoren sind recht simpel zu bauen, wobei bei letzterem natürlich&lt;br /&gt;
noch der Softwareaufwand für die Umrechnung kartesisch-&amp;gt;polar hinzukommt.&lt;br /&gt;
Kugelförmige Rotoren haben das Problem, dass es unter einer gewissen Groesse kaum möglich&lt;br /&gt;
ist, Treiber und LEDs auf eine Platine zu setzen. Mein Rotor war mit d=20cm dafür zu klein, &lt;br /&gt;
deshalb kommt hier eine etwas wüste, fliegende Konstruktion zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Bei allen Rotoren ist natürlich auf eine mechanisch stabile Auslegung zu achten, besonders&lt;br /&gt;
bei größeren Durchmessern. Ein Rotor mit einem Durchmesser von 50cm hätte bei 25Hz bereits &lt;br /&gt;
eine Zentrifugalbeschleunigung von über 628g im Rand!&lt;br /&gt;
Dementsprechend wichtig ist auch das genaue Auswuchten des fertigen Rotors.&lt;br /&gt;
&lt;br /&gt;
=== Antrieb ===&lt;br /&gt;
[[Bild:globe_12_1024.jpg|thumb|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Am besten würde sich natürlich ein Antrieb eignen, der seine Drehzahl sehr genau&lt;br /&gt;
halten kann, was aber zumindest eine entsprechende Regelstrecke voraussetzt. &lt;br /&gt;
&lt;br /&gt;
Als einfache Alternative habe ich deshalb einen Speed 700BB 12V verwendet, der&lt;br /&gt;
für meinen Rotor ausreicht wenn er aktiv gekühlt wird.&lt;br /&gt;
Ein guter Richtwert für die Drehzahl sind etwa 20-25Hz.&lt;br /&gt;
Die statische Steuerung erfolgt über eine unspektakuläre [[PWM]] aus einem ATTiny45&lt;br /&gt;
und grossem [[FET]]. Da die Drehzahl bei dieser Methode nicht konstant ist,&lt;br /&gt;
wird eine Regelung der Bildwiederholrate notwendig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
[[Bild:globe_13_1024.jpg|thumb|right|Simpler Schleifkontakt]]&lt;br /&gt;
Die Stromversorgung des Rotors lässt sich am einfachsten über Schleifkontakte&lt;br /&gt;
bewerkstelligen. Wenn man auf eine Spannungsregelung auf der Controllerplatine&lt;br /&gt;
verzichten will muss die Spannung dort unbedingt gut gepuffert werden. Dazu mehr&lt;br /&gt;
im entsprechenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
Ich habe 2 Schleifringe aus Messingrohr mit Epoxy aufgeklebt, gross genug&lt;br /&gt;
um darunter das Kabel des darunterliegenden Schleifrings verlegen zu können.&lt;br /&gt;
Die schwarze Kunststoffplatte drückt die 2 Schleifkontakte dagegen.&lt;br /&gt;
Man könnte natürlich kleinere Ringe nehmen und das 2. Kabel im Trägerrohr&lt;br /&gt;
verlegen.&lt;br /&gt;
&lt;br /&gt;
Eine verschleiß- und geräuschfreie Alternative wären Induktionsspulen.&lt;br /&gt;
&lt;br /&gt;
Als Stromquelle dient die 5V Schiene eines Computernetzteils.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
Das Gehäuse ist bei mir reines Mittel zum Zweck (wie man vermutlich sieht).&lt;br /&gt;
Ich habe dicke Spanplatten verbaut, um es verwindungssteif und gleichzeitig&lt;br /&gt;
schwer zu machen, da ein 100%iges Auswuchten fast unmoeglich ist.&lt;br /&gt;
&lt;br /&gt;
== LEDs und Treiber ==&lt;br /&gt;
[[Bild:globe_06_1024.jpg|thumb|right|aussen LEDs, innen Schieberegister]]&lt;br /&gt;
Als LEDs kamen die verbreiteten RGB-LEDs der Bauform 5050 zum Einsatz, die sich&lt;br /&gt;
sehr gut in den Punkten Helligkeit, Abstrahlwinkel, Farbmischung und&lt;br /&gt;
Ansteuerbarkeit (keine gemeinsame Anode/Kathode) eignen.&lt;br /&gt;
&lt;br /&gt;
Um die LEDs gleichmäßig aufzukleben habe ich einen Papierstreifen zugeschnitten,&lt;br /&gt;
mit Bleistift Markierungen gesetzt und diesen mit Sekundenkleber (getränkt) auf&lt;br /&gt;
den Ring aufgeklebt. Die LEDs wurden dann mit etwas Epoxy darauf geklebt.&lt;br /&gt;
&lt;br /&gt;
Getrieben wird alles mit 15 Schieberegistern 74HC595, diese sind pro Farbe&lt;br /&gt;
auf jeweils 5 in Serie aufgeteilt. Siehe dazu den -&amp;gt; Schaltplan für eine &lt;br /&gt;
&amp;quot;Stufe&amp;quot; aus 8 LEDs, dort sind auch die entsprechenden Ausgangspins am &lt;br /&gt;
Atmel angegeben.&lt;br /&gt;
Da die Schieberegister auf Vcc und GND nur 70mA aushalten, habe ich den auch&lt;br /&gt;
schon im [[AVR-Tutorial: Schieberegister]] Trick angewendet und jeweils&lt;br /&gt;
4 LEDs mit Anoden links und 4 mit Kathoden links abgewechselt.&lt;br /&gt;
&lt;br /&gt;
Dadurch treten allerdings 3 Effekte auf: Zum einen liegen die einzelnen Chips&lt;br /&gt;
in den LEDs nicht mehr exakt auf einer Linie, was bei genauerer Betrachtung bzw. &lt;br /&gt;
ohne zusätzlichen Diffusor auffällt.&lt;br /&gt;
Zum anderen muss das jeweilige Vertauschen von Blau und Grün entweder in der&lt;br /&gt;
Verkabelung oder im Code (meine Methode) beachtet werden, genau wie die&lt;br /&gt;
Tatsache, dass dann je 4 LEDs active high und 4 active low sind.&lt;br /&gt;
[[Bild:rotor_scheme.png|thumb|right|Schaltplan LEDs+Register]]&lt;br /&gt;
Versorgungs- und Steuerleitungen habe ich im Trägerrohr verlegt.&lt;br /&gt;
Nach dem Funktionstest habe ich die fliegende Konstruktion noch mit einer&lt;br /&gt;
entsprechenden Menge Epoxy vergossen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Controllerplatine ==&lt;br /&gt;
[[Bild:povglobe_scheme.png|thumb|right|Schaltplan Controllerplatine]]&lt;br /&gt;
Die Controllerplatine befindet sich im Gehäuse und ist sehr simpel gehalten,&lt;br /&gt;
sie beinhaltet im wesentlichen den ATMega644 mit ISP-Header und Anschlüssen für die&lt;br /&gt;
Schieberegister, einer Pufferung für die Versorungsspannung und 2 OPAMP-Stufen,&lt;br /&gt;
die mit einer Fotodiode + Schmitt-Trigger den externen Interrupt aktivieren.&lt;br /&gt;
Die Pufferung ist wichtig, da die Schleifkontakte keine saubere Versorgung&lt;br /&gt;
gewährleisten können.&lt;br /&gt;
&lt;br /&gt;
Zu meiner Dektektorschaltung noch ein Hinweis: Am besten vorher am Breadboard&lt;br /&gt;
die Werte prüfen und danach auch am Controller testen ob die Triggerung auf &lt;br /&gt;
steigende oder fallende Flanke besser funktioniert. Ausserdem könnte man noch &lt;br /&gt;
einen kleinen Kondensator parallel zu R9 schalten (Tiefpass).&lt;br /&gt;
&lt;br /&gt;
Layout und der Bestückungsplan (von Kupferseite aus gesehen) finden sich im .tgz.&lt;br /&gt;
Auch die Platine sollte ausgewuchtet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Die Firmware für den [[AVR-GCC]] geschrieben worden.&lt;br /&gt;
Als Buffer für das aktuelle Bild dient das uint8_t globe[80][5][3] Array,&lt;br /&gt;
welches in x-Position (in Drehrichtung), Zeile und Farbindex unterteilt ist. &lt;br /&gt;
Das Byte repräsentiert die 8 vertikalen Bits einer Zeile, ähnlich wie bei einem &lt;br /&gt;
graphischen LCD.&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der Bildwiederholrate ===&lt;br /&gt;
Ich habe den 16bit-Timer-Overflow als Zeitgeber missbraucht, der im Sollfall&lt;br /&gt;
320x (80 x-Werte x4) so schnell auslöst wie die Rotordrehzahl. Die vierfache&lt;br /&gt;
Zählgeschwindigkeit dient dabei der Anpassung der Geschwindigkeit an die&lt;br /&gt;
tatsächliche Drehzahl.&lt;br /&gt;
Bei jedem 4. Timerüberlauf wird dann der entsprechende Längengrad auf die Register geschoben.&lt;br /&gt;
Die [[ISR]] ist natürlich sehr lang, dafür muss aber bei komplexeren Transformationen/Animationen &lt;br /&gt;
nicht auf Laufzeiten geachtet werden. Wichtig dabei: Alle anderen Operationen werden als nicht &lt;br /&gt;
zeitkritisch betrachtet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere ISR wird beim Auftreten des Detektorinterrupts ausgelöst. Diese setzt&lt;br /&gt;
Index und Zählerregister zurück und korrigiert die Wiederholrate anhand des&lt;br /&gt;
tatsächlich erreichten Index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bildkonverter ==&lt;br /&gt;
Um ganze Bilder, wie z.B. die Weltkarte einfach auf den Globus zu bekommen, habe ich&lt;br /&gt;
einen kleinen quick&amp;amp;dirty (!) Bildkonverter mit perl und perl-imagemagick geschrieben, der&lt;br /&gt;
direkt einen passenden Header (PROGMEM) generiert. Das Script befindet sich ebenfalls &lt;br /&gt;
im .tgz und sollte hoffentlich mit perl auch unter Windows funktionieren.&lt;br /&gt;
Ein Bild benötigt etwas über 1,2kB Flash. In der animations.c befindet sich die &lt;br /&gt;
passende Ladefunktion + Beispielaufruf.&lt;br /&gt;
&lt;br /&gt;
Es sei darauf hingewiesen, dass das Programm ungefragt die Zieldateien überschreibt!&lt;br /&gt;
Erwartet wird 80x40pix Bild, am besten als .bmp. &lt;br /&gt;
&lt;br /&gt;
Im Script oben können die Schwellenwerte für die Farben eingestellt werden &lt;br /&gt;
(0-1, Werte &amp;gt;1 blenden die Farbekomplett aus), dazu wird noch ein Bild generiert, um&lt;br /&gt;
diese Werte testen zu können, ohne es live auf dem Globus ausprobieren zu müssen.&lt;br /&gt;
&lt;br /&gt;
Aufruf: img2globe.pl image.bmp &amp;lt;Name des Arrays&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Zur Videoaufnahme: Es ist recht schwer richtige Lichtverhältnisse zu finden, da die Kamera ständig nachregeln will. Beste Erfahrungen habe ich mit sehr viel Licht gemacht. Ausserdem sollte dazu die Drehzahl etwas hochgefahren werden, um schwarze Balken zu vermeiden. &lt;br /&gt;
* Der Atmel ist mal wieder sehr an seiner Grenze. Würde ich nochmal einen Globe bauen, käme vermutlich ein Cortex-M3 rein.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/povglobe.php&lt;br /&gt;
* [http://www.leyanda.de/light/files/povglobe_v10.tgz Source, Schaltpläne, Layout etc.]&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62529</id>
		<title>POV-Display</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62529"/>
		<updated>2011-12-18T14:08:54Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel wird die Realisierung eines POV-Displays beschrieben.&lt;br /&gt;
Der besondere Effekt eines solchen Displays liegt darin, dass das Bild&lt;br /&gt;
erst durch die Trägheit des Auges entsteht. Bei Bauarten wie dieser&lt;br /&gt;
kann damit ein Bild mehr oder weniger schwebend in der Luft erzeugt werden.&lt;br /&gt;
Die Technik wird in verschiedensten Varianten eingesetzt, beispielhaft&lt;br /&gt;
wird hier ein Globus mit 40 RGB-[[LED]]s gezeigt.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll vor allem Anregungungen zum Aufbau, zu speziellen &lt;br /&gt;
Details und Bauteilen bieten wie auch als Codegrundlage dienen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:globe_11_1024.jpg|right|300px]]&lt;br /&gt;
&lt;br /&gt;
Demoanwendung mit einigen Animationen:&lt;br /&gt;
http://youtu.be/ziD_1fVdDWQ&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 40 RGB LEDs, Bildfläche 80x40 Pixel mit 7 Farben (+ echtem Alphachannel)&lt;br /&gt;
* Globus mit 20cm Durchmesser&lt;br /&gt;
* ATMega644&lt;br /&gt;
* selbstregelnde Refresh-Rate über optischen Sensor&lt;br /&gt;
* ca. 1/2 ASCII-Text Support&lt;br /&gt;
* Bildkonverter&lt;br /&gt;
&lt;br /&gt;
== Mechanische Konstruktion ==&lt;br /&gt;
Es gibt neben dem hier beschriebenen Rotor auch noch weitere Techniken wie &lt;br /&gt;
geschlitzte Abdeckungen.&lt;br /&gt;
=== Rotor ===&lt;br /&gt;
[[Bild:globe_04_1024.jpg|thumb|right|Trägerkonstruktion aus Alu]]&lt;br /&gt;
Grundsätzlich sind 3 Arten von Rotoren typisch: flach, zylindrisch und kugelförmig.&lt;br /&gt;
Zylindrische und flache Rotoren sind recht simpel zu bauen, wobei bei letzterem natürlich&lt;br /&gt;
noch der Softwareaufwand für die Umrechnung kartesisch-&amp;gt;polar hinzukommt.&lt;br /&gt;
Kugelförmige Rotoren haben das Problem, dass es unter einer gewissen Groesse kaum möglich&lt;br /&gt;
ist, Treiber und LEDs auf eine Platine zu setzen. Mein Rotor war mit d=20cm dafür zu klein, &lt;br /&gt;
deshalb kommt hier eine etwas wüste, fliegende Konstruktion zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Bei allen Rotoren ist natürlich auf eine mechanisch stabile Auslegung zu achten, besonders&lt;br /&gt;
bei größeren Durchmessern. Ein Rotor mit einem Durchmesser von 50cm hätte bei 25Hz bereits &lt;br /&gt;
eine Zentrifugalbeschleunigung von über 628g im Rand!&lt;br /&gt;
Dementsprechend wichtig ist auch das genaue Auswuchten des fertigen Rotors.&lt;br /&gt;
&lt;br /&gt;
=== Antrieb ===&lt;br /&gt;
[[Bild:globe_12_1024.jpg|thumb|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Am besten würde sich natürlich ein Antrieb eignen, der seine Drehzahl sehr genau&lt;br /&gt;
halten kann, was aber zumindest eine entsprechende Regelstrecke voraussetzt. &lt;br /&gt;
&lt;br /&gt;
Als einfache Alternative habe ich deshalb einen Speed 700BB 12V verwendet, der&lt;br /&gt;
für meinen Rotor ausreicht wenn er aktiv gekühlt wird.&lt;br /&gt;
Ein guter Richtwert für die Drehzahl sind etwa 20-25Hz.&lt;br /&gt;
Die statische Steuerung erfolgt über eine unspektakuläre [[PWM]] aus einem ATTiny45&lt;br /&gt;
und grossem [[FET]]. Da die Drehzahl bei dieser Methode nicht konstant ist,&lt;br /&gt;
wird eine Regelung der Bildwiederholrate notwendig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
[[Bild:globe_13_1024.jpg|thumb|right|Simpler Schleifkontakt]]&lt;br /&gt;
Die Stromversorgung des Rotors lässt sich am einfachsten über Schleifkontakte&lt;br /&gt;
bewerkstelligen. Wenn man auf eine Spannungsregelung auf der Controllerplatine&lt;br /&gt;
verzichten will muss die Spannung dort unbedingt gut gepuffert werden. Dazu mehr&lt;br /&gt;
im entsprechenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
Ich habe 2 Schleifringe aus Messingrohr mit Epoxy aufgeklebt, gross genug&lt;br /&gt;
um darunter das Kabel des darunterliegenden Schleifrings verlegen zu können.&lt;br /&gt;
Die schwarze Kunststoffplatte drückt die 2 Schleifkontakte dagegen.&lt;br /&gt;
Man könnte natürlich kleinere Ringe nehmen und das 2. Kabel im Trägerrohr&lt;br /&gt;
verlegen.&lt;br /&gt;
&lt;br /&gt;
Eine verschleiß- und geräuschfreie Alternative wären Induktionsspulen.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
Das Gehäuse ist bei mir reines Mittel zum Zweck (wie man vermutlich sieht).&lt;br /&gt;
Ich habe dicke Spanplatten verbaut, um es verwindungssteif und gleichzeitig&lt;br /&gt;
schwer zu machen, da ein 100%iges Auswuchten fast unmoeglich ist.&lt;br /&gt;
&lt;br /&gt;
== LEDs und Treiber ==&lt;br /&gt;
[[Bild:globe_06_1024.jpg|thumb|right|aussen LEDs, innen Schieberegister]]&lt;br /&gt;
Als LEDs kamen die verbreiteten RGB-LEDs der Bauform 5050 zum Einsatz, die sich&lt;br /&gt;
sehr gut in den Punkten Helligkeit, Abstrahlwinkel, Farbmischung und&lt;br /&gt;
Ansteuerbarkeit (keine gemeinsame Anode/Kathode) eignen.&lt;br /&gt;
&lt;br /&gt;
Um die LEDs gleichmäßig aufzukleben habe ich einen Papierstreifen zugeschnitten,&lt;br /&gt;
mit Bleistift Markierungen gesetzt und diesen mit Sekundenkleber (getränkt) auf&lt;br /&gt;
den Ring aufgeklebt. Die LEDs wurden dann mit etwas Epoxy darauf geklebt.&lt;br /&gt;
&lt;br /&gt;
Getrieben wird alles mit 15 Schieberegistern 74HC595, diese sind pro Farbe&lt;br /&gt;
auf jeweils 5 in Serie aufgeteilt. Siehe dazu den -&amp;gt; Schaltplan für eine &lt;br /&gt;
&amp;quot;Stufe&amp;quot; aus 8 LEDs, dort sind auch die entsprechenden Ausgangspins am &lt;br /&gt;
Atmel angegeben.&lt;br /&gt;
Da die Schieberegister auf Vcc und GND nur 70mA aushalten, habe ich den auch&lt;br /&gt;
schon im [[AVR-Tutorial: Schieberegister]] Trick angewendet und jeweils&lt;br /&gt;
4 LEDs mit Anoden links und 4 mit Kathoden links abgewechselt.&lt;br /&gt;
&lt;br /&gt;
Dadurch treten allerdings 3 Effekte auf: Zum einen liegen die einzelnen Chips&lt;br /&gt;
in den LEDs nicht mehr exakt auf einer Linie, was bei genauerer Betrachtung bzw. &lt;br /&gt;
ohne zusätzlichen Diffusor auffällt.&lt;br /&gt;
Zum anderen muss das jeweilige Vertauschen von Blau und Grün entweder in der&lt;br /&gt;
Verkabelung oder im Code (meine Methode) beachtet werden, genau wie die&lt;br /&gt;
Tatsache, dass dann je 4 LEDs active high und 4 active low sind.&lt;br /&gt;
[[Bild:rotor_scheme.png|thumb|right|Schaltplan LEDs+Register]]&lt;br /&gt;
Versorgungs- und Steuerleitungen habe ich im Trägerrohr verlegt.&lt;br /&gt;
Nach dem Funktionstest habe ich die fliegende Konstruktion noch mit einer&lt;br /&gt;
entsprechenden Menge Epoxy vergossen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Controllerplatine ==&lt;br /&gt;
[[Bild:povglobe_scheme.png|thumb|right|Schaltplan Controllerplatine]]&lt;br /&gt;
Die Controllerplatine befindet sich im Gehäuse und ist sehr simpel gehalten,&lt;br /&gt;
sie beinhaltet im wesentlichen den ATMega644 mit ISP-Header und Anschlüssen für die&lt;br /&gt;
Schieberegister, einer Pufferung für die Versorungsspannung und 2 OPAMP-Stufen,&lt;br /&gt;
die mit einer Fotodiode + Schmitt-Trigger den externen Interrupt aktivieren.&lt;br /&gt;
Die Pufferung ist wichtig, da die Schleifkontakte keine saubere Versorgung&lt;br /&gt;
gewährleisten können.&lt;br /&gt;
&lt;br /&gt;
Zu meiner Dektektorschaltung noch ein Hinweis: Am besten vorher am Breadboard&lt;br /&gt;
die Werte prüfen und danach auch am Controller testen ob die Triggerung auf &lt;br /&gt;
steigende oder fallende Flanke besser funktioniert. Ausserdem könnte man noch &lt;br /&gt;
einen kleinen Kondensator parallel zu R9 schalten (Tiefpass).&lt;br /&gt;
&lt;br /&gt;
Layout und der Bestückungsplan (von Kupferseite aus gesehen) finden sich im .tgz.&lt;br /&gt;
Auch die Platine sollte ausgewuchtet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Die Firmware für den [[AVR-GCC]] geschrieben worden.&lt;br /&gt;
Als Buffer für das aktuelle Bild dient das uint8_t globe[80][5][3] Array,&lt;br /&gt;
welches in x-Position (in Drehrichtung), Zeile und Farbindex unterteilt ist. &lt;br /&gt;
Das Byte repräsentiert die 8 vertikalen Bits einer Zeile, ähnlich wie bei einem &lt;br /&gt;
graphischen LCD.&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der Bildwiederholrate ===&lt;br /&gt;
Ich habe den 16bit-Timer-Overflow als Zeitgeber missbraucht, der im Sollfall&lt;br /&gt;
320x (80 x-Werte x4) so schnell auslöst wie die Rotordrehzahl. Die vierfache&lt;br /&gt;
Zählgeschwindigkeit dient dabei der Anpassung der Geschwindigkeit an die&lt;br /&gt;
tatsächliche Drehzahl.&lt;br /&gt;
Bei jedem 4. Timerüberlauf wird dann der entsprechende Längengrad auf die Register geschoben.&lt;br /&gt;
Die [[ISR]] ist natürlich sehr lang, dafür muss aber bei komplexeren Transformationen/Animationen &lt;br /&gt;
nicht auf Laufzeiten geachtet werden. Wichtig dabei: Alle anderen Operationen werden als nicht &lt;br /&gt;
zeitkritisch betrachtet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere ISR wird beim Auftreten des Detektorinterrupts ausgelöst. Diese setzt&lt;br /&gt;
Index und Zählerregister zurück und korrigiert die Wiederholrate anhand des&lt;br /&gt;
tatsächlich erreichten Index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bildkonverter ==&lt;br /&gt;
Um ganze Bilder, wie z.B. die Weltkarte einfach auf den Globus zu bekommen, habe ich&lt;br /&gt;
einen kleinen quick&amp;amp;dirty (!) Bildkonverter mit perl und perl-imagemagick geschrieben, der&lt;br /&gt;
direkt einen passenden Header (PROGMEM) generiert. Das Script befindet sich ebenfalls &lt;br /&gt;
im .tgz und sollte hoffentlich mit perl auch unter Windows funktionieren.&lt;br /&gt;
Ein Bild benötigt etwas über 1,2kB Flash. In der animations.c befindet sich die &lt;br /&gt;
passende Ladefunktion + Beispielaufruf.&lt;br /&gt;
&lt;br /&gt;
Es sei darauf hingewiesen, dass das Programm ungefragt die Zieldateien überschreibt!&lt;br /&gt;
Erwartet wird 80x40pix Bild, am besten als .bmp. &lt;br /&gt;
&lt;br /&gt;
Im Script oben können die Schwellenwerte für die Farben eingestellt werden &lt;br /&gt;
(0-1, Werte &amp;gt;1 blenden die Farbekomplett aus), dazu wird noch ein Bild generiert, um&lt;br /&gt;
diese Werte testen zu können, ohne es live auf dem Globus ausprobieren zu müssen.&lt;br /&gt;
&lt;br /&gt;
Aufruf: img2globe.pl image.bmp &amp;lt;Name des Arrays&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Zur Videoaufnahme: Es ist recht schwer richtige Lichtverhältnisse zu finden, da die Kamera ständig nachregeln will. Beste Erfahrungen habe ich mit sehr viel Licht gemacht. Ausserdem sollte dazu die Drehzahl etwas hochgefahren werden, um schwarze Balken zu vermeiden. &lt;br /&gt;
* Der Atmel ist mal wieder sehr an seiner Grenze. Würde ich nochmal einen Globe bauen, käme vermutlich ein Cortex-M3 rein.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/povglobe.php&lt;br /&gt;
* [http://www.leyanda.de/light/files/povglobe_v10.tgz Source, Schaltpläne, Layout etc.]&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Povglobe_scheme.png&amp;diff=62528</id>
		<title>Datei:Povglobe scheme.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Povglobe_scheme.png&amp;diff=62528"/>
		<updated>2011-12-18T14:07:39Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62527</id>
		<title>POV-Display</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62527"/>
		<updated>2011-12-18T14:07:22Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Artikel wird gerade erstellt! Noch nicht editieren.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In diesem Artikel wird die Realisierung eines POV-Displays beschrieben.&lt;br /&gt;
Der besondere Effekt eines solchen Displays liegt darin, dass das Bild&lt;br /&gt;
erst durch die Trägheit des Auges entsteht. Bei Bauarten wie dieser&lt;br /&gt;
kann damit ein Bild mehr oder weniger schwebend in der Luft erzeugt werden.&lt;br /&gt;
Die Technik wird in verschiedensten Varianten eingesetzt, beispielhaft&lt;br /&gt;
wird hier ein Globus mit 40 RGB-[[LED]]s gezeigt.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll vor allem Anregungungen zum Aufbau, zu speziellen &lt;br /&gt;
Details und Bauteilen bieten wie auch als Codegrundlage dienen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:globe_11_1024.jpg|right|300px]]&lt;br /&gt;
&lt;br /&gt;
Demoanwendung mit einigen Animationen:&lt;br /&gt;
http://youtu.be/ziD_1fVdDWQ&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 40 RGB LEDs, Bildfläche 80x40 Pixel mit 7 Farben (+ echtem Alphachannel)&lt;br /&gt;
* Globus mit 20cm Durchmesser&lt;br /&gt;
* ATMega644&lt;br /&gt;
* selbstregelnde Refresh-Rate über optischen Sensor&lt;br /&gt;
* ca. 1/2 ASCII-Text Support&lt;br /&gt;
* Bildkonverter&lt;br /&gt;
&lt;br /&gt;
== Mechanische Konstruktion ==&lt;br /&gt;
Es gibt neben dem hier beschriebenen Rotor auch noch weitere Techniken wie &lt;br /&gt;
geschlitzte Abdeckungen.&lt;br /&gt;
=== Rotor ===&lt;br /&gt;
[[Bild:globe_04_1024.jpg|thumb|right|Trägerkonstruktion aus Alu]]&lt;br /&gt;
Grundsätzlich sind 3 Arten von Rotoren typisch: flach, zylindrisch und kugelförmig.&lt;br /&gt;
Zylindrische und flache Rotoren sind recht simpel zu bauen, wobei bei letzterem natuerlich&lt;br /&gt;
noch der Softwareaufwand für die Umrechnung kartesisch-&amp;gt;polar hinzukommt.&lt;br /&gt;
Kugelförmige Rotoren haben das Problem, dass es unter einer gewissen Groesse kaum möglich&lt;br /&gt;
ist, Treiber und LEDs auf eine Platine zu setzen. Mein Rotor war mit d=20cm dafür zu klein, &lt;br /&gt;
deshalb kommt hier eine etwas wüste, fliegende Konstruktion zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Bei allen Rotoren ist natürlich auf eine mechanisch stabile Auslegung zu achten, besonders&lt;br /&gt;
bei größeren Durchmessern. Ein Rotor mit einem Durchmesser von 50cm hätte bei 25Hz bereits &lt;br /&gt;
eine Zentrifugalbeschleunigung von über 628g im Rand!&lt;br /&gt;
Dementsprechend wichtig ist auch das genaue Auswuchten des fertigen Rotors.&lt;br /&gt;
&lt;br /&gt;
=== Antrieb ===&lt;br /&gt;
[[Bild:globe_12_1024.jpg|thumb|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Am besten würde sich natürlich ein Antrieb eignen, der seine Drehzahl sehr genau&lt;br /&gt;
halten kann, was aber zumindest eine entsprechende Regelstrecke voraussetzt. &lt;br /&gt;
&lt;br /&gt;
Als einfache Alternative habe ich deshalb einen Speed 700BB 12V verwendet, der&lt;br /&gt;
für meinen Rotor ausreicht wenn er aktiv gekühlt wird.&lt;br /&gt;
Ein guter Richtwert für die Drehzahl sind etwa 20-25Hz.&lt;br /&gt;
Die statische Steuerung erfolgt über eine unspektakuläre [[PWM]] aus einem ATTiny45&lt;br /&gt;
und grossem [[FET]]. Da die Drehzahl bei dieser Methode nicht konstant ist,&lt;br /&gt;
wird eine Regelung der Bildwiederholrate notwendig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
[[Bild:globe_13_1024.jpg|thumb|right|Simpler Schleifkontakt]]&lt;br /&gt;
Die Stromversorgung des Rotors lässt sich am einfachsten über Schleifkontakte&lt;br /&gt;
bewerkstelligen. Wenn man auf eine Spannungsregelung auf der Controllerplatine&lt;br /&gt;
verzichten will muss die Spannung dort unbedingt gut gepuffert werden. Dazu mehr&lt;br /&gt;
im entsprechenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
Ich habe 2 Schleifringe aus Messingrohr mit Epoxy aufgeklebt, gross genug&lt;br /&gt;
um darunter das Kabel des darunterliegenden Schleifrings verlegen zu können.&lt;br /&gt;
Die schwarze Kunststoffplatte drückt die 2 Schleifkontakte dagegen.&lt;br /&gt;
Man könnte natürlich kleinere Ringe nehmen und das 2. Kabel im Trägerrohr&lt;br /&gt;
verlegen.&lt;br /&gt;
&lt;br /&gt;
Eine verschleiß- und geräuschfreie Alternative wären Induktionsspulen.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
Das Gehäuse ist bei mir reines Mittel zum Zweck (wie man vermutlich sieht).&lt;br /&gt;
Ich habe dicke Spanplatten verbaut, um es verwindungssteif und gleichzeitig&lt;br /&gt;
schwer zu machen, da ein 100%iges Auswuchten fast unmoeglich ist.&lt;br /&gt;
&lt;br /&gt;
== LEDs und Treiber ==&lt;br /&gt;
[[Bild:globe_06_1024.jpg|thumb|right|aussen LEDs, innen Schieberegister]]&lt;br /&gt;
Als LEDs kamen die verbreiteten RGB-LEDs der Bauform 5050 zum Einsatz, die sich&lt;br /&gt;
sehr gut in den Punkten Helligkeit, Abstrahlwinkel, Farbmischung und&lt;br /&gt;
Ansteuerbarkeit (keine gemeinsame Anode/Kathode) eignen.&lt;br /&gt;
&lt;br /&gt;
Um die LEDs gleichmäßig aufzukleben habe ich einen Papierstreifen zugeschnitten,&lt;br /&gt;
mit Bleistift Markierungen gesetzt und diesen mit Sekundenkleber (getränkt) auf&lt;br /&gt;
den Ring aufgeklebt. Die LEDs wurden dann mit etwas Epoxy darauf geklebt.&lt;br /&gt;
&lt;br /&gt;
Getrieben wird alles mit 15 Schieberegistern 74HC595, diese sind pro Farbe&lt;br /&gt;
auf jeweils 5 in Serie aufgeteilt. Siehe dazu den -&amp;gt; Schaltplan für eine &lt;br /&gt;
&amp;quot;Stufe&amp;quot; aus 8 LEDs, dort sind auch die entsprechenden Ausgangspins am &lt;br /&gt;
Atmel angegeben.&lt;br /&gt;
Da die Schieberegister auf Vcc und GND nur 70mA aushalten, habe ich den auch&lt;br /&gt;
schon im [[AVR-Tutorial: Schieberegister]] Trick angewendet und jeweils&lt;br /&gt;
4 LEDs mit Anoden links und 4 mit Kathoden links abgewechselt.&lt;br /&gt;
&lt;br /&gt;
Dadurch treten allerdings 3 Effekte auf: Zum einen liegen die einzelnen Chips&lt;br /&gt;
in den LEDs nicht mehr exakt auf einer Linie, was bei genauerer Betrachtung bzw. &lt;br /&gt;
ohne zusätzlichen Diffusor auffällt.&lt;br /&gt;
Zum anderen muss das jeweilige Vertauschen von Blau und Grün entweder in der&lt;br /&gt;
Verkabelung oder im Code (meine Methode) beachtet werden, genau wie die&lt;br /&gt;
Tatsache, dass dann je 4 LEDs active high und 4 active low sind.&lt;br /&gt;
[[Bild:rotor_scheme.png|thumb|right|Schaltplan LEDs+Register]]&lt;br /&gt;
Versorgungs- und Steuerleitungen habe ich im Trägerrohr verlegt.&lt;br /&gt;
Nach dem Funktionstest habe ich die fliegende Konstruktion noch mit einer&lt;br /&gt;
entsprechenden Menge Epoxy vergossen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Controllerplatine ==&lt;br /&gt;
[[Bild:povglobe_scheme.png|thumb|right|Schaltplan Controllerplatine]]&lt;br /&gt;
Die Controllerplatine befindet sich im Gehäuse und ist sehr simpel gehalten,&lt;br /&gt;
sie beinhaltet im wesentlichen den ATMega644 mit ISP-Header und Anschlüssen für die&lt;br /&gt;
Schieberegister, einer Pufferung für die Versorungsspannung und 2 OPAMP-Stufen,&lt;br /&gt;
die mit einer Fotodiode + Schmitt-Trigger den externen Interrupt aktivieren.&lt;br /&gt;
Die Pufferung ist wichtig, da die Schleifkontakte keine saubere Versorgung&lt;br /&gt;
gewährleisten können.&lt;br /&gt;
&lt;br /&gt;
Zu meiner Dektektorschaltung noch ein Hinweis: Am besten vorher am Breadboard&lt;br /&gt;
die Werte prüfen und danach auch am Controller testen ob die Triggerung auf &lt;br /&gt;
steigende oder fallende Flanke besser funktioniert. Ausserdem könnte man noch &lt;br /&gt;
einen kleinen Kondensator parallel zu R9 schalten (Tiefpass).&lt;br /&gt;
&lt;br /&gt;
Layout und der Bestückungsplan (von Kupferseite aus gesehen) finden sich im .tgz.&lt;br /&gt;
Auch die Platine sollte ausgewuchtet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Die Firmware für den [[AVR-GCC]] geschrieben worden.&lt;br /&gt;
Als Buffer für das aktuelle Bild dient das uint8_t globe[80][5][3] Array,&lt;br /&gt;
welches in x-Position (in Drehrichtung), Zeile und Farbindex unterteilt ist. &lt;br /&gt;
Das Byte repräsentiert die 8 vertikalen Bits einer Zeile, ähnlich wie bei einem &lt;br /&gt;
graphischen LCD.&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der Bildwiederholrate ===&lt;br /&gt;
Ich habe den 16bit-Timer-Overflow als Zeitgeber missbraucht, der im Sollfall&lt;br /&gt;
320x (80 x-Werte x4) so schnell auslöst wie die Rotordrehzahl. Die vierfache&lt;br /&gt;
Zählgeschwindigkeit dient dabei der Anpassung der Geschwindigkeit an die&lt;br /&gt;
tatsächliche Drehzahl.&lt;br /&gt;
Bei jedem 4. Timerüberlauf wird dann der entsprechende Längengrad auf die Register geschoben.&lt;br /&gt;
Die [[ISR]] ist natürlich sehr lang, dafür muss aber bei komplexeren Transformationen/Animationen &lt;br /&gt;
nicht auf Laufzeiten geachtet werden. Wichtig dabei: Alle anderen Operationen werden als nicht &lt;br /&gt;
zeitkritisch betrachtet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere ISR wird beim Auftreten des Detektorinterrupts ausgelöst. Diese setzt&lt;br /&gt;
Index und Zählerregister zurück und korrigiert die Wiederholrate anhand des&lt;br /&gt;
tatsächlich erreichten Index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bildkonverter ==&lt;br /&gt;
Um ganze Bilder, wie z.B. die Weltkarte einfach auf den Globus zu bekommen, habe ich&lt;br /&gt;
einen kleinen quick&amp;amp;dirty (!) Bildkonverter mit perl und perl-imagemagick geschrieben, der&lt;br /&gt;
direkt einen passenden Header (PROGMEM) generiert. Das Script befindet sich ebenfalls &lt;br /&gt;
im .tgz und sollte hoffentlich mit perl auch unter Windows funktionieren.&lt;br /&gt;
Ein Bild benötigt etwas über 1,2kB Flash. In der animations.c befindet sich die &lt;br /&gt;
passende Ladefunktion + Beispielaufruf.&lt;br /&gt;
&lt;br /&gt;
Es sei darauf hingewiesen, dass das Programm ungefragt die Zieldateien überschreibt!&lt;br /&gt;
Erwartet wird 80x40pix Bild, am besten als .bmp. &lt;br /&gt;
&lt;br /&gt;
Im Script oben können die Schwellenwerte für die Farben eingestellt werden &lt;br /&gt;
(0-1, Werte &amp;gt;1 blenden die Farbekomplett aus), dazu wird noch ein Bild generiert, um&lt;br /&gt;
diese Werte testen zu können, ohne es live auf dem Globus ausprobieren zu müssen.&lt;br /&gt;
&lt;br /&gt;
Aufruf: img2globe.pl image.bmp &amp;lt;Name des Arrays&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Zur Videoaufnahme: Es ist recht schwer richtige Lichtverhältnisse zu finden, da die Kamera ständig nachregeln will. Beste Erfahrungen habe ich mit sehr viel Licht gemacht. Ausserdem sollte dazu die Drehzahl etwas hochgefahren werden, um schwarze Balken zu vermeiden. &lt;br /&gt;
* Der Atmel ist mal wieder sehr an seiner Grenze. Würde ich nochmal einen Globe bauen, käme vermutlich ein Cortex-M3 rein.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/povglobe.php&lt;br /&gt;
* [http://www.leyanda.de/light/files/povglobe_v10.tgz Source, Schaltpläne, Layout etc.]&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Rotor_scheme.png&amp;diff=62526</id>
		<title>Datei:Rotor scheme.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Rotor_scheme.png&amp;diff=62526"/>
		<updated>2011-12-18T14:07:02Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Globe_06_1024.jpg&amp;diff=62525</id>
		<title>Datei:Globe 06 1024.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Globe_06_1024.jpg&amp;diff=62525"/>
		<updated>2011-12-18T14:06:28Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62524</id>
		<title>POV-Display</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62524"/>
		<updated>2011-12-18T14:06:02Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Artikel wird gerade erstellt! Noch nicht editieren.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In diesem Artikel wird die Realisierung eines POV-Displays beschrieben.&lt;br /&gt;
Der besondere Effekt eines solchen Displays liegt darin, dass das Bild&lt;br /&gt;
erst durch die Trägheit des Auges entsteht. Bei Bauarten wie dieser&lt;br /&gt;
kann damit ein Bild mehr oder weniger schwebend in der Luft erzeugt werden.&lt;br /&gt;
Die Technik wird in verschiedensten Varianten eingesetzt, beispielhaft&lt;br /&gt;
wird hier ein Globus mit 40 RGB-[[LED]]s gezeigt.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll vor allem Anregungungen zum Aufbau, zu speziellen &lt;br /&gt;
Details und Bauteilen bieten wie auch als Codegrundlage dienen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:globe_11_1024.jpg|right|300px]]&lt;br /&gt;
&lt;br /&gt;
Demoanwendung mit einigen Animationen:&lt;br /&gt;
http://youtu.be/ziD_1fVdDWQ&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 40 RGB LEDs, Bildfläche 80x40 Pixel mit 7 Farben (+ echtem Alphachannel)&lt;br /&gt;
* Globus mit 20cm Durchmesser&lt;br /&gt;
* ATMega644&lt;br /&gt;
* selbstregelnde Refresh-Rate über optischen Sensor&lt;br /&gt;
* ca. 1/2 ASCII-Text Support&lt;br /&gt;
* Bildkonverter&lt;br /&gt;
&lt;br /&gt;
== Mechanische Konstruktion ==&lt;br /&gt;
Es gibt neben dem hier beschriebenen Rotor auch noch weitere Techniken wie &lt;br /&gt;
geschlitzte Abdeckungen.&lt;br /&gt;
=== Rotor ===&lt;br /&gt;
[[Bild:globe_04_1024.jpg|thumb|right|Trägerkonstruktion aus Alu]]&lt;br /&gt;
Grundsätzlich sind 3 Arten von Rotoren typisch: flach, zylindrisch und kugelförmig.&lt;br /&gt;
Zylindrische und flache Rotoren sind recht simpel zu bauen, wobei bei letzterem natuerlich&lt;br /&gt;
noch der Softwareaufwand für die Umrechnung kartesisch-&amp;gt;polar hinzukommt.&lt;br /&gt;
Kugelförmige Rotoren haben das Problem, dass es unter einer gewissen Groesse kaum möglich&lt;br /&gt;
ist, Treiber und LEDs auf eine Platine zu setzen. Mein Rotor war mit d=20cm dafür zu klein, &lt;br /&gt;
deshalb kommt hier eine etwas wüste, fliegende Konstruktion zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Bei allen Rotoren ist natürlich auf eine mechanisch stabile Auslegung zu achten, besonders&lt;br /&gt;
bei größeren Durchmessern. Ein Rotor mit einem Durchmesser von 50cm hätte bei 25Hz bereits &lt;br /&gt;
eine Zentrifugalbeschleunigung von über 628g im Rand!&lt;br /&gt;
Dementsprechend wichtig ist auch das genaue Auswuchten des fertigen Rotors.&lt;br /&gt;
&lt;br /&gt;
=== Antrieb ===&lt;br /&gt;
[[Bild:globe_12_1024.jpg|thumb|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Am besten würde sich natürlich ein Antrieb eignen, der seine Drehzahl sehr genau&lt;br /&gt;
halten kann, was aber zumindest eine entsprechende Regelstrecke voraussetzt. &lt;br /&gt;
&lt;br /&gt;
Als einfache Alternative habe ich deshalb einen Speed 700BB 12V verwendet, der&lt;br /&gt;
für meinen Rotor ausreicht wenn er aktiv gekühlt wird.&lt;br /&gt;
Ein guter Richtwert für die Drehzahl sind etwa 20-25Hz.&lt;br /&gt;
Die statische Steuerung erfolgt über eine unspektakuläre [[PWM]] aus einem ATTiny45&lt;br /&gt;
und grossem [[FET]]. Da die Drehzahl bei dieser Methode nicht konstant ist,&lt;br /&gt;
wird eine Regelung der Bildwiederholrate notwendig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
[[Bild:globe_13_1024.jpg|thumb|right|Simpler Schleifkontakt]]&lt;br /&gt;
Die Stromversorgung des Rotors lässt sich am einfachsten über Schleifkontakte&lt;br /&gt;
bewerkstelligen. Wenn man auf eine Spannungsregelung auf der Controllerplatine&lt;br /&gt;
verzichten will muss die Spannung dort unbedingt gut gepuffert werden. Dazu mehr&lt;br /&gt;
im entsprechenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
Ich habe 2 Schleifringe aus Messingrohr mit Epoxy aufgeklebt, gross genug&lt;br /&gt;
um darunter das Kabel des darunterliegenden Schleifrings verlegen zu können.&lt;br /&gt;
Die schwarze Kunststoffplatte drückt die 2 Schleifkontakte dagegen.&lt;br /&gt;
Man könnte natürlich kleinere Ringe nehmen und das 2. Kabel im Trägerrohr&lt;br /&gt;
verlegen.&lt;br /&gt;
&lt;br /&gt;
Eine verschleiß- und geräuschfreie Alternative wären Induktionsspulen.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
Das Gehäuse ist bei mir reines Mittel zum Zweck (wie man vermutlich sieht).&lt;br /&gt;
Ich habe dicke Spanplatten verbaut, um es verwindungssteif und gleichzeitig&lt;br /&gt;
schwer zu machen, da ein 100%iges Auswuchten fast unmoeglich ist.&lt;br /&gt;
&lt;br /&gt;
== LEDs und Treiber ==&lt;br /&gt;
[[Bild:globe_06_1024.jpg|thumb|right|aussen LEDs, innen Schieberegister]]&lt;br /&gt;
Als LEDs kamen die verbreiteten RGB-LEDs der Bauform 5050 zum Einsatz, die sich&lt;br /&gt;
sehr gut in den Punkten Helligkeit, Abstrahlwinkel, Farbmischung und&lt;br /&gt;
Ansteuerbarkeit (keine gemeinsame Anode/Kathode) eignen.&lt;br /&gt;
&lt;br /&gt;
Um die LEDs gleichmäßig aufzukleben habe ich einen Papierstreifen zugeschnitten,&lt;br /&gt;
mit Bleistift Markierungen gesetzt und diesen mit Sekundenkleber (getränkt) auf&lt;br /&gt;
den Ring aufgeklebt. Die LEDs wurden dann mit etwas Epoxy darauf geklebt.&lt;br /&gt;
&lt;br /&gt;
Getrieben wird alles mit 15 Schieberegistern 74HC595, diese sind pro Farbe&lt;br /&gt;
auf jeweils 5 in Serie aufgeteilt. Siehe dazu den -&amp;gt; Schaltplan für eine &lt;br /&gt;
&amp;quot;Stufe&amp;quot; aus 8 LEDs, dort sind auch die entsprechenden Ausgangspins am &lt;br /&gt;
Atmel angegeben.&lt;br /&gt;
Da die Schieberegister auf Vcc und GND nur 70mA aushalten, habe ich den auch&lt;br /&gt;
schon im [[AVR-Tutorial: Schieberegister]] Trick angewendet und jeweils&lt;br /&gt;
4 LEDs mit Anoden links und 4 mit Kathoden links abgewechselt.&lt;br /&gt;
&lt;br /&gt;
Dadurch treten allerdings 3 Effekte auf: Zum einen liegen die einzelnen Chips&lt;br /&gt;
in den LEDs nicht mehr exakt auf einer Linie, was bei genauerer Betrachtung bzw. &lt;br /&gt;
ohne zusätzlichen Diffusor auffällt.&lt;br /&gt;
Zum anderen muss das jeweilige Vertauschen von Blau und Grün entweder in der&lt;br /&gt;
Verkabelung oder im Code (meine Methode) beachtet werden, genau wie die&lt;br /&gt;
Tatsache, dass dann je 4 LEDs active high und 4 active low sind.&lt;br /&gt;
[[Bild:rotor_scheme.png|framed|right|Schaltplan LEDs+Register]]&lt;br /&gt;
Versorgungs- und Steuerleitungen habe ich im Trägerrohr verlegt.&lt;br /&gt;
Nach dem Funktionstest habe ich die fliegende Konstruktion noch mit einer&lt;br /&gt;
entsprechenden Menge Epoxy vergossen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Controllerplatine ==&lt;br /&gt;
[[Bild:povglobe_scheme.png|thumb|right|Schaltplan Controllerplatine]]&lt;br /&gt;
Die Controllerplatine befindet sich im Gehäuse und ist sehr simpel gehalten,&lt;br /&gt;
sie beinhaltet im wesentlichen den ATMega644 mit ISP-Header und Anschlüssen für die&lt;br /&gt;
Schieberegister, einer Pufferung für die Versorungsspannung und 2 OPAMP-Stufen,&lt;br /&gt;
die mit einer Fotodiode + Schmitt-Trigger den externen Interrupt aktivieren.&lt;br /&gt;
Die Pufferung ist wichtig, da die Schleifkontakte keine saubere Versorgung&lt;br /&gt;
gewährleisten können.&lt;br /&gt;
&lt;br /&gt;
Zu meiner Dektektorschaltung noch ein Hinweis: Am besten vorher am Breadboard&lt;br /&gt;
die Werte prüfen und danach auch am Controller testen ob die Triggerung auf &lt;br /&gt;
steigende oder fallende Flanke besser funktioniert. Ausserdem könnte man noch &lt;br /&gt;
einen kleinen Kondensator parallel zu R9 schalten (Tiefpass).&lt;br /&gt;
&lt;br /&gt;
Layout und der Bestückungsplan (von Kupferseite aus gesehen) finden sich im .tgz.&lt;br /&gt;
Auch die Platine sollte ausgewuchtet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Die Firmware für den [[AVR-GCC]] geschrieben worden.&lt;br /&gt;
Als Buffer für das aktuelle Bild dient das uint8_t globe[80][5][3] Array,&lt;br /&gt;
welches in x-Position (in Drehrichtung), Zeile und Farbindex unterteilt ist. &lt;br /&gt;
Das Byte repräsentiert die 8 vertikalen Bits einer Zeile, ähnlich wie bei einem &lt;br /&gt;
graphischen LCD.&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der Bildwiederholrate ===&lt;br /&gt;
Ich habe den 16bit-Timer-Overflow als Zeitgeber missbraucht, der im Sollfall&lt;br /&gt;
320x (80 x-Werte x4) so schnell auslöst wie die Rotordrehzahl. Die vierfache&lt;br /&gt;
Zählgeschwindigkeit dient dabei der Anpassung der Geschwindigkeit an die&lt;br /&gt;
tatsächliche Drehzahl.&lt;br /&gt;
Bei jedem 4. Timerüberlauf wird dann der entsprechende Längengrad auf die Register geschoben.&lt;br /&gt;
Die [[ISR]] ist natürlich sehr lang, dafür muss aber bei komplexeren Transformationen/Animationen &lt;br /&gt;
nicht auf Laufzeiten geachtet werden. Wichtig dabei: Alle anderen Operationen werden als nicht &lt;br /&gt;
zeitkritisch betrachtet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere ISR wird beim Auftreten des Detektorinterrupts ausgelöst. Diese setzt&lt;br /&gt;
Index und Zählerregister zurück und korrigiert die Wiederholrate anhand des&lt;br /&gt;
tatsächlich erreichten Index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bildkonverter ==&lt;br /&gt;
Um ganze Bilder, wie z.B. die Weltkarte einfach auf den Globus zu bekommen, habe ich&lt;br /&gt;
einen kleinen quick&amp;amp;dirty (!) Bildkonverter mit perl und perl-imagemagick geschrieben, der&lt;br /&gt;
direkt einen passenden Header (PROGMEM) generiert. Das Script befindet sich ebenfalls &lt;br /&gt;
im .tgz und sollte hoffentlich mit perl auch unter Windows funktionieren.&lt;br /&gt;
Ein Bild benötigt etwas über 1,2kB Flash. In der animations.c befindet sich die &lt;br /&gt;
passende Ladefunktion + Beispielaufruf.&lt;br /&gt;
&lt;br /&gt;
Es sei darauf hingewiesen, dass das Programm ungefragt die Zieldateien überschreibt!&lt;br /&gt;
Erwartet wird 80x40pix Bild, am besten als .bmp. &lt;br /&gt;
&lt;br /&gt;
Im Script oben können die Schwellenwerte für die Farben eingestellt werden &lt;br /&gt;
(0-1, Werte &amp;gt;1 blenden die Farbekomplett aus), dazu wird noch ein Bild generiert, um&lt;br /&gt;
diese Werte testen zu können, ohne es live auf dem Globus ausprobieren zu müssen.&lt;br /&gt;
&lt;br /&gt;
Aufruf: img2globe.pl image.bmp &amp;lt;Name des Arrays&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Zur Videoaufnahme: Es ist recht schwer richtige Lichtverhältnisse zu finden, da die Kamera ständig nachregeln will. Beste Erfahrungen habe ich mit sehr viel Licht gemacht. Ausserdem sollte dazu die Drehzahl etwas hochgefahren werden, um schwarze Balken zu vermeiden. &lt;br /&gt;
* Der Atmel ist mal wieder sehr an seiner Grenze. Würde ich nochmal einen Globe bauen, käme vermutlich ein Cortex-M3 rein.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/povglobe.php&lt;br /&gt;
* [http://www.leyanda.de/light/files/povglobe_v10.tgz Source, Schaltpläne, Layout etc.]&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Globe_13_1024.jpg&amp;diff=62523</id>
		<title>Datei:Globe 13 1024.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Globe_13_1024.jpg&amp;diff=62523"/>
		<updated>2011-12-18T14:05:04Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Globe_12_1024.jpg&amp;diff=62522</id>
		<title>Datei:Globe 12 1024.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Globe_12_1024.jpg&amp;diff=62522"/>
		<updated>2011-12-18T14:04:34Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62521</id>
		<title>POV-Display</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62521"/>
		<updated>2011-12-18T14:04:11Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Artikel wird gerade erstellt! Noch nicht editieren.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In diesem Artikel wird die Realisierung eines POV-Displays beschrieben.&lt;br /&gt;
Der besondere Effekt eines solchen Displays liegt darin, dass das Bild&lt;br /&gt;
erst durch die Trägheit des Auges entsteht. Bei Bauarten wie dieser&lt;br /&gt;
kann damit ein Bild mehr oder weniger schwebend in der Luft erzeugt werden.&lt;br /&gt;
Die Technik wird in verschiedensten Varianten eingesetzt, beispielhaft&lt;br /&gt;
wird hier ein Globus mit 40 RGB-[[LED]]s gezeigt.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll vor allem Anregungungen zum Aufbau, zu speziellen &lt;br /&gt;
Details und Bauteilen bieten wie auch als Codegrundlage dienen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:globe_11_1024.jpg|right|300px]]&lt;br /&gt;
&lt;br /&gt;
Demoanwendung mit einigen Animationen:&lt;br /&gt;
http://youtu.be/ziD_1fVdDWQ&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 40 RGB LEDs, Bildfläche 80x40 Pixel mit 7 Farben (+ echtem Alphachannel)&lt;br /&gt;
* Globus mit 20cm Durchmesser&lt;br /&gt;
* ATMega644&lt;br /&gt;
* selbstregelnde Refresh-Rate über optischen Sensor&lt;br /&gt;
* ca. 1/2 ASCII-Text Support&lt;br /&gt;
* Bildkonverter&lt;br /&gt;
&lt;br /&gt;
== Mechanische Konstruktion ==&lt;br /&gt;
Es gibt neben dem hier beschriebenen Rotor auch noch weitere Techniken wie &lt;br /&gt;
geschlitzte Abdeckungen.&lt;br /&gt;
=== Rotor ===&lt;br /&gt;
[[Bild:globe_04_1024.jpg|thumb|right|Trägerkonstruktion aus Alu]]&lt;br /&gt;
Grundsätzlich sind 3 Arten von Rotoren typisch: flach, zylindrisch und kugelförmig.&lt;br /&gt;
Zylindrische und flache Rotoren sind recht simpel zu bauen, wobei bei letzterem natuerlich&lt;br /&gt;
noch der Softwareaufwand für die Umrechnung kartesisch-&amp;gt;polar hinzukommt.&lt;br /&gt;
Kugelförmige Rotoren haben das Problem, dass es unter einer gewissen Groesse kaum möglich&lt;br /&gt;
ist, Treiber und LEDs auf eine Platine zu setzen. Mein Rotor war mit d=20cm dafür zu klein, &lt;br /&gt;
deshalb kommt hier eine etwas wüste, fliegende Konstruktion zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Bei allen Rotoren ist natürlich auf eine mechanisch stabile Auslegung zu achten, besonders&lt;br /&gt;
bei größeren Durchmessern. Ein Rotor mit einem Durchmesser von 50cm hätte bei 25Hz bereits &lt;br /&gt;
eine Zentrifugalbeschleunigung von über 628g im Rand!&lt;br /&gt;
Dementsprechend wichtig ist auch das genaue Auswuchten des fertigen Rotors.&lt;br /&gt;
&lt;br /&gt;
=== Antrieb ===&lt;br /&gt;
[[Bild:globe_12_1024.jpg|thumb|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Am besten würde sich natürlich ein Antrieb eignen, der seine Drehzahl sehr genau&lt;br /&gt;
halten kann, was aber zumindest eine entsprechende Regelstrecke voraussetzt. &lt;br /&gt;
&lt;br /&gt;
Als einfache Alternative habe ich deshalb einen Speed 700BB 12V verwendet, der&lt;br /&gt;
für meinen Rotor ausreicht wenn er aktiv gekühlt wird.&lt;br /&gt;
Ein guter Richtwert für die Drehzahl sind etwa 20-25Hz.&lt;br /&gt;
Die statische Steuerung erfolgt über eine unspektakuläre [[PWM]] aus einem ATTiny45&lt;br /&gt;
und grossem [[FET]]. Da die Drehzahl bei dieser Methode nicht konstant ist,&lt;br /&gt;
wird eine Regelung der Bildwiederholrate notwendig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
[[Bild:globe_13_1024.jpg|thumb|right|Simpler Schleifkontakt]]&lt;br /&gt;
Die Stromversorgung des Rotors lässt sich am einfachsten über Schleifkontakte&lt;br /&gt;
bewerkstelligen. Wenn man auf eine Spannungsregelung auf der Controllerplatine&lt;br /&gt;
verzichten will muss die Spannung dort unbedingt gut gepuffert werden. Dazu mehr&lt;br /&gt;
im entsprechenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
Ich habe 2 Schleifringe aus Messingrohr mit Epoxy aufgeklebt, gross genug&lt;br /&gt;
um darunter das Kabel des darunterliegenden Schleifrings verlegen zu können.&lt;br /&gt;
Die schwarze Kunststoffplatte drückt die 2 Schleifkontakte dagegen.&lt;br /&gt;
Man könnte natürlich kleinere Ringe nehmen und das 2. Kabel im Trägerrohr&lt;br /&gt;
verlegen.&lt;br /&gt;
&lt;br /&gt;
Eine verschleiß- und geräuschfreie Alternative wären Induktionsspulen.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
Das Gehäuse ist bei mir reines Mittel zum Zweck (wie man vermutlich sieht).&lt;br /&gt;
Ich habe dicke Spanplatten verbaut, um es verwindungssteif und gleichzeitig&lt;br /&gt;
schwer zu machen, da ein 100%iges Auswuchten fast unmoeglich ist.&lt;br /&gt;
&lt;br /&gt;
== LEDs und Treiber ==&lt;br /&gt;
[[Bild:globe_06_1024.jpg|thumb|right|aussen LEDs, innen Schieberegister]]&lt;br /&gt;
Als LEDs kamen die verbreiteten RGB-LEDs der Bauform 5050 zum Einsatz, die sich&lt;br /&gt;
sehr gut in den Punkten Helligkeit, Abstrahlwinkel, Farbmischung und&lt;br /&gt;
Ansteuerbarkeit (keine gemeinsame Anode/Kathode) eignen.&lt;br /&gt;
&lt;br /&gt;
Um die LEDs gleichmäßig aufzukleben habe ich einen Papierstreifen zugeschnitten,&lt;br /&gt;
mit Bleistift Markierungen gesetzt und diesen mit Sekundenkleber (getränkt) auf&lt;br /&gt;
den Ring aufgeklebt. Die LEDs wurden dann mit etwas Epoxy darauf geklebt.&lt;br /&gt;
&lt;br /&gt;
Getrieben wird alles mit 15 Schieberegistern 74HC595, diese sind pro Farbe&lt;br /&gt;
auf jeweils 5 in Serie aufgeteilt. Siehe dazu den -&amp;gt; Schaltplan für eine &lt;br /&gt;
&amp;quot;Stufe&amp;quot; aus 8 LEDs, dort sind auch die entsprechenden Ausgangspins am &lt;br /&gt;
Atmel angegeben.&lt;br /&gt;
[[Bild:globe_12_1024.jpg|framed|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Da die Schieberegister auf Vcc und GND nur 70mA aushalten, habe ich den auch&lt;br /&gt;
schon im [[AVR-Tutorial: Schieberegister]] Trick angewendet und jeweils&lt;br /&gt;
4 LEDs mit Anoden links und 4 mit Kathoden links abgewechselt.&lt;br /&gt;
&lt;br /&gt;
Dadurch treten allerdings 3 Effekte auf: Zum einen liegen die einzelnen Chips&lt;br /&gt;
in den LEDs nicht mehr exakt auf einer Linie, was bei genauerer Betrachtung bzw. &lt;br /&gt;
ohne zusätzlichen Diffusor auffällt.&lt;br /&gt;
Zum anderen muss das jeweilige Vertauschen von Blau und Grün entweder in der&lt;br /&gt;
Verkabelung oder im Code (meine Methode) beachtet werden, genau wie die&lt;br /&gt;
Tatsache, dass dann je 4 LEDs active high und 4 active low sind.&lt;br /&gt;
[[Bild:rotor_scheme.png|framed|right|Schaltplan LEDs+Register]]&lt;br /&gt;
Versorgungs- und Steuerleitungen habe ich im Trägerrohr verlegt.&lt;br /&gt;
Nach dem Funktionstest habe ich die fliegende Konstruktion noch mit einer&lt;br /&gt;
entsprechenden Menge Epoxy vergossen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Controllerplatine ==&lt;br /&gt;
[[Bild:povglobe_scheme.png|thumb|right|Schaltplan Controllerplatine]]&lt;br /&gt;
Die Controllerplatine befindet sich im Gehäuse und ist sehr simpel gehalten,&lt;br /&gt;
sie beinhaltet im wesentlichen den ATMega644 mit ISP-Header und Anschlüssen für die&lt;br /&gt;
Schieberegister, einer Pufferung für die Versorungsspannung und 2 OPAMP-Stufen,&lt;br /&gt;
die mit einer Fotodiode + Schmitt-Trigger den externen Interrupt aktivieren.&lt;br /&gt;
Die Pufferung ist wichtig, da die Schleifkontakte keine saubere Versorgung&lt;br /&gt;
gewährleisten können.&lt;br /&gt;
&lt;br /&gt;
Zu meiner Dektektorschaltung noch ein Hinweis: Am besten vorher am Breadboard&lt;br /&gt;
die Werte prüfen und danach auch am Controller testen ob die Triggerung auf &lt;br /&gt;
steigende oder fallende Flanke besser funktioniert. Ausserdem könnte man noch &lt;br /&gt;
einen kleinen Kondensator parallel zu R9 schalten (Tiefpass).&lt;br /&gt;
&lt;br /&gt;
Layout und der Bestückungsplan (von Kupferseite aus gesehen) finden sich im .tgz.&lt;br /&gt;
Auch die Platine sollte ausgewuchtet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Die Firmware für den [[AVR-GCC]] geschrieben worden.&lt;br /&gt;
Als Buffer für das aktuelle Bild dient das uint8_t globe[80][5][3] Array,&lt;br /&gt;
welches in x-Position (in Drehrichtung), Zeile und Farbindex unterteilt ist. &lt;br /&gt;
Das Byte repräsentiert die 8 vertikalen Bits einer Zeile, ähnlich wie bei einem &lt;br /&gt;
graphischen LCD.&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der Bildwiederholrate ===&lt;br /&gt;
Ich habe den 16bit-Timer-Overflow als Zeitgeber missbraucht, der im Sollfall&lt;br /&gt;
320x (80 x-Werte x4) so schnell auslöst wie die Rotordrehzahl. Die vierfache&lt;br /&gt;
Zählgeschwindigkeit dient dabei der Anpassung der Geschwindigkeit an die&lt;br /&gt;
tatsächliche Drehzahl.&lt;br /&gt;
Bei jedem 4. Timerüberlauf wird dann der entsprechende Längengrad auf die Register geschoben.&lt;br /&gt;
Die [[ISR]] ist natürlich sehr lang, dafür muss aber bei komplexeren Transformationen/Animationen &lt;br /&gt;
nicht auf Laufzeiten geachtet werden. Wichtig dabei: Alle anderen Operationen werden als nicht &lt;br /&gt;
zeitkritisch betrachtet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere ISR wird beim Auftreten des Detektorinterrupts ausgelöst. Diese setzt&lt;br /&gt;
Index und Zählerregister zurück und korrigiert die Wiederholrate anhand des&lt;br /&gt;
tatsächlich erreichten Index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bildkonverter ==&lt;br /&gt;
Um ganze Bilder, wie z.B. die Weltkarte einfach auf den Globus zu bekommen, habe ich&lt;br /&gt;
einen kleinen quick&amp;amp;dirty (!) Bildkonverter mit perl und perl-imagemagick geschrieben, der&lt;br /&gt;
direkt einen passenden Header (PROGMEM) generiert. Das Script befindet sich ebenfalls &lt;br /&gt;
im .tgz und sollte hoffentlich mit perl auch unter Windows funktionieren.&lt;br /&gt;
Ein Bild benötigt etwas über 1,2kB Flash. In der animations.c befindet sich die &lt;br /&gt;
passende Ladefunktion + Beispielaufruf.&lt;br /&gt;
&lt;br /&gt;
Es sei darauf hingewiesen, dass das Programm ungefragt die Zieldateien überschreibt!&lt;br /&gt;
Erwartet wird 80x40pix Bild, am besten als .bmp. &lt;br /&gt;
&lt;br /&gt;
Im Script oben können die Schwellenwerte für die Farben eingestellt werden &lt;br /&gt;
(0-1, Werte &amp;gt;1 blenden die Farbekomplett aus), dazu wird noch ein Bild generiert, um&lt;br /&gt;
diese Werte testen zu können, ohne es live auf dem Globus ausprobieren zu müssen.&lt;br /&gt;
&lt;br /&gt;
Aufruf: img2globe.pl image.bmp &amp;lt;Name des Arrays&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Zur Videoaufnahme: Es ist recht schwer richtige Lichtverhältnisse zu finden, da die Kamera ständig nachregeln will. Beste Erfahrungen habe ich mit sehr viel Licht gemacht. Ausserdem sollte dazu die Drehzahl etwas hochgefahren werden, um schwarze Balken zu vermeiden. &lt;br /&gt;
* Der Atmel ist mal wieder sehr an seiner Grenze. Würde ich nochmal einen Globe bauen, käme vermutlich ein Cortex-M3 rein.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/povglobe.php&lt;br /&gt;
* [http://www.leyanda.de/light/files/povglobe_v10.tgz Source, Schaltpläne, Layout etc.]&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Globe_04_1024.jpg&amp;diff=62520</id>
		<title>Datei:Globe 04 1024.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Globe_04_1024.jpg&amp;diff=62520"/>
		<updated>2011-12-18T14:02:51Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62519</id>
		<title>POV-Display</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62519"/>
		<updated>2011-12-18T14:02:27Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Artikel wird gerade erstellt! Noch nicht editieren.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In diesem Artikel wird die Realisierung eines POV-Displays beschrieben.&lt;br /&gt;
Der besondere Effekt eines solchen Displays liegt darin, dass das Bild&lt;br /&gt;
erst durch die Trägheit des Auges entsteht. Bei Bauarten wie dieser&lt;br /&gt;
kann damit ein Bild mehr oder weniger schwebend in der Luft erzeugt werden.&lt;br /&gt;
Die Technik wird in verschiedensten Varianten eingesetzt, beispielhaft&lt;br /&gt;
wird hier ein Globus mit 40 RGB-[[LED]]s gezeigt.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll vor allem Anregungungen zum Aufbau, zu speziellen &lt;br /&gt;
Details und Bauteilen bieten wie auch als Codegrundlage dienen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:globe_11_1024.jpg|right|300px]]&lt;br /&gt;
&lt;br /&gt;
Demoanwendung mit einigen Animationen:&lt;br /&gt;
http://youtu.be/ziD_1fVdDWQ&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 40 RGB LEDs, Bildfläche 80x40 Pixel mit 7 Farben (+ echtem Alphachannel)&lt;br /&gt;
* Globus mit 20cm Durchmesser&lt;br /&gt;
* ATMega644&lt;br /&gt;
* selbstregelnde Refresh-Rate über optischen Sensor&lt;br /&gt;
* ca. 1/2 ASCII-Text Support&lt;br /&gt;
* Bildkonverter&lt;br /&gt;
&lt;br /&gt;
== Mechanische Konstruktion ==&lt;br /&gt;
Es gibt neben dem hier beschriebenen Rotor auch noch weitere Techniken wie &lt;br /&gt;
geschlitzte Abdeckungen.&lt;br /&gt;
=== Rotor ===&lt;br /&gt;
[[Bild:globe_04_1024.jpg|framed|right|300px|Trägerkonstruktion aus Alu]]&lt;br /&gt;
Grundsätzlich sind 3 Arten von Rotoren typisch: flach, zylindrisch und kugelförmig.&lt;br /&gt;
Zylindrische und flache Rotoren sind recht simpel zu bauen, wobei bei letzterem natuerlich&lt;br /&gt;
noch der Softwareaufwand für die Umrechnung kartesisch-&amp;gt;polar hinzukommt.&lt;br /&gt;
Kugelförmige Rotoren haben das Problem, dass es unter einer gewissen Groesse kaum möglich&lt;br /&gt;
ist, Treiber und LEDs auf eine Platine zu setzen. Mein Rotor war mit d=20cm dafür zu klein, &lt;br /&gt;
deshalb kommt hier eine etwas wüste, fliegende Konstruktion zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Bei allen Rotoren ist natürlich auf eine mechanisch stabile Auslegung zu achten, besonders&lt;br /&gt;
bei größeren Durchmessern. Ein Rotor mit einem Durchmesser von 50cm hätte bei 25Hz bereits &lt;br /&gt;
eine Zentrifugalbeschleunigung von über 628g im Rand!&lt;br /&gt;
Dementsprechend wichtig ist auch das genaue Auswuchten des fertigen Rotors.&lt;br /&gt;
&lt;br /&gt;
=== Antrieb ===&lt;br /&gt;
[[Bild:globe_12_1024.jpg|framed|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Am besten würde sich natürlich ein Antrieb eignen, der seine Drehzahl sehr genau&lt;br /&gt;
halten kann, was aber zumindest eine entsprechende Regelstrecke voraussetzt. &lt;br /&gt;
&lt;br /&gt;
Als einfache Alternative habe ich deshalb einen Speed 700BB 12V verwendet, der&lt;br /&gt;
für meinen Rotor ausreicht wenn er aktiv gekühlt wird.&lt;br /&gt;
Ein guter Richtwert für die Drehzahl sind etwa 20-25Hz.&lt;br /&gt;
Die statische Steuerung erfolgt über eine unspektakuläre [[PWM]] aus einem ATTiny45&lt;br /&gt;
und grossem [[FET]]. Da die Drehzahl bei dieser Methode nicht konstant ist,&lt;br /&gt;
wird eine Regelung der Bildwiederholrate notwendig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
[[Bild:globe_13_1024.jpg|framed|right|Simpler Schleifkontakt]]&lt;br /&gt;
Die Stromversorgung des Rotors lässt sich am einfachsten über Schleifkontakte&lt;br /&gt;
bewerkstelligen. Wenn man auf eine Spannungsregelung auf der Controllerplatine&lt;br /&gt;
verzichten will muss die Spannung dort unbedingt gut gepuffert werden. Dazu mehr&lt;br /&gt;
im entsprechenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
Ich habe 2 Schleifringe aus Messingrohr mit Epoxy aufgeklebt, gross genug&lt;br /&gt;
um darunter das Kabel des darunterliegenden Schleifrings verlegen zu können.&lt;br /&gt;
Die schwarze Kunststoffplatte drückt die 2 Schleifkontakte dagegen.&lt;br /&gt;
Man könnte natürlich kleinere Ringe nehmen und das 2. Kabel im Trägerrohr&lt;br /&gt;
verlegen.&lt;br /&gt;
&lt;br /&gt;
Eine verschleiß- und geräuschfreie Alternative wären Induktionsspulen.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
Das Gehäuse ist bei mir reines Mittel zum Zweck (wie man vermutlich sieht).&lt;br /&gt;
Ich habe dicke Spanplatten verbaut, um es verwindungssteif und gleichzeitig&lt;br /&gt;
schwer zu machen, da ein 100%iges Auswuchten fast unmoeglich ist.&lt;br /&gt;
&lt;br /&gt;
== LEDs und Treiber ==&lt;br /&gt;
[[Bild:globe_06_1024.jpg|framed|right|aussen LEDs, innen Schieberegister]]&lt;br /&gt;
Als LEDs kamen die verbreiteten RGB-LEDs der Bauform 5050 zum Einsatz, die sich&lt;br /&gt;
sehr gut in den Punkten Helligkeit, Abstrahlwinkel, Farbmischung und&lt;br /&gt;
Ansteuerbarkeit (keine gemeinsame Anode/Kathode) eignen.&lt;br /&gt;
&lt;br /&gt;
Um die LEDs gleichmäßig aufzukleben habe ich einen Papierstreifen zugeschnitten,&lt;br /&gt;
mit Bleistift Markierungen gesetzt und diesen mit Sekundenkleber (getränkt) auf&lt;br /&gt;
den Ring aufgeklebt. Die LEDs wurden dann mit etwas Epoxy darauf geklebt.&lt;br /&gt;
&lt;br /&gt;
Getrieben wird alles mit 15 Schieberegistern 74HC595, diese sind pro Farbe&lt;br /&gt;
auf jeweils 5 in Serie aufgeteilt. Siehe dazu den -&amp;gt; Schaltplan für eine &lt;br /&gt;
&amp;quot;Stufe&amp;quot; aus 8 LEDs, dort sind auch die entsprechenden Ausgangspins am &lt;br /&gt;
Atmel angegeben.&lt;br /&gt;
[[Bild:globe_12_1024.jpg|framed|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Da die Schieberegister auf Vcc und GND nur 70mA aushalten, habe ich den auch&lt;br /&gt;
schon im [[AVR-Tutorial: Schieberegister]] Trick angewendet und jeweils&lt;br /&gt;
4 LEDs mit Anoden links und 4 mit Kathoden links abgewechselt.&lt;br /&gt;
&lt;br /&gt;
Dadurch treten allerdings 3 Effekte auf: Zum einen liegen die einzelnen Chips&lt;br /&gt;
in den LEDs nicht mehr exakt auf einer Linie, was bei genauerer Betrachtung bzw. &lt;br /&gt;
ohne zusätzlichen Diffusor auffällt.&lt;br /&gt;
Zum anderen muss das jeweilige Vertauschen von Blau und Grün entweder in der&lt;br /&gt;
Verkabelung oder im Code (meine Methode) beachtet werden, genau wie die&lt;br /&gt;
Tatsache, dass dann je 4 LEDs active high und 4 active low sind.&lt;br /&gt;
[[Bild:rotor_scheme.png|framed|right|Schaltplan LEDs+Register]]&lt;br /&gt;
Versorgungs- und Steuerleitungen habe ich im Trägerrohr verlegt.&lt;br /&gt;
Nach dem Funktionstest habe ich die fliegende Konstruktion noch mit einer&lt;br /&gt;
entsprechenden Menge Epoxy vergossen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Controllerplatine ==&lt;br /&gt;
[[Bild:povglobe_scheme.png|framed|right|Schaltplan Controllerplatine]]&lt;br /&gt;
Die Controllerplatine befindet sich im Gehäuse und ist sehr simpel gehalten,&lt;br /&gt;
sie beinhaltet im wesentlichen den ATMega644 mit ISP-Header und Anschlüssen für die&lt;br /&gt;
Schieberegister, einer Pufferung für die Versorungsspannung und 2 OPAMP-Stufen,&lt;br /&gt;
die mit einer Fotodiode + Schmitt-Trigger den externen Interrupt aktivieren.&lt;br /&gt;
Die Pufferung ist wichtig, da die Schleifkontakte keine saubere Versorgung&lt;br /&gt;
gewährleisten können.&lt;br /&gt;
&lt;br /&gt;
Zu meiner Dektektorschaltung noch ein Hinweis: Am besten vorher am Breadboard&lt;br /&gt;
die Werte prüfen und danach auch am Controller testen ob die Triggerung auf &lt;br /&gt;
steigende oder fallende Flanke besser funktioniert. Ausserdem könnte man noch &lt;br /&gt;
einen kleinen Kondensator parallel zu R9 schalten (Tiefpass).&lt;br /&gt;
&lt;br /&gt;
Layout und der Bestückungsplan (von Kupferseite aus gesehen) finden sich im .tgz.&lt;br /&gt;
Auch die Platine sollte ausgewuchtet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Die Firmware für den [[AVR-GCC]] geschrieben worden.&lt;br /&gt;
Als Buffer für das aktuelle Bild dient das uint8_t globe[80][5][3] Array,&lt;br /&gt;
welches in x-Position (in Drehrichtung), Zeile und Farbindex unterteilt ist. &lt;br /&gt;
Das Byte repräsentiert die 8 vertikalen Bits einer Zeile, ähnlich wie bei einem &lt;br /&gt;
graphischen LCD.&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der Bildwiederholrate ===&lt;br /&gt;
Ich habe den 16bit-Timer-Overflow als Zeitgeber missbraucht, der im Sollfall&lt;br /&gt;
320x (80 x-Werte x4) so schnell auslöst wie die Rotordrehzahl. Die vierfache&lt;br /&gt;
Zählgeschwindigkeit dient dabei der Anpassung der Geschwindigkeit an die&lt;br /&gt;
tatsächliche Drehzahl.&lt;br /&gt;
Bei jedem 4. Timerüberlauf wird dann der entsprechende Längengrad auf die Register geschoben.&lt;br /&gt;
Die [[ISR]] ist natürlich sehr lang, dafür muss aber bei komplexeren Transformationen/Animationen &lt;br /&gt;
nicht auf Laufzeiten geachtet werden. Wichtig dabei: Alle anderen Operationen werden als nicht &lt;br /&gt;
zeitkritisch betrachtet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere ISR wird beim Auftreten des Detektorinterrupts ausgelöst. Diese setzt&lt;br /&gt;
Index und Zählerregister zurück und korrigiert die Wiederholrate anhand des&lt;br /&gt;
tatsächlich erreichten Index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bildkonverter ==&lt;br /&gt;
Um ganze Bilder, wie z.B. die Weltkarte einfach auf den Globus zu bekommen, habe ich&lt;br /&gt;
einen kleinen quick&amp;amp;dirty (!) Bildkonverter mit perl und perl-imagemagick geschrieben, der&lt;br /&gt;
direkt einen passenden Header (PROGMEM) generiert. Das Script befindet sich ebenfalls &lt;br /&gt;
im .tgz und sollte hoffentlich mit perl auch unter Windows funktionieren.&lt;br /&gt;
Ein Bild benötigt etwas über 1,2kB Flash. In der animations.c befindet sich die &lt;br /&gt;
passende Ladefunktion + Beispielaufruf.&lt;br /&gt;
&lt;br /&gt;
Es sei darauf hingewiesen, dass das Programm ungefragt die Zieldateien überschreibt!&lt;br /&gt;
Erwartet wird 80x40pix Bild, am besten als .bmp. &lt;br /&gt;
&lt;br /&gt;
Im Script oben können die Schwellenwerte für die Farben eingestellt werden &lt;br /&gt;
(0-1, Werte &amp;gt;1 blenden die Farbekomplett aus), dazu wird noch ein Bild generiert, um&lt;br /&gt;
diese Werte testen zu können, ohne es live auf dem Globus ausprobieren zu müssen.&lt;br /&gt;
&lt;br /&gt;
Aufruf: img2globe.pl image.bmp &amp;lt;Name des Arrays&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Zur Videoaufnahme: Es ist recht schwer richtige Lichtverhältnisse zu finden, da die Kamera ständig nachregeln will. Beste Erfahrungen habe ich mit sehr viel Licht gemacht. Ausserdem sollte dazu die Drehzahl etwas hochgefahren werden, um schwarze Balken zu vermeiden. &lt;br /&gt;
* Der Atmel ist mal wieder sehr an seiner Grenze. Würde ich nochmal einen Globe bauen, käme vermutlich ein Cortex-M3 rein.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/povglobe.php&lt;br /&gt;
* [http://www.leyanda.de/light/files/povglobe_v10.tgz Source, Schaltpläne, Layout etc.]&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Globe_11_1024.jpg&amp;diff=62518</id>
		<title>Datei:Globe 11 1024.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Globe_11_1024.jpg&amp;diff=62518"/>
		<updated>2011-12-18T14:01:36Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62517</id>
		<title>POV-Display</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=POV-Display&amp;diff=62517"/>
		<updated>2011-12-18T14:00:59Z</updated>

		<summary type="html">&lt;p&gt;Fornax: Neuerstellung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Artikel wird gerade erstellt! Noch nicht editieren.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In diesem Artikel wird die Realisierung eines POV-Displays beschrieben.&lt;br /&gt;
Der besondere Effekt eines solchen Displays liegt darin, dass das Bild&lt;br /&gt;
erst durch die Trägheit des Auges entsteht. Bei Bauarten wie dieser&lt;br /&gt;
kann damit ein Bild mehr oder weniger schwebend in der Luft erzeugt werden.&lt;br /&gt;
Die Technik wird in verschiedensten Varianten eingesetzt, beispielhaft&lt;br /&gt;
wird hier ein Globus mit 40 RGB-[[LED]]s gezeigt.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll vor allem Anregungungen zum Aufbau, zu speziellen &lt;br /&gt;
Details und Bauteilen bieten wie auch als Codegrundlage dienen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:globe_11_1024.jpg|right|300px]]&lt;br /&gt;
&lt;br /&gt;
Demoanwendung mit einigen Animationen:&lt;br /&gt;
http://youtu.be/ziD_1fVdDWQ&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 40 RGB LEDs, Bildfläche 80x40 Pixel mit 7 Farben (+ echtem Alphachannel)&lt;br /&gt;
* Globus mit 20cm Durchmesser&lt;br /&gt;
* ATMega644&lt;br /&gt;
* selbstregelnde Refresh-Rate über optischen Sensor&lt;br /&gt;
* ca. 1/2 ASCII-Text Support&lt;br /&gt;
* Bildkonverter&lt;br /&gt;
&lt;br /&gt;
== Mechanische Konstruktion ==&lt;br /&gt;
Es gibt neben dem hier beschriebenen Rotor auch noch weitere Techniken wie &lt;br /&gt;
geschlitzte Abdeckungen.&lt;br /&gt;
=== Rotor ===&lt;br /&gt;
[[Bild:globe_11_1024.jpg|framed|right|Trägerkonstruktion aus Alu]]&lt;br /&gt;
Grundsätzlich sind 3 Arten von Rotoren typisch: flach, zylindrisch und kugelförmig.&lt;br /&gt;
Zylindrische und flache Rotoren sind recht simpel zu bauen, wobei bei letzterem natuerlich&lt;br /&gt;
noch der Softwareaufwand für die Umrechnung kartesisch-&amp;gt;polar hinzukommt.&lt;br /&gt;
Kugelförmige Rotoren haben das Problem, dass es unter einer gewissen Groesse kaum möglich&lt;br /&gt;
ist, Treiber und LEDs auf eine Platine zu setzen. Mein Rotor war mit d=20cm dafür zu klein, &lt;br /&gt;
deshalb kommt hier eine etwas wüste, fliegende Konstruktion zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Bei allen Rotoren ist natürlich auf eine mechanisch stabile Auslegung zu achten, besonders&lt;br /&gt;
bei größeren Durchmessern. Ein Rotor mit einem Durchmesser von 50cm hätte bei 25Hz bereits &lt;br /&gt;
eine Zentrifugalbeschleunigung von über 628g im Rand!&lt;br /&gt;
Dementsprechend wichtig ist auch das genaue Auswuchten des fertigen Rotors.&lt;br /&gt;
&lt;br /&gt;
=== Antrieb ===&lt;br /&gt;
[[Bild:globe_12_1024.jpg|framed|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Am besten würde sich natürlich ein Antrieb eignen, der seine Drehzahl sehr genau&lt;br /&gt;
halten kann, was aber zumindest eine entsprechende Regelstrecke voraussetzt. &lt;br /&gt;
&lt;br /&gt;
Als einfache Alternative habe ich deshalb einen Speed 700BB 12V verwendet, der&lt;br /&gt;
für meinen Rotor ausreicht wenn er aktiv gekühlt wird.&lt;br /&gt;
Ein guter Richtwert für die Drehzahl sind etwa 20-25Hz.&lt;br /&gt;
Die statische Steuerung erfolgt über eine unspektakuläre [[PWM]] aus einem ATTiny45&lt;br /&gt;
und grossem [[FET]]. Da die Drehzahl bei dieser Methode nicht konstant ist,&lt;br /&gt;
wird eine Regelung der Bildwiederholrate notwendig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
[[Bild:globe_13_1024.jpg|framed|right|Simpler Schleifkontakt]]&lt;br /&gt;
Die Stromversorgung des Rotors lässt sich am einfachsten über Schleifkontakte&lt;br /&gt;
bewerkstelligen. Wenn man auf eine Spannungsregelung auf der Controllerplatine&lt;br /&gt;
verzichten will muss die Spannung dort unbedingt gut gepuffert werden. Dazu mehr&lt;br /&gt;
im entsprechenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
Ich habe 2 Schleifringe aus Messingrohr mit Epoxy aufgeklebt, gross genug&lt;br /&gt;
um darunter das Kabel des darunterliegenden Schleifrings verlegen zu können.&lt;br /&gt;
Die schwarze Kunststoffplatte drückt die 2 Schleifkontakte dagegen.&lt;br /&gt;
Man könnte natürlich kleinere Ringe nehmen und das 2. Kabel im Trägerrohr&lt;br /&gt;
verlegen.&lt;br /&gt;
&lt;br /&gt;
Eine verschleiß- und geräuschfreie Alternative wären Induktionsspulen.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
Das Gehäuse ist bei mir reines Mittel zum Zweck (wie man vermutlich sieht).&lt;br /&gt;
Ich habe dicke Spanplatten verbaut, um es verwindungssteif und gleichzeitig&lt;br /&gt;
schwer zu machen, da ein 100%iges Auswuchten fast unmoeglich ist.&lt;br /&gt;
&lt;br /&gt;
== LEDs und Treiber ==&lt;br /&gt;
[[Bild:globe_06_1024.jpg|framed|right|aussen LEDs, innen Schieberegister]]&lt;br /&gt;
Als LEDs kamen die verbreiteten RGB-LEDs der Bauform 5050 zum Einsatz, die sich&lt;br /&gt;
sehr gut in den Punkten Helligkeit, Abstrahlwinkel, Farbmischung und&lt;br /&gt;
Ansteuerbarkeit (keine gemeinsame Anode/Kathode) eignen.&lt;br /&gt;
&lt;br /&gt;
Um die LEDs gleichmäßig aufzukleben habe ich einen Papierstreifen zugeschnitten,&lt;br /&gt;
mit Bleistift Markierungen gesetzt und diesen mit Sekundenkleber (getränkt) auf&lt;br /&gt;
den Ring aufgeklebt. Die LEDs wurden dann mit etwas Epoxy darauf geklebt.&lt;br /&gt;
&lt;br /&gt;
Getrieben wird alles mit 15 Schieberegistern 74HC595, diese sind pro Farbe&lt;br /&gt;
auf jeweils 5 in Serie aufgeteilt. Siehe dazu den -&amp;gt; Schaltplan für eine &lt;br /&gt;
&amp;quot;Stufe&amp;quot; aus 8 LEDs, dort sind auch die entsprechenden Ausgangspins am &lt;br /&gt;
Atmel angegeben.&lt;br /&gt;
[[Bild:globe_12_1024.jpg|framed|right|Innenaufnahme Gehäuse]]&lt;br /&gt;
Da die Schieberegister auf Vcc und GND nur 70mA aushalten, habe ich den auch&lt;br /&gt;
schon im [[AVR-Tutorial: Schieberegister]] Trick angewendet und jeweils&lt;br /&gt;
4 LEDs mit Anoden links und 4 mit Kathoden links abgewechselt.&lt;br /&gt;
&lt;br /&gt;
Dadurch treten allerdings 3 Effekte auf: Zum einen liegen die einzelnen Chips&lt;br /&gt;
in den LEDs nicht mehr exakt auf einer Linie, was bei genauerer Betrachtung bzw. &lt;br /&gt;
ohne zusätzlichen Diffusor auffällt.&lt;br /&gt;
Zum anderen muss das jeweilige Vertauschen von Blau und Grün entweder in der&lt;br /&gt;
Verkabelung oder im Code (meine Methode) beachtet werden, genau wie die&lt;br /&gt;
Tatsache, dass dann je 4 LEDs active high und 4 active low sind.&lt;br /&gt;
[[Bild:rotor_scheme.png|framed|right|Schaltplan LEDs+Register]]&lt;br /&gt;
Versorgungs- und Steuerleitungen habe ich im Trägerrohr verlegt.&lt;br /&gt;
Nach dem Funktionstest habe ich die fliegende Konstruktion noch mit einer&lt;br /&gt;
entsprechenden Menge Epoxy vergossen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Controllerplatine ==&lt;br /&gt;
[[Bild:povglobe_scheme.png|framed|right|Schaltplan Controllerplatine]]&lt;br /&gt;
Die Controllerplatine befindet sich im Gehäuse und ist sehr simpel gehalten,&lt;br /&gt;
sie beinhaltet im wesentlichen den ATMega644 mit ISP-Header und Anschlüssen für die&lt;br /&gt;
Schieberegister, einer Pufferung für die Versorungsspannung und 2 OPAMP-Stufen,&lt;br /&gt;
die mit einer Fotodiode + Schmitt-Trigger den externen Interrupt aktivieren.&lt;br /&gt;
Die Pufferung ist wichtig, da die Schleifkontakte keine saubere Versorgung&lt;br /&gt;
gewährleisten können.&lt;br /&gt;
&lt;br /&gt;
Zu meiner Dektektorschaltung noch ein Hinweis: Am besten vorher am Breadboard&lt;br /&gt;
die Werte prüfen und danach auch am Controller testen ob die Triggerung auf &lt;br /&gt;
steigende oder fallende Flanke besser funktioniert. Ausserdem könnte man noch &lt;br /&gt;
einen kleinen Kondensator parallel zu R9 schalten (Tiefpass).&lt;br /&gt;
&lt;br /&gt;
Layout und der Bestückungsplan (von Kupferseite aus gesehen) finden sich im .tgz.&lt;br /&gt;
Auch die Platine sollte ausgewuchtet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Die Firmware für den [[AVR-GCC]] geschrieben worden.&lt;br /&gt;
Als Buffer für das aktuelle Bild dient das uint8_t globe[80][5][3] Array,&lt;br /&gt;
welches in x-Position (in Drehrichtung), Zeile und Farbindex unterteilt ist. &lt;br /&gt;
Das Byte repräsentiert die 8 vertikalen Bits einer Zeile, ähnlich wie bei einem &lt;br /&gt;
graphischen LCD.&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der Bildwiederholrate ===&lt;br /&gt;
Ich habe den 16bit-Timer-Overflow als Zeitgeber missbraucht, der im Sollfall&lt;br /&gt;
320x (80 x-Werte x4) so schnell auslöst wie die Rotordrehzahl. Die vierfache&lt;br /&gt;
Zählgeschwindigkeit dient dabei der Anpassung der Geschwindigkeit an die&lt;br /&gt;
tatsächliche Drehzahl.&lt;br /&gt;
Bei jedem 4. Timerüberlauf wird dann der entsprechende Längengrad auf die Register geschoben.&lt;br /&gt;
Die [[ISR]] ist natürlich sehr lang, dafür muss aber bei komplexeren Transformationen/Animationen &lt;br /&gt;
nicht auf Laufzeiten geachtet werden. Wichtig dabei: Alle anderen Operationen werden als nicht &lt;br /&gt;
zeitkritisch betrachtet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere ISR wird beim Auftreten des Detektorinterrupts ausgelöst. Diese setzt&lt;br /&gt;
Index und Zählerregister zurück und korrigiert die Wiederholrate anhand des&lt;br /&gt;
tatsächlich erreichten Index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bildkonverter ==&lt;br /&gt;
Um ganze Bilder, wie z.B. die Weltkarte einfach auf den Globus zu bekommen, habe ich&lt;br /&gt;
einen kleinen quick&amp;amp;dirty (!) Bildkonverter mit perl und perl-imagemagick geschrieben, der&lt;br /&gt;
direkt einen passenden Header (PROGMEM) generiert. Das Script befindet sich ebenfalls &lt;br /&gt;
im .tgz und sollte hoffentlich mit perl auch unter Windows funktionieren.&lt;br /&gt;
Ein Bild benötigt etwas über 1,2kB Flash. In der animations.c befindet sich die &lt;br /&gt;
passende Ladefunktion + Beispielaufruf.&lt;br /&gt;
&lt;br /&gt;
Es sei darauf hingewiesen, dass das Programm ungefragt die Zieldateien überschreibt!&lt;br /&gt;
Erwartet wird 80x40pix Bild, am besten als .bmp. &lt;br /&gt;
&lt;br /&gt;
Im Script oben können die Schwellenwerte für die Farben eingestellt werden &lt;br /&gt;
(0-1, Werte &amp;gt;1 blenden die Farbekomplett aus), dazu wird noch ein Bild generiert, um&lt;br /&gt;
diese Werte testen zu können, ohne es live auf dem Globus ausprobieren zu müssen.&lt;br /&gt;
&lt;br /&gt;
Aufruf: img2globe.pl image.bmp &amp;lt;Name des Arrays&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Zur Videoaufnahme: Es ist recht schwer richtige Lichtverhältnisse zu finden, da die Kamera ständig nachregeln will. Beste Erfahrungen habe ich mit sehr viel Licht gemacht. Ausserdem sollte dazu die Drehzahl etwas hochgefahren werden, um schwarze Balken zu vermeiden. &lt;br /&gt;
* Der Atmel ist mal wieder sehr an seiner Grenze. Würde ich nochmal einen Globe bauen, käme vermutlich ein Cortex-M3 rein.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/povglobe.php&lt;br /&gt;
* [http://www.leyanda.de/light/files/povglobe_v10.tgz Source, Schaltpläne, Layout etc.]&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=62075</id>
		<title>LED cube</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=62075"/>
		<updated>2011-11-30T20:37:57Z</updated>

		<summary type="html">&lt;p&gt;Fornax: neuer Videolink da alter von gema zensiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[LED]] Cubes sind ein sehr beliebtes Projekt, dabei gehen die Größen von 3x3x3 bis hin zu über 10x10x10 mit RGB LEDs. &lt;br /&gt;
Ich liege mit meinem Projekt (8x8x8 einfarbig) mittendrin und möchte hier für Interessierte einige Tipps und Anregungen geben, sei es beim Bau als auch beim Sourcecode. &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_2_480.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier der Würfel in Aktion (v1.2 komplett mit space invaders und ohne GEMA-Zensur):&lt;br /&gt;
&lt;br /&gt;
http://youtu.be/8Gb1SqbHcfk&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=68BqC6qhNoM (1.0, GEMA-Zensiert)&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 512 blaue LEDs&lt;br /&gt;
* ATMega32&lt;br /&gt;
* sehr schneller Code&lt;br /&gt;
* umfangreiche Animationen&lt;br /&gt;
* ca. 1/2 ASCII Support&lt;br /&gt;
&lt;br /&gt;
=== Todo (eventuell auch erst beim Nachfolger) ===&lt;br /&gt;
* Musiksteuerung&lt;br /&gt;
* SD Card + Simple PC-Software für Animationen&lt;br /&gt;
&lt;br /&gt;
== Benötigte Teile == &lt;br /&gt;
Ich habe folgendes verbaut, hier kann natürlich nach belieben modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
* 2 Spanplatten 10x250x250mm&lt;br /&gt;
* 2 Spanplatten 10x250x40mm&lt;br /&gt;
* 2 Spanplatten 10x230x40mm&lt;br /&gt;
* Schwarzes Lackspray&lt;br /&gt;
* 1 Plexi grau getönt 3x250x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x244mm&lt;br /&gt;
* Plexikleber&lt;br /&gt;
* Weisser Lack&lt;br /&gt;
* Sonstiges (Schrauben, Heisskleber, Kältespray, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Cube ===&lt;br /&gt;
* 600 blaue 3mm LEDs ultrahell, klar (mehr dazu nachher)&lt;br /&gt;
* ca. 24m 0,6mm Silberdraht&lt;br /&gt;
&lt;br /&gt;
Teile der Schaltung an sich folgen weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Bau ==&lt;br /&gt;
=== LEDs ===&lt;br /&gt;
Zuerst der Bau des Würfels selbst. Am besten beginnt man damit, ein Raster auf die Grundplatte (250x250mm) zu zeichnen, ich habe für meinen Würfel je 30mm Abstand gewählt, da ich so die volle Anodenpinlänge ausnutzen konnte. In dieses Raster bohrt man nun 3mm Löcher, um eine Art Montageschablone zu erstellen. &lt;br /&gt;
&lt;br /&gt;
Damit kann man dann die 8 Ebenen erstellen. Bei meinem LED cube habe ich die Anoden gerade stehen lassen, die Kathode ca. 3-4mm über dem Gehaeuse abgeschnitten und längs mit dem Silberdraht verlötet. Quer dazu habe ich pro Ebene 4 Leitungen Silberdraht gelegt. Hier ein Bild davon:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_6_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_6_1024.jpg Grosse Version: Würfel Ebene]&lt;br /&gt;
&lt;br /&gt;
Auf jede der LEDs habe ich einen kleinen Tropfen weisse Farbe gelegt, dadurch wird zum einen der Punkt besser sichtbar, zum anderen wird die Strahlwirkung auf die darüberliegende LED vermindert. Diffuse LEDs gingen genauso, sind aber erheblich teurer. &lt;br /&gt;
&lt;br /&gt;
Nachdem man alle LEDs durchgetestet hat (es empfiehlt sich, dies mehrere Stunden zu tun, da vor allem nichtselektierte billig-LEDs nach einiger Zeit gerne ausfallen), kann man die Ebenen zusammenlöten. Dazu werden die Anoden vertikal miteinander verlötet, im gleichen Abstand wie die LEDs im Raster zueinander. &lt;br /&gt;
Die Verschaltung wird hier - für einen 3x3x3x Würfel - erklärt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs]&lt;br /&gt;
=== Sockel ===&lt;br /&gt;
Anschliessend wird die Grundplatte (die mit den Löchern) schwarz lackiert, das mindert Reflexionen. Der Würfel wird dann durch diese Platte gesteckt, so dass der Gehäuseboden der untersten LEDs etwa 10mm von der Grundplatte entfernt ist. Um alle 64 Pins in die Löcher zu bekommen, hilft eine dünne Stange und viel Geduld. Wenn man das geschafft hat, kann man den Würfel von der Rückseite mit etwas Heisskleber in den Löchern fixieren (Hitze an den LEDs -&amp;gt; Kältespray).&lt;br /&gt;
Dann fehlen noch die Leitungen der jeweiligen Massen der Ebenen, die man idealerweise hinten führen sollte, wie in diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_9_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_9_1024.jpg Grosse Version: Würfel komplett]&lt;br /&gt;
&lt;br /&gt;
Die restlichen Gehäuseteile werden natürlich auch schwarz lackiert und geklebt bzw. geschraubt.&lt;br /&gt;
=== Haube ===&lt;br /&gt;
Die Plexiglasteile sollte man zuschneiden lassen, sofern man nicht die richtigen Maschinen dazu besitzt (Stichsäge oder Handsägen gehören nicht dazu).&lt;br /&gt;
Die Schnittkanten sind aber auch dann noch etwas rauh, man sollte sie daher polieren (lassen). Zuhause geht das mit etwas Schleifpapier (600, 1000) und Schleifpaste, alles aus dem Autozubehör.&lt;br /&gt;
Alle Teile kann man dann zur Haube zusammenkleben. Um die Haube auf die Grundplatte schraubbar zu machen, klebt man einfach 4 PVC-Quader mit Löchern in die Ecken der Haube. so dass man sie von der Unterseite der Grundplatte aus festschrauben kann. &lt;br /&gt;
&lt;br /&gt;
Das wär&#039;s schon fast mit dem Würfel selbst, praktisch sind noch 9 8-polige Stecker an den Leitungen.&lt;br /&gt;
&lt;br /&gt;
== Controller ==&lt;br /&gt;
Der Controller für den Würfel basiert auf einem ATMega32. Ein Schaltplan dafür ist hier zu finden:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
Dabei ist PORTC für die Ebenen zuständig, PC0 ist unten, PC7 oben.&lt;br /&gt;
PD0 bzw. Q0 sind die vorderen LEDs bis PD7 hinten. PA0 bzw. U9 ist dann die linke Reihe bis zu PA7 rechts. &lt;br /&gt;
&lt;br /&gt;
Teile dafuer:&lt;br /&gt;
 C1, C3: 22p&lt;br /&gt;
 C2: 10p&lt;br /&gt;
 C4: 100u&lt;br /&gt;
 C5: 0.33u&lt;br /&gt;
 C6-C11: 100n&lt;br /&gt;
 P1: 2 pin Header (Stromversorgung)&lt;br /&gt;
 P2: 2x5 pin Header (ISP)&lt;br /&gt;
 P3: 8 pin Header (gemeinsame Masse jeder Ebene)&lt;br /&gt;
 P4-P11: 8 pin Header (vertikal verkabelte Anoden)&lt;br /&gt;
 Q1-Q8: [[MOSFET-Übersicht|N-MOSFET]] (egal, mindestens 0,5A. z.B.: IRLZ34N IRLU2905, IRLIZ44N)&lt;br /&gt;
 R1: 100k&lt;br /&gt;
 R2-R9: ~1k (passend zum [[FET]])&lt;br /&gt;
 R11-73: Vorwiderstände, so bemessen, dass jede LED mit 8,75mA läuft&lt;br /&gt;
 U1: 7805&lt;br /&gt;
 U2-U9: 74HC573&lt;br /&gt;
 IC1: ATMega32&lt;br /&gt;
 X1: 16MHz&lt;br /&gt;
&lt;br /&gt;
Die 8,75mA sind notwendig, weil der 74HC573 nur max. 70mA auf allen Ausgängen zusammen sourcen kann. Bei einer superhellen LED reicht das aber aus. &lt;br /&gt;
&lt;br /&gt;
Da dieser Punkt immer wieder unklar ist: die 8.75mA müssen wirklich&lt;br /&gt;
mit der jeweiligen LED ausgemessen werden oder es muss im If/Uf-Diagramm der LED der Arbeitspunkt konstruiert werden.&lt;br /&gt;
LEDs sind &#039;&#039;&#039;keine&#039;&#039;&#039; linearen Bauteile, deshalb sind Werte nach Methode R = (5V-Uf) / 8.75mA bei einer 20mA LED &#039;&#039;&#039;deutlich zu klein&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Da während des flashens die Latches und FETs unkontrolliert schalten können,&lt;br /&gt;
kann man noch mittels eines Jumpers die FETs von der Masse trennbar auslegen,&lt;br /&gt;
um Überlastung zu verhindern.&lt;br /&gt;
&lt;br /&gt;
Aufgebaut habe ich alles auf einer kleinen Lochrasterplatine, das sieht so aus: &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_10_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_10_1024.jpg Grosse Version: Controller]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Die Software ist für [[AVR-GCC]] in C geschrieben. &lt;br /&gt;
Download hier:&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.2.tar source code v1.2]&lt;br /&gt;
&lt;br /&gt;
Ich habe den kompletten Cube in einem uint8_t 8x8 Array organisiert, die 8 Bits jedes Elements sind die 3. Achse. In Verbindung mit dem Controller können so die Variablen direkt auf den entsprechendne Port gelegt werden, was die Ausführung sehr schnell macht. &lt;br /&gt;
Die Routine ist recht simpel: die 64 Ausgangspegel an den 74HC573 werden gesetzt, dann wird die entsprechende Ebene für eine kurze Zeit durch den entsprechenden n-MOSFET aktiv geschaltet. Die Ausführung davon erfolgt über einen Interrupt-Routine oder über eine Schleife, da in einigen Animationen die ISR die Animation mittendrinnen erwischt und so ungewolltes Flackern erzeugt.&lt;br /&gt;
Die restlichen Animationen greifen dann nur noch auf dieses globale Array zu. Am besten einfach den Code ansehen.&lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Live sieht alles natürlich viel besser aus :)&lt;br /&gt;
* Der ATMega32 stösst hier schon ziemlich an seine Grenzen. Für aufwendigere und komplexere Würfel sollte man besser einen anderen Controller wählen. &lt;br /&gt;
* Für das Zusammenlöten der Ebenen empfiehlt es sich, die Löttemperatur auf ca. 210-220°C herunterzuregeln, damit das Zinn nicht so leicht wegfliesst.&lt;br /&gt;
* Man könnte diesen Wuerfel direkt per USB betreiben (max. 500 mA), was natürlich auch eine direkte Datenanbindung interessant macht.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/ledcube.php&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs (3x3x3)]&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar Source Code v1.0]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.1.tar Source Code v1.1] (neue space invaders-Animation)&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.2.tar Source Code v1.2] (Bugfix bei space invaders)&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=62055</id>
		<title>LED cube</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=62055"/>
		<updated>2011-11-29T21:38:08Z</updated>

		<summary type="html">&lt;p&gt;Fornax: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[LED]] Cubes sind ein sehr beliebtes Projekt, dabei gehen die Größen von 3x3x3 bis hin zu über 10x10x10 mit RGB LEDs. &lt;br /&gt;
Ich liege mit meinem Projekt (8x8x8 einfarbig) mittendrin und möchte hier für Interessierte einige Tipps und Anregungen geben, sei es beim Bau als auch beim Sourcecode. &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_2_480.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier der Würfel in Aktion:&lt;br /&gt;
{{#ev:youtube|68BqC6qhNoM}}&lt;br /&gt;
http://www.youtube.com/watch?v=68BqC6qhNoM&lt;br /&gt;
&lt;br /&gt;
Die neue space invaders-Animation:&lt;br /&gt;
{{#ev:youtube|NekLefgMclk}}&lt;br /&gt;
http://www.youtube.com/watch?v=NekLefgMclk&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 512 blaue LEDs&lt;br /&gt;
* ATMega32&lt;br /&gt;
* sehr schneller Code&lt;br /&gt;
* umfangreiche Animationen&lt;br /&gt;
* ca. 1/2 ASCII Support&lt;br /&gt;
&lt;br /&gt;
=== Todo (eventuell auch erst beim Nachfolger) ===&lt;br /&gt;
* Musiksteuerung&lt;br /&gt;
* SD Card + Simple PC-Software für Animationen&lt;br /&gt;
&lt;br /&gt;
== Benötigte Teile == &lt;br /&gt;
Ich habe folgendes verbaut, hier kann natürlich nach belieben modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
* 2 Spanplatten 10x250x250mm&lt;br /&gt;
* 2 Spanplatten 10x250x40mm&lt;br /&gt;
* 2 Spanplatten 10x230x40mm&lt;br /&gt;
* Schwarzes Lackspray&lt;br /&gt;
* 1 Plexi grau getönt 3x250x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x244mm&lt;br /&gt;
* Plexikleber&lt;br /&gt;
* Weisser Lack&lt;br /&gt;
* Sonstiges (Schrauben, Heisskleber, Kältespray, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Cube ===&lt;br /&gt;
* 600 blaue 3mm LEDs ultrahell, klar (mehr dazu nachher)&lt;br /&gt;
* ca. 24m 0,6mm Silberdraht&lt;br /&gt;
&lt;br /&gt;
Teile der Schaltung an sich folgen weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Bau ==&lt;br /&gt;
=== LEDs ===&lt;br /&gt;
Zuerst der Bau des Würfels selbst. Am besten beginnt man damit, ein Raster auf die Grundplatte (250x250mm) zu zeichnen, ich habe für meinen Würfel je 30mm Abstand gewählt, da ich so die volle Anodenpinlänge ausnutzen konnte. In dieses Raster bohrt man nun 3mm Löcher, um eine Art Montageschablone zu erstellen. &lt;br /&gt;
&lt;br /&gt;
Damit kann man dann die 8 Ebenen erstellen. Bei meinem LED cube habe ich die Anoden gerade stehen lassen, die Kathode ca. 3-4mm über dem Gehaeuse abgeschnitten und längs mit dem Silberdraht verlötet. Quer dazu habe ich pro Ebene 4 Leitungen Silberdraht gelegt. Hier ein Bild davon:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_6_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_6_1024.jpg Grosse Version: Würfel Ebene]&lt;br /&gt;
&lt;br /&gt;
Auf jede der LEDs habe ich einen kleinen Tropfen weisse Farbe gelegt, dadurch wird zum einen der Punkt besser sichtbar, zum anderen wird die Strahlwirkung auf die darüberliegende LED vermindert. Diffuse LEDs gingen genauso, sind aber erheblich teurer. &lt;br /&gt;
&lt;br /&gt;
Nachdem man alle LEDs durchgetestet hat (es empfiehlt sich, dies mehrere Stunden zu tun, da vor allem nichtselektierte billig-LEDs nach einiger Zeit gerne ausfallen), kann man die Ebenen zusammenlöten. Dazu werden die Anoden vertikal miteinander verlötet, im gleichen Abstand wie die LEDs im Raster zueinander. &lt;br /&gt;
Die Verschaltung wird hier - für einen 3x3x3x Würfel - erklärt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs]&lt;br /&gt;
=== Sockel ===&lt;br /&gt;
Anschliessend wird die Grundplatte (die mit den Löchern) schwarz lackiert, das mindert Reflexionen. Der Würfel wird dann durch diese Platte gesteckt, so dass der Gehäuseboden der untersten LEDs etwa 10mm von der Grundplatte entfernt ist. Um alle 64 Pins in die Löcher zu bekommen, hilft eine dünne Stange und viel Geduld. Wenn man das geschafft hat, kann man den Würfel von der Rückseite mit etwas Heisskleber in den Löchern fixieren (Hitze an den LEDs -&amp;gt; Kältespray).&lt;br /&gt;
Dann fehlen noch die Leitungen der jeweiligen Massen der Ebenen, die man idealerweise hinten führen sollte, wie in diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_9_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_9_1024.jpg Grosse Version: Würfel komplett]&lt;br /&gt;
&lt;br /&gt;
Die restlichen Gehäuseteile werden natürlich auch schwarz lackiert und geklebt bzw. geschraubt.&lt;br /&gt;
=== Haube ===&lt;br /&gt;
Die Plexiglasteile sollte man zuschneiden lassen, sofern man nicht die richtigen Maschinen dazu besitzt (Stichsäge oder Handsägen gehören nicht dazu).&lt;br /&gt;
Die Schnittkanten sind aber auch dann noch etwas rauh, man sollte sie daher polieren (lassen). Zuhause geht das mit etwas Schleifpapier (600, 1000) und Schleifpaste, alles aus dem Autozubehör.&lt;br /&gt;
Alle Teile kann man dann zur Haube zusammenkleben. Um die Haube auf die Grundplatte schraubbar zu machen, klebt man einfach 4 PVC-Quader mit Löchern in die Ecken der Haube. so dass man sie von der Unterseite der Grundplatte aus festschrauben kann. &lt;br /&gt;
&lt;br /&gt;
Das wär&#039;s schon fast mit dem Würfel selbst, praktisch sind noch 9 8-polige Stecker an den Leitungen.&lt;br /&gt;
&lt;br /&gt;
== Controller ==&lt;br /&gt;
Der Controller für den Würfel basiert auf einem ATMega32. Ein Schaltplan dafür ist hier zu finden:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
Dabei ist PORTC für die Ebenen zuständig, PC0 ist unten, PC7 oben.&lt;br /&gt;
PD0 bzw. Q0 sind die vorderen LEDs bis PD7 hinten. PA0 bzw. U9 ist dann die linke Reihe bis zu PA7 rechts. &lt;br /&gt;
&lt;br /&gt;
Teile dafuer:&lt;br /&gt;
 C1, C3: 22p&lt;br /&gt;
 C2: 10p&lt;br /&gt;
 C4: 100u&lt;br /&gt;
 C5: 0.33u&lt;br /&gt;
 C6-C11: 100n&lt;br /&gt;
 P1: 2 pin Header (Stromversorgung)&lt;br /&gt;
 P2: 2x5 pin Header (ISP)&lt;br /&gt;
 P3: 8 pin Header (gemeinsame Masse jeder Ebene)&lt;br /&gt;
 P4-P11: 8 pin Header (vertikal verkabelte Anoden)&lt;br /&gt;
 Q1-Q8: [[MOSFET-Übersicht|N-MOSFET]] (egal, mindestens 0,5A. z.B.: IRLZ34N IRLU2905, IRLIZ44N)&lt;br /&gt;
 R1: 100k&lt;br /&gt;
 R2-R9: ~1k (passend zum [[FET]])&lt;br /&gt;
 R11-73: Vorwiderstände, so bemessen, dass jede LED mit 8,75mA läuft&lt;br /&gt;
 U1: 7805&lt;br /&gt;
 U2-U9: 74HC573&lt;br /&gt;
 IC1: ATMega32&lt;br /&gt;
 X1: 16MHz&lt;br /&gt;
&lt;br /&gt;
Die 8,75mA sind notwendig, weil der 74HC573 nur max. 70mA auf allen Ausgängen zusammen sourcen kann. Bei einer superhellen LED reicht das aber aus. &lt;br /&gt;
&lt;br /&gt;
Da dieser Punkt immer wieder unklar ist: die 8.75mA müssen wirklich&lt;br /&gt;
mit der jeweiligen LED ausgemessen werden oder es muss im If/Uf-Diagramm der LED der Arbeitspunkt konstruiert werden.&lt;br /&gt;
LEDs sind &#039;&#039;&#039;keine&#039;&#039;&#039; linearen Bauteile, deshalb sind Werte nach Methode R = (5V-Uf) / 8.75mA bei einer 20mA LED &#039;&#039;&#039;deutlich zu klein&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Da während des flashens die Latches und FETs unkontrolliert schalten können,&lt;br /&gt;
kann man noch mittels eines Jumpers die FETs von der Masse trennbar auslegen,&lt;br /&gt;
um Überlastung zu verhindern.&lt;br /&gt;
&lt;br /&gt;
Aufgebaut habe ich alles auf einer kleinen Lochrasterplatine, das sieht so aus: &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_10_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_10_1024.jpg Grosse Version: Controller]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Die Software ist für [[AVR-GCC]] in C geschrieben. &lt;br /&gt;
Download hier:&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.2.tar source code v1.2]&lt;br /&gt;
&lt;br /&gt;
Ich habe den kompletten Cube in einem uint8_t 8x8 Array organisiert, die 8 Bits jedes Elements sind die 3. Achse. In Verbindung mit dem Controller können so die Variablen direkt auf den entsprechendne Port gelegt werden, was die Ausführung sehr schnell macht. &lt;br /&gt;
Die Routine ist recht simpel: die 64 Ausgangspegel an den 74HC573 werden gesetzt, dann wird die entsprechende Ebene für eine kurze Zeit durch den entsprechenden n-MOSFET aktiv geschaltet. Die Ausführung davon erfolgt über einen Interrupt-Routine oder über eine Schleife, da in einigen Animationen die ISR die Animation mittendrinnen erwischt und so ungewolltes Flackern erzeugt.&lt;br /&gt;
Die restlichen Animationen greifen dann nur noch auf dieses globale Array zu. Am besten einfach den Code ansehen.&lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Live sieht alles natürlich viel besser aus :)&lt;br /&gt;
* Der ATMega32 stösst hier schon ziemlich an seine Grenzen. Für aufwendigere und komplexere Würfel sollte man besser einen anderen Controller wählen. &lt;br /&gt;
* Für das Zusammenlöten der Ebenen empfiehlt es sich, die Löttemperatur auf ca. 210-220°C herunterzuregeln, damit das Zinn nicht so leicht wegfliesst.&lt;br /&gt;
* Man könnte diesen Wuerfel direkt per USB betreiben (max. 500 mA), was natürlich auch eine direkte Datenanbindung interessant macht.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/ledcube.php&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs (3x3x3)]&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar Source Code v1.0]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.1.tar Source Code v1.1] (neue space invaders-Animation)&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.2.tar Source Code v1.2] (Bugfix bei space invaders)&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=62052</id>
		<title>LED cube</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=62052"/>
		<updated>2011-11-29T18:47:47Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[LED]] Cubes sind ein sehr beliebtes Projekt, dabei gehen die Größen von 3x3x3 bis hin zu über 10x10x10 mit RGB LEDs. &lt;br /&gt;
Ich liege mit meinem Projekt (8x8x8 einfarbig) mittendrin und möchte hier für Interessierte einige Tipps und Anregungen geben, sei es beim Bau als auch beim Sourcecode. &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_2_480.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier der Würfel in Aktion:&lt;br /&gt;
{{#ev:youtube|68BqC6qhNoM}}&lt;br /&gt;
http://www.youtube.com/watch?v=68BqC6qhNoM&lt;br /&gt;
&lt;br /&gt;
Die neue space invaders-Animation:&lt;br /&gt;
{{#ev:youtube|NekLefgMclk}}&lt;br /&gt;
http://www.youtube.com/watch?v=NekLefgMclk&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 512 blaue LEDs&lt;br /&gt;
* ATMega32&lt;br /&gt;
* sehr schneller Code&lt;br /&gt;
* umfangreiche Animationen&lt;br /&gt;
* ca. 1/2 ASCII Support&lt;br /&gt;
&lt;br /&gt;
=== Todo (eventuell auch erst beim Nachfolger) ===&lt;br /&gt;
* Musiksteuerung&lt;br /&gt;
* SD Card + Simple PC-Software für Animationen&lt;br /&gt;
&lt;br /&gt;
== Benötigte Teile == &lt;br /&gt;
Ich habe folgendes verbaut, hier kann natürlich nach belieben modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
* 2 Spanplatten 10x250x250mm&lt;br /&gt;
* 2 Spanplatten 10x250x40mm&lt;br /&gt;
* 2 Spanplatten 10x230x40mm&lt;br /&gt;
* Schwarzes Lackspray&lt;br /&gt;
* 1 Plexi grau getönt 3x250x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x244mm&lt;br /&gt;
* Plexikleber&lt;br /&gt;
* Weisser Lack&lt;br /&gt;
* Sonstiges (Schrauben, Heisskleber, Kältespray, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Cube ===&lt;br /&gt;
* 600 blaue 3mm LEDs ultrahell, klar (mehr dazu nachher)&lt;br /&gt;
* ca. 24m 0,6mm Silberdraht&lt;br /&gt;
&lt;br /&gt;
Teile der Schaltung an sich folgen weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Bau ==&lt;br /&gt;
=== LEDs ===&lt;br /&gt;
Zuerst der Bau des Würfels selbst. Am besten beginnt man damit, ein Raster auf die Grundplatte (250x250mm) zu zeichnen, ich habe für meinen Würfel je 30mm Abstand gewählt, da ich so die volle Anodenpinlänge ausnutzen konnte. In dieses Raster bohrt man nun 3mm Löcher, um eine Art Montageschablone zu erstellen. &lt;br /&gt;
&lt;br /&gt;
Damit kann man dann die 8 Ebenen erstellen. Bei meinem LED cube habe ich die Anoden gerade stehen lassen, die Kathode ca. 3-4mm über dem Gehaeuse abgeschnitten und längs mit dem Silberdraht verlötet. Quer dazu habe ich pro Ebene 4 Leitungen Silberdraht gelegt. Hier ein Bild davon:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_6_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_6_1024.jpg Grosse Version: Würfel Ebene]&lt;br /&gt;
&lt;br /&gt;
Auf jede der LEDs habe ich einen kleinen Tropfen weisse Farbe gelegt, dadurch wird zum einen der Punkt besser sichtbar, zum anderen wird die Strahlwirkung auf die darüberliegende LED vermindert. Diffuse LEDs gingen genauso, sind aber erheblich teurer. &lt;br /&gt;
&lt;br /&gt;
Nachdem man alle LEDs durchgetestet hat (es empfiehlt sich, dies mehrere Stunden zu tun, da vor allem nichtselektierte billig-LEDs nach einiger Zeit gerne ausfallen), kann man die Ebenen zusammenlöten. Dazu werden die Anoden vertikal miteinander verlötet, im gleichen Abstand wie die LEDs im Raster zueinander. &lt;br /&gt;
Die Verschaltung wird hier - für einen 3x3x3x Würfel - erklärt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs]&lt;br /&gt;
=== Sockel ===&lt;br /&gt;
Anschliessend wird die Grundplatte (die mit den Löchern) schwarz lackiert, das mindert Reflexionen. Der Würfel wird dann durch diese Platte gesteckt, so dass der Gehäuseboden der untersten LEDs etwa 10mm von der Grundplatte entfernt ist. Um alle 64 Pins in die Löcher zu bekommen, hilft eine dünne Stange und viel Geduld. Wenn man das geschafft hat, kann man den Würfel von der Rückseite mit etwas Heisskleber in den Löchern fixieren (Hitze an den LEDs -&amp;gt; Kältespray).&lt;br /&gt;
Dann fehlen noch die Leitungen der jeweiligen Massen der Ebenen, die man idealerweise hinten führen sollte, wie in diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_9_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_9_1024.jpg Grosse Version: Würfel komplett]&lt;br /&gt;
&lt;br /&gt;
Die restlichen Gehäuseteile werden natürlich auch schwarz lackiert und geklebt bzw. geschraubt.&lt;br /&gt;
=== Haube ===&lt;br /&gt;
Die Plexiglasteile sollte man zuschneiden lassen, sofern man nicht die richtigen Maschinen dazu besitzt (Stichsäge oder Handsägen gehören nicht dazu).&lt;br /&gt;
Die Schnittkanten sind aber auch dann noch etwas rauh, man sollte sie daher polieren (lassen). Zuhause geht das mit etwas Schleifpapier (600, 1000) und Schleifpaste, alles aus dem Autozubehör.&lt;br /&gt;
Alle Teile kann man dann zur Haube zusammenkleben. Um die Haube auf die Grundplatte schraubbar zu machen, klebt man einfach 4 PVC-Quader mit Löchern in die Ecken der Haube. so dass man sie von der Unterseite der Grundplatte aus festschrauben kann. &lt;br /&gt;
&lt;br /&gt;
Das wär&#039;s schon fast mit dem Würfel selbst, praktisch sind noch 9 8-polige Stecker an den Leitungen.&lt;br /&gt;
&lt;br /&gt;
== Controller ==&lt;br /&gt;
Der Controller für den Würfel basiert auf einem ATMega32. Ein Schaltplan dafür ist hier zu finden:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
Dabei ist PORTC für die Ebenen zuständig, PC0 ist unten, PC7 oben.&lt;br /&gt;
PD0 bzw. Q0 sind die vorderen LEDs bis PD7 hinten. PA0 bzw. U9 ist dann die linke Reihe bis zu PA7 rechts. &lt;br /&gt;
&lt;br /&gt;
Teile dafuer:&lt;br /&gt;
 C1, C3: 22p&lt;br /&gt;
 C2: 10p&lt;br /&gt;
 C4: 100u&lt;br /&gt;
 C5: 0.33u&lt;br /&gt;
 C6-C11: 100n&lt;br /&gt;
 P1: 2 pin Header (Stromversorgung)&lt;br /&gt;
 P2: 2x5 pin Header (ISP)&lt;br /&gt;
 P3: 8 pin Header (gemeinsame Masse jeder Ebene)&lt;br /&gt;
 P4-P11: 8 pin Header (vertikal verkabelte Anoden)&lt;br /&gt;
 Q1-Q8: [[MOSFET-Übersicht|N-MOSFET]] (egal, mindestens 0,5A. z.B.: IRLZ34N IRLU2905, IRLIZ44N)&lt;br /&gt;
 R1: 100k&lt;br /&gt;
 R2-R9: ~1k (passend zum [[FET]])&lt;br /&gt;
 R11-73: Vorwiderstände, so bemessen, dass jede LED mit 8,75mA läuft&lt;br /&gt;
 U1: 7805&lt;br /&gt;
 U2-U9: 74HC573&lt;br /&gt;
 IC1: ATMega32&lt;br /&gt;
 X1: 16MHz&lt;br /&gt;
&lt;br /&gt;
Die 8,75mA sind notwendig, weil der 74HC573 nur max. 70mA auf allen Ausgängen zusammen sourcen kann. Bei einer superhellen LED reicht das aber aus. &lt;br /&gt;
&lt;br /&gt;
Da dieser Punkt immer wieder unklar ist: die 8.75mA müssen wirklich&lt;br /&gt;
mit der jeweiligen LED ausgemessen werden oder es muss im If/Uf-Diagramm der LED der Arbeitspunkt konstruiert werden.&lt;br /&gt;
LEDs sind &#039;&#039;&#039;keine&#039;&#039;&#039; linearen Bauteile, deshalb sind Werte nach Methode R = (5V-Uf) / 8.75mA bei einer 20mA LED &#039;&#039;&#039;deutlich zu klein&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Da während des flashens die Latches und FETs unkontrolliert schalten können,&lt;br /&gt;
kann man noch mittels eines Jumpers die FETs von der Masse trennbar auslegen,&lt;br /&gt;
um Überlastung zu verhindern.&lt;br /&gt;
&lt;br /&gt;
Aufgebaut habe ich alles auf einer kleinen Lochrasterplatine, das sieht so aus: &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_10_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_10_1024.jpg Grosse Version: Controller]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Die Software ist für [[AVR-GCC]] in C geschrieben. &lt;br /&gt;
Download hier:&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.1.tar source code v1.1]&lt;br /&gt;
&lt;br /&gt;
Ich habe den kompletten Cube in einem uint8_t 8x8 Array organisiert, die 8 Bits jedes Elements sind die 3. Achse. In Verbindung mit dem Controller können so die Variablen direkt auf den entsprechendne Port gelegt werden, was die Ausführung sehr schnell macht. &lt;br /&gt;
Die Routine ist recht simpel: die 64 Ausgangspegel an den 74HC573 werden gesetzt, dann wird die entsprechende Ebene für eine kurze Zeit durch den entsprechenden n-MOSFET aktiv geschaltet. Die Ausführung davon erfolgt über einen Interrupt-Routine oder über eine Schleife, da in einigen Animationen die ISR die Animation mittendrinnen erwischt und so ungewolltes Flackern erzeugt.&lt;br /&gt;
Die restlichen Animationen greifen dann nur noch auf dieses globale Array zu. Am besten einfach den Code ansehen. &lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Live sieht alles natürlich viel besser aus :)&lt;br /&gt;
* Der ATMega32 stösst hier schon ziemlich an seine Grenzen. Für aufwendigere und komplexere Würfel sollte man besser einen anderen Controller wählen. &lt;br /&gt;
* Für das Zusammenlöten der Ebenen empfiehlt es sich, die Löttemperatur auf ca. 210-220°C herunterzuregeln, damit das Zinn nicht so leicht wegfliesst.&lt;br /&gt;
* Man könnte diesen Wuerfel direkt per USB betreiben (max. 500 mA), was natürlich auch eine direkte Datenanbindung interessant macht.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/ledcube.php&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs (3x3x3)]&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar Source Code v1.0]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.1.tar Source Code v1.1] (neue space invaders-Animation)&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.2.tar Source Code v1.2] (Bugfix bei space invaders)&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41699</id>
		<title>LED cube</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41699"/>
		<updated>2009-12-28T11:17:37Z</updated>

		<summary type="html">&lt;p&gt;Fornax: /* Bau */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[LED]] Cubes sind ein sehr beliebtes Projekt, dabei gehen die Größen von 3x3x3 bis hin zu über 10x10x10 mit RGB LEDs. &lt;br /&gt;
Ich liege mit meinem Projekt (8x8x8 einfarbig) mittendrin und möchte hier für Interessierte einige Tipps und Anregungen geben, sei es beim Bau als auch beim Sourcecode. &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_2_480.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier der Würfel in Aktion:&lt;br /&gt;
{{#ev:youtube|68BqC6qhNoM}}&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 512 blaue LEDs&lt;br /&gt;
* ATMega32&lt;br /&gt;
* sehr schneller Code&lt;br /&gt;
* umfangreiche Animationen&lt;br /&gt;
* ca. 1/2 ASCII Support&lt;br /&gt;
&lt;br /&gt;
=== Todo (eventuell auch erst beim Nachfolger) ===&lt;br /&gt;
* Musiksteuerung&lt;br /&gt;
* SD Card + Simple PC-Software für Animationen&lt;br /&gt;
&lt;br /&gt;
== Benötigte Teile == &lt;br /&gt;
Ich habe folgendes verbaut, hier kann natürlich nach belieben modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
* 2 Spanplatten 10x250x250mm&lt;br /&gt;
* 2 Spanplatten 10x250x40mm&lt;br /&gt;
* 2 Spanplatten 10x230x40mm&lt;br /&gt;
* Schwarzes Lackspray&lt;br /&gt;
* 1 Plexi grau getönt 3x250x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x244mm&lt;br /&gt;
* Plexikleber&lt;br /&gt;
* Weisser Lack&lt;br /&gt;
* Sonstiges (Schrauben, Heisskleber, Kältespray, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Cube ===&lt;br /&gt;
* 600 blaue 3mm LEDs ultrahell, klar (mehr dazu nachher)&lt;br /&gt;
* ca. 24m 0,6mm Silberdraht&lt;br /&gt;
&lt;br /&gt;
Teile der Schaltung an sich folgen weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Bau ==&lt;br /&gt;
=== LEDs ===&lt;br /&gt;
Zuerst der Bau des Würfels selbst. Am besten beginnt man damit, ein Raster auf die Grundplatte (250x250mm) zu zeichnen, ich habe für meinen Würfel je 30mm Abstand gewählt, da ich so die volle Anodenpinlänge ausnutzen konnte. In dieses Raster bohrt man nun 3mm Löcher, um eine Art Montageschablone zu erstellen. &lt;br /&gt;
&lt;br /&gt;
Damit kann man dann die 8 Ebenen erstellen. Bei meinem LED* cube habe ich die Anoden gerade stehen lassen, die Kathode ca. 3-4mm über dem Gehaeuse abgeschnitten und längs mit dem Silberdraht verlötet. Quer dazu habe ich pro Ebene 4 Leitungen Silberdraht gelegt. Hier ein Bild davon:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_6_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_6_1024.jpg Grosse Version: Würfel Ebene]&lt;br /&gt;
&lt;br /&gt;
Auf jede der LEDs habe ich einen kleinen Tropfen weisse Farbe gelegt, dadurch wird zum einen der Punkt besser sichtbar, zum anderen wird die Strahlwirkung auf die darüberliegende LED vermindert. Diffuse LEDs gingen genauso, sind aber erheblich teurer. &lt;br /&gt;
&lt;br /&gt;
Nachdem man alle LEDs durchgetestet hat (es empfiehlt sich, dies mehrere Stunden zu tun, da vor allem nichtselektierte billig-LEDs nach einiger Zeit gerne ausfallen), kann man die Ebenen zusammenlöten. Dazu werden die Anoden vertikal miteinander verlötet, im gleichen Abstand wie die LEDs im Raster zueinander. &lt;br /&gt;
Die Verschaltung wird hier - für einen 3x3x3x Würfel - erklärt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs]&lt;br /&gt;
=== Sockel ===&lt;br /&gt;
Anschliessend wird die Grundplatte (die mit den Löchern) schwarz lackiert, das mindert Reflexionen. Der Würfel wird dann durch diese Platte gesteckt, so dass der Gehäuseboden der untersten LEDs etwa 10mm von der Grundplatte entfernt ist. Um alle 64 Pins in die Löcher zu bekommen, hilft eine dünne Stange und viel Geduld. Wenn man das geschafft hat, kann man den Würfel von der Rückseite mit etwas Heisskleber in den Löchern fixieren (Hitze an den LEDs -&amp;gt; Kältespray).&lt;br /&gt;
Dann fehlen noch die Leitungen der jeweiligen Massen der Ebenen, die man idealerweise hinten führen sollte, wie in diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_9_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_9_1024.jpg Grosse Version: Würfel komplett]&lt;br /&gt;
&lt;br /&gt;
Die restlichen Gehäuseteile werden natürlich auch schwarz lackiert und geklebt bzw. geschraubt.&lt;br /&gt;
=== Haube ===&lt;br /&gt;
Die Plexiglasteile sollte man zuschneiden lassen, sofern man nicht die richtigen Maschinen dazu besitzt (Stichsäge oder Handsägen gehören nicht dazu).&lt;br /&gt;
Die Schnittkanten sind aber auch dann noch etwas rauh, man sollte sie daher polieren (lassen). Zuhause geht das mit etwas Schleifpapier (600, 1000) und Schleifpaste, alles aus dem Autozubehör.&lt;br /&gt;
Alle Teile kann man dann zur Haube zusammenkleben. Um die Haube auf die Grundplatte schraubbar zu machen, klebt man einfach 4 PVC-Quader mit Löchern in die Ecken der Haube. so dass man sie von der Unterseite der Grundplatte aus festschrauben kann. &lt;br /&gt;
&lt;br /&gt;
Das wär&#039;s schon fast mit dem Würfel selbst, praktisch sind noch 9 8-polige Stecker an den Leitungen.&lt;br /&gt;
&lt;br /&gt;
== Controller ==&lt;br /&gt;
Der Controller fuer den Würfel basiert auf einem ATMega32. Ein Schaltplan dafür ist hier zu finden:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
&lt;br /&gt;
Bitte Vorsicht damit, hier könnten Sachen verdreht sein, aber die Idee, die dahinter steckt, sollte klar werden. &lt;br /&gt;
&lt;br /&gt;
Teile dafuer:&lt;br /&gt;
 C1, C3: 22p&lt;br /&gt;
 C2: 10p&lt;br /&gt;
 C4: 100u&lt;br /&gt;
 C5: 0.33u&lt;br /&gt;
 C6-C11: 100n&lt;br /&gt;
 P1: 2 pin Header (Stromversorgung)&lt;br /&gt;
 P2: 2x5 pin Header (ISP)&lt;br /&gt;
 P3: 8 pin Header (gemeinsame Masse jeder Ebene)&lt;br /&gt;
 P4-P11: 8 pin Header (vertikal verkabelte Anoden)&lt;br /&gt;
 Q1-Q8: [[MOSFET-Übersicht|N-MOSFET]] (egal, mindestens 0,5A)&lt;br /&gt;
 R1: 100k&lt;br /&gt;
 R2-R9: ~1k (passend zum [[FET]])&lt;br /&gt;
 R11-73: Vorwiderstände, so bemessen, dass jede LED mit 8,75mA läuft&lt;br /&gt;
 U1: 7805&lt;br /&gt;
 U2-U9: 74HC573&lt;br /&gt;
 IC1: ATMega32&lt;br /&gt;
 X1: 16MHz&lt;br /&gt;
&lt;br /&gt;
Die 8,75mA sind notwendig, weil der 74HC573 nur max. 70mA auf allen Ausgängen zusammen sourcen kann. Bei einer superhellen LED reicht das aber aus. &lt;br /&gt;
Aufgebaut habe ich alles auf einer kleinen Lochrasterplatine, das sieht so aus: &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_10_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_10_1024.jpg Grosse Version: Controller]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Die Software ist für [[AVR-GCC]] in C geschrieben. &lt;br /&gt;
Download hier:&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar source code]&lt;br /&gt;
&lt;br /&gt;
Ich habe den kompletten Cube in einem uint8_t 8x8 Array organisiert, die 8 Bits jedes Elements sind die 3. Achse. In Verbindung mit dem Controller können so die Variablen direkt auf den entsprechendne Port gelegt werden, was die Ausführung sehr schnell macht. &lt;br /&gt;
Die Routine ist recht simpel: die 64 Ausgangspegel an den 74HC573 werden gesetzt, dann wird die entsprechende Ebene für eine kurze Zeit durch den entsprechenden n-MOSFET aktiv geschaltet. Die Ausführung davon erfolgt über einen Interrupt-Routine oder über eine Schleife, da in einigen Animationen die ISR die Animation mittendrinnen erwischt und so ungewolltes Flackern erzeugt.&lt;br /&gt;
Die restlichen Animationen greifen dann nur noch auf dieses globale Array zu. Am besten einfach den Code ansehen. &lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Live sieht alles natürlich viel besser aus :)&lt;br /&gt;
* Der ATMega32 stösst hier schon ziemlich an seine Grenzen. Für aufwendigere und komplexere Würfel sollte man besser einen anderen Controller wählen. &lt;br /&gt;
* Für das zusammenlöten der Ebenen empfiehlt es sich, die Löttemperatur auf ca. 210-220°C herunterzuregeln, damit das Zinn nicht so leicht wegfliesst.&lt;br /&gt;
* Man könnte diesen Wuerfel direkt per USB betreiben (max. 500mA), was natürlich auch eine direkte Datenanbindung interessant macht.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/ledcube.php&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs (3x3x3)]&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar Source Code]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:LED_cube&amp;diff=41490</id>
		<title>Diskussion:LED cube</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:LED_cube&amp;diff=41490"/>
		<updated>2009-12-19T09:02:27Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wie wärs mit einer 3D-Implementation von Pong? ;-)&lt;br /&gt;
http://www.youtube.com/watch?v=dhqusv6BNik&lt;br /&gt;
&lt;br /&gt;
Haette bestimmt was, das Haupproblem duerfte sein dass ich&lt;br /&gt;
eigentlich nur 9 Winkel ordentlich darstellen kann und nur&lt;br /&gt;
4 davon wuerden dann tatsaechlich 3d werden (45° zu 2 &lt;br /&gt;
Raumachsen). &lt;br /&gt;
Ich werds mal ausprobieren...&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41465</id>
		<title>LED cube</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41465"/>
		<updated>2009-12-17T16:33:35Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[LED]] Cubes sind ein sehr beliebtes Projekt, dabei gehen die Größen von 3x3x3 bis hin zu über 10x10x10 mit RGB LEDs. &lt;br /&gt;
Ich liege mit meinem Projekt (8x8x8 einfarbig) mittendrin und möchte hier für Interessierte einige Tipps und Anregungen geben, sei es beim Bau als auch beim Sourcecode. &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_2_480.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier der Würfel in Aktion:&lt;br /&gt;
{{#ev:youtube|68BqC6qhNoM}}&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 512 blaue LEDs&lt;br /&gt;
* ATMega32&lt;br /&gt;
* sehr schneller Code&lt;br /&gt;
* umfangreiche Animationen&lt;br /&gt;
* ca. 1/2 ASCII Support&lt;br /&gt;
&lt;br /&gt;
=== Todo (eventuell auch erst beim Nachfolger) ===&lt;br /&gt;
* Musiksteuerung&lt;br /&gt;
* SD Card + Simple PC-Software für Animationen&lt;br /&gt;
&lt;br /&gt;
== Benötigte Teile == &lt;br /&gt;
Ich habe folgendes verbaut, hier kann natürlich nach belieben modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
* 2 Spanplatten 10x250x250mm&lt;br /&gt;
* 2 Spanplatten 10x250x40mm&lt;br /&gt;
* 2 Spanplatten 10x230x40mm&lt;br /&gt;
* Schwarzes Lackspray&lt;br /&gt;
* 1 Plexi grau getönt 3x250x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x244mm&lt;br /&gt;
* Plexikleber&lt;br /&gt;
* Weisser Lack&lt;br /&gt;
* Sonstiges (Schrauben, Heisskleber, Kältespray, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Cube ===&lt;br /&gt;
* 600 blaue 3mm LEDs ultrahell, klar (mehr dazu nachher)&lt;br /&gt;
* ca. 24m 0,6mm Silberdraht&lt;br /&gt;
&lt;br /&gt;
Teile der Schaltung an sich folgen weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Bau ==&lt;br /&gt;
Zuerst der Bau des Würfels selbst. Am besten beginnt man damit, ein Raster auf die Grundplatte (250x250mm) zu zeichnen, ich habe für meinen Würfel je 30mm Abstand gewählt, da ich so die volle Anodenpinlänge ausnutzen konnte. In dieses Raster bohrt man nun 3mm Löcher, um eine Art Montageschablone zu erstellen. &lt;br /&gt;
&lt;br /&gt;
Damit kann man dann die 8 Ebenen erstellen. Bei meinem LED* cube habe ich die Anoden gerade stehen lassen, die Kathode ca. 3-4mm über dem Gehaeuse abgeschnitten und längs mit dem Silberdraht verlötet. Quer dazu habe ich pro Ebene 4 Leitungen Silberdraht gelegt. Hier ein Bild davon:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_6_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_6_1024.jpg Grosse Version: Würfel Ebene]&lt;br /&gt;
&lt;br /&gt;
Auf jede der LEDs habe ich einen kleinen Tropfen weisse Farbe gelegt, dadurch wird zum einen der Punkt besser sichtbar, zum anderen wird die Strahlwirkung auf die darüberliegende LED vermindert. Diffuse LEDs gingen genauso, sind aber erheblich teurer. &lt;br /&gt;
&lt;br /&gt;
Nachdem man alle LEDs durchgetestet hat (es empfiehlt sich, dies mehrere Stunden zu tun, da vor allem nichtselektierte billig-LEDs nach einiger Zeit gerne ausfallen), kann man die Ebenen zusammenlöten. Dazu werden die Anoden vertikal miteinander verlötet, im gleichen Abstand wie die LEDs im Raster zueinander. &lt;br /&gt;
Die Verschaltung wird hier - für einen 3x3x3x Würfel - erklärt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs]&lt;br /&gt;
&lt;br /&gt;
Anschliessend wird die Grundplatte (die mit den Löchern) schwarz lackiert, das mindert Reflexionen. Der Würfel wird dann durch diese Platte gesteckt, so dass der Gehäuseboden der untersten LEDs etwa 10mm von der Grundplatte entfernt ist. Um alle 64 Pins in die Löcher zu bekommen, hilft eine dünne Stange und viel Geduld. Wenn man das geschafft hat, kann man den Würfel von der Rückseite mit etwas Heisskleber in den Löchern fixieren (Hitze an den LEDs -&amp;gt; Kältespray).&lt;br /&gt;
Dann fehlen noch die Leitungen der jeweiligen Massen der Ebenen, die man idealerweise hinten führen sollte, wie in diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_9_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_9_1024.jpg Grosse Version: Würfel komplett]&lt;br /&gt;
&lt;br /&gt;
Die restlichen Gehäuseteile werden natürlich auch schwarz lackiert und geklebt bzw. geschraubt. Die Plexihaube habe ich zusammengeklebt und an die Grundplatte schraubbar gemacht, dazu einfach kleine Plastikecken mit Löchern in die Ecken kleben und entsprechende Löcher in die Grundplatte bohren. &lt;br /&gt;
&lt;br /&gt;
Das wär&#039;s schon fast mit dem Würfel selbst, praktisch sind noch 9 8-polige Stecker an den Leitungen. &lt;br /&gt;
&lt;br /&gt;
== Controller ==&lt;br /&gt;
Der Controller fuer den Würfel basiert auf einem ATMega32. Ein Schaltplan dafür ist hier zu finden:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
&lt;br /&gt;
Bitte Vorsicht damit, hier könnten Sachen verdreht sein, aber die Idee, die dahinter steckt, sollte klar werden. &lt;br /&gt;
&lt;br /&gt;
Teile dafuer:&lt;br /&gt;
 C1, C3: 22p&lt;br /&gt;
 C2: 10p&lt;br /&gt;
 C4: 100u&lt;br /&gt;
 C5: 0.33u&lt;br /&gt;
 C6-C11: 100n&lt;br /&gt;
 P1: 2 pin Header (Stromversorgung)&lt;br /&gt;
 P2: 2x5 pin Header (ISP)&lt;br /&gt;
 P3: 8 pin Header (gemeinsame Masse jeder Ebene)&lt;br /&gt;
 P4-P11: 8 pin Header (vertikal verkabelte Anoden)&lt;br /&gt;
 Q1-Q8: [[MOSFET-Übersicht|N-MOSFET]] (egal, mindestens 0,5A)&lt;br /&gt;
 R1: 100k&lt;br /&gt;
 R2-R9: ~1k (passend zum [[FET]])&lt;br /&gt;
 R11-73: Vorwiderstände, so bemessen, dass jede LED mit 8,75mA läuft&lt;br /&gt;
 U1: 7805&lt;br /&gt;
 U2-U9: 74HC573&lt;br /&gt;
 IC1: ATMega32&lt;br /&gt;
 X1: 16MHz&lt;br /&gt;
&lt;br /&gt;
Die 8,75mA sind notwendig, weil der 74HC573 nur max. 70mA auf allen Ausgängen zusammen sourcen kann. Bei einer superhellen LED reicht das aber aus. &lt;br /&gt;
Aufgebaut habe ich alles auf einer kleinen Lochrasterplatine, das sieht so aus: &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_10_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_10_1024.jpg Grosse Version: Controller]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Die Software ist für [[AVR-GCC]] in C geschrieben. &lt;br /&gt;
Download hier:&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar source code]&lt;br /&gt;
&lt;br /&gt;
Ich habe den kompletten Cube in einem uint8_t 8x8 Array organisiert, die 8 Bits jedes Elements sind die 3. Achse. In Verbindung mit dem Controller können so die Variablen direkt auf den entsprechendne Port gelegt werden, was die Ausführung sehr schnell macht. &lt;br /&gt;
Die Routine ist recht simpel: die 64 Ausgangspegel an den 74HC573 werden gesetzt, dann wird die entsprechende Ebene für eine kurze Zeit durch den entsprechenden n-MOSFET aktiv geschaltet. Die Ausführung davon erfolgt über einen Interrupt-Routine oder über eine Schleife, da in einigen Animationen die ISR die Animation mittendrinnen erwischt und so ungewolltes Flackern erzeugt.&lt;br /&gt;
Die restlichen Animationen greifen dann nur noch auf dieses globale Array zu. Am besten einfach den Code ansehen. &lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Live sieht alles natürlich viel besser aus :)&lt;br /&gt;
* Der ATMega32 stösst hier schon ziemlich an seine Grenzen. Für aufwendigere und komplexere Würfel sollte man besser einen anderen Controller wählen. &lt;br /&gt;
* Für das zusammenlöten der Ebenen empfiehlt es sich, die Löttemperatur auf ca. 210-220°C herunterzuregeln, damit das Zinn nicht so leicht wegfliesst.&lt;br /&gt;
* Man könnte diesen Wuerfel direkt per USB betreiben (max. 500mA), was natürlich auch eine direkte Datenanbindung interessant macht.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/ledcube.php&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs (3x3x3)]&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar Source Code]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41464</id>
		<title>LED cube</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41464"/>
		<updated>2009-12-17T16:29:56Z</updated>

		<summary type="html">&lt;p&gt;Fornax: /* Controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[LED]] Cubes sind ein sehr beliebtes Projekt, dabei gehen die Größen von 3x3x3 bis hin zu über 10x10x10 mit RGB LEDs. &lt;br /&gt;
Ich liege mit meinem Projekt mittendrin und möchte hier für Interessierte einige Tipps und Anregungen geben, sei es beim Bau als auch beim Sourcecode.&lt;br /&gt;
&lt;br /&gt;
Nochwas: die Seite wird noch erweitert, bitte etwas Geduld bis ich alles fertig geschrieben habe (paar Tage). &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_2_480.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier der Würfel in Aktion:&lt;br /&gt;
{{#ev:youtube|68BqC6qhNoM}}&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 512 blaue LEDs&lt;br /&gt;
* ATMega32&lt;br /&gt;
* sehr schneller Code&lt;br /&gt;
* umfangreiche Animationen&lt;br /&gt;
* ca. 1/2 ASCII Support&lt;br /&gt;
&lt;br /&gt;
=== Todo (eventuell auch erst beim Nachfolger) ===&lt;br /&gt;
* Musiksteuerung&lt;br /&gt;
* SDCard + Simple PC-Software fuer Animationen&lt;br /&gt;
&lt;br /&gt;
== Benötigte Teile == &lt;br /&gt;
Ich habe folgendes verbaut, hier kann natürlich nach belieben modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
* 2 Spanplatten 10x250x250mm&lt;br /&gt;
* 2 Spanplatten 10x250x40mm&lt;br /&gt;
* 2 Spanplatten 10x230x40mm&lt;br /&gt;
* Schwarzes Lackspray&lt;br /&gt;
* 1 Plexi grau getönt 3x250x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x244mm&lt;br /&gt;
* Plexikleber&lt;br /&gt;
* Weisser Lack&lt;br /&gt;
* Sonstiges (Schrauben, Heisskleber, Kältespray, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Cube ===&lt;br /&gt;
* 600 blaue 3mm LEDs ultrahell, klar (mehr dazu nachher)&lt;br /&gt;
* ca. 24m 0,6mm Silberdraht&lt;br /&gt;
&lt;br /&gt;
Teile der Schaltung an sich folgen weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Bau ==&lt;br /&gt;
Zuerst der Bau des Würfels selbst. Am besten beginnt man damit, ein Raster auf die Grundplatte (250x250mm) zu zeichnen, ich habe für meinen Würfel je 30mm Abstand gewählt, da ich so die volle Anodenpinlänge ausnutzen konnte. In dieses Raster bohrt man nun 3mm Löcher, um eine Art Montageschablone zu erstellen. &lt;br /&gt;
&lt;br /&gt;
Damit kann man dann die 8 Ebenen erstellen. Bei meinem LED* cube habe ich die Anoden gerade stehen lassen, die Kathode ca. 3-4mm über dem Gehaeuse abgeschnitten und längs mit dem Silberdraht verlötet. Quer dazu habe ich pro Ebene 4 Leitungen Silberdraht gelegt. Hier ein Bild davon:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_6_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_6_1024.jpg Grosse Version: Würfel Ebene]&lt;br /&gt;
&lt;br /&gt;
Auf jede der LEDs habe ich einen kleinen Tropfen weisse Farbe gelegt, dadurch wird zum einen der Punkt besser sichtbar, zum anderen wird die Strahlwirkung auf die darüberliegende LED vermindert. Diffuse LEDs gingen genauso, sind aber erheblich teurer. &lt;br /&gt;
&lt;br /&gt;
Nachdem man alle LEDs durchgetestet hat (es empfiehlt sich, dies mehrere Stunden zu tun, da vor allem nichtselektierte billig-LEDs nach einiger Zeit gerne ausfallen), kann man die Ebenen zusammenlöten. Dazu werden die Anoden vertikal miteinander verlötet, im gleichen Abstand wie die LEDs im Raster zueinander. &lt;br /&gt;
Die Verschaltung wird hier - für einen 3x3x3x Würfel - erklärt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs]&lt;br /&gt;
&lt;br /&gt;
Anschliessend wird die Grundplatte (die mit den Löchern) schwarz lackiert, das mindert Reflexionen. Der Würfel wird dann durch diese Platte gesteckt, so dass der Gehäuseboden der untersten LEDs etwa 10mm von der Grundplatte entfernt ist. Um alle 64 Pins in die Löcher zu bekommen, hilft eine dünne Stange und viel Geduld. Wenn man das geschafft hat, kann man den Würfel von der Rückseite mit etwas Heisskleber in den Löchern fixieren (Hitze an den LEDs -&amp;gt; Kältespray).&lt;br /&gt;
Dann fehlen noch die Leitungen der jeweiligen Massen der Ebenen, die man idealerweise hinten führen sollte, wie in diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_9_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_9_1024.jpg Grosse Version: Würfel komplett]&lt;br /&gt;
&lt;br /&gt;
Die restlichen Gehäuseteile werden natürlich auch schwarz lackiert und geklebt bzw. geschraubt. Die Plexihaube habe ich auch geschraubt, dazu einfach kleine Plastikecken mit Löchern in die Ecken kleben und entsprechende Löcher in die Grundplatte bohren. &lt;br /&gt;
&lt;br /&gt;
Das wär&#039;s schon fast mit dem Würfel selbst, praktisch sind noch 9 8-polige Stecker an den Leitungen. &lt;br /&gt;
&lt;br /&gt;
== Controller ==&lt;br /&gt;
Der Controller fuer den Würfel basiert auf einem ATMega32. Ein Schaltplan dafür ist hier zu finden:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
&lt;br /&gt;
Bitte Vorsicht damit, hier könnten Sachen verdreht sein, aber die Idee, die dahinter steckt, sollte klar werden. &lt;br /&gt;
&lt;br /&gt;
Teile dafuer:&lt;br /&gt;
 C1, C3: 22p&lt;br /&gt;
 C2: 10p&lt;br /&gt;
 C4: 100u&lt;br /&gt;
 C5: 0.33u&lt;br /&gt;
 C6-C11: 100n&lt;br /&gt;
 P1: 2 pin Header (Stromversorgung)&lt;br /&gt;
 P2: 2x5 pin Header (ISP)&lt;br /&gt;
 P3: 8 pin Header (gemeinsame Masse jeder Ebene)&lt;br /&gt;
 P4-P11: 8 pin Header (vertikal verkabelte Anoden)&lt;br /&gt;
 Q1-Q8: [[MOSFET-Übersicht|N-MOSFET]] (egal, mindestens 0,5A)&lt;br /&gt;
 R1: 100k&lt;br /&gt;
 R2-R9: ~1k (passend zum [[FET]])&lt;br /&gt;
 R11-73: Vorwiderstände, so bemessen, dass jede LED mit 8,75mA läuft&lt;br /&gt;
 U1: 7805&lt;br /&gt;
 U2-U9: 74HC573&lt;br /&gt;
 IC1: ATMega32&lt;br /&gt;
 X1: 16MHz&lt;br /&gt;
&lt;br /&gt;
Die 8,75mA sind notwendig, weil der 74HC573 nur max. 70mA auf allen Ausgängen zusammen sourcen kann. Bei einer superhellen LED reicht das aber aus. &lt;br /&gt;
Aufgebaut habe ich alles auf einer kleinen Lochrasterplatine, das sieht so aus: &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_10_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_10_1024.jpg Grosse Version: Controller]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Die Software ist für [[AVR-GCC]] in C geschrieben. &lt;br /&gt;
Download hier:&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar source code]&lt;br /&gt;
&lt;br /&gt;
Ich habe den kompletten Cube in einem uint8_t 8x8 Array organisiert, die 8 Bits jedes Elements sind die 3. Achse. In Verbindung mit dem Controller können so die Variablen direkt auf den entsprechendne Port gelegt werden, was die Ausführung sehr schnell macht. &lt;br /&gt;
Die Routine ist recht simpel: die 64 Ausgangspegel an den 74HC573 werden gesetzt, dann wird die entsprechende Ebene für eine kurze Zeit durch den entsprechenden n-MOSFET aktiv geschaltet. Die Ausführung davon erfolgt über einen Interrupt-Routine oder über eine Schleife, da in einigen Animationen die ISR die Animation mittendrinnen erwischt und so ungewolltes Flackern erzeugt.&lt;br /&gt;
Die restlichen Animationen greifen dann nur noch auf dieses globale Array zu. Am besten einfach den Code ansehen. &lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Live sieht alles natürlich viel besser aus :)&lt;br /&gt;
* Der ATMega32 stösst hier schon ziemlich an seine Grenzen. Für aufwendigere und komplexere Würfel sollte man besser einen anderen Controller wählen. &lt;br /&gt;
* Für das zusammenlöten der Ebenen empfiehlt es sich, die Löttemperatur auf ca. 210-220°C herunterzuregeln, damit das Zinn nicht so leicht wegfliesst.&lt;br /&gt;
* Man könnte diesen Wuerfel direkt per USB betreiben (max. 500mA), was natürlich auch eine direkte Datenanbindung interessant macht.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/ledcube.php&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs (3x3x3)]&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar Source Code]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41426</id>
		<title>LED cube</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41426"/>
		<updated>2009-12-15T16:35:40Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[LED]] Cubes sind ein sehr beliebtes Projekt, dabei gehen die Größen von 3x3x3 bis hin zu über 10x10x10 mit RGB LEDs. &lt;br /&gt;
Ich liege mit meinem Projekt mittendrin und möchte hier für Interessierte einige Tipps und Anregungen geben, sei es beim Bau als auch beim Sourcecode.&lt;br /&gt;
&lt;br /&gt;
Nochwas: die Seite wird noch erweitert, bitte etwas Geduld bis ich alles fertig geschrieben habe (paar Tage). &lt;br /&gt;
&lt;br /&gt;
* [[Bild:ledcube_2_480.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier der Würfel in Aktion:&lt;br /&gt;
* http://www.youtube.com/watch?v=68BqC6qhNoM&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 512 blaue LEDs&lt;br /&gt;
* ATMega32&lt;br /&gt;
* sehr schneller Code&lt;br /&gt;
* umfangreiche Animationen&lt;br /&gt;
* ca. 1/2 ASCII Support&lt;br /&gt;
&lt;br /&gt;
=== Todo (eventuell auch erst beim Nachfolger) ===&lt;br /&gt;
* Musiksteuerung&lt;br /&gt;
* SDCard + Simple PC-Software fuer Animationen&lt;br /&gt;
&lt;br /&gt;
== Benötigte Teile == &lt;br /&gt;
Ich habe folgendes verbaut, hier kann natürlich nach belieben modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
* 2 Spanplatten 10x250x250mm&lt;br /&gt;
* 2 Spanplatten 10x250x40mm&lt;br /&gt;
* 2 Spanplatten 10x230x40mm&lt;br /&gt;
* Schwarzes Lackspray&lt;br /&gt;
* 1 Plexi grau getönt 3x250x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x244mm&lt;br /&gt;
* Plexikleber&lt;br /&gt;
* Weisser Lack&lt;br /&gt;
* Sonstiges (Schrauben, Heisskleber, Kältespray, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Cube ===&lt;br /&gt;
* 600 blaue 3mm LEDs ultrahell, klar (mehr dazu nachher)&lt;br /&gt;
* ca. 24m 0,6mm Silberdraht&lt;br /&gt;
&lt;br /&gt;
Teile der Schaltung an sich folgen weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Bau ==&lt;br /&gt;
Zuerst der Bau des Würfels selbst. Am besten beginnt man damit, ein Raster auf die Grundplatte (250x250mm) zu zeichnen, ich habe für meinen Würfel je 30mm Abstand gewählt, da ich so die volle Anodenpinlänge ausnutzen konnte. In dieses Raster bohrt man nun 3mm Löcher, um eine Art Montageschablone zu erstellen. &lt;br /&gt;
&lt;br /&gt;
Damit kann man dann die 8 Ebenen erstellen. Bei meinem LED* cube habe ich die Anoden gerade stehen lassen, die Kathode ca. 3-4mm über dem Gehaeuse abgeschnitten und längs mit dem Silberdraht verlötet. Quer dazu habe ich pro Ebene 4 Leitungen Silberdraht gelegt. Hier ein Bild davon:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_6_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_6_1024.jpg Grosse Version: Würfel Ebene]&lt;br /&gt;
&lt;br /&gt;
Auf jede der LEDs habe ich einen kleinen Tropfen weisse Farbe gelegt, dadurch wird zum einen der Punkt besser sichtbar, zum anderen wird die Strahlwirkung auf die darüberliegende LED vermindert. Diffuse LEDs gingen genauso, sind aber erheblich teurer. &lt;br /&gt;
&lt;br /&gt;
Nachdem man alle LEDs durchgetestet hat (es empfiehlt sich, dies mehrere Stunden zu tun, da vor allem nichtselektierte billig-LEDs nach einiger Zeit gerne ausfallen), kann man die Ebenen zusammenlöten. Dazu werden die Anoden vertikal miteinander verlötet, im gleichen Abstand wie die LEDs im Raster zueinander. &lt;br /&gt;
Die Verschaltung wird hier - für einen 3x3x3x Würfel - erklärt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs]&lt;br /&gt;
&lt;br /&gt;
Anschliessend wird die Grundplatte (die mit den Löchern) schwarz lackiert, das mindert Reflexionen. Der Würfel wird dann durch diese Platte gesteckt, so dass der Gehäuseboden der untersten LEDs etwa 10mm von der Grundplatte entfernt ist. Um alle 64 Pins in die Löcher zu bekommen, hilft eine dünne Stange und viel Geduld. Wenn man das geschafft hat, kann man den Würfel von der Rückseite mit etwas Heisskleber in den Löchern fixieren (Hitze an den LEDs -&amp;gt; Kältespray).&lt;br /&gt;
Dann fehlen noch die Leitungen der jeweiligen Massen der Ebenen, die man idealerweise hinten führen sollte, wie in diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_9_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_9_1024.jpg Grosse Version: Würfel komplett]&lt;br /&gt;
&lt;br /&gt;
Die restlichen Gehäuseteile werden natürlich auch schwarz lackiert und geklebt bzw. geschraubt. Die Plexihaube habe ich auch geschraubt, dazu einfach kleine Plastikecken mit Löchern in die Ecken kleben und entsprechende Löcher in die Grundplatte bohren. &lt;br /&gt;
&lt;br /&gt;
Das wär&#039;s schon fast mit dem Würfel selbst, praktisch sind noch 9 8-polige Stecker an den Leitungen. &lt;br /&gt;
&lt;br /&gt;
== Controller ==&lt;br /&gt;
Der Controller fuer den Würfel basiert auf einem ATMega32. Ein Schaltplan dafür ist hier zu finden:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
&lt;br /&gt;
Bitte Vorsicht damit, hier könnten Sachen verdreht sein, aber die Idee, die dahinter steckt, sollte klar werden. &lt;br /&gt;
&lt;br /&gt;
Teile dafuer:&lt;br /&gt;
 C1, C3: 22p&lt;br /&gt;
 C2: 10p&lt;br /&gt;
 C4: 100u&lt;br /&gt;
 C5: 0.33u&lt;br /&gt;
 C6-C11: 100n&lt;br /&gt;
 P1: 2 pin Header (Stromversorgung)&lt;br /&gt;
 P2: 2x5 pin Header (ISP)&lt;br /&gt;
 P3: 8 pin Header (gemeinsame Masse jeder Ebene)&lt;br /&gt;
 P4-P11: 8 pin Header (vertikal verkabelte Anoden)&lt;br /&gt;
 Q1-Q8: [[MOSFET-Übersicht|N-MOSFET]] (egal, mindestens 0,5A)&lt;br /&gt;
 R1: 100k&lt;br /&gt;
 R2-R9: ~1k (passend zum [[FET]])&lt;br /&gt;
 R11-73: Vorwiderstände, so bemessen, dass jede LED mit 8,75mA läuft&lt;br /&gt;
 U1: 7805&lt;br /&gt;
 U2-U9: 74HC573&lt;br /&gt;
 IC1: ATMega32&lt;br /&gt;
 X1: 16MHz&lt;br /&gt;
&lt;br /&gt;
Aufgebaut habe ich alles auf einer kleinen Lochrasterplatine, das sieht so aus: &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_10_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_10_1024.jpg Grosse Version: Controller]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Die Software ist für [[AVR-GCC]] in C geschrieben. &lt;br /&gt;
Download hier:&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar source code]&lt;br /&gt;
&lt;br /&gt;
Ich habe den kompletten Cube in einem uint8_t 8x8 Array organisiert, die 8 Bits jedes Elements sind die 3. Achse. In Verbindung mit dem Controller können so die Variablen direkt auf den entsprechendne Port gelegt werden, was die Ausführung sehr schnell macht. &lt;br /&gt;
Die Routine ist recht simpel: die 64 Ausgangspegel an den 74HC573 werden gesetzt, dann wird die entsprechende Ebene für eine kurze Zeit durch den entsprechenden n-MOSFET aktiv geschaltet. Die Ausführung davon erfolgt über einen Interrupt-Routine oder über eine Schleife, da in einigen Animationen die ISR die Animation mittendrinnen erwischt und so ungewolltes Flackern erzeugt.&lt;br /&gt;
Die restlichen Animationen greifen dann nur noch auf dieses globale Array zu. Am besten einfach den Code ansehen. &lt;br /&gt;
&lt;br /&gt;
== Was aufgefallen ist/weitere Hinweise ==&lt;br /&gt;
* Live sieht alles natürlich viel besser aus :)&lt;br /&gt;
* Der ATMega32 stösst hier schon ziemlich an seine Grenzen. Für aufwendigere und komplexere Würfel sollte man besser einen anderen Controller wählen. &lt;br /&gt;
* Für das zusammenlöten der Ebenen empfiehlt es sich, die Löttemperatur auf ca. 210-220°C herunterzuregeln, damit das Zinn nicht so leicht wegfliesst.&lt;br /&gt;
* Man könnte diesen Wuerfel direkt per USB betreiben (max. 500mA), was natürlich auch eine direkte Datenanbindung interessant macht.&lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/ledcube.php&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs (3x3x3)]&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar Source Code]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41425</id>
		<title>LED cube</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41425"/>
		<updated>2009-12-15T16:28:09Z</updated>

		<summary type="html">&lt;p&gt;Fornax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[LED]] Cubes sind ein sehr beliebtes Projekt, dabei gehen die Größen von 3x3x3 bis hin zu über 10x10x10 mit RGB LEDs. &lt;br /&gt;
Ich liege mit meinem Projekt mittendrin und möchte hier für Interessierte einige Tipps und Anregungen geben, sei es beim Bau als auch beim Sourcecode.&lt;br /&gt;
&lt;br /&gt;
Nochwas: die Seite wird noch erweitert, bitte etwas Geduld bis ich alles fertig geschrieben habe (paar Tage). &lt;br /&gt;
&lt;br /&gt;
* [[Bild:ledcube_2_480.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier der Würfel in Aktion:&lt;br /&gt;
* http://www.youtube.com/watch?v=68BqC6qhNoM&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 512 blaue LEDs&lt;br /&gt;
* ATMega32&lt;br /&gt;
* sehr schneller Code&lt;br /&gt;
* umfangreiche Animationen&lt;br /&gt;
* ca. 1/2 ASCII Support&lt;br /&gt;
&lt;br /&gt;
=== Todo (eventuell auch erst beim Nachfolger) ===&lt;br /&gt;
* Musiksteuerung&lt;br /&gt;
* SDCard + Simple PC-Software fuer Animationen&lt;br /&gt;
&lt;br /&gt;
== Benötigte Teile == &lt;br /&gt;
Ich habe folgendes verbaut, hier kann natürlich nach belieben modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
* 2 Spanplatten 10x250x250mm&lt;br /&gt;
* 2 Spanplatten 10x250x40mm&lt;br /&gt;
* 2 Spanplatten 10x230x40mm&lt;br /&gt;
* Schwarzes Lackspray&lt;br /&gt;
* 1 Plexi grau getönt 3x250x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x250mm&lt;br /&gt;
* 2 Plexi grau getönt 3x230x244mm&lt;br /&gt;
* Plexikleber&lt;br /&gt;
* Weisser Lack&lt;br /&gt;
* Sonstiges (Schrauben, Heisskleber, Kältespray, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Cube ===&lt;br /&gt;
* 600 blaue 3mm LEDs ultrahell, klar (mehr dazu nachher)&lt;br /&gt;
* ca. 24m 0,6mm Silberdraht&lt;br /&gt;
&lt;br /&gt;
Teile der Schaltung an sich folgen weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Bau ==&lt;br /&gt;
Zuerst der Bau des Würfels selbst. Am besten beginnt man damit, ein Raster auf die Grundplatte (250x250mm) zu zeichnen, ich habe für meinen Würfel je 30mm Abstand gewählt, da ich so die volle Anodenpinlänge ausnutzen konnte. In dieses Raster bohrt man nun 3mm Löcher, um eine Art Montageschablone zu erstellen. &lt;br /&gt;
&lt;br /&gt;
Damit kann man dann die 8 Ebenen erstellen. Bei meinem LED* cube habe ich die Anoden gerade stehen lassen, die Kathode ca. 3-4mm über dem Gehaeuse abgeschnitten und längs mit dem Silberdraht verlötet. Quer dazu habe ich pro Ebene 4 Leitungen Silberdraht gelegt. Hier ein Bild davon:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_6_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_6_1024.jpg Grosse Version: Würfel Ebene]&lt;br /&gt;
&lt;br /&gt;
Auf jede der LEDs habe ich einen kleinen Tropfen weisse Farbe gelegt, dadurch wird zum einen der Punkt besser sichtbar, zum anderen wird die Strahlwirkung auf die darüberliegende LED vermindert. Diffuse LEDs gingen genauso, sind aber erheblich teurer. &lt;br /&gt;
&lt;br /&gt;
Nachdem man alle LEDs durchgetestet hat (es empfiehlt sich, dies mehrere Stunden zu tun, da vor allem nichtselektierte billig-LEDs nach einiger Zeit gerne ausfallen), kann man die Ebenen zusammenlöten. Dazu werden die Anoden vertikal miteinander verlötet, im gleichen Abstand wie die LEDs im Raster zueinander. &lt;br /&gt;
Die Verschaltung wird hier - für einen 3x3x3x Würfel - erklärt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs]&lt;br /&gt;
&lt;br /&gt;
Anschliessend wird die Grundplatte (die mit den Löchern) schwarz lackiert, das mindert Reflexionen. Der Würfel wird dann durch diese Platte gesteckt, so dass der Gehäuseboden der untersten LEDs etwa 10mm von der Grundplatte entfernt ist. Um alle 64 Pins in die Löcher zu bekommen, hilft eine dünne Stange und viel Geduld. Wenn man das geschafft hat, kann man den Würfel von der Rückseite mit etwas Heisskleber in den Löchern fixieren (Hitze an den LEDs -&amp;gt; Kältespray).&lt;br /&gt;
Dann fehlen noch die Leitungen der jeweiligen Massen der Ebenen, die man idealerweise hinten führen sollte, wie in diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_9_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_9_1024.jpg Grosse Version: Würfel komplett]&lt;br /&gt;
&lt;br /&gt;
Die restlichen Gehäuseteile werden natürlich auch schwarz lackiert und geklebt bzw. geschraubt. Die Plexihaube habe ich auch geschraubt, dazu einfach kleine Plastikecken mit Löchern in die Ecken kleben und entsprechende Löcher in die Grundplatte bohren. &lt;br /&gt;
&lt;br /&gt;
Das wär&#039;s schon fast mit dem Würfel selbst, praktisch sind noch 9 8-polige Stecker an den Leitungen. &lt;br /&gt;
&lt;br /&gt;
== Controller ==&lt;br /&gt;
Der Controller fuer den Würfel basiert auf einem ATMega32. Ein Schaltplan dafür ist hier zu finden:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
&lt;br /&gt;
Bitte Vorsicht damit, hier könnten Sachen verdreht sein, aber die Idee, die dahinter steckt, sollte klar werden. &lt;br /&gt;
&lt;br /&gt;
Teile dafuer:&lt;br /&gt;
 C1, C3: 22p&lt;br /&gt;
 C2: 10p&lt;br /&gt;
 C4: 100u&lt;br /&gt;
 C5: 0.33u&lt;br /&gt;
 C6-C11: 100n&lt;br /&gt;
 P1: 2 pin Header (Stromversorgung)&lt;br /&gt;
 P2: 2x5 pin Header (ISP)&lt;br /&gt;
 P3: 8 pin Header (gemeinsame Masse jeder Ebene)&lt;br /&gt;
 P4-P11: 8 pin Header (vertikal verkabelte Anoden)&lt;br /&gt;
 Q1-Q8: [[MOSFET-Übersicht|N-MOSFET]] (egal, mindestens 0,5A)&lt;br /&gt;
 R1: 100k&lt;br /&gt;
 R2-R9: ~1k (passend zum [[FET]])&lt;br /&gt;
 R11-73: Vorwiderstände, so bemessen, dass jede LED mit 8,75mA läuft&lt;br /&gt;
 U1: 7805&lt;br /&gt;
 U2-U9: 74HC573&lt;br /&gt;
 IC1: ATMega32&lt;br /&gt;
 X1: 16MHz&lt;br /&gt;
&lt;br /&gt;
Aufgebaut habe ich alles auf einer kleinen Lochrasterplatine, das sieht so aus: &lt;br /&gt;
&lt;br /&gt;
[[Bild:ledcube_10_480.jpg]]&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_10_1024.jpg Grosse Version: Controller]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Die Software ist für [[AVR-GCC]] in C geschrieben. &lt;br /&gt;
Download hier:&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar source code]&lt;br /&gt;
&lt;br /&gt;
Ich habe den kompletten Cube in einem uint8_t 8x8 Array organisiert, die 8 Bits jedes Elements sind die 3. Achse. In Verbindung mit dem Controller können so die Variablen direkt auf den entsprechendne Port gelegt werden, was die Ausführung sehr schnell macht. &lt;br /&gt;
Die Routine ist recht simpel: die 64 Ausgangspegel an den 74HC573 werden gesetzt, dann wird die entsprechende Ebene für eine kurze Zeit durch den entsprechenden n-MOSFET aktiv geschaltet. Die Ausführung davon erfolgt über einen Interrupt-Routine oder über eine Schleife, da in einigen Animationen die ISR die Animation mittendrinnen erwischt und so ungewolltes Flackern erzeugt.&lt;br /&gt;
Die restlichen Animationen greifen dann nur noch auf dieses globale Array zu. Am besten einfach den Code ansehen. &lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/ledcube.php&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs (3x3x3)]&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar Source Code]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Ledcube_10_480.jpg&amp;diff=41424</id>
		<title>Datei:Ledcube 10 480.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Ledcube_10_480.jpg&amp;diff=41424"/>
		<updated>2009-12-15T16:26:58Z</updated>

		<summary type="html">&lt;p&gt;Fornax: Controllerplatine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Controllerplatine&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Ledcube_9_480.jpg&amp;diff=41423</id>
		<title>Datei:Ledcube 9 480.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Ledcube_9_480.jpg&amp;diff=41423"/>
		<updated>2009-12-15T16:26:40Z</updated>

		<summary type="html">&lt;p&gt;Fornax: Der rohe Würfel, vollständig zusammengelötet und eingeklebt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der rohe Würfel, vollständig zusammengelötet und eingeklebt&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Ledcube_6_480.jpg&amp;diff=41422</id>
		<title>Datei:Ledcube 6 480.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Ledcube_6_480.jpg&amp;diff=41422"/>
		<updated>2009-12-15T16:26:08Z</updated>

		<summary type="html">&lt;p&gt;Fornax: Eine Ebene im Bau auf der Schablone&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Eine Ebene im Bau auf der Schablone&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Ledcube_2_480.jpg&amp;diff=41421</id>
		<title>Datei:Ledcube 2 480.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Ledcube_2_480.jpg&amp;diff=41421"/>
		<updated>2009-12-15T16:25:03Z</updated>

		<summary type="html">&lt;p&gt;Fornax: Modus mit allen LEDs aktiv.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Modus mit allen LEDs aktiv.&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41414</id>
		<title>LED cube</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LED_cube&amp;diff=41414"/>
		<updated>2009-12-14T22:43:58Z</updated>

		<summary type="html">&lt;p&gt;Fornax: LED cube 8x8x8&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LED Cubes sind ein sehr beliebtes Projekt, dabei gehen die Groessen von 3x3x3 bis hin zu ueber 10x10x10 mit RGB LEDs. &lt;br /&gt;
Ich liege mit meinem Projekt mittendrin und moechte hier fuer Interessierte einige Tips und Anregungen geben, sei es beim Bau als auch beim Sourcecode.&lt;br /&gt;
Nochwas: die Seite wird noch erweitert, bitte etwas Geduld bis ich alles fertig geschrieben habe (paar Tage). &lt;br /&gt;
&lt;br /&gt;
Hier der Wuerfel in Aktion:&lt;br /&gt;
* http://www.youtube.com/watch?v=68BqC6qhNoM&lt;br /&gt;
&lt;br /&gt;
== Randdaten ==&lt;br /&gt;
* 512 blaue LEDs&lt;br /&gt;
* ATMega32&lt;br /&gt;
* sehr schneller code&lt;br /&gt;
* umfangreiche Animationen&lt;br /&gt;
* ca. 1/2 ASCII Support&lt;br /&gt;
&lt;br /&gt;
=== Todo (eventuell auch erst beim Nachfolger) ===&lt;br /&gt;
* Musiksteuerung&lt;br /&gt;
* SDCard + Simple PC-Software fuer Animationen&lt;br /&gt;
&lt;br /&gt;
== Benoetigte Teile == &lt;br /&gt;
Ich habe folgendes verbaut, hier kann natuerlich nach belieben modifiziert werden.&lt;br /&gt;
=== Gehauese ===&lt;br /&gt;
* 2 Spanplatten 10x250x250mm&lt;br /&gt;
* 2 Spanplatten 10x250x40mm&lt;br /&gt;
* 2 Spanplatten 10x230x40mm&lt;br /&gt;
* Schwarzes Lackspray&lt;br /&gt;
* 1 Plexi grau getoent 3x230x250mm&lt;br /&gt;
* 2 Plexi grau getoent 3x230x244mm&lt;br /&gt;
* Plexikleber&lt;br /&gt;
* Weisser Lack&lt;br /&gt;
* Sonstiges (Schrauben, Heisskleber, Kaeltespray, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Cube ===&lt;br /&gt;
* 600 blaue 3mm LEDs ultrahell, klar (mehr dazu nachher)&lt;br /&gt;
* ca. 24m 0,6mm Silberdraht&lt;br /&gt;
&lt;br /&gt;
Teile der Schaltung an sich folgen weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Bau ==&lt;br /&gt;
Zuerst der Bau des Wuerfels selbst. Am besten beginnt man damit, ein Raster auf die Grundplatte (250x250mm) zu zeichnen, ich habe fuer meinen Wuerfel je 30mm Abstand gewaehlt, da ich so die volle Anodenpinlaenge ausnutzen konnte. In dieses Raster bohrt man nun 3mm Loecher, um eine Art Montageschablone zu erstellen. &lt;br /&gt;
&lt;br /&gt;
Damit kann man dann die 8 Ebenen erstellen. Bei meinem LED* cube habe ich die Anoden gerade stehen lassen, die Kathode ca. 3-4mm ueber dem Gehaeuse abgeschnitten und laengs mit dem Silberdraht verloetet. Quer dazu habe ich pro Ebene 4 Leitungen Silberdraht gelegt. Hier ein Bild davon:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_6_1024.jpg Wuerfel Ebene ]&lt;br /&gt;
&lt;br /&gt;
Auf jede der LEDs habe ich einen kleinen Tropfen weisse Farbe gelegt, dadurch wird zum einen der Punkt besser sichtbar, zum anderen wird die Strahlwirkung auf die darueberliegende LED vermindert. Diffuse LEDs gingen genauso, sind aber erheblich teurer. &lt;br /&gt;
&lt;br /&gt;
Nachdem man alle LEDs durchgetestet hat (es empfiehlt sich, dies mehrere Stunden zu tun, da vor allem nichtselektierte billig-LEDs nach einiger Zeit gerne ausfallen), kann man die Ebenen zusammenloeten. Dazu werden die Anoden vertikal miteinander verloetet, im gleichen Abstand wie die LEDs im Raster zueinander. &lt;br /&gt;
Die Verschaltung wird hier - fuer einen 3x3x3x Wuerfel - erklaert:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs]&lt;br /&gt;
&lt;br /&gt;
Anschliessend wird die Grundplatte (die mit den Loechern) schwarz lackiert, das mindert Reflexionen. Der Wuerfel wird dann durch diese Platte gesteckt, so dass der Gehaeuseboden der untersten LEDs etwa 10mm von der Grundplatte entfernt ist. Um alle 64 Pins in die Loecher zu bekommen hilft eine duenne Stange und viel Geduld. Wenn man das geschafft hat, kann man den Wuerfel von der Rueckseite mit etwas Heisskleber in den Loechern fixieren (Hitze an den LEDs -&amp;gt; Kaeltespray).&lt;br /&gt;
Dann fehlen noch die Leitungen der jeweiligen Massen der Ebenen, die man idealerweise hinten fuehren sollte, wie in diesem Bild:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_9_1024.jpg Wuerfel komplett]&lt;br /&gt;
&lt;br /&gt;
Die restlichen Gehaeuseteile werden natuerlich auch schwarz lackiert und geklebt bzw. geschraubt. Die Plexihaube habe ich auch geschraubt, dazu einfach kleine Plastikecken mit Loechern in die Ecken kleben und entsprechende Loecher in die Grundplatte Bohren. &lt;br /&gt;
&lt;br /&gt;
Das waers schon fast mit dem Wuerfel selbst, praktisch sind noch 9 8-polige Stecker an den Leitungen. &lt;br /&gt;
&lt;br /&gt;
== Controller ==&lt;br /&gt;
Der Controller fuer den Wuerfel basiert auf einem ATMega32. Ein Schaltplan dafuer ist hier zu finden:&lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
&lt;br /&gt;
Bitte Vorsicht damit, hier koennten Sachen verdreht sein, aber die Idee, die dahinter steckt, sollte klar werden. &lt;br /&gt;
Teile dafuer:&lt;br /&gt;
 C1, C3: 22p&lt;br /&gt;
 C2: 10p&lt;br /&gt;
 C4: 100u&lt;br /&gt;
 C5: 0.33u&lt;br /&gt;
 C6-C11: 100n&lt;br /&gt;
 P1: 2 pin header (Stromversorgung)&lt;br /&gt;
 P2: 2x5 pin header (ISP)&lt;br /&gt;
 P3: 8 pin header (gemeinsame Masse jeder Ebene)&lt;br /&gt;
 P4-P11: 8 pin header (vertikal verkabelte Anoden)&lt;br /&gt;
 Q1-Q8: n-mosfet (egal, mindestens 0,5A)&lt;br /&gt;
 R1: 100k&lt;br /&gt;
 R2-R9: ~1k (passend zum FET)&lt;br /&gt;
 R11-73: Vorwiderstaende, so bemessen das jede LED mit 8,75mA laeuft&lt;br /&gt;
 U1: 7805&lt;br /&gt;
 U2-U9: 74HC573&lt;br /&gt;
 IC1: ATMega32&lt;br /&gt;
 X1: 16MHz&lt;br /&gt;
&lt;br /&gt;
Aufgebaut habe ich alles auf einer kleinen Lochrasterplatine, das sieht so aus: &lt;br /&gt;
&lt;br /&gt;
* [http://www.leyanda.de/light/images/ledcube_10_1024.jpg Controller]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Die Software ist fuer AVR gcc in C geschrieben. &lt;br /&gt;
Download hier:&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar source code]&lt;br /&gt;
Ich habe den kompletten Cube in einem uint8_t 8x8 Array organisiert, die 8 bits darinnen sind die 3. Achse. In Verbindung mit dem Controller koennen so die Variablen direkt auf den entsprechendne Port gelegt werden, was die Ausfuehrung sehr schnell macht. &lt;br /&gt;
Die Routine ist recht simpel: die 64 Ausgangspegel an den 74HC573 werden gesetzt, dann wird die entsprechende Ebene fuer eine kurze Zeit durch den entsprechenden MOSFET aktiv geschaltet. Die Ausfuehrung davon erfolgt ueber einen Interrupt-Routine oder ueber eine Schleife, da in einigen Animationen die ISR die Animation mittendrinnen erwischt und so ungewolltes flackern erzeugt.&lt;br /&gt;
Die restlichen Animationen greifen dann nur noch auf dieses globale Array zu. Am besten einfach den Code ansehen. &lt;br /&gt;
&lt;br /&gt;
== Downloads &amp;amp; Links ==&lt;br /&gt;
Projektseite auf meiner Website:&lt;br /&gt;
* http://leyanda.de/light/ledcube.php&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_3_leds.jpg Schaltplan LEDs (3x3x3)]&lt;br /&gt;
* [http://www.leyanda.de/light/images/led_cube_control.jpg Schaltplan Controller]&lt;br /&gt;
* [http://www.leyanda.de/light/files/led_cube_1.0.tar source code]&lt;/div&gt;</summary>
		<author><name>Fornax</name></author>
	</entry>
</feed>