Institut für Elektronik Prof. G. Tröster. Wintersemester 2001/02. Semesterarbeit. CCD Astrofotografie. Matthias Auf der Maur Roman Hoog Antink



Ähnliche Dokumente
Projekt 2HEA 2005/06 Formelzettel Elektrotechnik

Primzahlen und RSA-Verschlüsselung

10.1 Auflösung, Drucken und Scannen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Datensicherung. Beschreibung der Datensicherung

CCD. Autoren: Rupert Gratz - Daniel Kadir - Stefan Reischmann. CCD steht für "charge"

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

Info zum Zusammenhang von Auflösung und Genauigkeit

Histogramm Mit dem Histogramm zu besseren Bildern?!

DSO. Abtastrate und Speichertiefe

Grundlagen der Technischen Informatik. Sequenzielle Netzwerke. Institut für Kommunikationsnetze und Rechnersysteme. Paul J. Kühn, Matthias Meyer

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

GEVITAS Farben-Reaktionstest

EasyWk DAS Schwimmwettkampfprogramm

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Professionelle Seminare im Bereich MS-Office

Wie optimiert man die Werbungserkennung von Ad- Detective?

1 Mathematische Grundlagen

Einfache Computersteuerung für Modellbahnen

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Kapitel 3 Frames Seite 1

Zeichen bei Zahlen entschlüsseln

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Fotos verkleinern mit Paint

Im Original veränderbare Word-Dateien

FlowFact Alle Versionen

EINFACHES HAUSHALT- KASSABUCH

EM-Wellen. david vajda 3. Februar Zu den Physikalischen Größen innerhalb der Elektrodynamik gehören:

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Elektrische Spannung und Stromstärke

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Pflichtenheft. Projektteam. Rexford Osei - Frey Michael Weichert Thomas Thutewohl. Pflichtenheft Seite 1 von 7

100 % weniger Maschinen Störungen deshalb = 100 % mehr Maschinen Effizienzen

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Übung 5 : G = Wärmeflussdichte [Watt/m 2 ] c = spezifische Wärmekapazität k = Wärmeleitfähigkeit = *p*c = Wärmediffusität

CdsComXL. Excel add-in für Bearbeitung und Auswertung der CDS-daten. ComXL-020/D, Spur Spur Spur Spur

Computeria Rorschach Mit Excel Diagramme erstellen

Projektmanagement in der Spieleentwicklung

Comenius Schulprojekt The sun and the Danube. Versuch 1: Spannung U und Stom I in Abhängigkeit der Beleuchtungsstärke E U 0, I k = f ( E )

Technical Note Nr. 101

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

3. Halbleiter und Elektronik

infach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock

Was ist eine Systemkamera?

Sowohl die Malstreifen als auch die Neperschen Streifen können auch in anderen Stellenwertsystemen verwendet werden.

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Dokumentation IBIS Monitor

Handbuch PCI Treiber-Installation

Plotten von Linien ( nach Jack Bresenham, 1962 )

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

GeoPilot (Android) die App

Beschreibung der Umstellungsschritte Hibiscus (Umstellung Sicherungsmedium auf Chip-TAN)

Bilder Schärfen und Rauschen entfernen

Mikrocontroller Grundlagen. Markus Koch April 2011

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

1 Konto für HBCI/FinTS mit Chipkarte einrichten

Entladen und Aufladen eines Kondensators über einen ohmschen Widerstand

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Anleitung über den Umgang mit Schildern

Lassen Sie sich dieses sensationelle Projekt Schritt für Schritt erklären:

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb

1 Informationelle Systeme begriffliche Abgrenzung

Protokoll des Versuches 5: Messungen der Thermospannung nach der Kompensationsmethode

Fotografie auf einer anderen Wellenlänge

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

Lichtbrechung an Linsen

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

FastBill Automatic. Dokumentation Versand. FastBill GmbH. Holteyer Straße Essen Telefon Telefax

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Der vorliegende Konverter unterstützt Sie bei der Konvertierung der Datensätze zu IBAN und BIC.

Ziel: Abfrage von Vorwissen oder Überprüfung des vermittelten Wissens. Teilweise sind Mehrfachnennungen möglich.

Aufgaben Leiten Sie die Formeln (9) und (10) her! Vorbetrachtungen. Der High-Fall

YouTube: Video-Untertitel übersetzen

Eigene Dokumente, Fotos, Bilder etc. sichern

Fotos in Tobii Communicator verwenden

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Robot Karol für Delphi

Fachbereich Physik Dr. Wolfgang Bodenberger

Menü auf zwei Module verteilt (Joomla 3.4.0)

Anhand des bereits hergeleiteten Models erstellen wir nun mit der Formel

Barrierefreie Webseiten erstellen mit TYPO3

1. LINEARE FUNKTIONEN IN DER WIRTSCHAFT (KOSTEN, ERLÖS, GEWINN)

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Handbuch USB Treiber-Installation

SUDOKU - Strategien zur Lösung

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN

Berechnung der Erhöhung der Durchschnittsprämien

LPT1 Anschluss mit PCMCIA Karte

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Transkript:

Institut für Elektronik Prof. G. Tröster Wintersemester 2001/02 Semesterarbeit CCD Astrofotografie Verfasser: Andreas Moser Matthias Auf der Maur Roman Hoog Antink Betreuer: R. Zinniker T. Degen

Vorwort Wir wollten von Anfang an ein Gerät erstellen, welches Daten von der analogen Aussenwelt aufnimmt und diese digital aufbereitet. So entstand unsere Idee, ein Sternenteleskop mit einer Art selbstgebauter digitaler Kamera zu versehen und die aufgenommenen Bilder an einen PC zu übertragen. Dies führte uns zu einer Aufgabe, welche die Themen Applikations- und Treiberprogrammierung über Elektronik bis hin zu Optik umfasste. Unsere Vorkenntnisse und vielschichtigen Interessen in den Bereichen Hardwaredesign, Kernel- und Applikationsentwicklung unter Linux verhalfen zu einem kreativen Werdegang von Soft- und Hardware. Ohne die äußerst zuverlässige und kompetente Unterstützung von Herrn Maag, der uns die Probe- und Produktionsplatinen ätzte, hätten wir uns nicht in dem Mass auf die Kernprobleme konzentrieren können, wie es bei einem solch komplexen Gerät erforderlich war. Dafür sei ihm an dieser Stelle herzlichsten Dank ausgesprochen. Des weiteren möchten wir uns bei Thomas Degen und Rolf Zinniker für die gute Betreuung bedanken. Zürich, 5. Februar 2002 Andreas Moser Matthias Auf der Maur Roman Hoog Antink

Inhaltsverzeichnis Vorwort Abbildungsverzeichnis Aufgabenstellung i ii iv Zusammenfassung 1 1 Einführung in die CCD-Astronomie 2 1.1 Vom Auge zum CCD-Sensor....................... 2 1.2 Die Funktionsweise von CCD-Bildsensoren............... 5 1.2.1 Der Aufbau einer CCD-Zelle.................. 5 1.2.2 Der CCD als optischer Sensor.................. 6 1.2.3 Das Auslesen eines CCD-Sensors................ 7 1.2.4 Die wichtigsten Kenngrössen von CCD-Sensoren....... 7 1.2.4.1 Quanteneffizienz (Quantum efficiency)........ 8 1.2.4.2 Transfereffizienz (Charge transfer efficiency).... 9 1.2.4.3 Pixelgrösse und Sensorfläche............. 9 1.2.4.4 Rauschquellen..................... 11 1.2.4.5 Weitere Merkmale................... 13 2 Design-Entscheidungen 14 2.1 Spezifikation............................... 14 2.2 Die Wahl einer geeigneten System-Architektur............ 14 2.3 Die Wahl der Kommunikationsschnittstelle.............. 16 2.4 Die Wahl des Microcontrollers...................... 17 2.5 Die Wahl des Betriebssystems...................... 17 3 Die Hardware 19 3.1 Spannungsversorgung.......................... 19 3.2 CCD-Chip................................. 19 3.3 Verstärker und AD-Wandler....................... 21 3.4 Timing-Controller............................ 23 3.5 FIFO.................................... 24

Inhaltsverzeichnis iii 3.6 Der DMA-Modus............................. 25 3.7 Main-Controller.............................. 27 4 PC Software 29 4.1 USB-Core................................. 30 4.2 Kernelmodul............................... 30 4.2.1 Callback-Routinen........................ 31 4.3 GUI.................................... 32 5 Erfahrungen und Ausblick 36 5.1 Matthias Auf der Maur......................... 36 5.2 Andreas Moser.............................. 37 5.3 Roman Hoog Antink........................... 38 5.4 Erreichte Funktionalität......................... 39 Quellenverzeichnis 40 A Web-Links 41 B Anmerkungen 43 B.1 Bemerkungen zu EAGLE........................ 43 B.2 Kurzeinführung USB........................... 44 B.2.1 Enumeration........................... 44 B.2.2 Endpoints............................. 44 B.2.3 Übertragungsarten........................ 45 C Schemata 47

Abbildungsverzeichnis 1 Vereinfachtes mögliches Blockdiagramm................ v 2 Logisches Gesamtblockschema...................... 1 1.1 Die parallaktische Montierung...................... 3 1.2 MOS-Kapazität.............................. 5 1.3 Der CCD als Sensor........................... 6 1.4 Der Ladungstransport im CCD..................... 8 1.5 Die Ausgangsstufe des CCD-Sensors.................. 9 1.6 Die Signale am Ausgang des CCDs................... 10 1.7 Räumliches Auflösungsvermögen bezüglich eines Pixels........ 11 2.1 Architekturbeispiel 1........................... 15 2.2 Architekturbeispiel 2........................... 16 2.3 Die Hardware-Module der Kamera................... 18 3.1 CCD: Pixelanordnung.......................... 20 3.2 CCD: Interlining............................. 21 3.3 Die Analoge Signalaufbereitung..................... 22 3.4 Die vertikalen Steuersignale....................... 23 3.5 Die horizontalen Steuersignale...................... 24 3.6 Der FIFO-Puffer............................. 25 3.7 Der zeitliche Ablauf des DMA-Modus................. 25 3.8 Der zeitliche Ablauf des ADMA-Modus................ 26 3.9 Funktionsweise ADMA.......................... 26 3.10 Die Steuersignale im DMA-Modus................... 27 4.1 Software Gesamtblockschema auf der PC-Seite............ 29 4.2 USB Kernel-Module........................... 30 4.3 Von der Gerätedatei zum Gerätetreiber................ 32 4.4 Gewöhnlicher Ablauf des Gerätetreibers................ 33 4.5 GUI Screenshot.............................. 35 B.1 Das Prinzip der USB-Endpoints..................... 45

