Mini LEDCube v0.2 cthn.de (Kai Lauterbach, Aaron Müller v0.2 - 30.10.2011)
==========================================================================

Zuvor sollte die Liste der Bauteile mit der in der Verpackung enthaltenen Anzahl verglichen werden.

Allgemeines zum Aufbau:
-----------------------

Begonnen wird mit dem Bauteil, dass die geringste Höhe nach dem Einlöten besitzt. Dies führt dazu , dass die
höheren Bauteile beim Einlöten der anderen nicht im Weg sind.

Warnhinweise! Der Mikrocontroller wird erst nachdem die Schaltung komplett aufgebaut ist und optisch und
elektrisch getestet wurde eingesetzt. Bevor der LEDCube an die Schaltung angeschlossen wird, muss der Mikrocontroller
konfiguriert (FuseBits gesetzt) und programmiert werden. Zudem muss die Funktion der Firmware zwingend geprüft werden.
Sollte ein Fehler in der Schaltung (Bauteile vertauscht, ungewollte Lötbrücken, etc.) oder in der Firmware vorhanden
sein, können die LEDs des Cube irreparabel zerstört werden.

Werkzeuge/Hilfsmittel:
----------------------

Seitenschneider
Elektronikzange
Lötkolben mit möglichst feiner Spitze
Dritte Hand mit Lupe
Entlötlitze

Aufbau:
-------

1. Zehner-Dioden

D1,2 - 3V6 Zehner-Diode

Der schwarze Ring an den Zehner-Dioden kennzeichnen die Kathode. Es muss auf die korrekte Polung beim ein löten
geachtet werden. Die Bauteile werden liegend eingebaut.

In Durchlass-Richtung funktionieren Z-Dioden wie eine normale Diode. In Sperr-Richtung dient sie zur Spannungsbegrenzung.
In dieser Schaltung werden die beiden Z-Dioden in Sperr-Richtung betrieben. Sie dienen dazu die Spannungen an den beiden
USB-Datenleitungen (D+ und D-) auf 3,3 Volt (von dem 5V Pegel des Mikrocontrollers) herab zu senken.
Siehe http://vusb.wikidot.com/hardware (Solution B).

2. Dioden

D3,4 - 1n4148

Auch hier kennzeichnet der schwarze Ring die Kathode und muss beim Einbau beachtet werden. Auch diese Dioden werden
liegend eingebaut.

D3 dient als Verpolschutz an der Versorgungsklemme X2.
D4 verbindet den Ausgang des Spannungsreglers IC2 mit dessen Eingang. Hierdurch wird verhindert, dass am Ausgang
eine höhere Spannung anliegen kann als am Eingang. Dieser Zustand kann zum zerstören des Spannungsreglers führen.

3. IC-Sockel

Der Sockel für den IC1 - ATTINY2313. Es muss darauf geachtet werden, dass die Markierung für den ersten und
letzten Pin (Ausbuchtung in Form eines Halbkreises am Sockel und Mikrocontroller) korrekt auf der Platine aufgesetzt
wird und dass der Sockel eben auf der Platine auf sitzt.

4. Kondensatoren

Alle Kondensatoren werden stehend eingelötet.

C1,2 - 27pF

Die Kondensatoren C1 und C2 werden dazu verwendet um das Quarz, dass den Mikrocontroller mit seinem Takt versorgt,
in Schwingung zu versetzen.

C3,4,5 - 100nF

Diese sind Pufferkondensatoren und unterdrücken zum einen das rauschen der Versorgungsspannung(en)
und stabilisieren diese zusätzlich auf einen möglichst konstanten Wert.

5. Widerstände

Die Widerstände müssen alle stehend eingelötet werden. Die Widerstände sollten dabei möglichst
so gesetzt werden, dass die sich gegenseitig wenig durch gegenseitiges berühren unter mechanischer Spannung stehen.

R3,4 - 69 Ohm Farbcode: Blau, Weiß, Schwarz, Gold

Funktionieren mit den Z-Dioden als Spannungsbegrenzung.

R2 - 1,5k Ohm Farbcode: Braun,Grün,Rot,Gold

R2 ist ein PullUp-Widerstand, für die "D-"-Datenleitung. Ein PullUp-Widerstand
hält eine Leitung auf einer konstanten Spannung. Hier auf ca. 3,3V da R2 und D2,
wie oben beschrieben, die Spannung von 5V herunter begrenzen.

R1 - 10k Ohm Farbcode: Braun,Schwarz,Orange,Gold

Der Widerstand R1 wird dazu verwendet um den RESET-Pin am Mikrocontroller konstant auf 5V
zu halten (PullUp). Der RESET-Pin ist ein sogenannter ActiveLow-Pin und setzt den Mikrocontroller
zurück sobald die an diesem anliegende Spannung einen bestimmten Grenzwert unterschreitet
(Bei 5V TTL-Pegeln ca. 0,8V). TTL = Transistor-Transistor-Logik.

Da im ersten Schaltplan ein Fehler enthalten war, muss dieser wie folgt eingebaut werden:

