Borg Ventilator: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
Zeile 51: Zeile 51:


[[Bild:Videokopf.JPG|150px|thumb|Umgebauter Kopf eines Videorekorders]]
[[Bild:Videokopf.JPG|150px|thumb|Umgebauter Kopf eines Videorekorders]]
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 berührungslos Induktiv Übertragen. Das Prinzip funktioniert wie ein Trafo, mit dem Umterschied das sich hier die Sekundärseite dreht.
Je weniger windungen, desto höhere Datenraten werden Möglich. Passende Spulen findet man in jeder Kopftrommel eines Videorekorders.
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 von 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 Daten Werden Paketweise gesendet. Ein Paket 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.  
Die Rohdaten werden mit 4 mal 20 Mbit übertragen, das entspricht etwas 7,5 MByte pro Sec.


== Projektfortschritt ==
== Projektfortschritt ==

Version vom 20. Juli 2009, 18:39 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.


Video Signal

Das Video Signal soll von einem Wandler Chip digitalisiert werden, der normalerweise in Monitoren verbaut wird. Nebenbei besitzt der Chip auch einen DVI Eingang. Der Wandler wird von einem FPGA angesteuert. Anschliessend wird das Bild Heruntergerechnet und in einem SRAM gespeichert. (Auflösung 512 x 512 x 16 Bit) Aus dem Inhalt des Ram werden dann passende Datenpakete gebildet. und zu dem Flügel übertragen. 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

Umgebauter Kopf eines Videorekorders

Die Daten werden berührungslos Induktiv Übertragen. Das Prinzip funktioniert wie ein Trafo, mit dem Umterschied das sich hier die Sekundärseite dreht. Je weniger windungen, desto höhere Datenraten werden Möglich. Passende Spulen findet man in jeder Kopftrommel eines Videorekorders. 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 von 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 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)
1.1)   Hardware planen                (Fertig)
1.2)   Daten in Datenpakete Packen    (in Arbeit)
1.3)   Datenpaket Versenden           (Fertig)
1.4)   Datenpaket Empfangen           (Fertig)
1.5)   Diagnosefähigkeiten            (in Arbeit)
1.6)   Rückkanal                      (in Arbeit)
2)   Energieübertragung           (Zurückgestellt)
3)   Verarbeitung des VGA Signals     (in Arbeit) 
3.1)   Hardware planen                (zurückgestellt)
3.2)   VGA Signal einlesen            (zurückgestellt)
3.3)   RAM beschreiben, lesen         (Fertig)
3.4)   Umrechnung Koordinatensysteme  (Fertig)
4) Erstellung von Professionllen Platinen. 
   (Kommt ganz zum Schluss)
Datei:Borgventilator bildaufbau2.gif
So wird das Bild aufgebaut

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.


Bei den Arbeiten am 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.

Video des Bildaufbaus

Farbiger animierter Würfel (slowmotion)

Farbiger animierter Würfel (echtzeit)