Institut für Elektronik Wintersemester 2001/2002 SEMESTERARBEIT für Herrn Andreas Moser, Herrn Matthias auf der Maur und Herrn Roman Hoog Antink CCD Astronomie Betreuer: Zinniker, ETZ H60.1 Stellvertreter: Thomas Degen, ETZ H65 Ausgabe: 23. Oktober 2001 Abgabe: 8. Februar 2002 In einer Semesterarbeit möchten wir ein CCD-System entwerfen und implementieren, das auf ein Teleskop aufgesetzt astrofotografische Aufnahmen machen sowie die automatische Nachführung des Teleskops übernehmen soll. Die softwaremässige Steuerung und die Bildanzeige soll auf einem PC bzw. Laptop erfolgen. Das Projekt beinhaltet Digital- und Analogelektronik, Software (Treiber, Bildverarbeitung, Kommunikation) und Theorie (CCD- Sensoren und Optik, Bildverarbeitung). Als Teleskop steht ein Celstron C-8 zur Verfügung. Einführung Für fotografische Aufnahmen von sehr lichtschwachen astronomischen Objekten wie Nebeln oder Galaxien und ganz allgemein bei sogenannten Deep-Space Aufnahmen muss häufig insbesondere wenn mit herkömmlichem Filmmaterial gearbeitet wird sehr lange belichtet werden. Belichtungszeiten von mehr als einer Stunde sind dabei keine Seltenheit. Eine automatische Nachführung des Teleskops ohne Regelung

vi Aufgabenstellung ist deshalb für diese Anwendung nicht mehr brauchbar. In herkömmlichen Systemen wird dieses Problem umgangen, indem ein Teil des Strahlengangs über ein Off-Axis-System zu einem Objektiv geführt wird, so dass eine manuelle Nachregelung möglich ist. Wird nun anstatt herkömmlichen Filmmaterials ein CCD-Sensor verwendet, kann die Belichtungszeit empfindlich verringert werden. Gleichzeitig bietet sich die Möglichkeit, die Nachführung zu automatisieren. Systembeschreibung Abbildung 1 zeigt, wie das Blockdiagramm des Systems ungefähr aussehen könnte. Motor drivers Clock Control signal generation / level shifting µ P Decl Rect Cooling Interface (USB) PC Power supply CCD AD Conv Abbildung 1: Vereinfachtes mögliches Blockdiagramm Die darin enthaltenen Blöcke bedeuten im einzelnen: CCD-Sensor Dieser bildet das Herz des Systems. Benötigt wird ein Sensor mit hoher Sensitivität, geringem Rauschen, geringem Dunkelstrom und mittlerer Auflösung. 1 Control signal generation / level shifting Diese Einheit sorgt für die korrekte Ansteuerung des CCD-Chips und wird zumindest von TI als IC angeboten. AD-Conv Der AD-Converter wandelt das analoge Ausgangssignal des Sensors in digitale Daten um. Vermutlich werden 12 14 Bits benötigt. µp Der Mikroprozessor steuert die Belichtungszeit und regelt die Kommunikation mit der Steuersoftware auf dem Host. Interface Ermöglicht die Kommunikation mit dem Host. Denkbar wäre ein USB- Interface. 1 Gemäss Internetseiten zum Thema und nach oberflächlicher Durchsicht der entsprechenden Datenblätter könnten folgende Sensoren in Frage kommen: TC211, TC241, ev. TC253, TC255 (Texas Instruments), sowie KAF-0401E (Kodak).

Aufgabenstellung vii Motor drivers Die Nachführungsmotoren müssen geeignet angesteuert werden. Clock Master clock für den Prozessor. Cooling Der CCD-Sensor sollte gekühlt werden, um Dunkelstrom und Rauschen möglichst gering zu halten. 2 Power supply Der CCD-Sensor benötigt negative Spannungspegel bis zu 20V je nach Modell. Daneben wird Software für den Mikroprozessor sowie für den PC/Laptop (vorzugsweise unter Linux, inklusive Treiber) gebraucht. Mögliche Funktionsmodi Je nach Art der Fotografie (Deep-Space, lunar... ) und abhängig vom gewählten Sensor muss unterschiedlich lange belichtet werden. Die längste Belichtungszeit könnte durchaus 10 Minuten überschreiten. Normale Zeiten für Deep-Space Aufnahmen dürften bei einigen Minuten liegen. So ist aber eine gleichzeitige genaue Nachführung kaum mehr möglich. Denkbar wären beispielsweise die folgenden drei Betriebsmodi: 1. Reine Nachführung mit kurzen Belichtungszeiten (30 Sek. oder sogar weniger) und eventueller Zusammenfassung mehrerer Pixel (binning). 2. Reine Fotografie mit langen Belichtungszeiten bei voller Auflösung, wobei die Nachführung anderweitig vorgenommen wird (z.b. von einer zweiten CCD- Einheit). 3. Kombinierte Fotografie/Nachführung mit eher kurzen Belichtungszeiten, wobei jeweils mehrere Frames softwaremässig zu einem Bild vereinigt werden, falls dies Sinn macht. Die Nachführung Die Nachführung könnte folgendermassen gestaltet werden: Das Teleskop wird so auf die Polarachse justiert, dass die ungeregelte Nachführung, die im zur Verfügung stehenden Celestron C-8 bereits eingebaut ist, die interessierenden Objekte einigermassen im Blickfeld behalten kann. Die für den fotographischen Gebrauch nötige Feinregelung würde dann softwaremässig über den CCD-Sensor erfolgen. 2 Gemäss Internetquellen könnte für die TI Sensoren 5 C gewählt werden.

viii Aufgabenstellung Quellenangabe http://www.ti.com/sc/docs/products/msp/videoimg/index.htm http://www.kodak.com/go/ccd http://www.skypub.com/imaging/ccd/optimize.html http://www.meade.com/catalog/pictor/

Zusammenfassung Unsere Arbeit bestand in der Entwicklung eines Systems, welches Bilder von einem Teleskop auf einen PC überträgt. Wie in Abbildung 2 zu sehen ist, hat man es mit drei Haupteinheiten zu tun: dem PC mit der erforderlichen Software, um die Bilder anzuzeigen, einer elektronischen Schaltung mit Microprozessor und CCD-Chip, welche die Bilder aufnimmt, fortan als Kameraeinheit bezeichnet, und dem Teleskop, in dessen Brennpunkt die Bilder auf den CCD-Chip projiziert werden. PC Software Camera Unit Hardware / Software USB Driver USB Interface BUS A/D Converter Graphical User Interface Motor Interface Main Controler Timing CCD Telescope DC Supply Cooling Abbildung 2: Logisches Gesamtblockschema Das gesamte System wird mittels der grafischen Benutzerschnittstelle (GUI) vom PC aus bedient. Die Bilder, welche von der Kameraeinheit durch das Teleskop erfasst werden, gelangen nach einer elektronischen Aufbereitung über eine USB- Schnittstelle 3 zum PC. Das GUI nimmt die rohen Bilddaten entgegen und zeigt sie auf dem Bildschirm an. Bei allen Software-Werkzeugen, die für diese Arbeit verwendet wurden, handelt es sich ausschliesslich um Open-Source-Software. 3 Universal Serial Bus. Für eine Einführung siehe z.b. [5].

Kapitel 1 Einführung in die CCD-Astronomie 1.1 Vom Auge zum CCD-Sensor Die Erfindung der Fotografie im vorletzten Jahrhundert dürfte für die Astronomie eine der wichtigsten technischen Errungenschaften gewesen sein. Stand den Astronomen vorher nur das Auge als Beobachtungsinstrument zur Verfügung (natürlich in Verbindung mit einem optischen Teleskop), so waren sie nun in der Lage, auch sehr lichtschwache, von Auge unsichtbare Objekte beobachten zu können. Zwar musste man in den Anfängen der Astrofotografie noch bis mehrere Stunden dauernde Belichtungszeiten auf sich nehmen, doch die stetige technologische Entwicklung führte zu immer empfindlicheren Emulsionen und besseren Entwicklungsverfahren, so dass heute mit einem guten Amateur-Teleskop und der entsprechenden Erfahrung hervorragende Aufnahmen bei Belichtungszeiten von unter einer Stunde möglich sind 1. Obwohl diese Zeiten bereits eine grosse Verbesserung sind, stellen sie an das System Teleskop-Kamera immer noch höchste Anforderungen. Insbesondere ist eine hochgenaue Nachführung der optischen Achse des Telekops von grösster Bedeutung, soll das fotografierte Objekt, beispielsweise ein Stern, nicht als Strich oder sogar Streifen erscheinen. Die einfachste Methode, eine solche Nachführung zu implementieren, bedient sich der sogenannten parallaktischen Montierung (siehe Abbildung 1.1, Seite 3). Dabei wird die optische Achse parallel zur Erdachse ausgerichtet, indem man das Teleskop bei einer Tubusstellung 2 von 90 Deklination 3 auf den Polarstern einstellt. 1 Das Problem der Empfindlichkeit stellt sich natürlich hauptsächlich für Aufnahmen von lichtschwachen Objekten wie Nebeln, Galaxien oder Sternen geringer scheinbarer Helligkeit (sog. Deep space Aufnahmen ). 2 Der Tubus ist das Gehäuse für die Optik. 3 Deklination sowie Rektaszension sind die Koordinaten des sphärischen Koordinatensystems der Himmelskugel, deren Grundebene die Äquatorebene der Erde ist. Die Deklination entspricht der geographischen Breite und wird in Grad gemessen, die Rektaszension entspricht der geographischen Länge und wird in Stunden gemessen. Das System rotiert mit der Erddrehung mit, sodass die

