Forum: Mikrocontroller und Digitale Elektronik Led-Matrix an VGA


von Manuel (Gast)


Lesenswert?

Hallo,

ich wollt gern einen LED-Monitor basteln den ich an den VGA-Anschluss 
vom Laptop betreiben kann.
Für den Anfang darf es monochrom und im Größenbereich von 16x12 LEDs 
sein. Habe mir gedacht dazu das Synchronisationssignal mit Flip-Flops 
auszuwerten. d.h. den Zeilenwechsel zu realisieren müsste recht leicht 
sein. Für die Anzeige selbst würde ich mir einfach ein Farbe raus 
nehmen, das Signal einer Zeile in 16 Intervalle hacken, und damit dann 
die LEDs ansteuern.

Will euch zu Beginn gar nicht groß in die Details einweihen. Wollte 
eigentlich nur mal fragen ob ich Neuland betrete oder ob es schon 
Erfahrungen mit so etwas gibt.

Manuel

von ingo (Gast)


Lesenswert?

Wenn Du zu jedem Zeitpunkt nur eine LED, Synchron zum ankommenden Signal 
leuchten lassen möchtest, analog zur Bildröhre, brauchst Du einen sehr 
hohen Strom, ob den die LED's vertragen? Da würdest Du mit Zählern, 
Dekodern und kräftigen Treibern auskommen.
Alternative: In Speicher einschreiben, dann eine ganze Spalte (oder 
Zeile) mit einmal, macht natürlich bedeutend mehr Aufwand. Und ob Du 
den, vor dem Hintergrund dieser Meldung
http://www.heise.de/newsticker/meldung/VGA-Buchse-zum-Aussterben-verurteilt-1151036.html
noch treiben möchtest?
mfG ingo

von Andreas K. (derandi)


Lesenswert?

Klingt als ob du dir ne Anhängekupplung für nen Ferrari basteln 
willst...

von dasrotemopped (Gast)


Lesenswert?

Lassen wir mal Zahlen sprechen um den Aufwand und den daraus folgenden 
Sinn des Vorhabens abzuschätzen.
Karten, die die gesammte Bandbreite aller VGA Auflösungen unterstützen 
sehen so aus:
http://www.vd-shop.de/vga2pciehighspeedvgagrabber-p-284.html

Die kleinste Auflösung, die man meisst mit VGA Karten einstellen kann 
ist 640x480@60Hz. Das bedeutet, das die Pixel als 3 Analogsignale mit 
einem Takt von ~18 MHz ( im Detail sogar etwas schneller, siehe VGA 
Timings in Google ) ausgegeben werden. Das VGA Farbsignal liegt zwischen 
0 und 0,7 Volt. Die Elektronik, die solch ein Signal bei 18 MHz 
vernünftig auswerten kann wird etwas komplex sein. Ich würde ein FPGA 
Design erwarten wenn es eine Homebrew Lösung werden soll. Mir wäre der 
Aufwand definitiv zu gross für ein Freizeitprojekt.
Dagegen wird die LED Matrix bei 16x12@25Hz monochrom einen (digitalen) 
Datenstrom von 4.8 kHz mit 1 Bit Genauigkeit benötigen. Könnte man auch 
noch über RS232 vom PC an einen Atmel schicken, der dann die LEDs per 
Multiplexing ansteuert. Da könnte man gleich den Sprung auf 256 Farben 
wagen, die Datenrate von RS232 gibts ja her. Ebenso kann man noch ein 
bisschen die Auflösung hochdrehen. Nur die Steuersoftware auf dem PC ist 
da dann etwas aufwändiger ( Framebuffer grabben, downscaling und 
Farbreduktion sollte aber nicht unlösbar sein).
Welches Konzept ist ansprechender ?

Gruß,

dasrotemopped

von Manuel (Gast)


Lesenswert?

Danke für die Anregungen!

ingo schrieb:
> Wenn Du zu jedem Zeitpunkt nur eine LED, Synchron zum ankommenden Signal
> leuchten lassen möchtest, analog zur Bildröhre, brauchst Du einen sehr
> hohen Strom, ob den die LED's vertragen?

Den Gedanken hatte ich auch: Ich weiß dass bei 
Hochgeschwindigkeitsaufnahmen speziell rote LEDs für irgendwelche kurze 
Zeiten mit bis zu 20A zur Belichtung genutzt werden. Wie lange das gut 
geht weiß ich aber auch nicht. Das gehörte für mich zu den späteren 
Überlegungen.

ingo schrieb:
> Alternative: In Speicher einschreiben...

Das war gerade das was ich nicht wollte. Ich hatte nebenbei aber die 
Idee den Stoßstrom mit einem kleinen Kondensator abzufangen, sodass 
evtl. auch die Zeit bis zur "Neubeschreibung" der einzelnen LED 
überbrückt wird, und ein zu erwartendes Bildflackern aus bleibt.

ingo schrieb:
> Und ob Du
> den [Aufwand], vor dem Hintergrund dieser Meldung
> http://www.heise.de/newsticker/meldung/VGA-Buchse-...
> noch treiben möchtest?

