Solarstorm-plugin
(→Konzept) |
Wirbel (Diskussion | Beiträge) |
||
(41 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
==Beschreibung == | ==Beschreibung == | ||
− | ''' | + | '''Autoren:''' [http://www.vdr-portal.de/board/profile.php?userid=4319 Eike Edener], [http://www.vdr-portal.de/board/profile.php?userid=10532 Daniel König]<br/> |
− | + | ||
+ | Solarstorm ist eine Erweiterung des TV Bildschirms durch LEDs rings um den TV herum, ähnlich Philipps Atmolight. | ||
+ | |||
+ | ===Status=== | ||
+ | Letztes Update 03/2013 | ||
+ | |||
+ | ==Bilder und Videos== | ||
+ | Ein erstes Video gibt es [http://www.youtube.com/watch?v=wucHv8NKOqw hier], hier ein Foto in besserer Qualität: [[Bild:Solarstorm_Screenshot.jpg|Screenshot|thumb|none]] | ||
==Motivation== | ==Motivation== | ||
− | Das [[Atmo-plugin|Atmolight]] hatte zu wenig Kanäle, | + | Das [[Atmo-plugin|Atmolight]] hatte zu wenig Kanäle, und cooler sein als Philips ist eh Pflicht. |
− | + | Aber im Ernst: Nachdem wir einen [http://www.consumer.philips.com/c/aurea-fernseher/30434/cat/de/ Philips Aurea Fernseher] in freier Wildbahn gesehen haben, fingen wir gleich an zu philosophieren, ob wir unser Atmolight nicht auch in diese Richtung weiterentwickeln können. Nach kurzer Zeit war klar: Mit dem bestehenden Atmolight-Konzept tun wir uns schwer, ein Neues musste also her. | |
− | Aber im Ernst: Nachdem wir einen Philips Aurea Fernseher in freier Wildbahn gesehen haben, | + | |
− | fingen wir gleich an zu philosophieren, ob wir unser Atmolight nicht | + | |
− | auch in diese Richtung weiterentwickeln können. Nach kurzer Zeit war klar: | + | |
− | Mit dem bestehenden Atmolight-Konzept tun wir uns schwer, ein Neues | + | |
== Konzept == | == Konzept == | ||
Zeile 16: | Zeile 19: | ||
* variable Kanalanzahl ohne Neuprogrammierung des Controllers | * variable Kanalanzahl ohne Neuprogrammierung des Controllers | ||
* leichte Erweiterbarkeit der Kanalanzahl | * leichte Erweiterbarkeit der Kanalanzahl | ||
− | * an verschiedene Bildschirmgrößen | + | * an verschiedene Bildschirmgrößen anpassbar |
− | * Anbindung per USB an den VDR | + | * Anbindung per USB an den VDR (RS-232-Schnittstellen werden immer seltener) |
* Versorgung über das Netzteil des VDRs | * Versorgung über das Netzteil des VDRs | ||
* Abwärtskompatibilität zu den "Common Anode"-LED-Streifen | * Abwärtskompatibilität zu den "Common Anode"-LED-Streifen | ||
− | Herausgekommen ist folgendes Konzept: | + | ; Herausgekommen ist folgendes Konzept : |
− | Es soll eine zentrale Steuerplatine geben, die mit dem VDR-Plugin kommuniziert. | + | Es soll eine zentrale Steuerplatine geben, die mit dem VDR-Plugin kommuniziert. Da fast alle USB-fähigen Controller, die in Frage kamen, "unangenehm zu lötende" Gehäuseformen haben, musste also eine Kaufplatine mit USB-fähigem Controller und Bootloader ab Werk her. Bootloader deshalb, weil man dann auf zusätzliches Programmierequipment verzichten kann und auch der "Endkunde" in der Lage ist, die Firmware zu aktualisieren. |
− | Da fast alle USB-fähigen Controller, die in Frage kamen, "unangenehm zu lötende" Gehäuseformen haben, | + | Die Wahl fiel auf das [http://code.google.com/p/avropendous/ AVROpendous ], dies gibt es in verschiedene [http://code.google.com/p/avropendous/wiki/AVRopendous_Overview Varianten]. Um die Generierung der PWM für die LEDs nicht in Software machen zu müssen, entschlossen wir uns für den [http://focus.ti.com/docs/prod/folders/print/tlc5940.html TLC5940 ] von [http://www.ti.com Texas Instruments] für die Erzeugung der PWM. Dieser wird per SPI mit Daten versorgt, also ideal für die Ansteuerung mit dem AVR. Außerdem lassen sich mehrere TLCs in Reihe schalten, die variable Kanalanzahl ist also gesichert. |
− | + | ||
− | Bootloader deshalb, weil man dann auf zusätzliches Programmierequipment verzichten kann | + | |
− | und auch der "Endkunde" in der Lage ist, die Firmware zu aktualisieren. | + | |
− | Die Wahl fiel auf das [http://code.google.com/p/avropendous/ AVROpendous ], dies gibt es in verschiedene [http://code.google.com/p/avropendous/wiki/AVRopendous_Overview Varianten]. | + | |
− | Um die Generierung der PWM für die LEDs nicht in Software machen zu müssen, entschlossen wir uns für den [http://focus.ti.com/docs/prod/folders/print/tlc5940.html TLC5940 ] | + | |
− | von [http://www.ti.com Texas Instruments] für die Erzeugung der PWM. Dieser wird per SPI mit Daten versorgt, | + | |
− | also ideal für die Ansteuerung mit dem AVR. Außerdem lassen sich mehrere TLCs in Reihe schalten, die variable Kanalanzahl ist also gesichert. | + | |
− | + | == Hardware == | |
− | + | === Hardware-Anforderungen === | |
* VDR mit full featured DVB-Karte und freiem /dev/video0-Device (kein Parallelbetrieb mit xawtv, tvtime etc. möglich '''oder''' | * VDR mit full featured DVB-Karte und freiem /dev/video0-Device (kein Parallelbetrieb mit xawtv, tvtime etc. möglich '''oder''' | ||
− | * VDR mit Software-Ausgabedevice (z.B. das xine- | + | * VDR mit Software-Ausgabedevice (z.B. das xine-Plugin) '''und''' |
− | * 1 Steuerplatine '''und''' | + | * LED-Streifen '''und''' |
− | * mind. 1 Treiberplatine '''und ''' | + | * 1 Steuerplatine + USB-Kabel '''und''' |
− | * | + | * mind. 1 Treiberplatine + Verbindungskabel zur Steuerplatine '''und''' |
+ | * Verbindungskabel zwischen den Treiberplatinen bei Verwendung von mehreren Treiberplatinen | ||
− | + | === Steuerplatine (AVRopendous) === | |
− | Die Steuerplatine übernimmt folgende Aufgaben: Ermittlung der Anzahl angeschlossener Treiberplatinen beim Start, | + | Die Steuerplatine übernimmt folgende Aufgaben: Ermittlung der Anzahl angeschlossener Treiberplatinen beim Start, Meldung der Anzahl an den VDR, Entgegennahme der PWM-Daten vom Solarstorm-Plugin und Weiterleitung an die TLC-Controller auf den Treiberplatinen. Später soll zur einfacheren Inbetriebnahme auch noch eine Testfunktion integriert werden, mit der man eine einfache Verdrahtungsprüfung der angeschlossenen LED-Streifen ohne laufendes VDR-Plugin durchführen kann. |
− | Meldung der Anzahl an den VDR, Entgegennahme der PWM-Daten vom Solarstorm-Plugin und Weiterleitung an die TLC-Controller auf den | + | |
− | Treiberplatinen. Später soll zur einfacheren Inbetriebnahme auch noch eine Testfunktion integriert werden, | + | |
− | mit der man eine einfache Verdrahtungsprüfung der angeschlossenen LED-Streifen ohne laufendes VDR-Plugin | + | |
− | + | === Treiberplatine === | |
− | Die Treiberplatine besteht aus einer einseitigen Platine der | + | Die Treiberplatine besteht aus einer einseitigen Platine der Größe 68x75 mm. Diese kommt ohne SMD-Bauteile aus. Der Anschluss an die Steuerplatine erfolgt per 10-poliger Pfostenleiste. Die Verbindung mehrerer Treiberplatinen erfolg ebenfalls per 10-poliger Pfostenleiste. Auf der letzten Treiberplatine in der Kette muss ein Jumper gesetzt werden, um das Ende der Kette zu kennzeichnen. Angeschlossen werden können LED-Streifen mit gemeinsamen Pluspol (common anode). |
− | Der Anschluss an die Steuerplatine erfolgt per 10-poliger Pfostenleiste. Die Verbindung mehrerer Treiberplatinen | + | Der maximale zulässige Strom pro Kanal wird durch die ULN2803-Treiber begrenzt; mehr als 500 mA pro Kanal dürfen nicht verwendet werden (zusätzlich ist der zulässige Gesamtstrom von 2,5A zu beachten). Pro Treiberplatine können 16 LED-Stränge angeschlossen werden. Durch die RGB-LEDs ergeben sich |
− | erfolg ebenfalls per 10-poliger Pfostenleiste. Auf der letzten Treiberplatine in der Kette muss ein Jumper gesetzt werden, | + | dadurch 5 1/3 Kanäle pro Platine. Der überschüssige Strang ist nicht verloren, sondern wird bei der Kaskadierung mehrerer Treiberplatinen verwendet (ein Vielfaches von 3 als Platinenanzahl ergäbe eine optimale Ausnutzung). |
− | um das Ende der Kette zu kennzeichnen. Angeschlossen werden können LED-Streifen mit gemeinsamen Pluspol (common anode). | + | |
− | Der maximale zulässige Strom pro Kanal wird durch die ULN2803-Treiber begrenzt | + | |
− | nicht verwendet werden. Pro Treiberplatine können 16 LED-Stränge angeschlossen werden. Durch die RGB-LEDs ergeben sich | + | |
− | dadurch 5 1/3 Kanäle pro Platine. Der überschüssige Strang ist nicht verloren, sondern wird bei der Kaskadierung mehrerer | + | |
− | Treiberplatinen verwendet ( | + | |
{| | {| | ||
− | |[[Bild: | + | |[[Bild:Solarstorm_PlatineRueck.jpg|Platinenrückseite|thumb|none]] |
− | |[[Bild: | + | |[[Bild:Solarstorm_PlatineVorn.jpg|Platine von vorn|thumb|none]] |
− | |[[Bild: | + | |[[Bild:Solarstorm_Platinensammlung.jpg|die 0-Serie|thumb|none]] |
− | |[[Bild: | + | |[[Bild:Solarstorm_Platinenstapel.jpg|die 0-Serie|thumb|none]] |
|} | |} | ||
− | + | === Verdrahtung AVRopendous-Tiny=== | |
− | + | ||
<table BORDER=1> | <table BORDER=1> | ||
<div align="center"> | <div align="center"> | ||
Zeile 71: | Zeile 59: | ||
<td>'''Port B'''</td> | <td>'''Port B'''</td> | ||
<td>'''Signal'''</td> | <td>'''Signal'''</td> | ||
− | <td>'''IN-Stecker'''</td> | + | <td>'''IN-Stecker Treiberplatine'''</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
Zeile 126: | Zeile 114: | ||
<td>'''Port B'''</td> | <td>'''Port B'''</td> | ||
<td>'''Signal'''</td> | <td>'''Signal'''</td> | ||
− | <td>'''IN-Stecker'''</td> | + | <td>'''IN-Stecker Treiberplatine'''</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
Zeile 141: | Zeile 129: | ||
</table> | </table> | ||
− | Die letzte Platine in der Kette erhält einen Jumper im OUT-Stecker über Pin 9 & 10. | + | Die letzte Platine in der Kette erhält einen Jumper im OUT-Stecker über Pin 9 & 10. Der Anschluss der LED-Leisten beginnt bei der 1. Platine (die an der Steuerplatine) gegenüber vom +/- Anschluss in der Reihenfolge RGB mit Kanal "links unten", dann weiter im Uhrzeigersinn. |
− | Der Anschluss der LED-Leisten beginnt bei 1. Platine (die | + | |
− | mit Kanal "links unten", dann weiter im Uhrzeigersinn. | + | |
− | + | === LED-Streifen === | |
− | Um die Vielzahl der Kanäle auch nutzen zu können und um das modulare Konzept verifizieren zu können, | + | Um die Vielzahl der Kanäle auch nutzen zu können und um das modulare Konzept verifizieren zu können, haben wir passende LED-Streifen entwickelt (und irgendwie gehört es auch seit dem Atmolight zu jeder Entwicklung dazu ;) ). Wir entschieden uns dieses Mal für SMD-LEDs. Diese haben den Vorteil, dass man keine Löcher bohren muss, die Platinen ziemlich schmal werden und sich relativ unauffällig auch an modernen Flachbildfernsehern anbringen lassen. |
− | haben wir passende LED-Streifen entwickelt (und irgendwie gehört es auch seit dem Atmolight zu jeder | + | Die Streifen lassen sich alle 5 cm trennen und sollten sich dadurch an Fernsehern nahezu jeder Größe montieren lassen. Ein "Basisstreifen" ist 50x1cm groß, mehrere Streifen lassen sich in Reihe schalten. Um einzelne Kanäle anzuschließen, müssen die Streifen nicht vollständig geteilt werden, es reicht, die Leiterbahnen "R", "G" und "B" zu unterbrechen. |
− | Entwicklung dazu ;) ). Wir entschieden uns dieses Mal für SMD-LEDs. Diese haben den Vorteil, dass man keine | + | |
− | Löcher bohren muss | + | |
− | anbringen lassen. | + | |
− | Die Streifen lassen sich alle 5 cm trennen und sollten sich dadurch an Fernsehern nahezu jeder Größe montieren lassen. | + | |
− | Ein "Basisstreifen" ist 50x1cm | + | |
− | müssen die Streifen nicht vollständig geteilt werden, es reicht, die Leiterbahnen "R", "G" und "B" zu unterbrechen. | + | |
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | | [[Bild: | + | | [[Bild:Solarstorm_LED_Bild1.jpg|thumb|none]] || So kommen die LED-Platinen vom Platinenhersteller |
|- | |- | ||
− | | [[Bild: | + | | [[Bild:Solarstorm_LED_Bild2.jpg|thumb|none]] || Platinen in aufgetrennt, LEDs bereits bestückt |
|- | |- | ||
− | | [[Bild: | + | | [[Bild:Solarstorm_LED_Bild3.jpg|thumb|none]] || Eine einzelne Platine nach dem Auftrennen mit LEDs |
|- | |- | ||
− | | [[Bild: | + | | [[Bild:Solarstorm_LED_Bild4.jpg|thumb|none]] || 50er-Pack SMD-LEDs, die Widerstände werden nicht gebraucht |
|- | |- | ||
− | | [[Bild: | + | | [[Bild:Solarstorm_LED_Bild5.jpg|thumb|none]] || 50 LEDs auf der Rolle |
|- | |- | ||
− | | [[Bild: | + | | [[Bild:Solarstorm_LED_Bild6.jpg|thumb|none]] || nochmal in groß |
|- | |- | ||
− | | [[Bild: | + | | [[Bild:Solarstorm_LED_Bild7.jpg|thumb|none]] || Großaufnahme |
|- | |- | ||
− | | [[Bild: | + | | [[Bild:Solarstorm_LED_Streifen_trennen.jpg|thumb|none]] || Durch Auftrennen der Leiterbahn lassen sich einzelne Kanäle abtrennen |
|- | |- | ||
|} | |} | ||
Zeile 182: | Zeile 162: | ||
==== Programmierung ==== | ==== Programmierung ==== | ||
Für die Programmierung der Firmware in den Controller werden folgende Pakete benötigt: | Für die Programmierung der Firmware in den Controller werden folgende Pakete benötigt: | ||
− | * | + | * [http://dfu-programmer.sourceforge.net/ dfu-programmer] |
− | * | + | * LibUSB |
− | + | ||
==== Inbetriebnahme ==== | ==== Inbetriebnahme ==== | ||
− | Nach der Programmierung wird die USB-Verbindung zur Platine getrennt und wieder hergestellt. | + | Nach der Programmierung wird die USB-Verbindung zur Platine getrennt und wieder hergestellt. Durch Eingaben von "dmesg" als Benutzer root sollte man nach dem Anstecken folgende Ausgabe erhalten: |
− | Durch Eingaben von "dmesg" als Benutzer root sollte man nach dem Anstecken folgende Ausgabe erhalten: | + | |
usb 2-1: New USB device found, idVendor=03eb, idProduct=204f | usb 2-1: New USB device found, idVendor=03eb, idProduct=204f | ||
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 | usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 | ||
− | usb 2-1: Product: Solarstorm V1. | + | usb 2-1: Product: Solarstorm V1.00 |
− | usb 2-1: Manufacturer: Eike Edener (C) | + | usb 2-1: Manufacturer: Eike Edener (C) 2010 |
usb 2-1: SerialNumber: 000000000000 | usb 2-1: SerialNumber: 000000000000 | ||
usb 2-1: configuration #1 chosen from 1 choice | usb 2-1: configuration #1 chosen from 1 choice | ||
Zeile 202: | Zeile 180: | ||
==== Inbetriebnahme ==== | ==== Inbetriebnahme ==== | ||
− | <!> TODO <!> | + | <!> TODO <!> |
+ | |||
==== Einstellungen ==== | ==== Einstellungen ==== | ||
Im OSD können folgende Einstellungen vorgenommen werden: | Im OSD können folgende Einstellungen vorgenommen werden: | ||
Zeile 236: | Zeile 215: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | !Probemontage an | + | !Probemontage an einem 46" Pioneer Kuro |
|- | |- | ||
− | | [[Bild: | + | | [[Bild:Solarstorm_Montage.jpg|thumb|none]] |
|- | |- | ||
|} | |} | ||
− | = | + | == Sonstiges== |
− | == interne Funktionsweise == | + | ===interne Funktionsweise=== |
− | === Farberkennung === | + | <!--====Farberkennung==== |
TODO | TODO | ||
− | === USB-Protokoll === | + | ====USB-Protokoll==== |
− | TODO | + | TODO--> |
− | === SPI-Kommunikation === | + | ====SPI-Kommunikation==== |
− | Der Atmel-Controller kommuniziert mit den PWM-Controllern auf den Treiberplatine über SPI (serial peripheral interface). | + | Der Atmel-Controller kommuniziert mit den PWM-Controllern auf den Treiberplatine über SPI (serial peripheral interface). Die PWM-Controller enthalten jeweils ein Schieberegister, dass lang genug ist, um die Helligkeitsinformationen aller 16 Kanäle aufzunehmen (16 x 12 bit => 192 bit). Durch das serielle Verschalten mehrerer Treiberplatinen enthält man ein entsprechend langes Schieberegister. |
− | Die PWM-Controller enthalten jeweils ein Schieberegister, dass lang genug ist, um die Helligkeitsinformationen aller 16 Kanäle aufzunehmen | + | Der Ausgang der Kette ist wieder mit dem Eingang des Controllers verbunden. Dies ermöglicht einer automatische Erkennung der Anzahl der angeschlossenen Treiberplatinen durch den Controller. Der Controller schickt beim Einschalten so lange Daten auf den Ring, bis an seinem Eingang die Daten wieder ankommen. |
− | (16 x 12 bit => 192 bit). Durch das serielle Verschalten mehrerer Treiberplatinen enthält man ein entsprechend langes Schieberegister. | + | |
− | Der Ausgang der Kette ist wieder mit dem Eingang des Controllers verbunden. Dies ermöglicht einer automatische Erkennung der Anzahl der | + | |
− | angeschlossenen Treiberplatinen durch den Controller. Der Controller schickt beim Einschalten so lange Daten auf den Ring, bis an seinem | + | |
− | Eingang die Daten wieder ankommen. | + | |
− | == Verbesserungspotential == | + | ===Verbesserungspotential=== |
− | Der Aufbau und die Inbetriebnahme der "Nullserie" hat einiges an Erkenntnissen gebracht. | + | Der Aufbau und die Inbetriebnahme der "Nullserie" hat einiges an Erkenntnissen gebracht. Für die nachfolgende Serien wären aus unserer Sicht folgende Verbesserungen sinnvoll: |
− | Für die nachfolgende Serien wären aus unserer Sicht folgende Verbesserungen sinnvoll: | + | |
* etwas größere Platine, um ein 4. Bohrloch unterzubringen | * etwas größere Platine, um ein 4. Bohrloch unterzubringen | ||
* mehr Abstand von den Bohrlöchern zu den Bauteilen (um z.B. Distanzbolzen zu montieren) | * mehr Abstand von den Bohrlöchern zu den Bauteilen (um z.B. Distanzbolzen zu montieren) | ||
* evtl. Integration einer Sicherung und eines Verpolungsschutzes | * evtl. Integration einer Sicherung und eines Verpolungsschutzes | ||
− | * Verwendung der DIP-Version des AVROpenDouse + Erstellung einer Adapterplatine mit 10- | + | * Verwendung der DIP-Version des AVROpenDouse oder eines Nachfolgers + Erstellung einer Adapterplatine mit 10-poliger Pfostenleiste |
+ | * die Widerstandsangaben auf dem LED-Streifen sind nicht korrekt (richtige Werte siehe Foto: R=240 Ohm, G=100 Ohm, B=130 Ohm) | ||
+ | |||
+ | ===Obsolete Components=== | ||
+ | Leider ist in der Zwischenzeit das AVROpendous-Board nicht mehr erhältlich. Das Projekt wurde in [http://code.google.com/p/micropendous/ "MicrOpendous"] umbenannt. Die Designs für die neuen Board sind derzeit noch in der Entstehung. Als Alternative (für Leute, die sich mit Embedded Software auskennen und wissen, an welcher Seite ein Lötkolben heiß wird) steht das [http://www.pjrc.com/teensy/ Teensy-Board] zur Verfügung. | ||
+ | |||
+ | ==Aktuelle Version== | ||
+ | [http://www.edener.de/vdr-solarstorm-0.4.0.tgz 0.4.0] | ||
+ | |||
+ | ==Links== | ||
+ | # [http://www.edener.de Homepage des Plugins] | ||
+ | |||
+ | [[Kategorie:Plugins]] | ||
+ | [[Kategorie:Atmo-Light]] | ||
+ | [[Kategorie:Hardware]] | ||
+ | {{i18n|solarstorm}} |
Aktuelle Version vom 25. August 2013, 11:07 Uhr
Inhaltsverzeichnis |
[Bearbeiten] Beschreibung
Autoren: Eike Edener, Daniel König
Solarstorm ist eine Erweiterung des TV Bildschirms durch LEDs rings um den TV herum, ähnlich Philipps Atmolight.
[Bearbeiten] Status
Letztes Update 03/2013
[Bearbeiten] Bilder und Videos
Ein erstes Video gibt es hier, hier ein Foto in besserer Qualität:[Bearbeiten] Motivation
Das Atmolight hatte zu wenig Kanäle, und cooler sein als Philips ist eh Pflicht. Aber im Ernst: Nachdem wir einen Philips Aurea Fernseher in freier Wildbahn gesehen haben, fingen wir gleich an zu philosophieren, ob wir unser Atmolight nicht auch in diese Richtung weiterentwickeln können. Nach kurzer Zeit war klar: Mit dem bestehenden Atmolight-Konzept tun wir uns schwer, ein Neues musste also her.
[Bearbeiten] Konzept
Vorgaben für das Solarstorm als Nachfolger des Atmolights waren:
- variable Kanalanzahl ohne Neuprogrammierung des Controllers
- leichte Erweiterbarkeit der Kanalanzahl
- an verschiedene Bildschirmgrößen anpassbar
- Anbindung per USB an den VDR (RS-232-Schnittstellen werden immer seltener)
- Versorgung über das Netzteil des VDRs
- Abwärtskompatibilität zu den "Common Anode"-LED-Streifen
- Herausgekommen ist folgendes Konzept
Es soll eine zentrale Steuerplatine geben, die mit dem VDR-Plugin kommuniziert. Da fast alle USB-fähigen Controller, die in Frage kamen, "unangenehm zu lötende" Gehäuseformen haben, musste also eine Kaufplatine mit USB-fähigem Controller und Bootloader ab Werk her. Bootloader deshalb, weil man dann auf zusätzliches Programmierequipment verzichten kann und auch der "Endkunde" in der Lage ist, die Firmware zu aktualisieren. Die Wahl fiel auf das AVROpendous , dies gibt es in verschiedene Varianten. Um die Generierung der PWM für die LEDs nicht in Software machen zu müssen, entschlossen wir uns für den TLC5940 von Texas Instruments für die Erzeugung der PWM. Dieser wird per SPI mit Daten versorgt, also ideal für die Ansteuerung mit dem AVR. Außerdem lassen sich mehrere TLCs in Reihe schalten, die variable Kanalanzahl ist also gesichert.
[Bearbeiten] Hardware
[Bearbeiten] Hardware-Anforderungen
- VDR mit full featured DVB-Karte und freiem /dev/video0-Device (kein Parallelbetrieb mit xawtv, tvtime etc. möglich oder
- VDR mit Software-Ausgabedevice (z.B. das xine-Plugin) und
- LED-Streifen und
- 1 Steuerplatine + USB-Kabel und
- mind. 1 Treiberplatine + Verbindungskabel zur Steuerplatine und
- Verbindungskabel zwischen den Treiberplatinen bei Verwendung von mehreren Treiberplatinen
[Bearbeiten] Steuerplatine (AVRopendous)
Die Steuerplatine übernimmt folgende Aufgaben: Ermittlung der Anzahl angeschlossener Treiberplatinen beim Start, Meldung der Anzahl an den VDR, Entgegennahme der PWM-Daten vom Solarstorm-Plugin und Weiterleitung an die TLC-Controller auf den Treiberplatinen. Später soll zur einfacheren Inbetriebnahme auch noch eine Testfunktion integriert werden, mit der man eine einfache Verdrahtungsprüfung der angeschlossenen LED-Streifen ohne laufendes VDR-Plugin durchführen kann.
[Bearbeiten] Treiberplatine
Die Treiberplatine besteht aus einer einseitigen Platine der Größe 68x75 mm. Diese kommt ohne SMD-Bauteile aus. Der Anschluss an die Steuerplatine erfolgt per 10-poliger Pfostenleiste. Die Verbindung mehrerer Treiberplatinen erfolg ebenfalls per 10-poliger Pfostenleiste. Auf der letzten Treiberplatine in der Kette muss ein Jumper gesetzt werden, um das Ende der Kette zu kennzeichnen. Angeschlossen werden können LED-Streifen mit gemeinsamen Pluspol (common anode). Der maximale zulässige Strom pro Kanal wird durch die ULN2803-Treiber begrenzt; mehr als 500 mA pro Kanal dürfen nicht verwendet werden (zusätzlich ist der zulässige Gesamtstrom von 2,5A zu beachten). Pro Treiberplatine können 16 LED-Stränge angeschlossen werden. Durch die RGB-LEDs ergeben sich dadurch 5 1/3 Kanäle pro Platine. Der überschüssige Strang ist nicht verloren, sondern wird bei der Kaskadierung mehrerer Treiberplatinen verwendet (ein Vielfaches von 3 als Platinenanzahl ergäbe eine optimale Ausnutzung).
[Bearbeiten] Verdrahtung AVRopendous-Tiny
Port B | Signal | IN-Stecker Treiberplatine |
PB0 | unused | - |
PB1 | SCLK (SPI Clock) | Pin 8 |
PB2 | MOSI | Pin 10 |
PB3 | MIS0 | Pin 9 |
PB4 | unused | - |
PB5 | unused | - |
PB6 | XLAT | Pin 7 |
PB7 | GSCLK | Pin 4 |
VCC | +5V | Pin 1 |
GND | GND | Pin 2 |
Port B | Signal | IN-Stecker Treiberplatine |
PC5 | BLANK | Pin 6 |
Rest | unused | - |
Die letzte Platine in der Kette erhält einen Jumper im OUT-Stecker über Pin 9 & 10. Der Anschluss der LED-Leisten beginnt bei der 1. Platine (die an der Steuerplatine) gegenüber vom +/- Anschluss in der Reihenfolge RGB mit Kanal "links unten", dann weiter im Uhrzeigersinn.
[Bearbeiten] LED-Streifen
Um die Vielzahl der Kanäle auch nutzen zu können und um das modulare Konzept verifizieren zu können, haben wir passende LED-Streifen entwickelt (und irgendwie gehört es auch seit dem Atmolight zu jeder Entwicklung dazu ;) ). Wir entschieden uns dieses Mal für SMD-LEDs. Diese haben den Vorteil, dass man keine Löcher bohren muss, die Platinen ziemlich schmal werden und sich relativ unauffällig auch an modernen Flachbildfernsehern anbringen lassen. Die Streifen lassen sich alle 5 cm trennen und sollten sich dadurch an Fernsehern nahezu jeder Größe montieren lassen. Ein "Basisstreifen" ist 50x1cm groß, mehrere Streifen lassen sich in Reihe schalten. Um einzelne Kanäle anzuschließen, müssen die Streifen nicht vollständig geteilt werden, es reicht, die Leiterbahnen "R", "G" und "B" zu unterbrechen.
So kommen die LED-Platinen vom Platinenhersteller | |
Platinen in aufgetrennt, LEDs bereits bestückt | |
Eine einzelne Platine nach dem Auftrennen mit LEDs | |
50er-Pack SMD-LEDs, die Widerstände werden nicht gebraucht | |
50 LEDs auf der Rolle | |
nochmal in groß | |
Großaufnahme | |
Durch Auftrennen der Leiterbahn lassen sich einzelne Kanäle abtrennen |
[Bearbeiten] Software
[Bearbeiten] AVR-Firmware
[Bearbeiten] Übersicht
Die Firmware für das AVROpendous befindet sich mit im Archiv des Plugins.
[Bearbeiten] Programmierung
Für die Programmierung der Firmware in den Controller werden folgende Pakete benötigt:
- dfu-programmer
- LibUSB
[Bearbeiten] Inbetriebnahme
Nach der Programmierung wird die USB-Verbindung zur Platine getrennt und wieder hergestellt. Durch Eingaben von "dmesg" als Benutzer root sollte man nach dem Anstecken folgende Ausgabe erhalten:
usb 2-1: New USB device found, idVendor=03eb, idProduct=204f usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 2-1: Product: Solarstorm V1.00 usb 2-1: Manufacturer: Eike Edener (C) 2010 usb 2-1: SerialNumber: 000000000000 usb 2-1: configuration #1 chosen from 1 choice
[Bearbeiten] VDR-Plugin
[Bearbeiten] Übersicht
[Bearbeiten] Programmierung
[Bearbeiten] Inbetriebnahme
<!> TODO <!>
[Bearbeiten] Einstellungen
Im OSD können folgende Einstellungen vorgenommen werden:
Parameter | Beschreibung |
---|---|
Startmode | Beim Start des VDR ist das Solarstorm:
immer an: eingeschaltet immer aus: ausgeschaltet timerabhängig: nur eingeschaltet, wenn der VDR nicht durch einen Timer gestartet wurde |
TODO | die weiteren Parameter beschreiben |
[Bearbeiten] SVDRP-Befehle
Befehl | Beschreibung |
---|---|
ON | schaltet das Solarstorm an |
OFF | schaltet das Solarstrom aus |
STATUS | gibt den Status des Solarstorm aus (ein- oder ausgeschaltet) |
[Bearbeiten] Montage
Probemontage an einem 46" Pioneer Kuro |
---|
[Bearbeiten] Sonstiges
[Bearbeiten] interne Funktionsweise
[Bearbeiten] SPI-Kommunikation
Der Atmel-Controller kommuniziert mit den PWM-Controllern auf den Treiberplatine über SPI (serial peripheral interface). Die PWM-Controller enthalten jeweils ein Schieberegister, dass lang genug ist, um die Helligkeitsinformationen aller 16 Kanäle aufzunehmen (16 x 12 bit => 192 bit). Durch das serielle Verschalten mehrerer Treiberplatinen enthält man ein entsprechend langes Schieberegister. Der Ausgang der Kette ist wieder mit dem Eingang des Controllers verbunden. Dies ermöglicht einer automatische Erkennung der Anzahl der angeschlossenen Treiberplatinen durch den Controller. Der Controller schickt beim Einschalten so lange Daten auf den Ring, bis an seinem Eingang die Daten wieder ankommen.
[Bearbeiten] Verbesserungspotential
Der Aufbau und die Inbetriebnahme der "Nullserie" hat einiges an Erkenntnissen gebracht. Für die nachfolgende Serien wären aus unserer Sicht folgende Verbesserungen sinnvoll:
- etwas größere Platine, um ein 4. Bohrloch unterzubringen
- mehr Abstand von den Bohrlöchern zu den Bauteilen (um z.B. Distanzbolzen zu montieren)
- evtl. Integration einer Sicherung und eines Verpolungsschutzes
- Verwendung der DIP-Version des AVROpenDouse oder eines Nachfolgers + Erstellung einer Adapterplatine mit 10-poliger Pfostenleiste
- die Widerstandsangaben auf dem LED-Streifen sind nicht korrekt (richtige Werte siehe Foto: R=240 Ohm, G=100 Ohm, B=130 Ohm)
[Bearbeiten] Obsolete Components
Leider ist in der Zwischenzeit das AVROpendous-Board nicht mehr erhältlich. Das Projekt wurde in "MicrOpendous" umbenannt. Die Designs für die neuen Board sind derzeit noch in der Entstehung. Als Alternative (für Leute, die sich mit Embedded Software auskennen und wissen, an welcher Seite ein Lötkolben heiß wird) steht das Teensy-Board zur Verfügung.