Die beiden Enden der Widerstände kommen jeweils in die Bohnung, die näher an der USB Buchse ist.
Die beiden anderen Bohnungen, die weiter von der USB Buchse entfernt sind bleiben leer.

R5 - 1M Ohm Farbcode: Braun,Braun,Grün,Gold

Dieser Widerstand darf NICHT eingebaut werden. Er verhindert, dass eine USB-Verbindung korrekt
aufgebaut werden kann.

6. Stecker

Diese Stecker sollten rechtwinklig (eben) auf der Platine aufgelötet werden. Die Stecker müssen
so ausgerichtet sein, dass die schwarzen Leitungen alle näher beim Mikrocontroller aufgesteckt
werden als die roten.

SV1,2,3,4 - 3-Pin Stecker

Hier wird später der LED-Würfel angeschlossen. Die Einbaurichtung muss beachtet werden, da sonst
die LEDs im Würfel nicht korrekt angesteuert werden.

An SV4 werden die Leitungen A,B,C ausgeführt, an SV1 die Leitungen 1,2,3 usw.

7. ISP-Stecker

Diese Stecker sollten rechtwinklig (eben) auf der Platine aufgelötet werden.

SV5 - 2x3Pin Stiftleiste

Die 6Pin Stiftleiste muss in 2 gleichgroße Teile getrennt werden. Über diesen 2x3 Pin Anschluss
wird später der Mikrocontroller beschrieben. Die 6-Pin Buchse ist bei AVRs der Standard, um den
ISP (= In System Programmer) daran anzuschließen.

8. Anschlussklemme

Diese Stecker sollten rechtwinklig (eben) auf der Platine aufgelötet werden.

X2 - Anschlussklemme

Diese Anschlussklemme kann dazu verwendet werden die Schaltung und die LEDs mit Strom zu versorgen.
Die maximale Eingangsspannung sollte 5V nicht unterschreiten 12Volt nicht überschreiten. 

9. Spannungsregler

Dieses Bauteil wird stehend aufgelötet. Es verbleibt eine Lücke von ca. 5mm zwischen Bauteil und Platine.
Sieht man auf die flache Seite des Reglers während die Beine nach unten zeigen, dann entspricht das linke
Bein dem Ausgang, das mittlere der Masse und das rechte dem Eingang.

IC2 - 78L05

Der 78L05 ist ein Festspannungsregler. Er wandelt die Eingangsspannung in eine feste Ausgangsspannung
von +5V. Er benötigt am Ein- und Ausgang Kondensatoren um eine stabile und möglichst konstante Spannung
zu erzeugen. Im Gegenteil zu einem 7805 Festspannungsregler kann der 78L05 einen maximalen Strom von
100mA liefern.

10. Quarz

Auch dieses Bauteil wird stehend aufgelötet. Hier wird zwischen Bauteil und Platine möglichst kein platz
frei gelassen.

Q1 - 12 Mhz Quarz

Das Quarz wird dazu verwendet um den Mikrocontroller mit einem Takt von 12MHz zu betreiben. Der Quarz
wird stets dicht am Mikrocontroller angebracht, um so den Takt nicht durch andere Komponenten zu verfälschen.

11. Elko

Um den Elko aufzubringen, muss bei diesem zunächst die Anschlüsse so umgebogen werden, dass dieser
stehend aufgebracht werden kann (nur bei axialen Bauteilen notwendig). Bei einem Elko (Elektrolytkondensator)
ist auf die Polung dessen zu achten! Die Kathode (minus) ist hier meist mit einem Streifen, einer Kerbe oder
einem oder mehreren "-"-Symbolen gekennzeichnet bzw. einem Pfeil markiert.

C6 - 4,7µF

Der Elko dient dazu um die Ausgangsspannung des Spannungsreglers weiter zu stabilisieren, zu filtern und bei
Bedarf Stromspitzen auszugleichen.

12. USB Buchse

Auch hier ist wieder darauf zu achten, dass die Buchse eben aufliegt. Es müssen alle Pins und die 
Verlängerungen des Gehäuses aufgelötet werden. Diese dienen dazu die mechanische Festigkeit zu verbessern.

X1 - USB Buchse

Die Schaltung kann auch per USB betrieben/mit Spannung versorgt werden. Die Kommunikation mit dem Mikrocontroller
muss jedoch noch implementiert werden.

Inbetriebnahme:
---------------

Bevor die Schaltung in Betrieb genommen werden kann muss diese zunächst geprüft werden. Die folgenden Schritte
beschreiben diesen Vorgang. Der IC1 (AVR) ist bei diesem Vorgang noch nicht auf der Platine aufgesteckt!

1. Optisch Prüfen und durchmessen

Die Lötstellen müssen allesamt einzeln darauf geprüft werden ob benachbarte Leiterbahnen unbeabsichtigt
mit verbunden sind. Diese Verbindungen können vorsichtig mit dem Lötkolben (in Verbindung mit Entlötlitze
oder einer Entlötpumpe) entfernt werden.

