Forum: Mikrocontroller und Digitale Elektronik PAL Bild digitalisieren


von wewa (Gast)


Lesenswert?

Hallo,

ich möchte das PAL Signal eines Graustufen-Standbildes (Konvertierung 
ist also nicht zeitkritisch) digitalisieren. Das CCD Modul hat eine 
Auflösung von 512x582 Pixel. Ist so etwas mit dem ADC eines Standard 
8bit Mikrocontrollers (PIC bzw. ATMEGA) möglich oder benötige ich dazu 
spezille Hardware?

lg wewa

von Falk B. (falk)


Lesenswert?

Ist schon mal gemacht worden. Stichwort Slow Scan TV.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

wewa schrieb:
> PAL Signal eines Graustufen-Standbildes

Leichter Widerspruch: PAL ist Farbe.

Sei froh, daß Du nur ein Graustufenbild digitalisieren willst, das ist 
einfacher.

So etwas macht man mit einem framegrabber, und den gab es als 
Selbstbau schon für den C64.


Wenn Du die Forensuche mit dem Stichwort fütterst, gibt es etliche 
Treffer.

von Detlef K. (adenin)


Lesenswert?

Mit einem Standbild ist das möglich.
Du brauchst aber noch eine kleine Schaltung, die die Impulse für Bild- 
und Zeilensyncronisation separiert.
Dann ist es möglich ein Standbild auch mit einem langsamen AD-Wandler 
durch Mehrfachabtastung der Zeilen zu digitalisieren.
So wurde das im letzten Jahrtausend beim C64 und Amiga gemacht. :)

von c-hater (Gast)


Lesenswert?

wewa schrieb:

> ich möchte das PAL Signal eines Graustufen-Standbildes (Konvertierung
> ist also nicht zeitkritisch) digitalisieren. Das CCD Modul hat eine
> Auflösung von 512x582 Pixel. Ist so etwas mit dem ADC eines Standard
> 8bit Mikrocontrollers (PIC bzw. ATMEGA) möglich

Eigentlich nicht. Jedenfalls nicht mit dem µC alleine.

Das Schwierige bei der Sache ist nämlich nicht die AD-Wandlerei, sondern 
die Synchronisation des µC auf das Videosignal. Das geht mit Sicherheit 
nicht ohne einen Mindest-Jitter von einer Taktperiode des µC, also bei 
einem ATmega 50ns.

Oder anders ausgedrückt: Du wirst bei der horizontalen Auflösung 
Abstriche machen müssen, weil selbst bei einer optimalen Lösung der 
Abtastzeitpunkt relativ zu deinem Videobild mindestens um ca. ein 
knappes halbes Pixel "wackelt". Selbst bei dieser optimalen Umsetzung 
wird die effektive horizontale Auflösung des Ergebnisses also de facto 
fast halbiert werden.

Willst du wirklich die volle Auflösung, brauchst du eine PLL-Taktquelle 
für den µC, die sich mit weniger Phasenjitter auf auf das Videosignal 
synchronisieren kann, als das mit dem µC alleine möglich ist.

von Thosch (Gast)


Lesenswert?

Üblicherweise nimmt man für sowas einen Sync-Separator wie den LM1881 
den man mit dem Videosignal füttert.

Der liefert einem dann abgetrennte Synchronimpulse. An den 
Composite-Sync Output hängt man dann eine PLL, die auf die 
Horizontalfrequenz gelockt wird und einem einen sog. LLC (Line Locked 
Clock) als Abtasttakt liefert.

üblicherweise arbeitet man bei SD-Video mit 13,5MHz Abtasttakt für Luma.

Um die Synchronisation hinzubekommen baut man sich einen H-Zähler, der 
die Taktpunkte pro Zeile zählt. Das sind 864 für 50 Hz CCIR (was du PAL 
nanntest).

Der H-Zähler läuft also von 0..863 und schaltet dann den V-Zähler 
weiter, der von 0..624 zählt.
Der H-Zähler wird mit dem Synchronsignal aus dem Separator 
zurückgesetzt.
Der V-Zähler wird zurückgesetzt vom V-Synchronimpuls aus dem Separator, 
verundet mit dem Composite-Sync und der Teilbildkennung.

jetzt muß man noch berücksichtigen, welche Bereiche der Zeilen und des 
Bildes Bildinformation enthalten.
Pro Zeile sind das 720 Abtastpunkte, und zwar H-Zähler = 132 .. 851.

