Forum: Mikrocontroller und Digitale Elektronik VGA Signal analysieren


von Marco M. (marco1987)


Lesenswert?

Hallo,

hier wurde ja schon des öfteren über Auswertung von VGA Signalen 
gesprochen, nur leider hab ich nichts passendes für mich gefunden.

Will mir ein Ambilight mit VGA bauen.
Könnt ihr mir sagen wie ich an die einzelnen Pixal rankomme?

Was ich bisher weiss:

nach V sync baut sich neues bild auf nach jeder einzelnen zeile gibt es 
dann ein H sync dieser dauert bei mir 20,4 us.

Wie komme ich den jetzt zb theoretisch an den x ten Pixel in der Zeile 
y?

Danke

von Roland P. (pram)


Lesenswert?

du musst den Pixeltakt ausrechnen.

Dann musst du nach Auftreten des V-Syncs einfach soviele H-Sync-Impulse 
zählen bis du in der richtigen Zeile bist und dann entsprechend dem 
Pixeltakt lange warten bist der richtige Pixel da ist. Dann musst RGB 
abtasten (möglichst >=8  bit) und voilà.

Obiges ist aber reichlich kompliziert. Da der Bildinhalt eh im PC 
irgendwo vor liegt, schau dass du da ran kommst. Da gibts soweit ich 
weiß DirectShow-filter, welche sich in die Grafikausgabe einknlinken.

Google mal nach "Atmolight Directshow"

Gruß
Roland

von holger (Gast)


Lesenswert?

>Könnt ihr mir sagen wie ich an die einzelnen Pixal rankomme?

Mit einer Lupe und einer Pinzette? SCNR ;)

von Marco M. (marco1987)


Lesenswert?

Roland Praml schrieb:
> du musst den Pixeltakt ausrechnen.
>
> Dann musst du nach Auftreten des V-Syncs einfach soviele H-Sync-Impulse
> zählen bis du in der richtigen Zeile bist und dann entsprechend dem
> Pixeltakt lange warten bist der richtige Pixel da ist. Dann musst RGB
> abtasten (möglichst >=8  bit) und voilà.
>
genau ich habe immer nach einer neuen Zeile einen timer gesatrtet, der 
zählt bis 5µs (1/4 ZeilenTakt) und dann soll der ADC messen, das müsste 
also an sich so gehen ja?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> genau ich habe immer nach einer neuen Zeile einen timer gesatrtet, der
> zählt bis 5µs (1/4 ZeilenTakt) und dann soll der ADC messen, das müsste
> also an sich so gehen ja?

Im Prinzip ja, nur solltest Du das Signal mit einer 
Sample-and-Hold-Stufe aufbereiten, weil Dein ADC mit hoher 
Wahrscheinlichkeit ganz erheblich langsamer ist als der Pixeltakt der 
VGA-Karte.

Obendrein bist Du mit dieser Zeitabzählmethode nicht synchron zum 
Pixeltakt; es kann also passieren, daß Du nicht beginnend mit einem 
Pixel abtastest, sondern an der Stelle des Überganges zwischen zwei 
benachbarten sich voneinander unterscheidenden Pixeln.

Das ist zur Steuerung eines "Ambilight"-Mechanismus eher ungeeignet.

Sinnvoller erscheint mir die Integration/Mittelung aller Pixel in einem 
Bildschirmquadranten zur Bestimmung der überwiegenden Farbe.

Schließlich soll ja nicht ein einzelnes Pixel oder eine einzelne 
Pixelzeile über die Farbe des "Ambilights" bestimmen, sondern, wenn Du 
vier Lichtquellen hast, jede Ecke des Bildes über die Farbe der 
zugeordneten Bildecke.

Hast Du nur eine Lichtquelle, musst Du "nur" die Durchschnittsfarbe des 
gesamten Bildes bestimmen.

von oszi40 (Gast)


Lesenswert?

Die ganze Bildpunkt-Zählerei funtioniert natürlich nur bei DER 
Auflösung.
Daher wäre ein Zwischenschritt wie z.B. definierte Kalibrierung mit 
einem Musterbild ganz nützlich.

von Marco M. (marco1987)


Angehängte Dateien:

Lesenswert?

>
> Im Prinzip ja, nur solltest Du das Signal mit einer
> Sample-and-Hold-Stufe aufbereiten, weil Dein ADC mit hoher
> Wahrscheinlichkeit ganz erheblich langsamer ist als der Pixeltakt der
> VGA-Karte.
>
> Das ist zur Steuerung eines "Ambilight"-Mechanismus eher ungeeignet.
>
> Sinnvoller erscheint mir die Integration/Mittelung aller Pixel in einem
> Bildschirmquadranten zur Bestimmung der überwiegenden Farbe.
>

Ich würde gerne die Integrationsvariant verfolgen und das Bild in die 
Bereiche (siehe Anhang) unterteilen. Dafür baue ich jetzt ein OPV als 
Integrierer auf und lass den von Anfang der Zeile bis zur mitte 
Integrieren oder wie mache ich das am besten? Sample and hold über C und 
die Ladung entladung über µC Steuern?

Über Hilfe wäre ich dankbar

von Roland P. (pram)


Lesenswert?

evtl könnte man das anze sogar "halbdigital" lösen:

ein Monoflop an V-Sync. dies muss "kippen" wenn die Hälfte der Zeilen 
vorbei sind.
ein weiteres Monoflop an H-Sync, dies muss kippen, wann man auf der 
"rechten" Seite ist.
Somit hast du 4 Zustände. Damit kannst du Analogschalter ansteuern die 
dir die 4 Bereiche auf einzelne Bereiche aufteilen. Integrieren tust du 
das Ganze noch in dem du jeweils ein RC-Glied dahinter hängst.

je mehr ich darüber nachdenke um so einfacher sollte das sein. Mittels 2 
Potis stellt man die "Mitte" ein und der Rest ist Analogtechnik.

Gruß
Roland

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.