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
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.
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. :)
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.
Ü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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.