1.1 Vom Auge zum CCD-Sensor 3 Es muss dabei aber beachtet werden, dass der Polarstern nicht exakt im Nordpol steht, sondern ungefähr 50 Bogensekunden davon entfernt ist. Für optische Beobachtungen 4 sowie Mond- und Planetenaufnahmen ist dieser Umstand kaum von Bedeutung, jedoch aber für Deep Space Aufnahmen (vgl. Fussnote 1 auf Seite 2). In diesem Fall muss man eine relativ zeitaufwendige, iterative Polachsenjustierung vornehmen, welche ihrerseits wieder ein stabiles Stativ mit einem in Deklination und Rektaszension genau justierbaren parallaktischen Aufsatz erfordert. Solche Stative sind aber relativ teuer. α Polaris δ α: Rektaszension δ: Deklination Abbildung 1.1: Die parallaktische Montierung. Das Teleskop wird auf den Polarstern eingestellt und so die optische Achse parallel zur Erdachse ausgerichtet. Koordinaten eines Objektes konstant bleiben (siehe auch [11]). 4 Unter optischer Beobachtung verstehe man in diesem Zusammenhang Beobachtungen von Auge.

4 1 Einführung in die CCD-Astronomie Unter der Annahme, dass die optische Achse des Teleskops 100% genau parallel zur Erdachse steht, muss nun für eine exakte Nachführung lediglich noch ein Motor die Erddrehung ausgleichen. Da aber der Motor und das benötigte Getriebe auch nicht ganz ideal sind und insbesondere das Getriebe periodische Fehler erzeugt, ist eine manuelle Korrektur während der Belichtungszeit kaum zu vermeiden. Dies erfordert seinerseits ein wiederum mehrere hundert Franken teures Off-Axis System mit Fadenkreuz-Okular sowie eine Handsteuerbox für die Motoren (es ist auch ein Motor für Korrekturen in Deklinationsrichtung nötig). Die obigen Darstellungen zeigen, dass Astrofotografie eine relativ schwierige und nicht unbedingt billige Angelegenheit ist. Das Hauptproblem dabei sind die langen Belichtungszeiten, deren Ursache in der geringen Empfindlichkeit der fotografischen Emulsion zu suchen sind: gemäss [3] reagieren ungefähr 3 4 von 100 einfallenden Photonen mit Körnern der Emulsion. Mit der Entwicklung des Charge Coupled Device (CCD) Bildsensors (1970, Boyle und Smith, Bell Laboratories) wurde eine Lösung dieses Problems gefunden, die zudem noch weiter gehende Vorteile aufweist: Hohe Quanteneffizienz zwischen 20% und 60% (Technologie- und Wellenlängenabhängig) und somit hohe Empfindlichkeit Das elektrische Bildsignal kann digitalisiert werden, was eine einfache nachträgliche Bildbearbeitung ermöglicht (z.b. Histogramm-Veränderung, Filterung) Bei vielen CCD-Sensoren kann ein Bild vom optisch aktiven Bereich in kurzer Zeit in einen optisch inaktiven Speicherbereich transferiert werden, was einen mechanischen Verschluss unter den gegebenen Bedingungen überflüssig macht. Dies ist besonders bei grossen Vergrösserungen ein Vorteil, da kleinste Erschütterungen das Bild verwackeln können. Die Möglichkeit der digitalen Bildverarbeitung verschafft auch Amateurastronomen Zugang zu quantitativen, physikalischen Untersuchungen wie Spektralanalyse oder Photometrie. Natürlich haben auch CCD-Sensoren Nachteile. Der wohl entscheidendste ist die üblicherweise kleine Sensorfläche im Vergleich zu einem gewöhnlichen Film: der in dieser Arbeit verwendete Sony ICX084AL weist eine aktive Fläche von 0.18 cm 2 auf gegenüber 8.75 cm 2 eines normalen Films. Zwar gibt es Sensoren mit vergleichbarer Fläche, diese sind jedoch entsprechend teuer. Der Preis ist ganz allgemein ein Nachteil von CCD-Sensoren: gute Sensoren mit mittlerer Auflösung können bereits mehrere Hundert oder Tausend Franken kosten. Deshalb sind kommerziell erhältliche CCD-Kameras für Astrofotografie im Allgemeinen sehr teuer. Die von Celestron angebotene Pixcel 255 zum Beispiel kostet CHF 4300.- (obwohl sie einen CCD enthält, der lediglich ca. CHF 200.- kostet) und ist somit teurer als ein komplettes C8 Teleskop (20 cm Öffnung, 2 m Brennweite) inklusive einfaches Stativ. Aufgrund dieser Tatsache werden CCD-Kameras vielfach selbst gebaut, obwohl dies relativ

1.2 Die Funktionsweise von CCD-Bildsensoren 5 grossen Aufwand bedeutet, da die Systeme hardware- wie softwaremässig ziemlich komplex sind. In dieser Semesterarbeit wurde schon wegen des beschränkten Budgets darauf geachtet, ein möglichst preiswertes System zu entwickeln, das auch für einen Hobbyastronomen erschwinglich ist. Insbesondere die Wahl des CCD-Sensors war von diesem Punkt betroffen. 1.2 Die Funktionsweise von CCD-Bildsensoren In diesem Kapitel sollen kurz die physikalischen Grundlagen des Charge Coupled Device dargelegt werden. 1.2.1 Der Aufbau einer CCD-Zelle Das Grundelement des CCD-Sensors ist die MOS-Kapazität 5. Abbildung 1.2 zeigt die Struktur dieses Devices. Wie der Figur zu entnehmen ist, besteht es aus einem Gate SiO 2 p Substrat Abbildung 1.2: Die MOS-Kapazität besteht aus einem p-dotierten Silizium- Substrat und einer SiO 2 -Schicht als Dielektrikum. z.b. p-dotierten Substrat mit Substrat-Anschluss, einer dünnen SiO 2 -Schicht als Dielektrikum und einem Gate-Anschluss 6. In einem CCD-Bildsensor sind viele solcher Elemente Matrix-förmig nebeneinander angeordnet, wobei die Oberseite, auf der sich die Gate-Elektroden befinden, möglichst lichtdurchlässig gestaltet wird, so dass einfallendes Licht bis ins Substrat vordringen kann 7. Jeder einzelnen MOS- Kapazität entspricht dabei ein Pixel des resultierenden Bildes. 5 Metal Oxide Semiconductor 6 Da die MOS-Kapazität vom Aufbau her dem MOS-Feldeffekttransistor verwandt ist, werden dieselben Bezeichnungen verwendet. 7 CCDs dieser Bauart nennt man frontside illuminated CCD im Gegensatz zu backside illuminated CCD, bei denen das Licht auf der Substrat-Seite einfällt.

6 1 Einführung in die CCD-Astronomie 1.2.2 Der CCD als optischer Sensor Wie kann nun mit einer MOS-Kapazität Licht detektiert werden? Der dafür verantwortliche physikalische Prozess ist der innere Photoeffekt: ein in einen Festkörper eindringendes Photon kann (unter anderem) mit freien Elektronen wechselwirken und diesen seine Energie übertragen. In einem Halbleiterkristall kann auf diese Weise, sofern das Photon über genügend Energie verfügt 8, insbesondere ein Elektron- Loch-Paar erzeugt werden, oder mit anderen Worten ein Elektron aus dem Valenzband ins Leitungsband gehoben werden. Wird am Gate eine positive Spannung angelegt, dann sammeln sich die so erzeugten Elektronen, die in unserem Falle eines p-dotierten Substrats die Minoritätsträger darstellen, im Bereich des Si-SiO 2 - Interfaces, während die Löcher ins Innere des Substrats gegen die Substratelektrode gedrängt werden: die Gate-Spannung erzeugt einen Potentialtopf, in dem die Elektronen gefangen werden. Am Si-SiO 2 -Interface wird dadurch eine sogenannte Inversionsschicht erzeugt, in der die Dichte der Minoritätsträger viel höher ist als die der Majoritätsträger (Löcher). Diese Inversionsschicht ist vom normalen Bereich durch eine Raumladungszone getrennt. Abbildung 1.3 soll dies veranschaulichen. Da + n p h ν Potential e Abbildung 1.3: Ein Photon mit Energie hν wird im Substrat absorbiert und erzeugt ein Elektron-Loch-Paar. Das Elektron wird im Potentialtopf gefangen, das Loch in Richtung Substrat-Anschluss abgestossen. die Elektronen von den Löchern getrennt werden, können sie nicht rekombinieren und über längere Zeit im Potentialtopf gespeichert werden. Das Ladungspaket, das auf diese Weise während der Belichtungszeit akkumuliert wird, muss anschliessend nur noch in eine Spannung umgewandelt und ausgelesen werden. Leider werden in der Raumladungszone auch thermisch Elektron-Loch-Paare generiert, die ebenfalls wie die optisch erzeugten eingefangen werden. Diesen Ef- 8 Die Energie hν des Photons muss mindestens dem Band-Gap des Halbleiters entsprechen. Bei Silizum beträgt dieser ca. 1.12 ev bei Raumtemperatur. Dies entspricht einer Wellenlänge von ca. 1.1 µm. Der CCD-Sensor ist also bis ins nahe Infrarot empfindlich.

