*Empty MediaWiki Message*

This commit is contained in:
Carwe 2011-01-21 19:12:10 +00:00
parent abf11620ad
commit 3d9cf53130

View File

@ -2,7 +2,7 @@
=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).
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). Für diese 50 Module entstehen überschlagsmäßig Kosten i.H.v. 450 Euro, sodass ein Modul dieser Charge circa 9 Euro kostet. Wenn Platinen nachbestellt werden oder man längere Lieferzeiten in Kauf nimmt, kostet es weniger.
==Hardware==
@ -12,21 +12,24 @@ Ein beliebiges Bord, das einen Microcontroller beherbergt und mindestens die unt
===Modul===
[[Datei:RGBLEDmodul Verbinder.png|thumb|rechts]]
Die Module sind beidseitig mit SMD-Teilen bestückt. Auf der Vorderseite ein TLC5941 (16 Output-Pins bis zu 80mA, eingestellt auf ca. 20mA; 12 Bit PWM, Oszillator-Takt muss vom Microcontroller zugeführt werden), ein Atmel ATmega 88/168/328 (verwendet wird erstmal ein 88) und einige Widerstände und Kondensatoren. Auf der Rückseite befinden sich fünf RGB-LEDs Osram LRTB G6TB. Beidseitig (da DIP) befinden sich 2 Buchsen und 1 Stecker, der zweite Stecker ist wegen Platzmangel eine SMD-Version und befindet sich auf der Vorderseite.
Die Module sind beidseitig mit SMD-Teilen bestückt. Auf der Vorderseite ein TLC5941 (16 Output-Pins bis zu 80mA, eingestellt auf ca. 20mA; 12 Bit PWM, Oszillator-Takt muss vom Microcontroller zugeführt werden), ein Atmel ATmega 48/88/168/328 (verwendet wird erstmal ein 88) und einige Widerstände und Kondensatoren. Auf der Rückseite befinden sich fünf RGB-LEDs Osram LRTB G6TB. Beidseitig (da DIP) befinden sich 2 Buchsen und 1 Stecker, der zweite Stecker ist wegen Platzmangel eine SMD-Version und befindet sich auf der Vorderseite.
Der ATmega ermöglicht es, dass man die Module als Netz verbinden kann, also keine Reihenfolge künstlich herstellen muss durch hintereinanderstecken. So ist jedes Modul mit jedem Nachbarmodul verbunden. Die Ansteuerung erfolgt per I2C, jedoch muss die Anordnung der Module und deren Adressen bekannt sein, um eine vorhersagbare Ausgabe erzeugen zu können.
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 [http://www.wolframalpha.com/input/?i=round%280.5*e^%280.035199*%5b0...256%5d%29%29]. Ein Video von einem ersten Test mit exponentieller Ansteuerung findet man unter [http://vimeo.com/19005816].
Die LEDs müssen mittels Exponentialfunktion angesteuert werden, denn sonst sind sie bereits bei etwa 50% der Steuergröße bei ihrer scheinbaren Endhelligkeit. Eine Tabelle findet man vorerst bei [http://www.wolframalpha.com/input/?i=round%280.5*e^%280.035199*%5b0...256%5d%29%29]. Ein Video von einem ersten Test mit exponentieller Ansteuerung findet man unter [http://vimeo.com/19005816].
====Verbindung ATmega88 <-> 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)
Die Ansteuerung erfolgt durch das Hardware-SPI-Interface des ATmega.
(Pin-Name des TLC; Pin-Nummer & -Name des ATmega; Beschreibung)
::SCLK (Pin 17; SCK) Takt der seriellen Verbindung
::SIN (Pin 15; MOSI) serielle Daten vom ATmega zum TLC5941
::SOUT (Pin 16; MISO) als Rückkanal - darüber werden Status-Informationen des TLC5941 rausgestreamt, z.B. welche LED defekt ist
::XLAT (Pin 13; PB1) Latch-Eingang des TLC, sodass die reingestreamten Daten zu den LED-Ausgängen übernommen werden
::BLANK (Pin 14; PB2)) schaltet alle LEDs ab und resettet den PWM-Zyklus - muss auch alle 4096 GSCLK-Takte gezupft werden, sonst zählt der PWM-Counter nicht weiter und die LEDs werden abgeschaltet
::XERR (Pin 32; PD2) unbeaufsichtigter Betrieb möglich, da LED-Ausfall und Überhitzung gemeldet werden kann - Open-Drain-Ausgang, mit Pullup-Widerstand verbunden
::GSCLK (Pin 12; PB0) Takt für den PWM-Teil des TLC
====Verbindung der Module untereinander====
Die Verbindung zwischen den Modulen erfolgt per 2x5-Pin-Stecker/-Buchse, dabei entsteht ein Netz, in dem jedes Modul mit allen Nachbarn verbunden ist. Daher gibt es keine Reihenfolge der Module, sondern sie müssen adressiert werden.