RGBLEDmodul: Unterschied zwischen den Versionen

Aus C3D2
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 12: Zeile 12:


===Modul===
===Modul===
[[Datei:RGBLEDmodul Verbinder.png|thumb|rechts]]
Die Module sind beidseitig mit SMD-Teilen bestückt. Auf der Vorderseite die LEDs und auf der Rückseite die Steckverbinder, den TLC5941 und einen Atmel, nebst Kleinkram (ein Kondensator, einige Widerstände).
Die Module sind beidseitig mit SMD-Teilen bestückt. Auf der Vorderseite die LEDs und auf der Rückseite die Steckverbinder, den TLC5941 und einen Atmel, nebst Kleinkram (ein Kondensator, einige Widerstände).



Version vom 21. Januar 2011, 17:08 Uhr


RGBLEDmodul

Es war einmal, in einer dunklen Nacht im HQ, der Mond schien zwischen den Wolken hindurch, und der Schnee lag ruhig über der Stadt... Genug geschwafelt. In besagter Nacht saßen carwe und sebseb7 im HQ zusammen und es entstand die erste Idee, ein Modul zu entwickeln, das frei relativ zusammensteckbar und damit flexibel, aber auch ausreichend leistungsfähig sein muss, um RGB-LEDs mit mehr als nur 7 Farben (3 LEDs jeweils ganz an oder ganz aus) zu betreiben. In den nächsten Tagen und Wochen kristallisierten sich dann die hier beschriebenen Überlegungen heraus. Sebseb7 hat 50 TCL5941 und 250 LEDs bestellt, um erste Module zu bauen. Dem vorangegangen ist ein Prototyp, der mittlerweile behobene Schwächen aufgezeigt hat (falsche Beschaltung des blauen LED-Teils, unzureichende Bohrungen unter der Massefläche des TLC, nur knapp passende Pads am TLC).

Hardware

Controller

Ein beliebiges Bord, das einen Microcontroller beherbergt und mindestens die unten beschriebene Hardware-Schnittstelle besitzt, um die Module ansteuern zu können.

Modul

Die Module sind beidseitig mit SMD-Teilen bestückt. Auf der Vorderseite die LEDs und auf der Rückseite die Steckverbinder, den TLC5941 und einen Atmel, nebst Kleinkram (ein Kondensator, einige Widerstände).

Ein TLC5941 (16 Output-Pins bis zu 80mA, eingestellt auf ca. 20mA; 12 Bit PWM, Oszillator-Takt muss vom Microcontroller zugeführt werden) auf der Rückseite nebst Anschluss-Steckern/-Buchsen, dazu ein ATmega168. Auf der Vorderseite 5 RGB-LEDs (Osram LRTB G6TB).

Auf jedem Modul ist zusätzlich zum TLC5941 auch ein ATmega168 verbaut. Dies ermöglicht eine Ansteuerung per I2C, jedoch muss die Anordnung der Module und deren Adressen bekannt sein, um eine vorhersagbare Ausgabe erzeugen zu können.

Verbindung ATmega168 <-> TLC5941

SCLK (Takt der seriellen Verbindung)
SIN (serielle Daten vom ATmega zum TLC5941)
SOUT als Rückkanal (darüber werden Status-Informationen des TLC5941 rausgestreamt, z.B. welche LED defekt ist)
XLAT (Latch-Eingang, sodass die reingestreamten Daten zu den LED-Ausgängen übernommen werden)
BLANK (resettet u.a. den PWM-Zyklus - wird benötigt, da sonst die LEDs für den Rest des aktuellen Zyklus abgeschaltet werden, nachdem Daten mit XLAT übernommen wurden - muss auch alle 4096 GSCLK-Takte gezupft werden)
XERR (unbeaufsichtigter Betrieb möglich, da LED-Ausfall und Überhitzung gemeldet werden kann)
GSCLK (Takt für den PWM-Teil)


Verbindung zwischen den Modulen per 2x5-Pin-Stecker/-Buchse (logisch: parallel zu allen Modulen geführt - physisch: von Modul zu Modul durchgeschleift mit mehreren Verbindungspunkten -> Netz): Es gibt keine Reihenfolge der Module, sondern sie müssen adressiert werden.

GND (Pins 1,2,3)
VCC (5V) (Pins 7,9,10)
I2C-CLK (Pin 5)
I2C-DATA (Pin 4)

Die Pins 6 und 8 sind nicht belegt.

Die LEDs müssen mittels Exponentialfunktion angesteuert werden, denn sonst sind sie bereits bei etwa 50% der Steuergröße bei ihrer Endhelligkeit. Eine Tabelle findet man vorerst bei [1]. Ein Video von einem ersten Test mit exponentieller Ansteuerung findet man unter [2].

Firmware

Controller

Modul

Protokolle

PC<->Controller

Eine USB-Verbindung, die z.B. über FT232 eine RS232-Verbindung ermöglicht. Mit RS232 sind bei 8N1 bei 115200 Baud durch das Start- und Stopbit 92160 Bit/s = 11520 Byte/s erreichbar. Bei angenommenen 3 Byte pro LED sind das 3840 LED-Aktualisierungen pro Sekunde, bei angenommenen 16x20 = 320 LEDs erreicht man also bis zu 12 Frames pro Sekunde.

Controller<->Modul

Es kommt I2C (oder eine Modifikation) zur Anwendung. Problematisch ist nur die Auswahl der Adressbreite, denn es sollen ja ausreichend viele Module für übliche Anwendungen ermöglicht werden, jedoch ermöglicht schon eine Adressbreite von nur 6 Bit mehr Module, als wenn man auf den Atmel verzichten und die TLC5941 hintereinander verketten würde.

Modulkonfigurationen

Die möglichen Anordnungen der Module.
Die möglichen Anordnungen der Module.

Um eine Fläche zu legen, benötigt man mehrere Stecker und Buchsen auf jedem Modul. Da kein Strang erforderlich ist, kann man mehrere Verbindungspunkte zwischen den Modulen in Kauf nehmen, sodass ein Netz entsteht. In diesem Fall braucht man nur einen Stecker nach Oben und Rechts bzw. eine Buchse von Unten und Links. (Bild ist nicht up-to-date)