1.2 Die Funktionsweise von CCD-Bildsensoren 7 fekt bezeichnet man als Dunkelstrom (Dark Current). Der Dunkelstrom wird hauptsächlich von der Temperatur bestimmt (neben technologiebedingten Faktoren). Üblicherweise ist er so gross, dass der CCD innert einiger Dutzend Sekunden sättigt 9. Ein Sensor mit einer Ladungsspeicherungskapazität von 60000 Elektronen und einem Dunkelstrom von 1000 Elektronen pro Sekunde und Pixel z.b. würde bei Zimmertemperatur innert 60 Sekunden sättigen. Da der Dunkelstrom mit der Temperatur zunimmt 10, kann sein Einfluss durch Kühlung des CCD-Chips stark verringert werden. 1.2.3 Das Auslesen eines CCD-Sensors Der Auslesevorgang eines CCD-Sensors lässt sich am anschaulichsten anhand einer Skizze zeigen. Abbildung 1.4 zeigt einige nebeneinanderliegende Pixel. Durch geeignete Ansteuerung der Gate-Elektroden kann eine Kopplung benachbarter Potentialtöpfe erreicht werden. Auf diese Weise können die gespeicherten Ladungen räumlich verschoben werden, denn sie werden sich dort sammeln, wo das elektrische Potential am grössten ist. In der Abbildung sind zwei verschiedene Ansteuerelektroden die zwei Steuerspannungen werden üblicherweise Phasen genannt zu sehen. Es gibt aber auch CCDs mit drei oder sogar vier Phasen. Diese sind zwar aufwendiger anzusteuern, dafür ist die Gefahr geringer, dass Ladungen in die falsche Richtung transportiert werden. Der in dieser Arbeit benutzte ICX084 arbeitet in vertikaler Richtung mit drei und in horizontaler Richtung mit zwei Phasen. Durch den oben beschriebenen Ladungstransport wird die Ladung eines jeden Pixels sequentiell in die Ausgangsstufe geschoben, wo sie auf eine Kapazität, meist ein p-n Sperrschicht, gebracht wird und so in eine Spannung umgewandelt wird. Abbildung 1.5 zeigt dies schematisch. In Abbildung 1.6 sieht man den zeitlichen Verlauf der entsprechenden Signale. Die Information über den Helligkeitswert eines Pixels ist dabei in der Spannungsdifferenz V s kodiert, die, wie in der Abbildung gezeigt, immer negativ ist. Die maximale Signalspannung V S wird bei Sättigung erreicht und beträgt je nach CCD-Sensor 200 mv bis 1 V. Der Referenzpegel liegt ebenfalls vom CCD abhängig bei einigen Volt. Im Falle des ICX084 sind dies ungefähr 10 V. 1.2.4 Die wichtigsten Kenngrössen von CCD-Sensoren In diesem Abschnitt werden die für den astrofotografischen Betrieb wesentlichen Kenngrössen vorgestellt. Für weitergehende Informationen sei auf [3] verwiesen. 9 Es gibt eine neuere Technologie (MPP), die um Grössenordnungen kleinere Dunkelströme ermöglicht. Die entsprechenden Sensoren sind aber teurer. 10 Gemäss [3] ist der Dunkelstrom proportional zu T 3/2 e Eg/(2kT ), wobei E g der Band-Gap und k die Boltzmann-Konstante ist.

8 1 Einführung in die CCD-Astronomie φ1 φ2 SiO 2 p Substrat φ1 < φ2 Potential φ1 > φ2 Abbildung 1.4: Die gespeicherten Elektronen werden durch sequentielles Ansteuern der Gate-Elektroden von einer Zelle zur benachbarten verschoben. 1.2.4.1 Quanteneffizienz (Quantum efficiency) Die Quanteneffizienz (QE) ist ein Mass für die Empfindlichkeit eines CCD-Sensors und somit einer der wichtigsten Parameter, da die Empfindlichkeit wesentlichen Einfluss auf die Belichtungszeit hat. In Abschnitt 1.1 wurde diese Grösse bereits angesprochen. Die QE sagt aus, wie effizient das einfallende Licht in elektrische Ladung umgewandelt wird, d.h. wieviel Prozent der einfallenden Photonen ein Elektron generieren. Sie hängt massgeblich von technologischen Parametern sowie von der Wellenlänge des zu detektierenden Lichts ab. Sie kann im Maximum, das im Bereich von 600 700 nm liegt, bis zu 60% betragen. Meist ist in den Datenblättern der Hersteller eine Grafik des spektralen Verlaufs der QE enthalten. Aussagekräftiger als die eben beschriebene Quanteneffizienz ist jedoch die äquivalente Quanteneffizienz (detective quantum efficiency, DQE), die über die Signal- to-noise-ratio definiert wird: ( ) / ( ) S S DQE = (1.1) N measured N ideal

1.2 Die Funktionsweise von CCD-Bildsensoren 9 φ1 φ2 V b V R φ R C p output n + p C S Potential Abbildung 1.5: Die akkumulierte Ladung wird auf die Sperrschichtkapazität C s übertragen und die resultierende Spannung verstärkt. Durch die Spannung V R wird die Kapazität vor Aufbringen der Ladung auf einen definierten Zustand gebracht. Die konstante Spannung V b ermöglicht einen kontrollierten Ladungsübertrag. 1.2.4.2 Transfereffizienz (Charge transfer efficiency) Die Transfereffizienz (CTE) gibt an, wie viele Ladungsträger beim Ladungstransport von einem Pixel zum benachbarten (oder allgemein von einer CCD-Zelle zur benachbarten) verloren gehen. Die CTE ist definiert als CTE = 1 N 0 N t N 0 (1.2) N 0 bezeichnet dabei die Anzahl der Ladungen in einer Zelle vor dem Transport und N t die Anzahl in der Nachbarzelle nach dem Transport. Da ein Ladungspaket schon in durchschnittlich grossen CCD-Sensoren mehrere hundertmal transportiert wird, ist es von grösster Wichtigkeit, dass die CTE sehr nahe bei 1 liegt. Werte um 0.99995 und höher sind die Regel. 1.2.4.3 Pixelgrösse und Sensorfläche Die Pixelgrösse bestimmt zusammen mit den optischen Parametern des Teleskops die Auflösung der Kamera. Um eine hohe Auflösung zu erreichen, wird man möglichst kleine Pixel benutzen. Andererseits aber nimmt die Empfindlichkeit mit kleinerer Pixelfläche ab, da das einfallende Licht auf mehr Pixel verteilt wird.

10 1 Einführung in die CCD-Astronomie φ2 Spannung V s V Vs φ R reset level black level output Zeit Abbildung 1.6: Zu Beginn des High-Pegels der Phase φ2 wird mittels eines Reset-Pulses (φ R ) die Auslese-Kapazität C s auf einen definierten Zustand gebracht. Nach dem Impuls fällt des Signal um V auf den Referenzpegel. Dieser Spannungsabfall wird hauptsächlich durch die Gate-Source-Kapazität des Reset-Transistors T1 erzeugt (siehe Abbildung 1.5). Beim Low-Pegel von φ2 wird die Ladung eines Pixels auf C s aufgebracht. Das Pixelsignal wird durch die Spannungsdifferenz V s repräsentiert. Offensichtlich muss ein Kompromiss zwischen Empfindlichkeit (und somit Belichtungszeit) und Auflösung gesucht werden. Es zeigt sich 11, dass für Deep Space Aufnahmen eine räumliche Auflösung von ungefähr 2 Bogensekunden pro Pixel ein guter Kompromiss ist. Für Planeten- und Mond-Aufnahmen dagegen wird man eher eine Auflösung von 0.5 Bogensekunden oder weniger wählen, um genügend Details darstellen zu können. Abbildung 1.7 zeigt anhand einer Refraktor-Optik 12, wie die räumliche Auflösung pro Pixel ermittelt wird. Wie die Abbildung zeigt, hängt die Auflösung neben den Pixel-Abmessungen allein von der Brennweite des Teleskops ab. Um verschiedene Auflösungen realisieren zu können, wird deshalb häufig eine Brennweitenreduzierende Optik eingesetzt oder die Kamera gar in unterschiedlichen Brennpunkten positioniert 13. Als angenehmer Nebeneffekt der Brennweiten-Verringerung wird die Empfindlichkeit des Systems vergrössert und somit die Belichtungszeit verringert, da das Verhältnis von Teleskop-Öffnung zu Brennweite (in der Fotografie als Blende bezeichnet) vergössert wird. Dies hat eine scheinbar höhere Lichtausbeute zur Folge. 11 Siehe z.b. http://www.apogee-ccd.com/ccdu.html 12 Refraktor-Teleskope besitzen eine Linsenoptik (im Gegensatz zu Spiegeltelskopen). 13 Diese Möglichkeit ist z.b. bei den Celestron Spiegelteleskopen vorgesehen.

1.2 Die Funktionsweise von CCD-Bildsensoren 11 Bildebene ε optische Achse x Brennweite f Abbildung 1.7: Die räumliche Auflösung eines Pixels hängt von den Abmessungen des Pixels und von der Brennweite der Optik ab. Ein quadratisches Pixel habe eine Seitenlänge von x, die Brennweite betrage f. Dann liegt das Auflösungsvermögen bei 2ε pro Pixel, wobei ε = arctan x 2f ist. Es sei angemerkt, dass das Bildfeld eines Sensors natürlich von seiner Gesamtfläche abhängt. Es kann unter Umständen günstiger sein, einen Sensor mit etwas grösseren Pixeln zu wählen (bei gleicher Pixelanzahl), um ein grösseres Bildfeld zu erhalten. 1.2.4.4 Rauschquellen Da man in der Astrofotografie üblicherweise mit sehr schwachen Lichtintensitäten oder geringen Intensitätsvariationen (man denke an interstellare Nebel oder äussere Gebiete von Galaxien) konfrontiert wird, ist es wichtig, die verschiedenen Rauschquellen 14 des Systems zu kennen und charakterisieren zu können. Nur so kann man ein CCD-Fotografie-System optimal ausnutzen. Auf das sogenannte Photonenrauschen, das in der Quantennatur des Lichtes selbst begründet ist, soll hier nicht näher eingegangen werden. Es sei nur bemerkt, dass ein ideales System von dieser Rauschquelle allein beherrscht wäre 15. Die erste und bei höheren Temperaturen bzw. längeren Belichtungszeiten überwiegende Rauschquelle ist das Dunkelrauschen. Sie gründet in der zeitlich zufälligen Variation des Dunkelstroms (vgl. Abschnitt 1.2.2). Wegen des thermischen Ursprungs dieses Rauschens wird es auch als thermisches Rauschen (thermal noise) bezeichnet. Betrachtet man ein einzelnes Pixel in verschiedenen Aufnahmen, die bei gleicher Temperatur und Belichtungszeit gemacht wurden, so wird man eine gewisse Variation des entsprechenden Helligkeitswertes feststellen. Aufgrund der Sta- 14 Alle Rauschgrössen in diesem Abschnitt sind in Anzahl Ladungsträger gemessen. 15 Die Standardabweichung des Photonenrauschens ergibt sich zu σ s = N s, wobei N s die Anzahl registrierter photoelektrischer Ladungen (im Mittel) bezeichnet.

