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
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
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
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?
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
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.
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)
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
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
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.