Borg Ventilator: Unterschied zwischen den Versionen
Sauron (Diskussion | Beiträge) |
Sauron (Diskussion | Beiträge) |
||
Zeile 73: | Zeile 73: | ||
[http://www.youtube.com/watch?v=vhsH37fDi48 Video des Bildaufbaus] | [http://www.youtube.com/watch?v=vhsH37fDi48 Video des Bildaufbaus] | ||
[http://www.youtube.com/watch?v=eYyDQ3mxzsk Farbiger animierter Würfel] (slowmotion) | |||
[[Kategorie:BlinkenBorg]] | [[Kategorie:BlinkenBorg]] | ||
[[Kategorie:FPGA]] | [[Kategorie:FPGA]] |
Version vom 13. Juli 2009, 16:57 Uhr
Borg Ventilator Release status: experimental [box doku] | |
---|---|
Datei:Borgventilator bildaufbau2.gif | |
Description | Der Borg Ventilator ist ein Rotierendes LED Display basierend auf einem FPGA-System |
Author(s) | Sauron |
Platform | FPGA |
Dieses Projekt ist zusammen mit dieser Seite im entstehen.
Über dieses Projekt
Auch bei diesem Borg geht es natürlich um Blinken und LED's. Diesmal Sitzen die LED's jedoch auf den Flügeln eines Ventilators. Jedes Blatt ist mit RGB LED's bestückt, die von einem FPGA angesteuert werden. Wenn sich der Ventilator dreht, dann wird ein Bild erzeugt.
Vorstellung des Projekts
Im indernett findet man verschiedene rotary clocks, led fans und ähnliches rotierendes leuchtgeborgse. Da dachte ich mir , das probierst du auch mal aus. Dabei hab ich mir hohe Ziele gesteckt:
1) Die Daten werden in Echtzeit von aussen eingespeisst. 2) Keine Schleifkontakte 3) Viele Led's 4) Einen robusten und hochwertigen Aufbau
Als Datenquelle will ich ein Standard VGA Anschluss verwenden. Dieses VGA Signal wird digitalisiert, aufbereitet und auf dem Ventilator dargestellt.
Der Flügel
"An Bord" befinden sich ein FPGA von Xilinx aus der Spartan Baureihe, Plattform Flash, Schieberegister, ein wenig Ram, und jede menge smd rgb Led's. Geplant sind 64 Led's pro Blatt. Macht bei 4 Blättern (ähm rechne.....) 256 Led's. Nun könnte mann noch die Led's auf den Flügeln leicht versetzt anordnen um die Auflösung zu erhöhen. Theoretisch möglich wäre dann eine Auflösung von 512 Bildpunkten in der Diagonalen.
VGA Signal
Das VGA Signal soll von 3 AD Wandlen (für jede Farbe einen) Digitalisiert werden. Dabei versuche ich eine möglichst hohe Auflösung zu erreichen, damit jeder beliebige PC als Signalquelle genommen werden kann. Die AD Wandler werden von einem weiteren FPGA angesteuert. Anschliessend wird das Bild in einem SRAM gespeichert. (Auflösung 512 x 512 x 16 Bit) Für jede Led wird die Augenblickliche Position berechnet, und der Dazu passende Farbwert vom SRAM zu einem BRAM kopiert. Sobald alle LED's berechnet sind, wird das BRAM als Datenpaket an den Flügel gesendet. Da die Datenrate konstant (7,6 MB/s) ist, sinkt die Auflösung mit steigender Drehzahl.
Stromversorgung
Jetzt wird es ein wenig Schwierig, denn wie bekomm ich Spannung auf die Blätter des Ventilators ? Eine elegante Lösung wäre , die Spannung Induktiv zu Übertragen, wie bei einem Trafo. Mann könnte die Sekundärwicklung mitdrehen lassen. Ob das funktioniert wird sich zeigen.
Datenübertragung
Wird ebenfalls induktiv übertragen . Am einfachsten währe es wohl das signal des rotierenden trafos zu modulieren. jedoch wird die maximal mögliche Übertragungsrate durch die Induktivität begrenzt. das könnte man umgehen durch eine 2. spule mit nur wenigen windungen. Jörg gab mir den Tip, dass ein Videorekorder-Kopf eigentlich genau das macht, was ich brauche. Also hab ich meinen ausgedienten VCR zerlegt, und ihn seines kopfes beraubt. Der Kopf besitzt 6 rotierende Trafos, die nun an einen FPGA angeschlossen sind. Da ein Trafo keine Gleichspannung übertragen kann, müssen die anzahl Hi Signale gleich der anzahl Low Signale sein. Theoretisch kann das Taktsignal aus den Datensignalen zurückgewonnen werden (praktisch leider nicht). Ich verwende den B8B10 Code, der all diese eigenschaften vereint, und 8 Bits in 10 Bits darstellt. Auf 4 der 6 Transformatoren werden Daten zum Flügel transportiert, der 5. Trafo transportiert Daten in die andere Richtung (zum Debuggen und Statusdaten) und der Letzte Trafo überträgt ein Taktsignal für die Kommunikation.
Die Daten Werden Paketweise gesendet. Ein Paket umfasst 520 Byte, und besteht aus 512 Byte Nutzdaten. Danach folgt eine 6 Byte lange Magic Number und noch 2 Byte Checksumme. Mit der Magic Number kann der Empfänger erkennen, ob er immernoch synchron zum Sender Arbeitet und sich notfalls auch neu Synchronisieren. bei Fehlern in der Checksumme wird das Datenpaket ignoriert.
Die Rohdaten werden mit 4 mal 20 Mbit übertragen, das entspricht etwas 7,5 MByte pro Sec.
Projektfortschritt
Ich habe das Projekt grob in 4 Teile geteilt:
1) Datenübertragung (in Arbeit) 2) Energieübertragung 3) Verarbeitung des VGA Signals (in Arbeit) 4) Erstellung von Professionllen Platinen.
Ein neuer Videokopf ist besorgt (Beim alten ist die Zuleitung defekt gewesen) und Passend Modifiziert. Es gibt im Augenblick noch einige Probleme mit Jitter und Einstreuungen. Bisher klappt die Kommunikation nur in eine Richtung, aber dafür über 4 Kanäle gleichzeitig. Dadurch erreiche ich 7,5 Mb/sec. Ein test der Kommunikation bei drehenden Kopf ist noch nicht erfolgt.
Weiterhin habe ich jetzt angefangen, das Speicherinterface zu programmieren, Hier werden sich demnächst bis zu 50 MB/s durchquetschen müssen. Bei einem Simulationslauf des Speicherinterface ist nebenstehende animation entstanden.
Hier ist gut zu sehen, wie die hohe Auflösung durch den versatz der leds auf den einzelnen Flügeln erreicht wird.
Farbiger animierter Würfel (slowmotion)