12 1 Einführung in die CCD-Astronomie tistik des Dunkelstroms kann die Standardabweichung des thermischen Rauschens geschrieben werden als σ t = N t (1.3) N t bezeichnet dabei die mittlere Anzahl thermisch generierter Ladungsträger 16. Beim Transport der Ladungspakete zum Ausgang des CCDs entsteht ein zweiter Rauschbeitrag aufgrund zufälliger Variationen als Funktion von Transfereffizienz CTE (siehe Abschnitt 1.2.4.2 auf Seite 9), der transportierten Ladung N 17 g und der Anzahl Transporte n. Unter der Annahme, dass die einzelnen Transporte statistisch unabhängig sind, kann gezeigt werden, dass für diesen sogenannten Transfer Noise gilt σ tr = 2(1 CTE) n N g (1.4) Die dritte Rauschquelle ist in der Ausgangsstufe des Sensors zu finden, wo die akkumulierten Ladungen in der Readout-Kapazität in eine Spannung umgewandelt werden (vgl. Abschnitt 1.2.3, Seite 9). Vor dem Auslesen eines neuen Ladungspakets wird die Kapazität jedesmal auf eine Referenzspannung zurückgesetzt. Mit diesem Vorgang ist der sogenannte Reset Noise verbunden, dessen Standardabweichung sich ergibt zu σ r = 1 q kt Cs (1.5) Eine detaillierte Ableitung des Reset Noise kann in [9] gefunden werden. Der Reset Noise hat die Eigenschaft, dass sein Wert während der Dauer eines Pixels stark korrelliert ist und deshalb mit geeigneter Elektronik weitgehend eliminiert werden kann 18. Die letzte wesentliche Rauschquelle schliesslich liefert die AD-Wandlung. Der sog. Quantization Noise beträgt bekanntlich σ q = N max 2 n 12 (1.6) Dabei bedeutet N max die Anzahl Ladungen, die dem grösstmöglichen Digitalwert entsprechen und n die Auflösung des Wandlers in Bit. Der Beitrag des Quantisierungsrauschens wird normalerweise so gering gehalten, dass er vernachlässigbar wird. In der CCD-Astrofotografie benötigt man dazu 12 Bit und mehr. Das Gesamtrauschen des Systems erhält man, indem die Varianzen der verschiedenen Rauschquellen gemäss Gleichungen 1.3 bis 1.6 addiert werden (unter der Annahme, dass diese unkorreliert sind): σ tot = σ 2 s + σ 2 t + σ2 tr + σ2 r + σ 2 q (1.7) 16 Hier und im folgenden bezeichnet den (zeitlichen) Mittelwert von. 17 N g = N s + N t 18 Die entsprechende Technik läuft unter dem Namen Correlated Double Sampling (CDS). Siehe [2], [8] sowie [9].

1.2 Die Funktionsweise von CCD-Bildsensoren 13 Meist wird zur Charakterisierung eines CCD-Systems das Eigenrauschen oder Readout Noise angegeben. Dieser entspricht dem obigen Wert ohne Lichtsignal. In guten Systemen mit Kühlung des CCDs auf z.b. 10 C kann ein Readout Noise von nur wenigen Elektronen pro Sekunde und Pixel erreicht werden. 1.2.4.5 Weitere Merkmale Neben den in den letzten Abschnitten erläuterten Merkmalen von CCD-Sensoren gibt es viele weitere, mehr oder weniger wesentliche Eigenschaften. Zwei davon sollen an dieser Stelle kurz erwähnt werden: Blooming Als Blooming bezeichnet man einen für CCD-Sensoren charakteristischen Effekt. Wenn ein Pixel sättigt, also gewissermassen sein Potentialtopf überfüllt wird, können Ladungen in die benachbarten Pixel abfliessen. Dies kann bei langbelichteten Aufnahmen geschehen, in deren Bildfeld sich ein helles Objekt befindet. Beim Auslesen führt eine Sättigung zu charakteristischen Schweifen. Kosmetische Defekte CCD-Sensoren können wie LC-Displays defekte Pixel aufweisen. Im schlimmsten Fall kann sogar eine ganze Zeile oder Spalte unbrauchbar sein. Sensoren mit wenig Defekten sind entsprechend teurer.

Kapitel 2 Design-Entscheidungen 2.1 Spezifikation Die in unserem Projekt entwickelte CCD-Kamera sollte folgenden Anforderungen genügen: 1. Das System soll für Amateur-Astronomen erschwinglich sein. 2. Es soll bezüglich Hard- und Software leicht erweiterbar und veränderbar sein. 3. Das System soll dereinst in der Lage sein, aufgrund der Bilder automatische Nachführungskorrekturen auszuführen. 4. Die Kamera soll von einem Linux-Rechner (Notebook) aus gesteuert werden. 5. Zu einem späteren Zeitpunkt soll eine Kühlung des CCD-Chips eingebaut werden können. 6. In einer ersten Phase sollen Bilder in angemessener Qualität (ohne professionellen Ansprüchen zu genügen) aufgenommen werden können. 7. Das System muss von einem Akku oder einer Autobatterie betrieben werden können. Punkt 1 der obigen Liste schränkt vor allem die Palette der in Frage kommenden CCD-Sensoren ein. Man muss offensichtlich einen Kompromiss suchen zwischen Preis und Qualität (wobei Qualität hier eher Eignung meint). Die für die Auswahl wichtigen Eigenschaften wurden bereits in Kapitel 1, Abschnitt 1.2.4 (Seite 7ff) besprochen. Probleme im Zusammenhang mit der Beschaffung kommen in Abschnitt 3.2 zur Sprache. 2.2 Die Wahl einer geeigneten System-Architektur Vor dem eigentlichen System-Design mussten einige wesentliche Design-Entscheide getroffen werden. So gibt es zunächst viele Möglichkeiten, das System konzeptionell