Sind keine solchen Verbindungen zu erkennen kann als nächstes mit einem Multimeter der Durchgang der einzelnen
Lötstellen zu den im Schaltplan vorgesehenen anderen Lötstellen durchgemessen werden. Es empfiehlt sich auch
die Leiterbahnen untereinander zu prüfen, die keine Verbindung haben sollten aber sehr nah beieinander liegen.
Achtung, durch die Kondensatoren auf der Schaltung kann das Messgerät unter Umständen, zwischen manchen
Leiterbahnen, kurz einen Durchgang anzeigen bzw. einen Ton von sich geben auch wenn keine direkte Verbindung vorhanden ist.

2. Testen der Spannungen

Ist die Schaltung geprüft kann nun eine externe Spannungsquelle (nicht USB) an die Schaltung über die
Anschlussklemme X2 angeschlossen werden. Es sollte kein Kurzschluss entstehen. Wenn sich ein Kurzschluss
abzeichnet muss die Schaltung nochmals geprüft werden.

Zu prüfen sind die folgenden Punkte:

an der Anschlussklemme X2 liegt die Eingangsspannung an (max. 12V)
am Spannungsregler (Ausgang) liegen +5V an
zwischen Pin 1 und Pin4, des USB-Steckers, liegen +5V an 
an allen Kondensatoren liegt eine Spannung von 5V an
zwischen Pin 10 und 20 des IC-Sockels müssen 5V anliegen, wobei +5V mit Pin 10 und Pin 20 mit GND (-) verbunden ist
zwischen Pin1 des IC-Sockels und GND (-) liegen ebenfalls +5V an (dies ist die RESET-Leitung)
alle anderen Pins des IC-Sockel führen keine Spannung und sind nicht mit GND verbunden
zwischen Pin 2 und Pin 6, des ISP-Steckers, liegen ebenfalls +5V an
Pin 5 des ISP-Steckers ist mit Pin 1 des IC-Sockels verbunden

3. Mikrocontroller

Wenn die Schaltung erfolgreich getestet wurde, kann der ATTiny2313 eingesetzt werden (Schaltung Spannungsfrei).
Darauf wird ein Programmiergerät an den ISP-Stecker angeschlossen und danach erst die Schaltung mit einer Spannungsquelle
verbunden. Da die Schaltung bereits geprüft wurde, darf auch der USB-Stecker zur Versorgung verwendet werden. Im
Git-Repository befindet sich im "firmware"-Verzeichnis (neben dem Sourcecode) ein Makefile, dass dazu verwendet werden
kann um auf den AVR zuzugreifen.

3.1 Fuse-Bits setzen

Über die Fuse-Bits wird das grundlegende Verhalten des AVR festgelegt. Diese Bits werden beim ATTiny2313 durch 3 Byte
repräsentiert (wir beachten nur die beiden nieder wertigen). Bei diesem Projekt beinhaltet das Byte mit niederer
Wertigkeit (Lowbyte) den Hex-Wert 0xE4 und das höherwertige Byte den Wert 0xDF. Die Standardeinstellungen des
Lowbyte ist der Wert 0x64. Der Unterschied zu unseren Einstellungen ist, dass der Systemtakt durch 8 geteilt wird 
(es wird der interne 8MHz Oszillator verwendet). Mehr Details zu diesen Einstellungen können hier eingesehen werden.
- http://www.engbedded.com/fusecalc/

Die Fuse-Bits können mit "make fuses" im AVR festgelegt werden. ACHTUNG!!! Falsch gesetzte Fuses könne dazu führen,
dass der AVR nicht mehr per ISP programmiert und oder konfiguriert werden kann! Die Bits "RSTDISBL" und "SPIEN"
sollten in der Standardeinstellung verbleiben.

3.2 AVR mit Firmware flashen

Sind die Fuses korrekt übertragen worden, kann die Firmware übertragen werden. Das Makefile beinhaltet bereits die
Option "compile" zum kompilieren und "program" zum übertragen. Mit der Option "info" können weitere Informationen
zum erzeugten Binary abgerufen werden.

Unter Umständen muss noch ein Reset der Schaltung durchgeführt werden, bevor die Firmware aktiv ist.

Achtung, die originale Firmware aus dem Projekt von Mosfetkiller beinhaltet keinen USB-Support und wird daher
von keinem System als korrekt funktionierendes USB-Gerät erkannt. Es kann zu diversen Fehlermeldungen kommen,
wenn die Schaltung per USB mit Spannung versorgt wird.

3.3 Testen der Fimware

In diesem Schritt soll die Firmware mit einem Multimeter getestet werden. Spannungen an den Steckverbindern SV1-4
geprüft werden. Es müssen die folgenden Eigenschaften geprüft werden:

die Spannungen zwischen den Pins an SV1-3 und den Pins von SV4 müssen deutlich geringer als 5V sein
zwischen den Pins von SV4 zur Masse muss ebenfalls eine geringere Spannung als 5V gemessen werden können
+5V (z.B. dem Ausgang des Spannungsreglers) zu den Pins von SV1-3 muss ebenfalls eine geringere Spannung als +5V
angezeigt werden

Damit ist der Aufbau abgeschlossen und der LEDCube kann mit der Schaltung getestet werden.