Aktive Zeilen (also solche mit Bildinhalt) sind normgemäß die von
V-Zähler =  22 ... 309 (1. Teilbild) und die von
V-Zähler = 335 ... 622 (2. Teilbild).

Die Zählweisen sind für die angegebenen Rücksetzimpulse gültig!


Da Videosignale (gerade auch die aus CCD-Modulen) oft 
Kondensator-gekoppelt sind muß man vor dem Digitalisieren durch eine 
Klemmschaltung den Schwarzpegel wiederherstellen.

Als Klemmimpuls für die Klemmschaltung kann man den Burst-Ausgang des 
Syncsepartors verwenden, oder man erzeugt den Impuls aus dem H-Zähler,
etwa vom Zählerstand 68..71

Jetzt braucht man noch einen A/D Wandler, der mit 13,5 MHz getaktet 
werden kann und liest die Daten einer Zeile in ein RAM ein, das 
anschließend vom Mikrocontroller ausgelesen werden kann.

Die Logik (H + V Zähler, Komparator zur Zeilenauswahl, Triggerlogik 
usw.) läßt sich am besten in einem CPLD oder kleinen FPGA realisieren. 
Wenn man ein FPGA wie 'nen kleinen Xilinx Spartan 6 nutzt, kann man auch 
gleich den Speicher für eine Zeile Daten mit internen Blockrams 
realisieren.

Wenn man ein vollständiges Einzelbild aus Bewegtbildern grabben möchte, 
geht das auch, man muß allerdings ein externes SRAM mit 1024KiB Größe 
anklemmen und kann H- und V-Zähler einfach als Adressen anklemmen den 
H-Zähler als A0..A9 und den V-Zähler als A10..A19.
Speichert man nur die Nutzdaten gepackt, verwendet also einen kleinen 
Adreßrechner der aus H- und V-Zähler eine Speicheradresse "baut", dann 
kommt man mit einme halb so großen RAM für ein Vollbild aus.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

512x582 Pixel = 297984 Byte bei 8 Bit/Pixel. Welcher 8-bit 
Mikrocontroller kann knapp 300kB an SRAM ansteuern? Das Herauspicken 
einzelner Pixel mit sample-and-hold-Schaltung wäre schon möglich.
Es gab mal für Slow-scan-TV von V. Wraase eine Trickschaltung mit um 90 
Grad gedrehter Kamera, da wurde aus jeder Zeile nur ein Pixel gesampled, 
also 15625 Samples/sec. Man sparte damit den Vollbildspeicher.

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Da hab ich die Schaltung gefunden. Ohne Zwischenspeicher ging es nur mit 
einem Eingriff in die Kamera. Aber das ist ein Problem der SSTV-Norm. 
Wenn man die Datenrate für das Ausgangssignal selbst wählen kann, ist 
das eine Möglichkeit.

von Peter D. (peda)


Lesenswert?

Einige DVB-T Sticks haben einen RGB-Eingang.

von c-hater (Gast)


Lesenswert?

Christoph Kessler (db1uq) schrieb:

> 512x582 Pixel = 297984 Byte bei 8 Bit/Pixel. Welcher 8-bit
> Mikrocontroller kann knapp 300kB an SRAM ansteuern?

Braucht er doch garnicht. Die Vorgabe war ja ein Standbild im 
Videosignal. D.h.: Er hat alle Zeit der Welt zum Digitalisieren der 
einzelnen Bildpunkte und zum Herausleiten der Sampledaten (wohin auch 
immer).

> Es gab mal für Slow-scan-TV von V. Wraase eine Trickschaltung mit um 90
> Grad gedrehter Kamera, da wurde aus jeder Zeile nur ein Pixel gesampled,
> also 15625 Samples/sec. Man sparte damit den Vollbildspeicher.

Sowas ist hier nicht unbedingt nötig, da die Reihenfolge der Gewinnung 
der einzelnen Samples eigentlich keine Rolle spielt. Das optimale 
Abtastschema ergäbe sich einfach aus der möglichen Höchstfrequenz der 
AD-Wandlung bei der geforderten 8-Bit Auflösung. Falls der "Empfänger" 
des Ergebnisses eine Datei auf einem Massenspeicher ist, muß der µc 
selber die Samples richtig dort einpassen, falls der Empfänger 
hingegenen die Samples als seriellen Datenstrom bekommt, muß der sich 
darum kümmern, die passend zusammenzubauen. Dazu muß er natürlich das 
Gewinnungsschema kennen und er braucht eine Marke für den Framesync.

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.