2.2 Die Wahl einer geeigneten System-Architektur 15 zu gestalten. Abbildungen 2.1 und 2.2 zeigen zwei Beispiel-Architekturen. Die Ar- Bild Speicher A/D Conv. Amp. CCD Sensor Microcontroller Timing Generator Interface Abbildung 2.1: In dieser Architektur übernimmt ein Microcontroller die Steuerung der gesamten Hardware. Das Bild wird in einem Speicher vollständig zwischengespeichert und über ein Interface dem Host zur Verfügung gestellt. Es wäre denkbar, dass der µc sogar einen Teil der Bildprozessierung übernimmt. chitektur gemäss Abbildung 2.2 ist heutzutage, wo verschiedene preisgünstige und leistungsfähige Microcontroller mit mächtigen Entwicklungswerkzeugen erhältlich sind, nicht mehr zeitgemäss. Im Wesentlichen wird man deshalb dem Konzept nach Abb. 2.1 folgen, wobei verschiedenste Variationen möglich sind, die hauptsächlich von der Systemspezifikation abhängig sind. Punkt 2 der Spezifikation legt ein modulares Design nahe 1. Die Hardware wurde deshalb derart in Module aufgeteilt, dass diese so unabhängig (und somit austauschbar) wie nur möglich bleiben. Diese Entscheidung hat sich gegen das Ende der Arbeit als sehr fruchtbar erwiesen, als wir erkannten, dass gewisse Teile der Elektronik verändert werden müssen. Abbildung 2.3 (Seite 18) zeigt die Aufteilung der Elektronik in sechs Module. Auf die konkreten Aufgaben der einzelnen Module wird in Kapitel 3 näher eingegangen. Nachdem man sich für eine Architektur entschieden hat, geht es um deren Verfeinerung und um die Auswahl der einzelnen Komponenten. Dies wird in den folgenden 1 Da wir die Freeware-Version von Eagle (http://www.cadsoft.de) als Layout-Tool verwendeten, waren wir ohnehin auf eine Platinengrösse von 8 10 cm 2 beschränkt.

16 2 Design-Entscheidungen A/D Conv. Amp. CCD Sensor Interface Abbildung 2.2: In dieser Architektur besitzt die Kamera selbst keine Intelligenz. Die Steuerung wird vom Host übernommen, der z.b. über die Parallelschnittstelle der Kamera Befehle übermittelt. Abschnitten erläutert. 2.3 Die Wahl der Kommunikationsschnittstelle Punkt 3 der Spezifikation erfordert eine rasche Datenübertragung von der Kamera zum Host. Es war zum gegebenen Zeitpunkt zwar noch nicht möglich, eine quantitative Aussage darüber zu machen, wie viele Bilder pro Zeiteinheit man effektiv benötigen würde für eine angemessene Nachführungsregelung, doch sind wir davon ausgegangen, dass man mindestens ein Bild alle 5 Sekunden auswerten können muss. Zudem hat eine schnelle Bildfrequenz den Vorteil, dass die Fokussierung von Hand erheblich erleichtert wird. Aus diesen Gründen entschieden wir uns, eine USB 2 -Schnittstelle zu benutzen. Unsere Entscheidung wurde auch dadurch gestützt, dass wir ein Gerüst für einen Linux Kernel-Treiber zur Verfügung hatten, was die Host-seitige Software-Enwicklung erleichterte, sowie USB-Interface-Chips mit µckompatibler Parallelschnittstelle fanden, die einfach anzusteuern sind. Nicht zuletzt waren wir auch der Meinung, dass sich eine USB-Schnittstelle deswegen am besten eignet, da diese in jedem neueren Notebook vorhanden ist 3. Auch war dies eine grundlegende Neuerung im Vergleich zu bestehenden Astrofotografie-Systemen: wir haben im Internet keine Projekte gefunden, die USB verwendet haben. 2 Für eine Einführung siehe Anhang B.2 oder z.b. [5]. 3 Hingegen gibt es Notebooks ohne serielle Schnittstelle.

2.4 Die Wahl des Microcontrollers 17 2.4 Die Wahl des Microcontrollers Bei der Auswahl der Microcontroller haben wir uns für die AVR 8-bit RISC Familie von Atmel 4 entschieden. Einerseits hatten wir bereits Erfahrung mit diesen Controllern, andererseits stand uns der GNU C-Crosscompiler für die AVR-Familie sowie ein Linux-Tool für den Code-Upload 5 mittels seriellem ISP-Interface 6 zur Verfügung. Andere Gründe waren die einheitliche und relativ problemlose Programmierung dieser Familie sowie unsere geringen Ansprüche an Rechenleistung. Da wir beim Main-Controller (Kontroll-Modul) relativ viele Steuerleitungen brauchten, fiel unsere Wahl auf einen der ATmega Typen. Für den Timing-Controller griffen wir auf einen kleineren, aber höher taktbaren AT90S2313 zurück. 2.5 Die Wahl des Betriebssystems Auf der Host-Seite war das Betriebsystem Linux unsere Wahl, da sämtliche Schnittstellen öffentlich zugänglich sind und es für alle Komponenten unseres Kamera- Systems die benötigten Entwicklungswerkzeuge als Open-Source gibt. Es zeichnet sich zudem durch seine hervorragende Stabilität aus. Während der Entwicklung des USB-Kernel-Moduls lief der Rechner permanent durch, ohne zum Testen neuer Treiber-Versionen neu gestartet werden zu müssen. Und das, obwohl die Kamera während der Entwicklung durchaus auch falsche USB-Pakete erzeugte, die dem USB-Core des Kernels so manchen Seufzer entlockten. Der GNU C-Compiler 7 wird von Haus aus auch für das Übersetzen der Kernel- Module benutzt. KDevelop 8 diente als Entwicklungsumgebung für das GUI, welches auf die Qt-Bibliothek von TrollTech 9 aufbaut. 4 http://www.atmel.com/atmel/products/prod23.htm 5 avrprog von Denis Böhme. Der Internet-Link ist nicht mehr aktiv. Das Tool musste für die Verwendung des ATmega103 angepasst werden 6 In System Programmable Interface 7 GNU Compiler Collection www.gnu.org 8 www.kdevelop.org 9 www.trolltech.com

18 2 Design-Entscheidungen Kontroll /Kommunikations Modul µ C Interface + Spannungsversorgumg Timing Modul Memory/ FIFO Speichermodul Amp. A/D C. Sensor Modul Verstärker/Wandler Modul Abbildung 2.3: Die Abbildung zeigt die sechs weitgehend unabhängigen Module der CCD-Kamera. Nur die Module Timing und Sensor interagieren insofern sehr eng, als Art und Anzahl der Timing-Signale stark vom CCD- Sensor abhängen.

Kapitel 3 Die Hardware In diesem Kapitel wird die Hardware-Seite der Kamera erklärt. Wie bereits erwähnt, haben wir uns für einen modularen Aufbau entschieden (Abschnitt 2). Es wird im folgenden auf die Wahl der Komponenten, ihre technischen Daten, sowie deren Funktionsweise näher eingegangen. Beginnend mit der Spannungsversorgung (Abschnitt 3.1) gelangen wir in logischer Reihenfolge vom CCD-Chip (Abschnitt 3.2) und Timing-Controller (Abschnitt 3.4) über den AD-Wandler (Abschnitt 3.3) zum FIFO-Puffer (Abschnitt 3.5). Der restliche Teil, mit Ausnahme des Main-Controllers, wird zusammengefasst im Abschnitt DMA (3.6). Zum Schluss folgt die Beschreibung des Main-Controllers (Abschnitt 3.7). 3.1 Spannungsversorgung Die Spannungsversorgung konzipierten wir so, dass sie mit 12 Volt gespiesen wird. D.h. es ist möglich, unser gesamtes Astrofotografie-System mit einer (Auto-)Batterie zu betreiben, was auf dem Feld sehr nützlich sein kann. Deshalb setzen wir einen DC-DC-Wandler ein, der aus 12 V Eingangsspannung 1 ±15 V erzeugt. Zusätzlich werden ±5 V zur Verfügung gestellt. Der digitale Teil arbeitet mit 5 V. Details können dem Schema in Anhang C, Seite 47 entnommen werden. 3.2 CCD-Chip Hier bereitete uns zu Beginn die Beschaffung des CCD-Chips einiges Kopfzerbrechen. Das Problem bestand hauptsächlich in zu hohen Preisen und langen Lieferfristen. So waren Preise von ein paar tausend Dollar genauso üblich wie Lieferfristen von einigen Wochen bis Monaten. Das eine wie das andere überstieg die Möglichkeiten einer Semesterarbeit. Schliesslich aber wurden wir fündig. Wir stiessen auf einen CCD-Chip für ca. CHF 80.-, den wir innert einiger Tage im Haus hatten. Diese Entscheidung war gewissermassen ein Kompromiss, da er nicht ganz dem 1 Der Wandler ist für 9 18 Volt spezifiziert.

20 3 Die Hardware entsprach, was wir uns eigentlich gewünscht hätten. Vor allem die Pixelgrösse, die sich eher an der unteren Grenze bewegt, und das Interlining-Prinzip, das nachstehend kurz erklärt ist, wären nicht unsere erste Wahl gewesen. Zu den technischen Daten des CCD-Chips: Es handelt sich um den Typ ICX084AL von SONY. Er besitzt 659 horizontale und 494 vertikale Pixel, die aktiv sind (siehe Abbildung 3.1). Der Rest sind schwarze Pixel, die für uns bedeutungslos sind, jedoch auch ausgelesen und dargestellt werden. Die Pixelgrösse ist quadratisch mit einer Seitenlänge von 7.4 µm. 494 pixels 3.66 mm 659 pixels 4.88 mm effective pixels optical black pixels Abbildung 3.1: Die Pixelanordnung des CCD s Da in unserem Fall ein sog. interline Sensor vorliegt, werden die belichteten Pixel vor dem Auslesen in eine Art Zwischenspalten geschoben und dadurch vor weiterer optischer Einstrahlung geschützt (siehe Abbildung 3.2). Zum Auslesen werden diese Spalten sodann nach unten geschoben, wo sie horizontal ausgelesen werden können. Dieses Prinzip hat den Vorteil, dass kein mechanischer Verschluss nötig ist, wie man es sonst von Foto-Kameras kennt. Ein Nachteil ist, dass durch diese Zwischenspalten Empfindlichkeit verloren geht, da nicht die ganze Pixelfläche lichtsensibel ist. Quantitative physikalische Untersuchungen werden so deutlich erschwert (siehe Abschnitt 1.1). Dank dem streng modularen Aufbau der gesamten Elektronik wird es jedoch problemlos möglich sein, zu einem späteren Zeitpunkt einen CCD-Chip zu verwenden, der diesen ziemlich gravierenden Nachteil nicht mehr aufweist. Das den CCD-Chip enthaltende Modul wurde so gestaltet, dass ein nachträglicher Einbau eines Peltier-Elementes zur Kühlung des Chips leicht möglich ist.

3.3 Verstärker und AD-Wandler 21 Pixels Horizontal register Transfer register Output Abbildung 3.2: Das Interlining-Prinzip des CCD s 3.3 Verstärker und AD-Wandler In Abschnitt 1.2 wurde die Funktionsweise von CCD-Sensoren ausführlich beschrieben. Somit wird hier einfach davon ausgegangen, dass die Bilddaten in Form von analogen Spannungen am Ausgang des CCD-Chips vorliegen. Diese müssen nun zur weiteren Verarbeitung als erstes verstärkt und sodann digitalisiert werden. Die analoge Signalaufbereitung erfolgt in zwei Stufen. Zunächst wird der DC- Offset, der dem Nutzsignal überlagert ist, entfernt und das Signal auf den Eingangsspannungsbereich des AD-Wandlers verstärkt. Danach wird in einer sogenannten Clamp-and-Sample-Stufe der Reset-Noise 2 sowie der Offset der vorherigen Verstärker entfernt 3. Man beachte, dass nach dem Clamping keine Offset-Korrektur mehr ausgeführt wird. Konstante Offsetfehler spielen in dieser Anwendung deshalb keine Rolle, weil im Betrieb sowieso von jedem Bild ein sogenanntes Dark Frame 4 subtrahiert wird, um den Dunkelstrom zu eliminieren. Abbildung 3.3 zeigt schematisch den Aufbau dieser Stufen und die darin auftretenden Signale. Das detaillierte Schema ist in Anhang C auf Seite 52 zu finden. Bei der Auswahl der Verstärker haben wir auf Schnelligkeit (insbesondere kleine Settling Time) sowie geringes Rauschen geachtet. 2 Siehe Abschnitt 1.2.4.4 auf Seite 11 3 Clamp-and-Sample ist eine Implementation von Correlated Double Sampling. Siehe auch [8], [2] und [9]. 4 Ein Dark Frame ist eine Aufnahme bei abgedecktem Teleskop.

22 3 Die Hardware Stufe 1 Stufe 2 1 2 3 5 CCD + G= 1 C Clamp G=1 AD C. 4 U > ~ UOffset U Offset 1 2 3 4 5 Abbildung 3.3: Stufe 1 erledigt die Offset-Verschiebung sowie die Signalverstärkung. Stufe 2 implementiert das Clamping. Unten sind die entsprechenden Signale zu sehen. Leider hatten wir mit der Clamping-Elektronik Probleme. Es zeigte sich, dass der Betrieb mit einem MOSFET als Schalter (BS107A) nicht praktikabel ist. In einem neuen Design werden wir deshalb einen auf solche Anwendungen optimierten Analog-Schalter (z.b. MAX4651 von Maxim) verwenden. Als AD-Wandler haben wir den Typ AD7492-5 von Analog Devices ausgewählt. Er verfügt über einen 12-bit breiten Ausgang und arbeitet mit einer Umwandlungsrate von bis zu 1.25 MSPS 5. 5 Megasamples per second

3.4 Timing-Controller 23 3.4 Timing-Controller Beim Timing-Controller schliesslich laufen die Fäden der CCD-Einheit zusammen. Da seine Aufgabe, auf die gleich näher eingegangen wird, sehr zeitkritisch ist, entschieden wir uns für einen AVR90S2313 von Atmel. Er ist, mit 12 MHz getaktet, deutlich schneller als der Main-Controller (6 MHz). Die Hauptaufgabe des Timing-Controllers ist die korrekte Ansteuerung des CCD-Sensors, d.h. die Bereitstellung der richtigen Timing-Signale. Abbildung 3.4 und Abbildung 3.5 zeigen die Signale, die im CCD einen Shift in vertikaler bzw. horizontaler Richtung veranlassen. V1 V2 V3 H1 H2 SUB Abbildung 3.4: Die Abbildung zeigt die Steuersignale bei einem vertikalen Shift und den Beginn bzw. das Ende des horizontalen Auslesens einer Zeile. Das Signal SUB dient dazu, Blooming zu verhindern (siehe Abschnitt 1.2.4.5). V sind die vertikalen, H die horizontalen Steuersignale. An die vertikalen Signale ( Phasen, siehe Abschnitt 1.2) stellt der Sensor gewisse Anforderungen bezüglich Flankensteilheit und Pegel. Deshalb werden diese über einen Treiber-Chip dem CCD zur Verfügung gestellt. Für grösstmögliche Flexibilität wurde die gesamte Timing-Sequenz in Software implementiert. Jedes der Timing-Signale entspricht deshalb einem IO-Pin des Controllers. Nur das Reset-Signal (für den Reset der Auslesekapazität), das Clamping- Signal (siehe auch Abschnitt 3.3) sowie das Steuersignal für den AD-Wandler wurde hardwaremässig aus den Horizontal-Phasen abgeleitet. Da diese Signale zeitkritisch sind, wurde ihre Erzeugung so implementiert, dass ihre zeitliche Lage und Dauer über geeignete Bereiche einstellbar sind (Details können dem Schema in Anhang C auf Seite 50 entnommen werden).

24 3 Die Hardware H1 H2 Reset Clamp Sample Signal Abbildung 3.5: In horizontaler Richtung arbeitet der Chip mit 2 Phasen H1 und H2. 3.5 FIFO Nachdem unsere Bilddaten aus dem CCD gelesen und digitalgewandelt worden sind, setzen wir unsere Reise in Richtung Host fort und gelangen nun zu der Schnittstelle zwischen CCD- und USB-Einheit: dem FIFO-Puffer. Er dient der Sicherstellung einer konstanten Auslesegeschwindigkeit des CCD. Dies ist nötig, weil die Übertragungsgeschwindigkeit zum Host gewissen Schwankungen unterworfen ist und somit zeitweise Daten zwischengespeichert werden müssen. Bei unserem Modell handelt es sich um den CY7C421 von Cypress mit einer Speicher-Kapazität von 512 Bytes. In Abbildung 3.6 ist der Verlauf des Datenpfades vom AD-Wandler durch den FIFO-Puffer detailliert dargestellt. Da die digitalisierten Daten 12 bit breit sind, sind zur Übertragung 2 Bytes nötig. Nun standen wir vor der Entscheidung, entweder die resultierenden 16 Bit vollständig auszunützen und somit jeweils ein Byte zu zerhacken (8+4 = 12 Bit), oder aber die redundanten 4 Bits des zweiten Bytes einfach mit Nullen aufzufüllen. Wir haben uns für letzteres entschieden, da das Modularitäts-Kriterium Priorität hatte. D.h. es sollte ohne grossen Aufwand möglich sein, den 12-bit AD-Wandler durch einen 16-bit-Typen zu ersetzen. Zudem gewann die Schaltung dadurch sehr viel an Einfachheit. Nach dem Auslesen des FIFO-Puffers gelangen die Daten direkt zum USB- Controller. Dieser verfügt nur über einen 8-Bit Dateneingang, was zur Folge hat, dass ein Byte-Selektor dafür sorgen muss, dass jeweils abwechslungsweise das Lowund das High-Byte ausgelesen werden (siehe Abbildung 3.6). Leider funktionierte der ganze Auslese-Prozess im DMA-Modus nicht wunschgemäss. Die aufgetretenen Probleme werden weiter unten im Abschnitt 3.6 genauer

3.6 Der DMA-Modus 25 8 8 (High Byte) 16 FIFO 16 4 GND Byte Selector 8 (Low Byte) 12 A/D Converter Abbildung 3.6: Der FIFO-Puffer beschrieben. 3.6 Der DMA-Modus Da die Funktionen des USB- und des DMA-Controllers sehr nah zusammenhängen, betrachten wir den DMA-Modus 6 als ganzes und verzichten auf eine Deviceorientierte Betrachtungsweise. Was ist DMA? Wie der Name vermuten lässt, geht es darum, dass ein Device Daten direkt vom Speicher liest, ohne dass sich der Mikroprozessor 7 selbst darum kümmern muss. Er teilt dem eigens dafür eingesetzten DMA-Controller mit, welche Daten er benötigt und wird so von der Ressourcen fressenden und einfältigen Aufgabe der Speicheradressierung befreit. In Abbildung 3.7 ist der zeitliche Ablauf einer Übertragungsoperation im DMA-Modus dargestellt. Nachdem der Main-Controller den USB-Chip in den DMA-Modus versetzt hat, versorgt der DMA-Controller den USB-Chip mit den zu übertragenden Daten. Nun muss der Mikroprozessor den USB-Chip nur noch in Übertragungs-Bereitschaft versetzen, worauf die Transaktion stattfindet. Die letzten drei Schritte in Abbildung 3.7 werden wiederholt, bis die ganze Datenmenge übertragen ist. µ C DMA µ C USB DMA µ C USB Zeit DMA Modus initialisieren USB Paket aufsetzen Transfer aktivieren Daten transfer USB Paket aufsetzen Transfer Daten aktivieren transfer Abbildung 3.7: Der zeitliche Ablauf des DMA-Modus Dass der Main-Controller den USB-Chip in regelmässigen Abständen in Übertragungs-Bereitschaft versetzen muss, ist etwas unschön und widerspricht dem eigentlichen Ziel des DMA-Modus. Deshalb unterstützt unser USB-Controller auch den sog. ADMA-Modus 8. Dabei entfällt ebendiese Aufgabe des Mikroprozessors (siehe Abbildung 3.8). 6 Direct Memory Access 7 Für den Prozessor ATmega103 werden die austauschbaren Bezeichnungen Mikroprozessor, Main-Controller oder ATmega verwendet 8 Automatic Direct Memory Access

26 3 Die Hardware µ C DMA USB DMA USB Zeit DMA Modus initialisieren USB Paket aufsetzen Daten transfer USB Paket aufsetzen Daten transfer Abbildung 3.8: Der zeitliche Ablauf des ADMA-Modus In Abbildung 3.9 ist die Funktionsweise des ADMA-Modus graphisch dargestellt. Man beachte, dass sich die Darstellung als Fortsetzung an Abbildung 3.6 fügt. Der USB-Controller schickt, vom Main-Controller in den DMA-Modus ver- DRQ DACK WR DMA Controller Host USB Interface 8 Databus Byte Selector Abbildung 3.9: Illustration ADMA-Modus setzt, einen DRQ 9 an den DMA-Controller. Dieser sorgt über den Byte-Selektor für die richtige Reihenfolge der zu übermittelnden Bytes und steuert deren Schreiben zum USB-Chip mittels der Steuersignale WR 10 und DACK 11. Der zeitliche Verlauf letzterer Signale ist in Abbildung 3.10 detailliert dargestellt. Wie weiter oben bereits erwähnt, ergaben sich im Zusammenhang mit dem DMA-Modus Probleme. Nach einigen Tests sahen wir uns vor die Tatsache gestellt, dass wir bei der Übertragung noch um einen zweistelligen Faktor von einer realistischen USB-Bandbreite entfernt waren. Wie wir mit dem KO 12 leicht verifizieren konnten, wurden nur während Bruchteilen der möglichen Übertragungszeiten tatsächlich Daten transferiert. Und zwar immer nur zu Beginn eines 1ms-Frames (siehe Anhang B.2). Offensichtlich standen nach dem Transfer der ersten 64 Bytes keine weiteren Daten bereit im USB-FIFO 13, worauf der Host erst zu Beginn des nächsten Frames einen nächsten Versuch startet. Als Folge stauten sich die Bilddaten im FIFO-Puffer an, was wiederum den Auslese-Prozess des CCDs drastisch verlangsamte. Wir vermuten, dass dies der Grund dafür ist, dass in den Bildern jeweils regelmässige, periodisch wiederkehrende Helligkeits-Schwankungen zu erkennen sind. 9 Data Request 10 Write 11 DMA Acknowledge 12 Kathodenstrahl-Oszilloskop 13 Nicht zu verwechseln mit dem FIFO-Puffer

3.7 Main-Controller 27 DRQ DACK WR D7 0 Data Abbildung 3.10: Die Steuersignale bei einem Schreibzugriff im DMA- Modus. D7-0 sind die Datenleitungen. Doch was ist die Ursache dafür, dass nach den ersten transferierten 64 Bytes eines Frames der USB-Puffer leer ist? Dazu können wir zum jetzigen Zeitpunkt nur Vermutungen äussern. Es wäre zum Beispiel denkbar, dass der DMA-Controller die Daten zu langsam bereitstellt. Oder vielleicht ist der ADMA-Modus für unsere Zwecke gar nicht realisierbar? Gegenwärtig wissen wir nichts genaues über die Ursache dieses Problems. 3.7 Main-Controller Schliesslich sind wir beim Herzstück der Kameraeinheit angekommen, dem Microcontroller ATmega103. Er erfüllt diverse Aufgaben. Die erste davon ist die Initialisierung verschiedener Hardwarekomponenten. Dazu gehören der ATmega-interne Belichtungstimer, der nach abgelaufener Belichtungszeit einen Interrupt auslöst. Weiter werden auch der CCD-Timing- und der USB-Controller initialisiert, damit zu Beginn in jeglicher Hinsicht von einem definierten Zustand ausgegangen werden kann. Seine Hauptaufgabe besteht aber zweifelsohne darin, ein intelligentes Gegenüber des Hosts zu sein. Dies beginnt bei der USB-Enumeration (siehe B.2.1), wo zum einen die Geräteadresse entgegengenommen werden muss. Zum anderen erwartet der Host danach den Deskriptor. Zusammenfassend wird also der gesamte Austausch von Informationen, der bei der Enumeration nötig ist, vom ATmega koordiniert. Die Enumeration ist aber nur ein kleiner Teil vom Informationsaustausch, der stattfindet. Für unser Projekt besteht der eigentliche Sinn der Kommunikation ja darin, dass vom GUI aus Befehle an die Kameraeinheit übertragen werden können und diese sinnvoll ausgeführt werden. Im folgenden ist eine Liste aufgeführt der be-

28 3 Die Hardware stehenden, implementierten Befehle. Es sind jeweils die Bedeutung, die erwarteten Argumente und allfällige Bemerkungen angegeben. 1. PING Für Verbindungstest: erwartet Pong Argumente: keine 2. GETTEMP 3. SHOOT 4. ABORT Temperaturanfrage Argumente: keine Bemerkungen: gibt gegenwärtig noch keinen sinnvollen Wert zurück Veranlasst Belichtung Argumente: Belichtungszeit und Binning-Faktor 14 Bricht Belichtung ab Argumente: keine Der Main-Controller hat dabei die Aufgabe, diese Befehle zu erkennen, deren Ausführung einzuleiten und die resultierenden Daten an den Host zurückzuschicken. Wichtig zu wissen ist dabei, dass all seine Funktionalitäten Interrupt-gesteuert ausgeführt werden. D.h. der ATmega ist in seinem Grundzustand einfach idle und wartet auf das asynchrone Eintreffen von Ereignissen, auf die er dann entsprechend reagiert. Wurde vom GUI ein Bild angefordert, wird für dessen Übertragung eine erfolgreiche Belichtung vorausgesetzt der DMA-Modus verwendet. So besteht schliesslich eine Aufgabe des Main-Controllers noch in der Einleitung und Beendigung desselben. Mehr hat er damit nicht zu tun, weil ihn der DMA-Modus ja per definitionem entlasten soll (siehe 3.6). 14 Binning bezeichnet das Zusammenfassen von mehreren Pixeln zu einem:

Kapitel 4 PC Software Abbildung 4.1 zeigt eine Übersicht über die Komponenten auf dem PC. Die schraffierten Blöcke waren bereits vorhanden. Währenddem die grafische User-Applikation im Userspace 1 des Betriebssystems läuft, liegt der USB-Treiber im Kernelspace eingebettet. PC Userspace Graphical User Interface Kernelspace Kernel module usb astro USB Core USB Interface (Hardware) USB Wire Abbildung 4.1: Software Gesamtblockschema auf der PC-Seite 1 UNIX und Linux teilen den Arbeitsspeicher in zwei Bereiche auf. Im Userspace liegen Applikationen und im Kernelspace werden Treiber und Code abgelegt, der mit der Systemverwaltung betraut ist. Durch diese Trennung können höhere Sicherheit und Laufzeitstabilität gewährleistet werden. Siehe http://www.kernelnewbies.org

30 4 PC Software Userspace Kernelspace /dev/ccdastro mouse ccdastro printer Kernelmodule USB Core Kernel USB Hub Hardware Abbildung 4.2: USB Kernel-Module 4.1 USB-Core Der USB-Core ist im offiziellen Linuxkernel 2 enthalten. Er übernimmt die direkte Kommunikation mit dem USB-Hub (Hardware) und bietet den Entwicklern von USB-Treibern alle benötigten Service-Routinen. Somit bleiben dem Entwickler die kniffligen Details der Enumeration 3 und der Konfiguration der USB-Endpoints erspart. Beim Anschliessen von neuen Geräten während der Laufzeit kümmert sich der USB-Core um die Aktivierung des zuständigen Treiber-Moduls. Der USB-Core vom Kernel Version 2.4.13 erwies sich als äußerst robust und unterstützte uns durch die präzisen Logmeldungen bei der Fehlersuche. 4.2 Kernelmodul Jedes USB-Gerät benötigt im Kernel ein entsprechendes Treibermodul, welches die vom geräte-spezifischen Protokoll benötigte Funktionalität implementiert. Alle Treibermodule docken an den USB-Core an, wie Abbildung 4.2 zeigt. Pro USB- Geräteart wird jedoch nur ein Treibermodul geladen. Das von uns entwickelte Kernelmodul wird vom GUI aus über eine UNIX-übliche Gerätedatei 4 angesprochen. Zum Empfangen und Senden von Daten über den USB wird von dieser Datei gelesen bzw. in die Datei geschrieben. 2 www.kernel.org 3 An einen USB-Host können maximal 127 Geräte angeschlossen werden. Enumeration ist der Vorgang, bei dem jedem Gerät seine eindeutige Adresse (zwischen 1 und 127) zugeteilt wird. Siehe auch Abschnitt B.2.1, Seite 44 4 /dev/ccdastro; major/minor number: 180/200

4.2 Kernelmodul 31 Bei Lese- oder Schreibzugriffen auf die Gerätedatei ruft der Kernel im USB- Modul Callback-Routinen auf, welche die Daten an den USB-Core weiterreichen und das USB-Gerät mittels Semaphoren vor Mehrfachzugriff schützen. Als Vorlage zum Kernelmodul diente eine Beispiel-Datei 5 aus dem offiziellen Linuxkernel. 4.2.1 Callback-Routinen Jeder Gerätetreiber unter Linux enthält eine Datenstruktur, in der einige Callback- Routinen aufgelistet werden, welche bei Lese-, Schreib- und IOCTL 6 -Zugriffen auf die zugehörige Gerätedatei vom Kernel aufgerufen werden. /* file operations needed when we register this driver */ static struct file_operations ccd_fops = { owner: THIS_MODULE, read: ccd_read, write: ccd_write, ioctl: ccd_ioctl, open: ccd_open, release: ccd_release, }; Beim Starten des GUIs öffnet es die Gerätedatei. Wie bei jedem herkömmlichen Öffnen von Dateien ruft die Applikation den Systemcall open auf. Ab hier tritt der Kernel in Aktion und überprüft zunächst, ob es sich bei der zu öffnenden Datei um eine Gerätedatei oder um eine gewöhnliche Datei handelt. Da in unserem Fall eine Gerätedatei vorliegt, wird ein Treibermodul benötigt, welches die für das anzusprechende Gerät spezifischen Funktionen bereithält. Die Majornumber der Gerätedatei 7 dient als Index für das Aufsuchen des benötigten Treibers in einer kernel-internen Treibertabelle, wie Abbildung 4.3 zeigt. Die Minornumber dient der Unterscheidung mehrerer gleichartiger Geräte, die vom gleichen Treibermodul gehandhabt werden. Sollte der Kernel an dieser Stelle feststellen, dass kein passendes Treibermodul vorhanden ist, würde an dieser Stelle eine Fehlermeldung an den Aufrufer des Systemcalls, also die Applikation, weitergegeben. Der unserer Gerätedatei entsprechende Eintrag in dieser Kernel-Tabelle verweist auf das geladene 8 USB-Treibermodul. Im USB-Modul wird nun die Callback-Routine ccd_open aufgerufen. Sie richtet die für den Datentransfer benötigten Datenstrukturen ein. Ausserdem überprüft sie, 5 drivers/usb/usb-skeleton.c 6 IO Control Diese UNIX-typische Funktion dient der Konfiguration von Treibern während der Laufzeit 7 Major- und Minornumber werden im Dateisystem wie alle anderen Dateieigenschaften abgelegt. Siehe man-page,mknod 8 siehe man-page,insmod

32 4 PC Software Gerätedatei /dev/ccdastro major 180, minor 200 Gerätetabelle Userspace Kernelspace major nr... 179 180... ptr device driver ccdastro Callback Routinen open() close() read() write()... USB Core Abbildung 4.3: Von der Gerätedatei zum Gerätetreiber ob derzeit tatsächlich das USB-Gerät im PC eingesteckt und aktiv ist. Sonst würde sogleich ein Fehler generiert werden und das Öffnen der Gerätedatei fehlschlagen. Beim Lesen und Schreiben wird die entsprechende read- bzw. write-callback- Routine aufgerufen. Mittels Semaphoren wird sichergestellt, dass nicht zwei Applikationen gleichzeitig schreiben oder über das USB lesen. USB-Geräte werden bekanntlich während der Laufzeit des Systems ein- und ausgesteckt. Der Treiber muss vom Kernel über diese Ereignisse informiert werden. Hierzu dienen zwei Callback-Routinen namens probe und disconnect, die beim Ein- bzw. Ausstecken aufgerufen werden, und nur bei USB-Treibern zu finden sind. Schema 4.4 zeigt den typischen Ablauf. Die Callback-Routinen des Treibermoduls wiederum greifen auf Service-Routinen des USB-Cores zurück, um die Daten über den USB zu lesen oder zu senden. 4.3 GUI Die Open-Source-Entwicklungsumgebung KDevelop 9 ist inzwischen soweit herangereift, dass sie sich für unsere Zwecke als gut brauchbar erwies. Die programmierte 9 www.kdevelop.org

4.3 GUI 33 Probe USB Gerät einstecken Open Öffnen der Gerätedatei Read Daten lesen Write Daten schreiben Close Schliessen der Gerätedatei Disconnect USB Gerät ausstecken Abbildung 4.4: Gewöhnlicher Ablauf des Gerätetreibers Anwendung stammt von einem von KDevelop erzeugten Sourcecode-Skeleton ab und nutzt die Qt-Bibliothek von Trolltech 10. Das GUI bietet nicht nur das Auslösen und die Anzeige von Aufnahmen, sondern auch das Laden und Speichern derselben. Ausserdem enthält es einige Filter, die speziell für astrofotografische Zwecke geschrieben wurden. Abbildung 4.5 zeigt einen Screen-Shot. Die Filter im einzelnen: add - Addiert zwei Bilder, indem aus zwei Pixelwerten der Durchschnitt berechnet wird. /* check out dimension and take the overlapping region */ w = op1->width()<op2->width()? op1->width() : op2->width(); h = op1->height()<op2->height()? op1->height() : op2->height(); RawImage *rimg = new RawImage(w, h); for(int y=0; y<h; y++) for(int x=0; x<w; x++){ rimg->data[x+y*w] = ( op1->data[x+y*op1->width()] + 10 www.trolltech.com

34 4 PC Software op2->data[x+y*op2->width()] ) / 2; } LoadedImage *img = new LoadedImage(rimg, images.count(), true); sub - Subtrahiert zwei Bilder. Damit läßt sich von einer Aufnahme das durch den Dunkelstrom generierte Rauschen abziehen. Der Source-Code im einzelnen: for(int y=0; y<h; y++) for(int x=0; x<w; x++) int val = op2->data[x+y*op2->width()] - op1->data[x+y*op1->width()]; div - Skaliert die Helligkeit eines Bildes aufgrund derjeniger eines anderen. for(int y=0; y<h; y++) for(int x=0; x<w; x++){ rimg->data[x+y*w] = (op2->data[x+y*op2->width()] / op1->data[x+y*op1->width()]) * (256<<4); }

4.3 GUI 35 Abbildung 4.5: GUI Screenshot