Es soll ja kein Aufwand werden...

Andreas K. schrieb:
> Klingt als ob du dir ne Anhängekupplung für nen Ferrari basteln
> willst...

Hab ne Anhängekupplung am Fahrrad. Das Fahrrad würde ich dann einfach an 
den Ferrari schweißen. -- Idee war sich das Geld für ein LED-Mapper zu 
sparen. (Wie das hier, nur halt mit LEDs und nicht in der musikalischen 
Anwendung: http://www.youtube.com/watch?v=kOFjyEn9EE4)

@dasrotemopped:
hmmm... - Dass die Frequenzen ganz schön Rabbatz machen habe ich mir 
auch überlegt. Ich dachte es steht und fällt alles mit der Pulsdauer an 
der Stelle vom Sync.-signal, wo der Zeilenwechsel markiert ist...und das 
geht noch zu handhaben...machst mich gerade unsicher...

Mit anderen Worten: Keine Erfahrungen?

von Achim M. (minifloat)


Lesenswert?

Timing ist alles... bau dir 3 schnelle 1-Bit AD-Wandler aka 
Komparatoren, lass dir bei jedem Hsync ein Interrupt geben, wo in der 
ISR ein Timer auf 0 gesetzt wird und abhängig von der Zeilennummer ein 
Timer-OVF-Schwellwert gesetzt wird. Bei den o.g. 640x480 bräuchtest du 
an sich ja nur jede 20. Zeile.

Schema:
in der ersten Zeile die erste LED deiner 1. Matrixzeile einlesen
in der zweiten Zeile die zweite LED deiner 1. Matrixzeile einlesen
[...]
in der 16. Zeile die 16. LED deiner 1. Matrixzeile einlesen

Die gerade eben eingelesene Matrixzeile ausgeben(Zeilenbit und Bitmuster 
setzen) und 4 Zeilen nichts tun.

in der 21. Zeile die erste LED deiner 2. Matrixzeile einlesen
in der 22. Zeile die zweite LED deiner 2. Matrixzeile einlesen
usw...

Hoffe das war jetzt so verständlich. mf

von dasrotemopped (Gast)


Lesenswert?

Hmmm, das Simulieren vom Verhalten eines Röhrenmonitors mit einer LED 
Matrix klingt erst mal einfacher zu realisieren als das 
Zwischenspeichern des VGA Signals, man sollte dabei aber bedenken, das 
eine wichtige Funktion der "Röhre"  das Nachleuchten ist. Und eine LED 
tut das erst mal nicht. Schon beim Multiplexing ist die kontrollierte 
Übersteuerung einer LED wichtig um eine ausreichende Helligkeit zu 
erreichen. Dabei werden aber auch ganze Zeilen parallel angesteuert, um 
die Dunkelphase jeder einzelnen LED so klein wie möglich zu halten. Wenn 
allerdings die LEDs einzeln angesprochen werden, wird es bei steigender 
Auflösung schnell nötig, das Nachleuchten per Hardware zu simulieren ( 
sprich, die LED nach der Ansteuerung weiter leuchten zu lassen, auch 
wenn schon die nächste LED angesteuert wird). Statt die LED direkt 
anzusteuern würde ich für das Nachleuchten einen Kondensator auf das 
gewünschte Spannungsniveau laden und dann über diese Spannung einen FET 
steuern, der die LED schaltet. Die Nachleuchtzeit kann dann über die 
angelegte Spannung am Kondensator so wie einen Entladewiderstand 
parallel zum Kondensator variiert werden.
Nicht gelöst ist aber immer noch nicht das Abgreifen des Farbsignals vom 
VGA Port. Was ist der Grund dafür, das das Signal unbedingt von VGA 
kommen soll ? Die Leuchtwand im Youtube Video wird auch nicht über VGA 
gesteuert, denke ich.

>Das war gerade das was ich nicht wollte. Ich hatte nebenbei aber die
>Idee den Stoßstrom mit einem kleinen Kondensator abzufangen, sodass
>evtl. auch die Zeit bis zur "Neubeschreibung" der einzelnen LED
>überbrückt wird, und ein zu erwartendes Bildflackern aus bleibt.

Das VGA Signal ist nicht beliebig belastbar. Der Eingang deines VGA2LED 
Adapters muss recht hochohmig sein und eine Impedanz von 75 Ohm haben. 
Den einzigen Kondensator, den du da laden kannst ist der Eingang eines 
schnellen AD Wandlers. Ggf. statt dessen eine schnelle Verstärkerstufe, 
die die LEDs treibt. Schnell heisst dabei natürlich im MHz Bereich.
Und wie schon vorher gesagt, das VGA Farbsignal liegt zwischen 0 und 0.7 
Volt, zu wenig für eine direkte Ansteuerung einer LED. Schau dir doch 
mal das Farbsignal von deinem VGA Ausgang auf dem Oszilloskop an.

Gruß,

dasrotemopped.

von ich (Gast)


Lesenswert?

Hi,

das hab' ich mir auch schon überlegt (aber nur überlegt und NIX 
gemacht).
Allerdings wollte ich ein VGA-Bild TEILWEISE anzeigen, immer die obere 
linke Ecke. Und ich wollt's einfarbig machen, sollte aber auch 
mehrfarbig klappern...

