Borg Ventilator: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
Keine Bearbeitungszusammenfassung
Zeile 15: Zeile 15:
Dieses Projekt steht unter der [http://creativecommons.org/licenses/by-nc/3.0/de/ creative commons Lizenz]. (cc-nc) Eine Kommerzielle Nutzung ist ausdrücklich Verboten
Dieses Projekt steht unter der [http://creativecommons.org/licenses/by-nc/3.0/de/ creative commons Lizenz]. (cc-nc) Eine Kommerzielle Nutzung ist ausdrücklich Verboten


==Über dieses Projekt==
== Das Projekt ==


Auch bei diesem [[Borg]] geht es natürlich um Blinken und LED's. Diesmal Sitzen die LED's
Ziel des Projektes ist es ein Videosignal auf einem Ventilator darzustellen. Dazu besitzt der Ventilator insgesamt 244 RGB Led's verteilt auf 4 Flügel. Als Datenquelle will ich ein Standard VGA Anschluss verwenden. Dieses VGA Signal wird digitalisiert, aufbereitet und auf dem Ventilator dargestellt.
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 ==
== Der Flügel ==
Zeile 39: Zeile 26:
== Video Signal ==
== 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.  
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. Aus dem Inhalt des Ram werden dann passende Datenpakete gebildet. und zu dem Flügel übertragen.
(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 ==
== Stromversorgung ==


Jetzt wird es ein wenig Schwierig, denn wie bekomm ich Spannung auf die Blätter des Ventilators ?
Der Nötige Strom soll über einen Satz Schleifringe übertragen werden.
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 ==
== Datenübertragung ==
Zeile 53: Zeile 37:
Die Daten werden berührungslos Induktiv Übertragen. Das Prinzip funktioniert wie ein Trafo, mit dem Umterschied das sich hier die Sekundärseite dreht.
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.
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.
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.  


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 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.
Zeile 61: Zeile 45:
== Projektfortschritt ==
== Projektfortschritt ==


Ich habe das Projekt grob in 4 Teile geteilt:
Die Software ist weit vorangeschritten, die Hardware macht aber noch einige Probleme. Insbesondere die Kommunikation klappt noch nicht einwandfrei. Dafür lassen sich aber schon alle Led's ansteuern


1)  Datenübertragung            (70%)
Dummerweise Hat sich mein FPGA mit einer Qualmwolke verabschiedet
1.1)  Hardware planen                (Fertig)
1.2)  Daten in Datenpakete Packen    (60 % Fertig)
1.3)  Datenpaket Versenden          (Fertig)
1.4)  Datenpaket Empfangen          (Fertig)
1.5)  Diagnosefähigkeiten            (zurückgestellt)
1.6)  Rückkanal                      (zurückgestellt)
2)  Energieübertragung          (Zurückgestellt)
3)  Verarbeitung des VGA Signals    (30% Fertig)
3.1)  Hardware planen                (zurückgestellt)
3.2)  VGA Signal einlesen            (zurückgestellt)
3.3)  RAM beschreiben, lesen        (Fertig,aber fehlerhaft)
3.4)  Umrechnung Koordinatensysteme  (Fertig)
4) Erstellung von Professionllen Platinen. (10%)
   




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.
Da ich jetzt erst mal die schnautze voll habe vom VHDL coden, habe ich mal mit der Hardware angefangen.
Im Augenblick entwickel ich den Prototyp eines Flügels mit 64 Led's
== Weiterentwicklung ==
== Weiterentwicklung ==


Zeile 100: Zeile 62:
  7) Ein CAN Interface
  7) Ein CAN Interface


Hier noch ein Paar Videos, die bei der Simulation meines VHDL Codes entstanden sind.


[http://www.youtube.com/watch?v=vhsH37fDi48 Video des Bildaufbaus]  
[http://www.youtube.com/watch?v=vhsH37fDi48 Video des Bildaufbaus]  

Version vom 9. Dezember 2009, 02:52 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
License  creative commons Noncommercial




Dieses Projekt ist zusammen mit dieser Seite im entstehen.

Dieses Projekt steht unter der creative commons Lizenz. (cc-nc) Eine Kommerzielle Nutzung ist ausdrücklich Verboten

Das Projekt

Ziel des Projektes ist es ein Videosignal auf einem Ventilator darzustellen. Dazu besitzt der Ventilator insgesamt 244 RGB Led's verteilt auf 4 Flügel. 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, LED Treiber und jede menge smd rgb Led's. Es gibt 4 Flügel, die mit RGB Led's bestückt sind. Insgesamt werden 244 Led's verbaut. Da die normalen LED's einfach viel zu gross sind, werden smd Teile verwendet. Zusätzlich werden die Led's je flügel leicht versetzt. Dadurch verschwinden die Dunklen Streifen zwischen den Led's und die Auflösung steigt. 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. Aus dem Inhalt des Ram werden dann passende Datenpakete gebildet. und zu dem Flügel übertragen.

Stromversorgung

Der Nötige Strom soll über einen Satz Schleifringe übertragen werden.

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.

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

Die Software ist weit vorangeschritten, die Hardware macht aber noch einige Probleme. Insbesondere die Kommunikation klappt noch nicht einwandfrei. Dafür lassen sich aber schon alle Led's ansteuern

Dummerweise Hat sich mein FPGA mit einer Qualmwolke verabschiedet


Weiterentwicklung

Hier sind einige Ideen, die vielleicht irgendwann mal einzug halten werden. (Eine konkrete Umsetzung ist erstmal nicht geplant)

1) Eine LM32 CPU, die Animationen generiert, wie auf dem Farbborg
2) Einen sd Kartenslot für Animationen und Videos
3) Ein komfortables Bedieninterface
4) Ausgefallene LED's automatisch erkennen
5) Ein selbst Entwickeltes FPGA Board anstelle der Fertigen Boards, das universell einsetzbar ist.
6) Taktrückgewinnung am Flügel
7) Ein CAN Interface


Hier noch ein Paar Videos, die bei der Simulation meines VHDL Codes entstanden sind.

Video des Bildaufbaus

Farbiger animierter Würfel (slowmotion)

Farbiger animierter Würfel (echtzeit)