mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik VGA Signal analysieren


Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Könnt ihr mir sagen wie ich an die einzelnen Pixal rankomme?

Mit einer Lupe und einer Pinzette? SCNR ;)

Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: oszi40 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marco M. (marco1987)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.