Ich hatte mir das so gedacht (bei 16x10 Pixel, in Farbe):
-3 Komparatoren für die Farben ==> gibt immerhin 8 unterschiedliche 
Farben
-die Komparatoren "gehen" in (je) einen Schieberegister-Eingang
-Schieberegister so lang wie die darzustellenden Zeilen (hier 16 Bit)
-Zeilen-Inpuls als Trigger
-zum Einlesen einen Taktgenerator (einen Takt pro Pixel, 18MHz?)

-->nach Triggerung durch den Bildimpuls wird ein Zyklus gestartet:
-nach Triggerung durch den Zeilenimpuls wird der Taktgenerator für 16 
Takte freigegeben -> eine Zeile wandert in die Schieberegister.
Die restliche "Zeilenzeit" genügt (hoffentlich) um die Schieberegister 
parallel auszulesen.
-Das Schieben und Auslesen wird neunmal wiederholt, dann hat man den 
Bild-Ausschnitt im Speicher (z.B. AVR).
Oder man kann vielleicht ohne Speicher/AVR/... direkt auf die LEDs 
gehen, das müsste man probieren. Wird aber wahrscheinlich flackern 
(60..85 Hz)

von ingo (Gast)


Lesenswert?

Einen Vorschlag hätte ich noch, wenn Du keine Graustufen brauchst (nur 
ein/aus), Helligkeitssignal triggern, dann seriell in eine Kette 
Schieberegister mit internem Latch (mir fällt da der 4094 ein, aber 74HC 
wäre besser, schau mal im AVR-Tutorial unter serielle 
Ausgabeporterweiterung) , dann kannst Du die Spalten einer ganzen Zeile 
gleichzeitig an die LED's legen, die dann für eine ganze Zeilenzeit (bzw 
mehrere, wenn eine LED-Zeile für mehrere Bildschirmzeilen dienen soll) 
eingeschaltet bleiben können. Das wäre ein Kompromiss zwischen Aufwand 
und LED-Belastung.
mfG ingo

von ingo (Gast)


Lesenswert?

Autsch, da hatt ich mir doch den letzten Beitrag nicht zuende 
durchgelesen, so hatte ich es mir eigentlich gedacht.

von Manuel (Gast)


Lesenswert?

Also doch nochmal zum genaueren Hintergrund. Ich will ein Video das live 
auf dem Laptop generiert wird als "Lichtspiel" auf den LED-Monitor 
zaubern, d.h. in Form einer Wand mit Lichtpunkten/-flächen.

Mini Float schrieb:
> Schema:
> in der ersten Zeile die erste LED deiner 1. Matrixzeile einlesen

Den Ansatz finde ich keine schlechte Idee! Ich hatte mir bisher gedacht, 
quasi die erste LED-Zeile 20 mal mit den ersten 20 Zeilen vom Farbsignal 
durchlaufen zu lassen, um einen guten "Durchschnitt" zu erhalten.

dasrotemopped schrieb:
> Statt die LED direkt
> anzusteuern würde ich für das Nachleuchten einen Kondensator auf das
> gewünschte Spannungsniveau laden und dann über diese Spannung einen FET
> steuern, der die LED schaltet.

hmmm - Dann bräuchte ich für jede LED eine solche Schaltung. Ein FET 
kosten bestenfalls 0,3EUR. 16x12x0,3EUR=57,6EUR. Das würde ich mir 
überlegen wenn ich eine konkrete Vorstellung habe.

dasrotemopped schrieb:
> Das VGA Signal ist nicht beliebig belastbar.

Gut dass das so nochmal klargestellt wird, aber hatte schon OPVs/FETs 
eingeplant :) (Aber wie gesagt, nicht gleich 16x12 Stück.)

@ich (Gast): An dieser Stelle scheitert es bei mir. Von AVR hab ich 
keine Ahnung. Aber vielleicht ist das ja die Chance sich mal damit 
auseinander zusetzten. Werde mir mal den Tutorial-Tipp von ingo ansehen.

Habt mir auf jeden Fall schon mal weiter geholfen und bin nach wie vor 
offen.

Grüße und schönen Advent,
Manuel

von Jobst M. (jobstens-de)


Angehängte Dateien:

Lesenswert?

Ich würde es so machen ...

Evtl. (ganz sicher!) müssen die Signale aus der VGA-Buchse noch etwas 
vorverarbeitet werden ...


Gruß

Jobst

von chris (Gast)


Lesenswert?

Also, ich würde den einfachen Ansatz gehen, video2usb Driver (fotoframe)
und einfach ein USB uC der dann das led multiplexing macht und sich
als ein solche fotoframe ausgibt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.