Forum: Mikrocontroller und Digitale Elektronik PC-Spektrometer - Problem mit Linien-CCD (AVR)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Y. T. (moritzz)


Lesenswert?

Hallo!
Ich bin gerade am basteln eines Spektrometers mithilfe eines 
Gitterspiegels und nem Linien CCD ILX554.
Das Gehäuse steht, der CCD ist schon verbaut, doch ich hab ein kleines 
Problem mit der Belichtungszeit. Weiss jemand, ob die Clock-Frequency 
direkt die Belichtungszeit bestimmt? Es wird laut Datenblatt pro 
Clock-Periode ein neuer Pixel analog ausgegeben.

Der aktuelle Stand des Projekts ist der:
- Mikrocontroller (ATmega8) sendet das Ansteuerungsprotokoll 
(Rechtecksignal mit Start-bits, etc.
-Am Oszi kann man das Spektrum sehen. Anbei mal ein paar 
Beispiel-Spektren verschiedener Lichtquellen.

Ich möchte jetzt jeden Pixel per ADC einlesen, und dann direkt übers 
UART verschicken, aum am PC das Spekrum auszugeben. Nur ist jetzt die 
Kombi ADC/UART so langsam, dass ich nur murks bekomme- wahrscheinlich 
ist dann einfach die Belichtungszeit zu hoch?

http://www.moritz-greif.de/hohe_freq_GRUENE_LED.JPG
http://www.moritz-greif.de/low_freq_GRUENE_LED.jpg
http://www.moritz-greif.de/energiesparlampe.jpg
http://www.moritz-greif.de/weisse_led.JPG
http://www.moritz-greif.de/Halogenlampe.JPG

Hier mal zwei Spektren einer grünen LED , das eine mit 100kHz, das 
andere mit 500khz-  beide signale sind vom CCD invertiert, man sieht, 
dass das signal mit langsamer ansteuerfrequenz nochmal invertiert ist, 
ich nehme mal an, dass das signal so aussehen muss, wie mit der hohen 
Ansteuerngsfreqenz?

Nur wie bekomme ich jetzt 2048 Pixel mit ~1µs/Pixel digitalisiert und 
verschickt oder gespeichert?

Viele Grüsse,
moritz

von Claude S. (claudeschwarz)


Lesenswert?

Bin zwar kein CCD Spezialist .. aber bei Array Sensoren wird über die 
Clocks schon die Belichtungszeit bestimmt. Ich mach das bei einer 
umgebauten Webcam für Astrofotografie so um hohe Belichtungszeiten zu 
bekommen.

Könntest Du vielleicht deine Schaltung und ein paar Source Code happen 
posten? Habe auch noch Zeilen und Array Sensoren rumliegen mit dennen 
ich gerne mal was machen würde.

von Y. T. (moritzz)


Lesenswert?

Hey, cool. Ich hab meine ToUCam auch auf Langzeitbelichtung umgebaut, 
nach SteveChambers....Und sie hat sogar einen neuen CCD bekommen (den 
098BL)- aber das nur so am rande.. (-->http://astro.junetz.de/)

Hier mal der Code zum fortlaufenden ansprechen der Pixel:
1
init:
2
sbi portb, 0
3
sbi portb, 1
4
5
rcall warte
6
rcall warte
7
rcall warte
8
9
cbi portb, 0
10
11
sbi portb, 2
12
rcall warte
13
cbi portb, 2
14
15
sbi portb, 0
16
17
rcall warte
18
19
//h834 =2100 pulse
20
clr lowb
21
ldi highb, 8
22
ldi hilfr, 34
23
24
pulse:
25
sbi portb, 1
26
rcall warte
27
cbi portb, 1
28
rcall warte
29
30
dec lowb
31
brne pulse
32
33
dec highb
34
brne pulse
35
36
ldi highb, 1
37
ldi lowb, 1
38
39
dec hilfr
40
brne pulse
41
42
rjmp init

Ich versuche jetzt, mit einem zweiten AVR der auf dauerschleife den ADC 
abfragt, die Daten an den PC zu übermitteln. Die Belichtungszeit würde 
ich dann in AVR 1 über die Clock-Freqenz regeln.. das ist übrigens 
dieses
1
rcall warte
Gruss, moritz

von hans (Gast)


Lesenswert?

Dazu müßte dein Controller bei den Wandlungen 100kSps schaffen!
2-5 us für einlesen und ablegen ist realistischer.

Die Übertragung in 1 us bei einem 8-bit Messwert bedeut
ohne Overhead 8MBit/s. UART geht nicht, nur SPI mit Buffer
und Leererkennung (neuere AVR mit UART als SPI-Master bis 10MBit/s)

Möglich einen Controller als reihnen Datensmmler so zu verwenden, wenn
der PC mitspielt. RS232 könnte dabei zur steuerung dienen.

Gruß Hans

von Y. T. (moritzz)


Lesenswert?

Ah, ok. Das klingt interessant.
Also 2-5µS sind auch noch in Ordnung denke ich.
Welcher AVR mit diesem 10Mbit/s - SPI, der genauso per ISP zubeschrieben 
ist, wie der ATmega8, käme denn da in Frage?
Was ist eine Leererkeenung?
Gruß,
moritz

von hans (Gast)


Lesenswert?

Hallo Moritz,

z.B. Mega164p
Die Leererkennung ist ein Flag zum Anzeigen das der Sendbuffer
leer ist während das letzte Byte noch gesendet wird.
Dann kann man nachladen und der Datenstrom wird nicht
unterbrochen. Dazu wird die RS232-Einheit des AVR verwendet, da diese
denn Sendebuffer + Erkennung bereit hat (nur Als SPI-Master möglich).
Die normale SPI hat dies nicht, da heist es immer warten bis gesendet, 
dann die neuen Daten ins Ausgaberegister.
Da die o.a. AVR 2 RS232 haben kann man immer noch über den PC
Messungen starten/stoppen ober Einstellungen ändern.

Nur der PC muß als SPI-Slave mit den Daten arbeiten können.

Wenn es nur "Singel shoot"-Messungen sein sollen geht aber auch
das zwischenspeichern in einem SPI-Ram und dann "gemütlich" senden.

Gruß Hans

von 3369 (Gast)


Lesenswert?

Belichtungszeit unf Clock haengen nicht zusammen. Man kann zB eine 
Sekunde belichten und nachher mit 1MSample auslesen. Sofern die Pixel 
durch die sichtbaren Pixel rausgeschoben werden, so muss die Schiebezeit 
kurz gegen die Belichtungszeit sein. Es mag auch CCDs geben, die haben 
Blindpixel zum Schieben und benoetigen dann einen Latchimpuls, um die 
sichtbare Zeile in die Unsichtbare zu laden, welche man dann nahezu 
beliebig langsam auslesen kann.

von Y. T. (moritzz)


Angehängte Dateien:

Lesenswert?

Ok, beides interessante Anmerkungen.

-> Single Shoot wäre auch ne Möglichkeit, Live wäre natürlich schöner.
   Das SPI-Ram interssiert mich dabei sehr - das wäre eigentlich für so 
eine Anwendung ideal, und wenn das SPI dann auch noch 10M/bit hat, umso 
besser. Gibt es einen Geheimtipp unter den SPI-Rams?

--> Den 164p schau ich mir mal genauer an


@3396:

Heisst das, wenn ich z.B. die Clock Leitung 1 s HIGH lasse, und dann 
erst mit den Clock-pulsen beginne und die Pixel auslese, hab ich dann 
ca. 1 s Belichtungszeit?

Also ist die Belichtungszeit quasi immer das Stück "CLOCK_HIGH" zwischen 
den
Pulsfolgen (beim ILX554B mind. 2090 Impulse für 2048 Pixel)

"Die Schiebezeit muss kurz gegenüber der Belichtungszeit sein"...

heisst das bei einer Auslesezeit von sagen wir mal 0,2 Sekunden die 
Belichtungszeit dann vllt minimal 0,4 Sekunden sein darf, o.ä.?

von 3369 (Gast)


Lesenswert?

> ...Schiebezeit muss kurz gegenüber der Belichtungszeit...

ist wesentlich bei CCDs wo die sichtbaren Pixel als Schieberegister 
benutzt werden. Dann werden die Pixel waehrend dem schieben noch mit 
falschem Licht nach-belichtet. Wieviel das ausmacht.... Welche Kontraste 
zwischen belichteten und unbelichteten Pixeln sollten denn erreicht 
werden ? zB 1000:1, das wuerde einen 10bit Wandler rechtfertigen. das 
wuerde dann auch verlangen, dass die Auslesezeit etwa 1/1000 der 
Belichtungszeit sein muss. ... das benoetigt vielleicht etwas 
ueberlegen...
Was bedeutet bei erhoehten Anforderungen an den Kontrast wuerde ich 
einen externen 16bit Wandler mit 500kSample oder schneller mit einem 
Zaehler in ein externes RAM schaufeln lassen. Den internen AVR Wandler 
halte ich fuer gaenzlich ungeeignet fuer solche Anwendungen.

von Y. T. (moritzz)


Lesenswert?

ISt das mit den sichtbaren Pixeln als Register beim ILX554B der Fall?
Aus dem spärlichen Datenblatt werde ich nicht ganz schlau.
Wie kann man das denn rauskriegen, ob die sichtbaren Pixel als 
Schieberegister benutzt werden?


Ich denke ich orientiere mich dann mal in Richtung Externes RAM, 
externer ADC, und dann Datenbübetragung per µC.

Aber im Moment gehts mir erstmal ums Prinzip.

von 3369 (Gast)


Lesenswert?

Ich denke der CCD hat eine Dunkelzeile zum Schieben. Der Phi(ROG) 
schiebt alles rueber und der Phi(clk) schiebt die Zeile raus. Das 
erlaubt ein schnelles auslesen gemaess Seite 5. Der dynamische Bereich 
ist mit 333 nicht wirklich toll. Das sind so um die 8.5 bit.

von Y. T. (moritzz)


Lesenswert?

Ok, danke für die Info!

Nach Seite 5 hab ich das auch gemacht bis jetz. Nur habe ich 
festgestellt, dass unter einer frequenz von etwa 100 khz, gar keine 
richtigen Signale mehr ankommen -

Wenn ich das oben richtig verstanden habe, wird der CCD also 
wahrscheinlich dann beim Auslesevorgang, und bevor der ROG-Pin low 
gezogen wird belichtet - und das ist dem dann zu viel- wenn ich die 
Wartezeiten/Frequenz nicht schnell genug mache. Richtig?

(Ich habe eben übrigens den CCD mit einem AVR angesteuert, und mit einem 
zweiten AVR, der in Dauerschleife ADC-Samples gemacht und per UART 
gesendet hat, ausgelesen. Ergebnis: ungefähr jedes 20ste Pixel kommt am 
PC an....
Das ist natürlich räudigst lahm.)

von Magnus Müller (Gast)


Lesenswert?

Zum Thema Belichtungszeit:

So wie ich das sehe, bestimmt die Zeit zwischen den ROG-Pulsen die 
Belichtungszeit. Wenn du kürzer belichten willst, als es deine 
Auslesegeschwindigkeit zulässt, würde ich raten, nach dem Auslesen einen 
ROG-Puls anzulegen, dann die gewünschte Belichtungszeit abzuwarten, 
einen zweiten ROG-Puls anlegen und dann erst erneut auszulesen.

Gruß,
Magnetus

von Benedikt K. (benedikt)


Lesenswert?

Magnus Müller wrote:
> Wenn du kürzer belichten willst, als es deine
> Auslesegeschwindigkeit zulässt, würde ich raten, nach dem Auslesen einen
> ROG-Puls anzulegen, dann die gewünschte Belichtungszeit abzuwarten,
> einen zweiten ROG-Puls anlegen und dann erst erneut auszulesen.

Davon würde ich abraten. Keine Ahnung ob das bei allen CCDs so ist, aber 
bei denen die ich hatte, haben sich die Daten dann addiert. Es ist also 
auf jedenfall ein Auslesen zwischen den Impulsen notwendig, um ein 
brauchbares Ergebnis zu erhalten.
Anscheinend bleiben ansonsten die Ladungsträger im Schieberegister 
erhalten und die neuen werden einfach hinzugefügt.

von Magnus Müller (Gast)


Lesenswert?

@Benedikt:

Gut, dann halt so:

- 1x ROG-Puls
- zweitausendundirgenwas Pixel mit maximalem Takt durchshiften
  ohne zu wandeln
- Restliche (Belichtungs-) Zeit abwarten
- 1x ROG-Puls
- CCD-Zeile normal auslesen / wandeln

Gruß,
Magnetus

von Y. T. (moritzz)


Lesenswert?

Das Klingt sehr gut und Logisch !
Werde ich gleich heute abend ausprobieren!
Die 2090 Pulse kann man ja ohne auslesen schnell durchrattern, damit 
kann ich ja praktisch alle beliebeigen belichtungszeiten einstellen, 
top.

Also:

Rog - während belichtung im gange: schnelle auslesepulse - Rog - 
langsame gemütliche auslesung mit gemütlichem senden an den PC - Rog - 
Dummyauslesepulse - ...usw.

optimal.


Mich wundert nur, dass im Datenblatt die Belichtungszeit kein einziges 
Mal erwähnt ist, das ist doch essentiell für jede Anwendung von den 
Dingern!

von I_ H. (i_h)


Lesenswert?

Witzig, genau diese Idee hatte ich vor einer Woche auch, also 
Spektrometer mit einem linearen CCD.

Wo hast du denn den Gitterspiegel her? Ich will dafür eigentlich eine CD 
benutzen, etwa so: 
http://astro.u-strasbg.fr/~koppen/spectro/spectrod.html, die 
erreichbaren Ergebnisse sehen gut aus: 
http://astro.u-strasbg.fr/~koppen/spectro/mk2e.html (ganz unten).

Allerdings ist die Fokusierung nicht so ganz einfach. Dafür deckt so ein 
CCD einen sehr weiten Bereich ab.


Digitalisieren wollte ich eigentlich mit einem AVR, macht ja nix wenn 
ein Auslesevorgang Sekunden dauert, hauptsache die Belichtungszeit 
stimmt. Notfalls halt doch mit 'nem CPLD, schnellem ADC (hab hier noch 
einen 8-Bitter mit 60MSPS rumfliegen) und SRAM.
Bei Ebay gab's vor einer Weile vollintegrierte CCD Signalprozessoren mit 
schnellem ADC, da hatte ich mir mal 5 für 1€ geholt. Vielleicht kann man 
damit was machen, wenn du einen willst kannst du gern haben. Bezeichnung 
ist AD9806.

von Y. T. (moritzz)


Lesenswert?

Coole Sache.

Den gitterspiegel hab ich von ebay, aus einem alten monochromator.
Die Idee mit der CD geht aber sicher auch gut.

Mein Kasten sieht bis jetzt ähnlcih aus, wie auf den Fotos aus deinem 
zweiten Link. Kasten, Eingangsschlitz (mit noch zwei zusätzlichen 
Blenden, gegen Streulicht, der Gitterspiegel und der CCD.

Also die Optikseite geht eigentlich gut, der Spiegel fokussiert ziemlich 
genau in der Grösse des CCD's, du hast ja vvlt oben die Spektren auf den 
Oszibild geshen, das ist jeweils über den ganzen CCD verteilt.

Der AD9806 scheint brauchbar zu sein, doch ist die Ansteuerung damit 
sicher nicht wesentlich einfacher :-) allein weils kein DIP gehäuse 
ist...

na vllt klappts auch nur mit nem AVR..

Aber cooles Projekt. Auch ein Hobby-Astronom?

von Kupfer Michi (Gast)


Angehängte Dateien:

Lesenswert?

Der Link auf die Seite von Joachim Köppen mit seinem CD ROM Spektroskop 
ist gut.
Habs gleich mal ausprobiert...

Könnte man nicht anstatt der CCD Zeile das Ganze nicht noch einfacher 
machen in dem man mit einer festtehen Fotodiode (oder 2-3 um eine 
bessere Wellenlänge Abdeckung im UV/IR zu bekommen ) aufnimmt und dafür 
die CD dreht?

Es sind ja nur 10Grad Drehwinkel (bzw. 30Grad bei einer DVD) notwendig 
so dass eine einfacher Drehantrieb ausreicht (z.B. Magnetspule).

von I_ H. (i_h)


Lesenswert?

Die Auflösung von einem CCD dürfte halt um Größenordnungen besser sein. 
Die die's bei Pollin gibt haben auf einer Länge von ca. 2.7cm 5400 
Pixel, jeder davon 5µm breit.


@Moritz Greif

Hab schon öfter mal überlegt in die Hobbyastronomie einzusteigen, aber 
es bisher noch nicht gemacht.
Der AD9806 gibt seine Daten halt schon parallel aus, und der ADC ist 
auch schnell genug. Außerdem gibt's wählbare Verstärkung.

Wie willst du das Spektrometer eigentlich kalibrieren? Die einzelnen 
Farben auf dem CCD haben ja ihren eigenen Empfindlichkeitsverlauf. Hab 
mir schon überlegt eine Halogenlampe, bei der man das Spektrum ja 
halbwegs vorhersagen kann, zu benutzen.

von Y. T. (moritzz)


Lesenswert?

Ja, die Kalibrierung wird nochmal kniffelig. Meine Idee wäre eine 
Natrium-Dampf-Lampe, die gibts in jeder Physik-Sammlung eines 
Gymnasiums.
Die hat ja ganz bestimmte Linien, und damit kann man ja dann jedem pixel 
eine Wellenlänge zuteilen..
Vielleicht findet sich für die Pixel ein Funktion, die jeder Wellenlänge 
eine Empfindlichkeit zurordnet- damit könnte man dann das Spektrum genau 
erschliessen (aber das ist im Moment für mich noch Zukunktsmusik..)  :-)

Übrigens ich hab eben mal gemessen: Einmal ADC-Sample und dann per UART 
verschicken (38400baud) dauert mit der wenig optimierten routine hier 
aus dem AVR-Tutorial genau 30ms. bei 2048 pixeln wäre das im schlimmsten 
Fall ca. 2 minuten für einmal CCD auslesen- ... aber egal, wenn es damit 
mit der Belichtungszeit klappt, nach der Idee von Magnus Müller (Post 
sihe oben), kann man später immer noch optimieren...

von I_ H. (i_h)


Lesenswert?

Die Wellenlänge ist glaub ich weniger das Problem, bei Ebay gibt's 
günstig verschiedenfarbige Laser mit angegebener Wellenlänge.

Die Amplitude wird aber nochmal kniffelig. Die einzelnen Farben haben ja 
abhängig von der Wellenlänge unterschiedliche Empfindlichkeiten.

von Y. T. (moritzz)


Lesenswert?

Ey, das mit der Belichtungszeit klappt nicht.
Es kommen keine Daten an..
Hier der essentielle Code, sollte eigentlich selbsterklärend sein:
1
go:
2
rcall sende_pulse_dummy
3
rcall init
4
rcall sende_pulse_dummy
5
rcall init
6
sbi portb, 2
7
rcall lese_echt_aus
8
cbi portb, 2
9
rcall init
10
rjmp go
11
12
init:         //das ist dieser ROG impuls
13
sbi portb, 0
14
sbi portb, 1
15
16
rcall warte
17
rcall warte
18
rcall warte
19
20
cbi portb, 0
21
22
rcall warte
23
24
sbi portb, 0
25
26
rcall warte
27
ret
28
29
start_trigger:      //das ist nur für die software am pc
30
ldi zeichen, '9'
31
rcall transmit
32
ldi zeichen, '9'
33
rcall transmit
34
ldi zeichen, '9'
35
rcall transmit
36
ldi zeichen, '9'
37
rcall transmit
38
ldi zeichen, '9'
39
rcall transmit
40
ldi zeichen, 13
41
rcall transmit
42
ldi zeichen, 10
43
rcall transmit
44
ret
45
46
47
LESE_echt_aus:           //liest doppelt so viel aus wie nötig, 
48
rcall start_trigger      //aber das ging praktischer
49
                         //dann ist die High-zeit genausolang wie die 
50
                         //low-Zeit, jedes "messe_und_sende" dauert 30ms  
51
clr lowb
52
ldi highb, 8
53
ldi hilfr, 34
54
55
pulse:
56
sbi portb, 1
57
rcall messe_und_sende
58
cbi portb, 1
59
rcall messe_und_sende
60
61
dec lowb
62
brne pulse
63
64
dec highb
65
brne pulse
66
67
ldi highb, 1
68
ldi lowb, 1
69
70
dec hilfr
71
brne pulse
72
73
ret
74
75
76
sende_pulse_dummy:  //sende schnell ca 2100 pulse , bestimmt belichtungszeit
77
clr lowb
78
ldi highb, 8
79
ldi hilfr, 34
80
81
pulse_dummy:
82
sbi portb, 1
83
rcall kurz    //warte 16 Zyclen
84
cbi portb, 1
85
rcall kurz    //warte 16 Zyclen
86
87
dec lowb
88
brne pulse_dummy
89
90
dec highb
91
brne pulse_dummy
92
93
ldi highb, 1
94
ldi lowb, 1
95
96
dec hilfr
97
brne pulse_dummy
98
99
ret

von Magnus Müller (Gast)


Lesenswert?

@Moritz:

Sorry, aber sooooo selbsterklärend ist dein Codefragment nicht. Kein 
Schwein weiß, an welchem Portpin du welchen Pin des CCDs angeschlossen 
hast.

Ausserdem sind 30ms für 1 Sample mehr als zu viel Zeit. Das muss 
schneller gehen. Ich kann mir auch nicht vorstellen, dass das CCD die 
Ladungen über einen Zeitraum von 2 Minuten halbwegs unverfälscht halten 
kann.

Aus deinem Code geht auch nicht hervor, wie lange die einzelnen 
Warteschleifen verzögern. Wie hoch ist die Baudrate des USARTs? Wie hoch 
ist der ADC getaktet? Wie sieht deine Funktion "messe und sende" aus? 
(usw... usw...)

Gruß,
Magnetus

von Y. T. (moritzz)


Lesenswert?

jahh ich dachte, so ungefähr müsste es klar sein, aber ok:

-16MHZ Quarz
-"kurz" dauert 16 zyclen
-"warte" dauert 500 zyclen
-ADC hat Vorteiler 128 heisst 125kHz
-messe_und_sende ist praktisch die erste Funktion aus dem AVR-Tutorial 
"ADC"
 (256Messwerte mitteln, per klartext an den PC, dauert natürlich immens 
lang...)
-Baudrate 38400


Aber deine Anmerkung mag stimmen: "Ich kann mir auch nicht vorstellen, 
dass das CCD die
Ladungen über einen Zeitraum von 2 Minuten halbwegs unverfälscht halten
kann." Das ist wahr. Ich hab den Chip wunderbar auslesen können, am PC 
schön innem kleinen Delphi-Programm die Kurve gesehen, aber da war 
leider kein Spektrum, was ich vorher (mit schneller Freq) am Oszi top 
gesehen habe.

Ich mach das jetzt so:
- jedes zweite Pixel wird ausgelesen, der ADC ist ja schnell, OHNE 
Mittelung, braucht kein Mensch, auch nur als 8 bit wert. Dieser wird 
dann im SRAM gespeichert. NACH 1000 EINTRÄGEN lese ich alle aus und 
sende sie an den PC. Hoffe das geht.

Wenn nicht, möchte ich einen schnellen externen ADC verwenden, hab hier 
gerade den ADC0803 bekommen.

Gruss,
Moritz

von Magnus Müller (Gast)


Lesenswert?

Moritz Greif wrote:
> -messe_und_sende ist praktisch die erste Funktion aus dem AVR-Tutorial
> "ADC"
>  (256Messwerte mitteln, per klartext an den PC, dauert natürlich immens
> lang...)

256 Werte mitteln... wozu denn?

> -Baudrate 38400

Na ja... 38400 Baud heißt 3840 Bytes/Sekunde. Bei ~2000 Messwerten a 
8Bits also ca. 0,52 Sekunden nur für die Übertragung. Aber das sollte 
nicht sooo kritisch sein...

> kann." Das ist wahr. Ich hab den Chip wunderbar auslesen können, am PC
> schön innem kleinen Delphi-Programm die Kurve gesehen, aber da war
> leider kein Spektrum, was ich vorher (mit schneller Freq) am Oszi top
> gesehen habe.

Du kannst ja zur Sicherheit mal während der Wandlung den Ausgang des 
CCDs mit dem Oszi messen.

> Ich mach das jetzt so:
> - jedes zweite Pixel wird ausgelesen, der ADC ist ja schnell, OHNE
> Mittelung, braucht kein Mensch, auch nur als 8 bit wert. Dieser wird

Richtig so. Das braucht hier wirklich kein Mensch.

Gruß,
Magnetus

von Y. T. (moritzz)


Angehängte Dateien:

Lesenswert?

ok, also ich hab nun eine fast-life anzeige des spektrums. Nur stimmt 
das timing irgendwie überhaupt net, ich vermute mal dass der Chip 
übersteuert..

Ich wüsste gern, wie schnell ein ADC seine Samples macht, wenn er mit 
125kHz läuft. Preisfrage: Wie lange dauert dieses Codestückchen:
1
sample_adc:
2
    sbi     ADCSRA, ADSC       
3
wait_adc:
4
    sbic    ADCSRA, ADSC       
5
    rjmp    wait_adc
6
7
    in      adlow, ADCL        
8
    in      adc_wert, ADCH

Kann das unterschiedlich lange brauchen, z.B. je nach Spannung/frequenz, 
o.ä. ?

von 3371 (Gast)


Lesenswert?

Das Timing eines codes kann man mit dem Simulator testen. Der AVRStudio4 
Simulator kann diese Hardware.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Der ADC selbst braucht 13 ADC Takte (also 13 Takte von 125kHz)

von 3372 (Gast)


Lesenswert?

Einen [Dioden-]Laser als Wellenlaengenreferenz zu nehmen ist suboptimal. 
Denn ein Diodenlaser kann irgendeine Wellenlaenge haben. Die laeuft mit 
der Termperatur auch weg. Wie genau soll so eine Kalibrierung denn sein 
?

Ja, es geht auch ohne Zeilenarray, indem man das Gitter dreht. Solche 
Geraete sind auch auf dem Markt. Dann wird eine Messung serialisiert. 
Fuer Astroanwendungen, wo man eh nicht genug Licht hat scheint mir das 
nicht die passende Idee zu sein. Fuer ein Spektrometer scheint mir der 
genannte Sensor auch nicht passend zu sein, denn ein dynamischer Bereich 
von 360:1 ist eher mager. Die Pixel sind auch etwas klein, was die 
Ladung betrifft. Ein Pixel einer passenden CCD kann mindeststens 30'000 
Elektronen halten und sollte ein Rauschen von einigen wenigen Elektronen 
haben. Diese dann auch zu messen ist dann nicht so trivial.

von Y. T. (moritzz)


Lesenswert?

ok, das sind 104µs..
zu lang...

ich werde den ADC0803LCN ausprobieren, der soll mit 1Mhz takten, das 
wären bei 20 Takten 20µs - und man kann den sogar noch bis 3 Mhz 
hochtakten..

von Benedikt K. (benedikt)


Lesenswert?

Ich würde beim AVR bleiben. Dieser hat den Vorteil, dass man das Signal 
AC Koppeln kann, und durch Umschalten der Pins auf Ausgang den 
Referenzwert speichern kann. Somit hat man den Offset hardwaremäßig 
beseitigt. Ein AVR schafft auch etwa 30-50kS/s mit etwas über 8bit 
Auflösung.

von I_ H. (i_h)


Lesenswert?

Der ADC0803 ist laut Datenblatt nur für 13ksps spezifiziert.

@3372

Nach der groben Kalibrierung kann man das Ding ja in die Sonne halten 
und die Spektrallinien raussuchen. Das hat dann auch gleich den Vorteil, 
dass man über den gesamten empfindlichen Bereich kalibrieren kann, falls 
es zB. nichtlineare Verzerrungen gibt.

Das Problem der geringen Empfindlichkeit könnte man ja umgehen, indem 
man mehrmals mit unterschiedlichen Zeiten belichtet. 1mal so, dass die 
hellen Pixel stimmen, dann so, dass die mittelhellen gerade noch nicht 
übersteuern, und dann so, dass die langsamen gerade noch nicht 
übersteuern. Über die Belichtungszeit kann man das dann zurückrechnen.


Bei dem CCD das es von Pollin gibt, ist im Datenblatt übrigens angegeben 
wie sich die Ladung mit der Zeit abbaut. Wenn man das Timing aber 
konstant hält, könnte man das sicherlich wegkalibrieren.

von 3372 (Gast)


Lesenswert?

Das Problem mit der Ueberbelichtung ist, dass die Ladung in die 
benachbarten Zellen abfliesst, ausser es gibt einen Blooming pin, der 
die Ladungs sammelt. Und auch Chipflaeche braucht. Flaechige CCDs haben 
teilweise Blooming, bein Zeilen hab ichs noch nicht gesehen.
...in die benachbarten Zellen abfliesst ... bedeutet, die Linie wird 
immer breiter.

von I_ H. (i_h)


Lesenswert?

Müsste man mal ausprobieren. Zur Not ist die Auflösung nahe heller 
Linien dann halt nicht ganz so gut, aber die wird ja nun nicht gerade 
die nächsten 100 Pixel überstrahlen.
Wenn man es schafft den Bereich 300nm..1000nm auf das CCD abzubilden, 
hat man bei den Pollin CCDs theoretisch (bei einwandfreier Fokusierung) 
eine Auflösung von 0.129nm - braucht man nicht wirklich.


Die Ausleseproblematik könnte man auch so lösen: Man belichtet, und 
liest immer nur ein paar Pixel aus. Die restlichen kann man dann sehr 
schnell durchshiften.

von Benedikt K. (benedikt)


Lesenswert?

Oder man macht es über interleaving: Man liest z.B. nur jedes 8. Pixel 
aus. Ich würde mal sagen für >90% alles Messungen reicht das.
Sollte man mehr Auflösung benötigen, misst man halt mehrmals und liest 
dann immer versetzt nur jedes 8. Pixel aus. So hat man die volle 
Auflösung auf Kosten der Messdauer. Lässt man den ADC z.B. mit 48kHz 
laufen und liest nur jedes 8. Pixel aus, so dauert ein Auslesen etwa 
14ms. Die Auflösung liegt dann bei etwa 1nm und die effektive 
Auslesegeschwindigkeit bei 384kPixel/s.

von Y. T. (moritzz)


Lesenswert?

Jep das war so in etwa auch mein Ansatz, ich habs jetzt mal so gelöst, 
dass ich jedes zweite pixel ausgelesen habe( hat net befriedigend 
geklappt). Natürlich kann man das noch nach oben ziehen, und jedes 
8.Pixel auslesen. Teste ich morgen mal.

Nur was ich mich frage, was das Datenblatt auch nicht hergibt, kann man 
denn die Pulse-Zeiten beim Auslesen verändern??

Also kann man praktisch jeden 8. Pulse durch den Ausleseprozess 
strechen, und danach die nächsten 7 Pulse wieder schnell machen? Wenn 
das ginge wären viele Probleme gelöst!  (z.B. kann man eben die ersten 
20 Pixel auslesen, dann 2080 Pulse durchrattern, dann Pixel 21-40 
auslesen, usw...
oder eben jedes 8.Pixel und dann versetzt im nächsten Durchgang...

Warum ich stutzig bin, was die Zeiten angeht: im Datenblatt steht was 
von

clock pulse duty soll zwischen 40 und 60 % liegen und wird berechnet 
aus :
100 × low_zeit / (low_zeit + high_zeit)

Heisst das, das zwar die Low- und die zugehörige High-Zeit gleich sein 
müssen (halt eben ~ungefähr gleich), aber die einzelnen Perioden 
unterschiedliche Low/High-Timings haben dürften...?


Was die Auflösung angeht:  einigermassen reproduzierbare, kalibrierte 
Messeregbnisse mit 10nm Auflösung wär ja schon super. Wenn das dann noch 
einigermassen Live ging, umso cooler.

Übrigens das ist das zentrale Code-Stückchen mit dem ich immerhin ca. 
alle 0,2 s ein Spektrum auf den PC bekomme, was am Oszi genauso 
aussieht, leider dauert das Auslesen viel zu lange, die Werte werden 
völlig verfälscht und es kommt eigentlioch nur murks raus, Screenshot 
dazu in einem frühreren post.
1
go:
2
rcall init                //sende ROG-Impuls
3
rcall sende_pulse_dummy   //"lese" ganz schnell aus (halt 2100 Pulse )
4
rcall init
5
rcall sende_pulse_dummy
6
rcall init
7
rcall sende_pulse_dummy
8
9
rcall init
10
rcall lese_echt_aus  //lese jedes zweite pixel aus, und save im SRAM
11
12
rcall init
13
rcall sende_pulse_dummy
14
rjmp go

von 3372 (Gast)


Lesenswert?

Falls die Uebertragung etwas zu lange dauert, gibt es noch USB-UART 
chips, die bringen bis 1MByte/s, mit puffern inklusive. Fuer nur 4Euro 
das stueck

von 3372 (Gast)


Lesenswert?

Sorry, 1 MBit/s. Ist aber immer noch genug.

von Y. T. (moritzz)


Lesenswert?

von FTDI? kenn ich, werde ich mir sowiso einige besorgen, dann fertig 
auf nem Platinschen fürn zehner. Gibts ja uch bei ebay...

von I_ H. (i_h)


Lesenswert?

Hab mir mal so'n Spektroskop von der CD Seite nachgebaut, die Dinger 
funktionieren erstaunlich gut, auch bei relativ dunklen Lichtquellen 
(Straßenlaterne ggü).
Unterschied zwischen einer Osram 9W 6000K ESL und einer Megaman 11W 
6500K Vollspektrum war auch schön zu sehen (wobei die Osram scheinbar 
auch 4 Leuchstoffe hat), CCFLs haben auch 'n lustiges Spektrum (das vom 
Monitor war auch gut zu sehen).

Warte aber immernoch auf die CCDs.

von Y. T. (moritzz)


Lesenswert?

ja cool.
Optisch beobachten kann ich auch mit meinem Schuhkarton echt viel. Aber 
um halt echt ein genaues Spektrum dann zu haben, braucht  man halt schon 
den Chip.
Ich räum jetzt erstmal mein zimmer auf, und danach gibts wieder eine 
grosse Programmier-Attacke, ich will endlich diesen Chip bändigen!

von I_ H. (i_h)


Lesenswert?

Pollin hat meine CCDs heut losgeschickt. Hab grad mal in's Tageslicht 
gehalten, hab sogar die Hβ und die beiden dickeren Mg Linien erkannt.

von Y. T. (moritzz)


Angehängte Dateien:

Lesenswert?

Ok, ich habs. Voll geil.

Es war richtig: Man darf die Pulse-Zeiten verändern, muss nur high und 
low time gleich lassen pro Periode.

Anbei das Energiesparlampen-Spektrum. Irgendwas stimmt noch mit den 
countern nicht, aber ansonsten sehr cool. Ich übertrage (theoretisch) 
525 Pixel, jedes 4 pixel. ich lichte ungefähr 300-800 nm auf den Chip, 
heisst ich hab ca. 1 nm Auflösung im besten Falle.

Die Aktualisierung ist jetzt bei ca. 0,2 s, geht flott.

Ich verbesser nun mal das Delphi-Proggi, und lös das 
Counter-Problemchen.

von Y. T. (moritzz)


Lesenswert?

- bitte mit dem ersten vergleichen: 
http://www.moritz-greif.de/energiesparlampe.jpg ....

(bei dem hier ist sogar der linke Peak überbelichtet, deswegen hat der 
so eine unterbrechung.)

von Y. T. (moritzz)


Lesenswert?

Sooo. Langsam nimmt die Sache ein Gesicht an. Alle 0,2 s etwa gibts ein 
frisches Spektrum auf den Monitor, jetzt auch ohne Fehler links und 
rechts (siehe oben in den ersten Versuchen)

Die Sache mit den Countern ist gelöst, ich übertrage jetzt jedes 4. 
Pixel an den PC, alle anderen Pixel werden schnell übergangen (ungefähr 
2 µs/Periode). (Die Pixel werden erst im SRAm zwischengespeichert)

Es werden also 512 Pixel gemessen. Da der Gitterspiegel das Spektrum auf 
den vollen Chip auffächert, hab ich eine (rechnerische) Auflösung, von 
1 Pixel / nm Wellenlänge.

Das Gerät heisst nun "Diligent Spectrum V1.0" ... :-)

Bilder und Spektren auf: 
http://www.moritz-greif.de/diligent_spectrum/

Morgen versuche ich mal, das rauschen des ADC's etwas zu verringern 
(Gibts da Alternativen zum Mittelungsverfahren?), und dann gibts für das 
Gerät eine schöne Holzbox, und natürlich eine gelötete Platine, schön in 
der Box integriert.

Dann will ich das Ding mal kalibieren, um jedem Pixel zumindest mal ne 
ungefähre Wellenlänge zuzuweisen.
Dann will ich die Werte Excel-tauglich machen, oder ein Algorithmus 
schreiben, um zwei Kurven voneinander abzuziehen - Stichwort 
Transmissionskurve eines Filters ermitteln.

Gruss,
Moritz

von I_ H. (i_h)


Lesenswert?

Schaut gut aus. Kannst das Ding ja morgen mal in's Tageslicht halten. Je 
nachdem welche Linien noch erkennbar sind, kannst du die Auflösung 
ermitteln und gleichzeitig die Wellenlänge kalibrieren.

Begrenzt wird die Sache sicherlich durch die Blende. Je breiter die ist, 
desto breiter auch der Bereich auf dem CCD auf den eine bestimmte 
Wellenlänge abgebildet wird.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Interessantes Projekt. Mach doch daraus einen Artikel für den 
Wettbewerb:
Beitrag "Ankündigung: Mikrocontroller.net Artikelwettbewerb"

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Hab's spaßeshalber mal mit der Digitalkamera probiert. Hätte nicht 
gedacht, dass das mit dem Autofokus so gut klappt (musste das Ding aber 
auch auf Dia-Adapter stellen), zu sehen ist eine 9W Energiesparleuchte.

2 Linien haben nicht draufgepasst (gibt noch eine blau/uv und eine 
rot/infrarot), konnte die Kamera dazu nicht gut genug positionieren. Die 
Farbwiedergabe ist erstaunlich schlecht... der breite blaue Bereich geht 
eigentlich in's cyan, und die grün/orang/roten linien vor der dicken 
roten sehe ich allesamt als orange, bei der ersten noch richtiges 
orange, bei der letzten orange-rot.

So'n Spektrum bekommt heut übrigens Farbwidergabeindex 80..89.

@Moritz

Deine Aufnahme von der ESL passt eigentlich auch ganz gut dazu. Der 
Höcker links müsste rot sein, der Anstieg danach die vielen dunklen 
roten, dann der Höcker in der mitte die beiden grünen und der kleine 
Höcker rechts der breite blaue Bereich.

Je höher die Auflösung sein soll, desto schmaler muss der Spalt sein.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Hab nochmal an der Auflösung gearbeitet. Jetzt sieht man die im Bild 
grün/orangene Doppellinie viel besser aufgelößt (die real beide orange 
erscheinen).
Vor den beiden grünen gibt's übrigens noch eine etwas schwachere grüne, 
sieht man oben. Durch die kurze Belichtungszeit sieht man's hier nicht.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Und so sieht eine grüne CCFL aus.

Eine Infrarotröhre hab ich leider nicht da, und auf UV reagiert der CCD 
der Kamera auch nicht besser als das Auge (eher noch schlechter).

von I_ H. (i_h)


Lesenswert?

Meine CCDs sind heut angekommen, bin grad beim programmieren. Das CCD 
unterstützt 2 Auslesemodi, einmal "bit clamp mode", einmal "line clamp 
mode". Das Datenblatt sagt leider nicht was das nun genau bedeutet - 
liest zufällig jemand mit, der das weis?
Der Unterschied ist, das beim bit clamp mode neben der reset gate clock 
beim Auslesen jedes Pixels auch die Reset feed-through level clamp clock 
getaktet wird. Beim line clamp mode wird die Leitung einmal vor 
Auslesebegin auf 0 gezogen, und bleibt dann während des Auslesens 
dauerhaft auf 1.
Der CCD ist ein UPD8872 von NEC.

von Y. T. (moritzz)


Lesenswert?

Also ich denke der Line clamp mode ist der richtige. Ausserdem hast du 
da weniger zum ansteuern. Ich habe eine ähnliche Auslese-Reihenfolge 
programmiert. Wahrscheinlich wird beim setzen der Leitung da die ganze 
Linie des CCD's in das Schieberegister geladen.

von Benedikt K. (benedikt)


Lesenswert?

Ich habe mir das Datenblatt von diesem CCD jetzt nicht angeschaut, aber 
bei anderen CCDs ist es so, dass kurz vor dem eigentlichen Pixelwert ein 
Referenzwert ausgegeben wird, und die gemessene Helligkeit der Differenz 
zwischen diesem Wert und dem ausgegeben Pixelwert entspricht. So werden 
Offsetfehler automatisch behoben. Ich koppel daher die Signale über 
Kondensatoren an die ADC Pins, und stelle die Pins während des 
Referenzwerts kurz auf Ausgang, um die Kondensatoren auf die 
Referenzspannung zu laden. Anschließend werden die Pins wieder auf 
Eingang geschaltet und die Spannungen vom ADC gemessen. Somit ist der am 
Pin anliegende Spannunsgwert kleiner, und man kann so die ADC Auflösung 
besser ausnutzen. Viele mit 12V betriebenen CCDs liefern nämlich eine 
Spannung irgendwo um die 5-7V, was zuviel für einen 5V ADC ist.

von I_ H. (i_h)


Lesenswert?

Dem Datenblatt (gibt's zB. auf datasheetcatalog.net) nach wird der 
Referenzwert in beiden Modi ausgegeben.
Wenn im bit clamp mode wirklich vor jeder Ausgabe neu belichtet wird, 
wäre das ja genau das was wir brauchen. Dann hat man viel mehr Zeit um 
jeden Pixel auszulesen, weil sich die Zeile im Zeilenpuffer nicht 
abbaut.

Hab's jetzt übrigens zum Laufen bekommen (im bit clamp mode), konnte 
auf'm Oszi die Spannungen beobachten. Nu geht die Sache an den ADC.

von Benedikt K. (benedikt)


Lesenswert?

> Wenn im bit clamp mode wirklich vor jeder Ausgabe neu belichtet wird,

Was meinst du vor jeder Ausgabe ? Jedem Pixel ?

Belichtet wird immer zwischen 2 TG Impulsen.

Ich habe mir das Datenblatt mal angesehen. Ich bin mir nicht absolut 
sicher, aber ich denke ich weiß was das CLB Signal macht. Und zwar genau 
das was ich zuvor geschrieben habe: Der letzte Pixel wird mit RB am 
Ausgang gelöscht und mit CLB auf einen definierten Schwarzwert gesetzt. 
Für ein stabiles Signal sollte man dies besser bei jedem Pixel erzeugen. 
Ich bin mir nicht sicher, ob  bei der Line Version nur einmalig der Wert 
am Anfang ausgegeben wird, oder ob intern irgendwo der Wert nur 1x pro 
Zeile gesampled wird. Wenn es letzeres ist, dann wäre der Bit Modus 
besser, vor allem wenn die Auslesgeschwindigkeit niedrig ist, damit 
während dieser Zeit kein Offsetfehler entsteht.
Da der begrenzende Faktor eigentlich der ADC und das Wegschaffen der 
Daten ist, dürfte genug Rechenleistung da sein, um auch diesen einen 
zusätzlichen Impuls zu erzeugen.

von I_ H. (i_h)


Lesenswert?

Aber wenn du dir das Timing-Diagramm dazu anguckst wird doch in beiden 
Modi Vos ausgegeben, und zwar nach der steigenden Flanke auf RB (mit 
etwas Verzögerungszeit). Oder kommt der Vos Wert ohne CLB aus einem 
Puffer?

PS wie ich grad sehe hat das Ding sogar 10800 Pixel, für jede Farbe 
5400mal 2 übereinander.

von I_ H. (i_h)


Lesenswert?

Nu klappts soweit am AVR. Scheint, dass das CCD sehr empfindlich auf 
Übersteuern reagiert. Die Ausgangsspannung geht dann auf 0V zurück, und 
es dauert dann im dunkeln ein paar Sekunden bis wieder normale Werte 
rauskommen (mehr als einen Auslesezyklus).

von I_ H. (i_h)


Lesenswert?

Das Übersteuern macht nach wie vor Probleme, hab's jetzt aber geschafft 
eine komplette Zeile auszulesen, die Werte sind soweit auch stimmig.

Irgendwie funktioniert das mit der Belichtungszeit aber nicht richtig. 
Es ist völlig egal wie lang ich TG oben halte, es kommen immer exakt die 
selben Werte raus (meine Testwerte haben sich teilweise um Faktor 100 
unterschieden).
Die Zeit die RB und CLB auf low sind, hat aber einen sehr deutlichen 
Einfluss. Je länger, desto empfindlicher wird die Sache.

Wenn ich das CCD das erste mal nach einer Pause anspreche ist es 
übersteuert, dann dauert's ein paar Sekunden und die Daten stimmen.

von Benedikt K. (benedikt)


Lesenswert?

I_ H. wrote:
> Aber wenn du dir das Timing-Diagramm dazu anguckst wird doch in beiden
> Modi Vos ausgegeben, und zwar nach der steigenden Flanke auf RB (mit
> etwas Verzögerungszeit). Oder kommt der Vos Wert ohne CLB aus einem
> Puffer?

Ich muss zugeben, bei diesem CCD ist das Datenblatt etwas dumm, aber in 
anderen Datenblättern und hier ist es beschrieben:
http://www.necel.com/en/faq/f_ccd.html#1502

I_ H. wrote:
> Irgendwie funktioniert das mit der Belichtungszeit aber nicht richtig.
> Es ist völlig egal wie lang ich TG oben halte, es kommen immer exakt die
> selben Werte raus (meine Testwerte haben sich teilweise um Faktor 100
> unterschieden).

Du machst das ja auch falsch:
Die Belichtungszeit ist zwischen 2 TG Impulsen, also TG kurz auf auf 
high (zwischen 5 und 50µs), danach wieder auf Low, alles auslesen und 
dann TG wieder auf high. Wenn TG länger auf high bleibt, dann ist das 
ein undefinierter Zustand (laut Datenblatt). Vermutlich wird dann direkt 
in das Schieberegister belichtet.

von I_ H. (i_h)


Lesenswert?

Ahh... jetzt ergibt das für mich einen Sinn. Dann haben sich die Werte 
also dadurch verändert, dass ich mit längeren RB bzw. CLB Pulsen länger 
zum Auslesen gebraucht hab.
Der CCD wurde dann wohl dadurch übersteuert, dass ich vergleichsweise 
lang zum Auslesen brauch. Denn so hell war's eigentlich garnicht.

Schreit eigentlich doch nach einem CPLD. Na mal sehen was ich aus dem 
AVR noch rausbekomme. Alle ADCs die ich da hab und die schnell genug 
wären, sind leider SMD.

von Benedikt K. (benedikt)


Lesenswert?

Für was brauchst du das ganze so schnell ?
Machs doch so wie weiter oben beschrieben:
Vor der Messung ein schnelles Auslesen und die Daten verwerfen, dann die 
Belichtungszeit warten und anschließend die Werte richtig Auslesen und 
an den PC schicken. Wenn dies ein paar 10ms dauert stört nicht weiter 
(abgesehen von einem minimalen Fehler). Wenn der Sensor während dem 
langsamen Auslesen überbelichtet ist das doch egal, denn diese Daten 
werden vor der nächsten Messung sowieso wieder verworfen.

von I_ H. (i_h)


Lesenswert?

Wenn der Sensor richtig überbelichtet dauert es eine ganze Weile bis da 
wieder gültige Daten rauskommen. Hab's mir mal auf'm Oszi angeguckt, 
dann geht Vos auf fast 0V runter.
Hab auch mal bei einem bestimmten Pixel die Daten angelegt und dann 
einfach 2ms gewartet. War deutlich zu sehen, wie die Spannung immer 
weiter gefallen ist. Das Diagram auf Seite 17 im Datenblatt sagt ja 
auch, dass sich die Spannung nach 5ms storage um 1V verändert. So 
interpretiere ich das zumindest.

Soweit funktioniert's jetzt aber erstmal. Das Problem ist halt auch, 
dass der Sensor ein paar Pixel mehr hat als der ILX554, sind ja immerhin 
5mal so viele. Und die wollen auch alle durchgeschoben werden.

1mal alles auslesen und verschicken dauert jetzt etwa 4..5 Sekunden. Bei 
jedem Auslesevorgang werden 54 Pixel gesampled (Vos und Vout). Wie oben 
wird gesampled, nochmal gesampled (dabei alte Daten überschrieben), und 
das dann per USART versendet. Das ganze 200mal, wobei die gesampelten 
Pixel je 1 verschoben werden.

Nu brauch ich nur noch ein Prog, das die Binärdaten interpretiert. 
Dürfte nur ein paar Minuten dauern. Die Ausgabe darf dann gnuplot 
machen.

von Benedikt K. (benedikt)


Lesenswert?

I_ H. wrote:
> 1mal alles auslesen und verschicken dauert jetzt etwa 4..5 Sekunden.

Dann bleibt wohl nur Baudrate höher drehen oder die Daten erst in ein 
SRAM schreiben und anschließend übertragen.
Ich braucht glaube ich so 100ms pro Auslesevorgang (500kBaud über 
FT232).

> Wie oben
> wird gesampled, nochmal gesampled (dabei alte Daten überschrieben), und
> das dann per USART versendet.

Wiso samplest du 2x ? Das kostet doch nur Zeit, oder verstehe ich da was 
falsch ?

von I_ H. (i_h)


Lesenswert?

Na genau so:

> Vor der Messung ein schnelles Auslesen und die Daten verwerfen, dann die
> Belichtungszeit warten und anschließend die Werte richtig Auslesen und

Ist nur schwer vorhersehbar, wie lang das Versenden per USART dauert. 
Desswegen mach ich vorher einen Auslesevorgang ohne Versenden. Ob ich 
dabei nun sample oder die Belichtungszeit anders abwarte ist doch egal. 
Das Versenden ansich dauert aber trotz 54kbaud nicht so arg lang, das 
Gewackel an den Leitungen zum CCD braucht die meiste Zeit. Daten werden 
binär versendet, dauert für alle zusammen etwa 1.1 Sekunden.

Wär aber in einer Minute umgeändert, es funktioniert so erstmal und es 
kommen brauchbare Daten raus. Dadurch, dass ich nur 54 Werte pro 
Durchlauf sample brauch ich zwar viele Durchgänge, aber die storage time 
ist dafür sehr kurz.
Die meiste Geschwindigkeit würde es bringen, wenn ich nicht jeden der 
10800 Pixel auslese. Aber im Endeffekt ist die Geschwindigkeit so schon 
ok, ich will lieber genaue Ergebnisse haben.

von I_ H. (i_h)


Lesenswert?

So schaut die Ausleseschleife im Moment aus:
1
          CCDinit();
2
  
3
          // read 200 times
4
          for(i=0;i<200;i++)
5
          {
6
            // make a dummy read 
7
            CCDreadSamp(i);
8
            
9
            // make real read
10
            CCDreadSamp(i);
11
            
12
            // send data over usart
13
            for(j=0;j<54;j++)
14
            {
15
              USARTpollSend( ((char*)ccdBuffer)[(j<<1)]);
16
              USARTpollSend( ((char*)ccdBuffer)[(j<<1)+1]);
17
            }
18
            
19
            LCDgotoXY(0, 1);
20
            LCDsendInt(i);
21
          }

CCDreadSamp(i) erzeugt die Init-Sequenz mit TG und liest alle 10800 
Pixel, dabei 54 Samples in ccdBuffer (der Rest wird nicht gesampled). i 
gibt dabei den Offset für's Interleaving an (0..199, 54*200 gibt 10800).

von Benedikt K. (benedikt)


Lesenswert?

Ah, OK. Jetzt verstehe ich wie du das machst. Das ist auch eine gute 
Lösung, die auch problemlos funktionieren sollte. Wenn du für den Dummy 
Read jetzt noch eine andere, schnellere Version ohne ADC baust, dann 
bist du noch etwas schneller. Und zwischen dem Dummy Read und dem echten 
sollte man vielleicht noch eine einstellbare Pause einbauen, um auch 
eine längere Belichtung zu erreichen. Ich musste teilweise auf ein paar 
100ms hochgehen, wenn die Lichtquelle recht schwach war.

Aber 10800 Pixel sind glaube ich ein wenig zuviel an Auflösung. Das 
würde 0,065nm Auflösung entsprechen, und dafür braucht man schon eine 
verdammt gute Optik um das auch noch sauber aufzulösen. Ich würde nur 
jeden 4. Pixel auslesen, dann liegt die Auflösung immer noch bei 0,25nm, 
das sollte reichen.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Ausleseprogramm steht. Musste noch fftw3, plplot und gnuplot 
nachinstallieren (gentoo), das kommt davon, dass im home-Verzeichnis 
alle Einstellungsdaten etc. liegen... da wechselt man auf amd64 und 
nachdem KDE installiert ist, sieht es so aus wie die alte Distri. Dafür 
merkt man dann alle Nase lang, dass hier und da noch Programme fehlen.

Die Belichtungszeit ist noch ziemlich kurz, desswegen der geringe 
Ausschlag. Die 100ms sind schonmal eine gute Referenz, da kann ich mich 
dann dran orientieren (allerdings werden bei 200 Durchgängen dann 20s 
draus :().
Das Bild stimmt soweit, hatte noch die Optik von einem alten Scanner da, 
da ist 'ne passende Linse dabei die je nach Einfallswinkel auf einen 
anderen CCD Pixel fokusiert. Der kleine Jitter da drauf kommt wohl 
davon, dass sich das Signal beim Auslesen abbaut.

Wenn's dunkler ist geht das sicher besser, da ist nicht so viel diffuses 
Licht da.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Das sieht schon besser aus. Die Belichtungszeit ist immernoch etwas 
heikel, aber ist schonmal besser geworden.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Das Mistding sträubt sich ganz schön. Irgendwie auch kein Wunder, die 
Empfindlichkeit vom ILX554 ist >100mal so hoch.

So sieht das Ergebnis unter realen Bedingungen aus (zeigt in den 
Spektrometer zum Durchgucken).

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

So sah das Ergebnis am Anfang aus.

von Ulrich (Gast)


Lesenswert?

Ich habe ein ähnliches Spktrometer (mit CD und CCD aus altem Scanner) 
aufgebaut. Bei lander Belichtungszeit (ca. 100 ms) wegen schwacher 
Lichtquellen, muss man auf Streulicht aus der Umgebung achten.
Ein bleibendes Problem ist aber noch die relativ starke zufällige 
Streuung an der CD. Eine CD ist halt doch kein gutes Gitter. Als ein 
extremes Beispiel gibt eine UV LED bei mir fast volles Signal auf allen 
Kanälen bis in den IR Bereich.

Zur Kalibirung der Wellenlängen solle schon eine Energiesparlampe 
reichen. Da findet man zu genügend Linien Wellenlängen angegeben.

von Y. T. (moritzz)


Lesenswert?

Also ich hab auch festgestellt, bei einem Sonnenspektrum z.B. kann man 
das Spektrometer gar nicht lichtdicht genug kriegen. Und wenn der einmal 
überbelichtet ist, brauch er auch eine ganze weile, bis der CCD wieder 
normal reagiert. Ich werde bald mal versuchen, die Belichtungszeit über 
den PC regelbar zu machen.

@ulrich:_ kennst du einen Lampentyp, bei dem man eine linie direkt 
erkennt, wo also auch das Spektrum im Internet ist?

Übrigens: ein befreundeter Physiker hat mir das geschrieben:

Der Strahl aus dem Spalt ( idealerweise 0.1 – 1 mm ) muß über eine optik 
aufgeweitet werden , so daß parallel das ganze Gitter beleuchtet wird. 
Die reflektierte Strahlung des Gitters wird dann auf das CCD focussiert 
-  je nach Wellenlange ist das ein ganz genau definierter Ort auf dem 
CCD .  ganz ohne Optik geht’s also nicht ….
Du brauchst mehr als eine Linse . Das licht muß parallel auf das Gitte 
fallen – dann wird es parallel ( für eine bestimmte Wellenlange)  das 
Gitter wieder verlassen . dann mußt Du es auf den Detektor fokussieren . 
Das Gitter wird idealerweise voll ausgeleuchtet.

Übrigens ich hab ja einen Artikel zu dem thema angefangen, will aber 
keinem irgendwas wegnehmen.Ich bastel an dem Artikel ein bisschen 
weiter, aber bevors "Konkurenz-Artikel" für den wettbewerb gibt, würd 
ich den lieber mit jemand zusammen schreiben, und dann das Multimeter 
teilen...:-)...
Also ich will kein "wer hat möglichst schnell am meisten tolles 
gebastelt, und den schöneren Spektrometer-Artikel"-Kampf. :-)

von Benedikt K. (benedikt)


Lesenswert?

Moritz Greif wrote:
> kennst du einen Lampentyp, bei dem man eine linie direkt
> erkennt, wo also auch das Spektrum im Internet ist?

z.B. Natriumdampflampe oder auch eine UVC Lampe um EPROMs zu löschen, 
oder noch viele andere Gasentladungslampen die ohne viel Gasgemisch 
auskommen.

> Du brauchst mehr als eine Linse . Das licht muß parallel auf das Gitte
> fallen – dann wird es parallel ( für eine bestimmte Wellenlange)  das
> Gitter wieder verlassen . dann mußt Du es auf den Detektor fokussieren .
> Das Gitter wird idealerweise voll ausgeleuchtet.

Genau das ist das Problem das ich auch habe. Ich hab seit geschätzt 1-2 
Jahren ein CCD inkl Ansteuerung und PC Software rumliegen. Ebenso ein 
Gitter. Nur an der Optik mangelt es bei mir. Die sollte nämlich schon 
einigermaßen hochwertig sein, um eine hohe Auflösung zu erreichen. 
Angeblich soll ein Hohlspiegel sogar besser sein als eine Linse um die 
Strahlen parallel zu machen.

von Ulrich (Gast)


Lesenswert?

Das mit dem Focussieren ist klar. Bei mir ist das eine Linse, die erst 
das Licht vom Spalt ungefähr parallel macht und dann zurückgestreute 
Licht etwas höher auf den CCD lenkt.  CCD und Spalt sind dabei etwa 
gleich weit von der Line (und Gitter) entfernt.
Die Spektren der Energiepsarlampen sind eigentlich fast alle gleich. Ich 
hatte die Position der Linien im Wikipedia gefunden. Allerdings hat sich 
der Artikel mittlerweilen deutlich verändert.

Das Spektrometer ist bei mit in einem etwas Schuhschaltel großen 
Holzkasten, der innen im wesentlichen Schwarz ist. Bei der großen 
Empfindlichkeit ist auch ein 6 mm Sperrholz nicht mehr Lichtdicht!

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Die Strahlen kann man auch annährend parallel machen, indem man die 
Entfernung zwischen CD und Spalt sehr groß macht.

Es geht auch mit einer einzigen Linse (sonst würden die 
Durchguckspektrometer nicht funktionieren, im Auge gibt's auch nur eine 
einzige Linse). Die muss dann zwischen CCD und CD liegen, und 
idealerweise hat der Spalt den Durchmesser 0.
Im Anhang hab ich das Ding aus dem Scanner (also CCD+Sammellinse in 
Abschirmgehäuse auf die Platine geschraubt, die Abmessungen sind so, 
dass parallele Strahlen auf dem CCD exakt scharf werden) mal auf den 
Spalt gerichtet. Der Abfall ist schon ziemlich scharf geworden.

Ich hab bei mir grad Probleme mit der Mechanik, also das CCD und die CD 
genau zu positionieren.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Mist, das war's falsche Bild... hier das richtige.

von Ulrich (Gast)


Lesenswert?

Wenn man nur den großen Abstand nimmt um das Licht annähernd parallel zu 
machen, verschenkt man recht viel von der Intensität. Das ist dann so 
ähnlich wie Fotos mit der Lochkamera, das geht, aber langsam.

Es geht auch ohne Linse, mit einem gebogenem Gitter. Aber dadurch wird 
die beschaffung des Gitters bestimmt nicht leichter. Für kommerzielle, 
kompakte Spektrometer wird das aber zum Teil so gemacht. Im Prinzip sind 
Linsen ohnehin weniger geeigent als Hohlspiegel, wegen der 
Wellenlängenabhängigen Brechung und Refelexionen an den Oberflächen.

von Y. T. (moritzz)


Lesenswert?

Also ich habe eben mal einen ADC0803 angesteuert. Das Oszi sagt, eine 
ADC-Messugn vom Start bis der Wert im Register ist, braucht 20µs.

Im Gegensatz zu den beim AVR (16Mhz) ermittelten 104 µs recht schnell!

Damit kann ich ja dann bei gleichem Verhalten des ILX554 5 Mal so viele 
Pixel auslesen, heisst ich könnte damit den vollen chip auslesen 
(2048px), wenn nicht das SRAM es begrenzen würde.

von Kupfer Michi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
hier mal ein Beispiel für die "zu Fuss" Methode ohne CCD.

Hab einfach das CD Gitter auf einen Motor geklebt und das Spektrum mit 
einer Fotodiode (SFH203P) mit meinem ADC Logger aufgenommen. Das Signal 
ist invertiert.

Die Photodiode schwächelt etwas im Blaubereich, aber das könnte man ja 
mit weiteren Dioden ausgleichen.

von Y. T. (moritzz)


Lesenswert?

Das ist ja cool. Hast du die CD auf einen Schrittmotor aufgeklebt?
Welchen Controller benutzt du für den ADC-Logger?
Prinzipiell hat man bestimmt viel weniger Probleme als mit einem CCD 
(Vor allem Timing-Probleme). Wie viel Grad hast du den Motor immer 
verdreht für ein messpunkt?

von I_ H. (i_h)


Lesenswert?

Mir ist gestern aus völlig unerklärlichen Gründen das CCD abgeraucht. 
Von jetzt auf gleich hat's nur noch Mist ausgegeben, und kurze Zeit 
später flossen 160mA und auf einer Seite wurde es bedenklich warm :(.

Hab zum Glück noch eins da gehabt. Mit einer Photodiode könnte man einen 
Doppelspalt probieren. Also Spalt, Licht fällt da durch auf die CD 
Oberfläche. In dem Bereich wo reflektiert wird noch einen Spalt, durch 
den das reflektierte Licht auf die Photodiode fällt. Dadurch "guckt die 
Diode in eine bestimmte Richtung".

von Kupfer Michi (Gast)


Lesenswert?

>Hast du die CD auf einen Schrittmotor aufgeklebt?

Neh neh, alles viel einfacher. Hab den CD Streifen mit Tesafilm auf ein 
kleines PC Lüfterchen geklebt, das mit reduzierter Spannung lamsam vor 
sich hin eiert.

Hab noch nichtmal eine Lichtschranke zur Indexpunkterkennung ... sollte 
ja auch nur ein Schnellschußhäck sein, um das Prinzip auszuprobieren.

>Welchen Controller benutzt du für den ADC-Logger?

Eigengestrickte Übungsaufgabe von mir: AVR M16 dessen interner 10Bit ADC 
in ein externes 128KB SRAM streamed.
Davor ein 4 Kanal OpAmp Vorverstärker mit schaltbarer verstärkung.
Das ganze wird dan per USB am PC angezeigt/gesteuert.

Für die Aufnahme hab ich einfach 1.4sec aufgezeichnet und dann 
reingezoomed.

>Prinzipiell hat man bestimmt viel weniger Probleme als mit einem CCD

Kommt drauf an, habs noch nicht durchgerechnet aber...

- Meine Diode hat eine Fläche von 1x1mm, der μPD8872 des Pollin CCD hat 
48dots/mm - um die selbe theoretische Auflössung zu erziehlen müsste man 
also 48mal soweit entfernt sein.

- wie es mit der Lichtempfindlichkeit der Dioden im Vergleich zum CCD 
aussieht bin ich aus den Angaben im DB noch nicht schlau geworden

- man braucht eine sehr gute Motor Lagerung sonst hat man jitter

- ebenfalls jitter bei Drehzahl/Indexpunkterkennung.

>In dem Bereich wo reflektiert wird noch einen Spalt, durch
>den das reflektierte Licht auf die Photodiode fällt.
>Dadurch "guckt die Diode in eine bestimmte Richtung".

Ja das ist bei mir noch ein Problem, die Diode hat einen Öffnungswinkel 
von 75°, da müsste noch ein Spalt/Tubus davor.

von Y. T. (moritzz)


Lesenswert?

Trotzdem ist das Prinzip ganz interssant.

Welchen externen SRAM-Chip hast du verwendet? Ich bin schon lange auf 
der Suche nach sowas!

von I_ H. (i_h)


Lesenswert?

Kannst du kiloweise von 486er Mainboards runterkratzen. Aber bitte nicht 
von den wertvollen Exemplaren ;)

von Kupfer Michi (Gast)


Lesenswert?

>Welchen externen SRAM-Chip hast du verwendet?

Ich hab meine auch aus dem E-Schrott. Aber z.B. Reichelt hat auch 
ettliche 50-70ns SRAMS, sogar 512KB im DIL.
Die Geschwindigkeit ist unkritische, da sowieso der interne ADC der 
Flaschenhals ist.

Die Addressgenerierung erfolgt extern mit einem Zählerbaustein der vom 
M16 per toggle getaktet wird, da ich nur seq. Lesen/Schreiben brauche, 
das gleich für die Kontrollsignale.

Aufnehmen kann ich entweder im Blockmodus in den SRAM mit nachfolgendem 
Verschicken an den PC oder im Streamingmodus von bis zu 4 Kanälen mit 
einer Abtastfreq. von max. 50-200Hz mit Livechart Anzeige am PC, aber 
hier ist der Engpass eher die Grafik Update Geschwindigkeit des PC.

Für solche Spielerein wie mit der Photodiode ist so ein Logger trotz 
seiner Limitierungen ganz nützlich.
Ich wollte schon lange eine grössere Version mit einem externen 40MSps 
ADC bauen, bin aber noch nicht dazu gekommen.

von I_ H. (i_h)


Lesenswert?

Nachdem mir der 2. CCD auch aus unerklärlichen Gründen abgeraucht ist 
(lag's vielleicht an den 1.68kOhm Last an den 3 Ausgängen?), hab ich das 
Thema erstmal beiseite gelegt.

Bei Ebay gibt's allerdings sehr günstig Webcams, die Dinger gibt's 
inzwischen auch mit mehreren Megapixeln für wenig Geld (10..20€). Werd's 
mal damit probieren. Da ist die Optik dann auch gleich integriert, und 
das Auslesen ist auch kein Problem.
Wie man an den Digicambildern sieht, können da recht brauchbare 
Ergebnisse rauskommen (und ohne Autofokus geht das noch schärfer). Ist 
die Webcam fix positioniert, könnte man das auch kalibrieren, lange 
Belichtungszeiten geht indem man viele Bilder übereinander legt.
In Echtzeit geht das Einstellen und Positionieren auch viel besser.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Ich war bei den billigen Hongkong-Webcams ja auf vieles vorbereitet, hab 
extra geschaut, dass bei der Auflösung physikalisch dabei steht... aber 
das rot, grün und blau extra gezählt werden war mir neu.

Naja... kann man nix machen, das Stativ was bei war, ist ganz brauchbar. 
Von den bekannten Herstellern gibt's welche die wirklich >>1MPixel 
haben, mal schauen ob ich mir sowas besorge.

Ein echter Vorteil ist, dass man die Belichtungszeit per Software 
einstellen kann. Das mitgelieferte "Programm" kann aber Standbilder nur 
aufnehmen, wenn man auf'm Knopf auf der Webcam drückt (unter Linux 
geht's auch so, aber da kann ich die Belichtungszeit nicht einstellen).

Man könnte an den Bildern noch so einiges rumrechnen. Hab 'n Linuxprog 
gefunden, das einstellbar viele Bilder übereinander legt, so bekommt man 
das Rauschen fast vollständig weg.

Hab mal eine Belichtungsreihe gemacht, weil ich an die Kamera musste 
liegen die Bilder nicht ganz übereinander. Man könnte in Software nun 
eine richtige Belichtungsreihe machen, und vll sogar die Farbsäume der 
überbelichteten Bereiche wegrechnen.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Nummero 2

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Und das letzte. Die grüne Doppelline sieht man sehr gut. Aber bei 300k 
Bildpunkten nutzt das nicht viel, die Auflösung ist einfach grottig.

Ansonsten könnte das mit einer Webcam mit hoher Auflösung ganz gut 
funktionieren, wenn man wirklich an alle Parameter (va. Belichtungszeit 
und Weißabgleich) rankommt. Mit einer Belichtungsreihe ist zumindest die 
dynamische Auflösung ok.

von Jorge (Gast)


Lesenswert?

>Mir ist gestern aus völlig unerklärlichen Gründen das CCD abgeraucht.

Zerstörung durch elektrostatische Ladungen. Auf das Thema wird im 
Datenblatt extra hingewiesen.

Ich habe momentan keine Lösung dafür - vielleicht eine Art Faradaykäfig.

von Jorge (Gast)


Lesenswert?

ELECTROSTATIC BREAKDOWN
CCD image sensor is protected against static electricity, but 
destruction due to static electricity is sometimes
detected. Before handling be sure to take the following protective 
measures.
1. Ground the tools such as soldering iron, radio cutting pliers of or 
pincer.
2. Install a conductive mat or on the floor or working table to prevent 
the generation of static electricity.
3. Either handle bare handed or use non-chargeable gloves, clothes or 
material.
4. Ionized air is recommended for discharge when handling CCD image 
sensor.
5. For the shipment of mounted substrates, use box treated for 
prevention of static charges.
6. Anyone who is handling CCD image sensors, mounting them on PCBs or 
testing or inspecting PCBs on
which CCD image sensors have been mounted must wear anti-static bands 
such as wrist straps and ankle
straps which are grounded via a series resistance connection of about 1 
MΩ.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Das merkwürdige ist ja, dass es anfangs funktioniert hat. Hab mit'm 
Multimeter nachgemessen wieviel Strom es zieht, anfangs waren's 32mA. 
Nach ein paar Minuten ging's auf 160mA hoch und das Ding ist gut warm 
geworden. Auf dem Ausgangssignal war anfangs noch eine Frequenz 
aufmoduliert (vll 20Hz oder so, aber kein Netzbrummen).

Auf'm Steckbrett hatte ich mit dem Ding auch lange keine Probleme. Dann 
hab ich den 1. CCD auf Lochraster gelötet - vll 1 Minute 30mA, dann 160. 
Verdrahtung 10mal gecheckt, alls ok.
2. CCD auf Lochraster gelötet, vor'm Anschließen alles 10mal gecheckt - 
ok. Eine Minute ok, dann 160mA.


Bei Egay gibt's für 20€ Digitalkameras mit 12mpix. Leider werden die 
einen zu kleinen CCD haben, und man kann per Software sicher nicht alles 
steuern.
Hab's gerade nochmal mit meiner inzwischen etwas angegrauten Nikon 
Coolpix 4300 mit Stativ probiert, ist eigentlich super geworden. Ist nur 
ein Bild aus einer Belichtungsreihe.
Aber um das Ding dann wirklich kalibieren zu können, darf sich die 
Kamera halt nicht mehr bewegen. Und eigentlich wollte ich mit der Nikon 
auch noch 'n paar andere Bilder machen.
Außerdem funktioniert der Autofokus nur dann gut, wenn ein paar kräftige 
Linien vorhanden sind.

Man könnte vielleicht bei fest eingestelltem Weißableich über die RGB 
Werte kalibrieren (Wellenlänge). Die Empfindlichkeit der einzelnen 
Farben für die einzelnen Wellenlängen bleibt ja konstant.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Ok, also alles andere als 'ne ordentliche Digicam macht keinen Sinn, 
wenn man ordentliche Auflösung haben will. Hab's mit etwas schmalerem 
Spalt + Zoom nochmal probiert. Das grau im rechten Teil ist die 
Reflektion der Kamera an der CD, anordnung war nicht ganz optimal.

Weiß zufällig jemand, ob's eine Kamera gibt die man vollständig über USB 
steuern kann? Ach ja, billig sollte sie natürlich auch sein ;-)

Ich hab auch mal Tageslicht probiert, man erkennt einige Spektrallinien.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Ich hab mal ein bisschen an dem letzten Bild rumgerechnet. Ein grobes 
einmessen hat für die beiden gut sichtbaren Linien rechts von dem 
breiten grünen Balken 574.8nm und 576.96nm ergeben. Die Auflösung in dem 
Bild beträgt etwa 127.56pm/pixel.

Nach etwas Recherche lag ich beim ersten Ausmessen wohl um 2.2nm absolut 
daneben. Für die blaue ganz links hatte ich den absoluten Wert 436nm, 
für die rote ganz rechts hatte ich keinen exakten Wert, nur ~610nm.

Nach http://www.free-form.ch/tools/speclid.html kann die Sache 
eigentlich nur so aussehen:

1. schmale rechts vom grünen Balken: Hg 577.0nm
fast nicht sichtbar rechts daneben: K/Cu: 578.2nm
gut sichtbar rechts: Hg 579nm
schlecht sichtbar rechts: K 580.2nm

Mit dem richtigen Offset für Hg 577.0nm sehen die Werte so aus 
(Tabelle/Messung)

577.0nm/577.0nm
578.2nm/578.28nm <-0.08nm sind nicht messbar
579nm/579.17nm <- ~1 pixel vermessen
580.2nm/580.44nm <- ~2 pixel vermessen

Gemessen hab ich jeweils über Entfernung zwischen 577nm und zu messender 
Linie, bei der letzten waren das 27 Pixel.
Die breite der 577nm Linie hab ich mit 765pm bzw. 6 Pixeln ermitteln.


Ich glaub damit ist die Sache schon sehr genau geworden. Mit einem 
schmaleren Spalt könnte man die Linienbreite auch noch drücken, bei 
meinem Spektrometer bin ich an die Grenze der machbaren Spaltbreite 
gestoßen, sprich der muss weiter von der CD weg.


Ach ja, die 3 Linien im blauen sind eine optische Täuschung. Wenn ich 
ihn auf blau fokusieren lasse, kommt nur eine Linie raus. Linsen brechen 
ja Wellenlängenabhängig. Das ist in einer Kamera zwar bis zu einem 
gewissen Grad kompensiert, aber scheinbar nicht vollständig.





PS interessiert das eigentlich noch jemanden?

von Benedikt K. (benedikt)


Lesenswert?

I_ H. wrote:

> PS interessiert das eigentlich noch jemanden?

Auf jedenfall!
Ich hätte nie gedacht, dass man mit einer CD so genau messen kann.
Allerdings würde ich eher den Ansatz mit dem CCD weiterverfolgen, denn 
das lässt sich besser kalibrieren und automatisieren.

von I_ H. (i_h)


Lesenswert?

Hab mir bei Ebay grad eine m$ webcam geschossen (NX-6000), das Ding ist 
mit 2MPix Video und 7.2MPix Standbild angegeben. Im Standbild sollen 
3200x2380 möglich sein (mit Interpolation), also wird es effektiv wohl 
die hälfte sein - reicht auch.

Die Optik am CCD selber zu machen halte ich inzwischen für nahezu 
unmöglich. Die Auflösung wär zwar bombastisch, aber nutzt ja nix wenn 
nur Pixelbrei rauskommt.
Die Webcam könnte man fest im Spektrometer installieren, und dann alles 
per Software steuern. Die einfache Optik in dem Ding ist vll auch 
weniger anfällig für verschiedene Wellenlängen, bei einer einzigen Linse 
kommt dann nur eine konstante Verschiebung raus, die man wegrechnen 
kann.
Vielleicht liegt es auch an meinem Aufbau, blau muss nämlich einen etwas 
kürzeren Weg zurücklegen als rot.


Na mal schauen. Hätte aber auch nicht gedacht, dass mit der Kamera so 
viel geht. Werd mir nachher wohl mal ein neues Spektrometer bauen, das 
dann deutlich länger ist.

von I_ H. (i_h)


Lesenswert?

Hab übrigens grad festgestellt, dass ich schon über das, was ich noch 
sehen kann, hinaus bin. Die Linie bei 578.2nm kann ich nicht mehr sehen 
(nur erahnen weil ich weis, dass sie da ist), die bei 582.2nm ist auch 
sehr schwach.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Bin auf 102pm/pixel runtergekommen, aber da macht der Autofokus 
Probleme. Die Linien werden dann so dunkel, dass er sich nicht mehr 
scharf stellen kann.

Auf einem anderen Bild hatte ich Linienbreiten von 500pm, und da müsste 
noch ein bisschen was gehen (vll 300..400). Insgesammt scheint das neue 
Spektrometer also zu funktionieren.

Viel mehr macht dann aber glaub ich auch keinen Sinn mehr. Von der 
relativen Genauigkeit her dürften sehr gute Laborspektrometer auch nicht 
viel besser sein, nur bei denen sind die Werte ordentlich kalibriert.


Im Anhang ist das alte Spektrometer zu sehen (bevor jetzt jemand denkt 
ich sei pervers weil ich entkoffeinierten Cappuchino trinke - das ist 
Ersatzdroge für die ganzen koffeinhaltigen Sachen).
Links unten ist die einstellbare Blende, rechts das Guckloch. Wenn man 
da gerade reinguckt, schaut man senkrecht auf die CD, die plan an der 
Rückwand klebt. Hat den Vorteil, dass man sich langwiriges Ausrichten 
sparen kann, dafür sind Reflektionen mit der Kamera problematisch.

Das neue ist etwa 2.5mal so lang.


EDIT: 309pm Linienbreite :)

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

So, fertig für heute. Hab mal versucht das Zeugs zu analysieren. Die 
Linien wo kein ? dabei steht sind eigentlich recht eindeutig gewesen, da 
waren die Abweichungen auch sehr klein.

Eisen dürfte auch bei sein, scheinbar absorbiert das auch ein paar 
Wellenlängen. Steht auf der Seite leider nicht bei was das für Linien 
sind.
Das Helium passt an die Stelle wo ich es markiert hab, da es aber nur 2 
theoretisch sichtbare Linien gibt, wovon eine in den blauen Nebel liegt, 
bin ich mir nicht ganz sicher.

Morgen nehm ich vielleicht mal das Spektrum einer HQL Lampe auf (hab 
so'n lustiges Ding da). Tageslicht würde sich jetzt auch mal anbieten.

von Kupfer Michi (Gast)


Lesenswert?

Beeindruckend...

Wenn du dein Spektrometer nicht mehr brauchst, kannst du es ja deiner 
alten Schule schenken.
Kommt dort im Physik Untericht bestimmt gut an und würde den Schülern 
zeigen mit welch einfachen Mittel man heutzutage Wissenschaft betreiben 
kann.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Hab mir mal die HQL Lampe vorgenommen. Schade, dass die Kamera kein UV 
abbildet, das Ding macht nämlich extrem viel. Normales Papier (das bei 
UV Bestrahlung blau fluoresziert) erscheint unter dem Licht lila, Sachen 
die nicht fluoreszieren erscheinen gelb.

Muss mir bei Gelegenheit mal ein Programm schreiben, das mir die 
Auswertung abnimmt. Auf der CDROM Spektroskop Seite sind noch ein paar 
mehr Linien für Gasentladungen angegeben 
(http://astro.u-strasbg.fr/~koppen/discharge/index.html).

Die Werte ohne was dahinter sind die gemessenen, die mit einem Element 
dahinter dazu passende Linien. Die doppelt unterstrichenen hab ich zum 
kalibrieren benutzt, bei den dicken Linien ist's nicht soo genau 
geworden (die breiten Linien kommen durch die hohe Temperatur im 
Brenner).

Bei dem Fe bin ich mir nicht ganz sicher, da passen allerdings so viele 
Linien. YVO4:Eu ist der Leuchtstoff auf dem äußeren Kolben, hab dazu ein 
Spektrum in einem guten PDF gefunden 
(https://www.fh-muenster.de/fb1/downloads/personal/Lichttechnik-Hochdruckentladungslampen.pdf).
Die Elektroden sind bei dem Ding aus Wolfram, leider hab ich dazu kein 
Spektrum gefunden.

Ach ja, das ganze ist zum Schluss *2 skaliert, daher stimmt der pm/pix 
Wert nicht mehr.

EDIT: Das wo gelb YVO4:Eu dran steht sind vermutlich doch Hg Linien. Die 
linke auf jeden Fall, die rechte vermutlich auch.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Der erste Teil vom Auswertungsprog ist fertig. Man kann ihm 2 beliebige 
Punket mit zugehöriger Wellenlänge geben (müssen nichtmal die gleiche 
Höhe haben) und er legt ein beliebiges anderes Spektrum daneben.
Außerdem wird die nichtlineare Verzerrung der DVD mit einbezogen, die 
Auflösung in nm/pixel ist nämlich wellenlängenabhängig.

Im Bild sind die Hg Linien dargestellt, und nachdem die 
Nichtlinearitäten mit einberechnet sind, passt es nun haargenau, auch 
bei den weniger intensiven Linien die sich auch im Spektrum finden (muss 
man dann aufzoomen, wollt nur nicht wieder so'n 4k Pixel Klopper 
einstellen).

An einigen Stellen lassen sich auch Linien erahnen die im Hg Spektrum 
vorhanden sind, exakt an der richtigen Position (zB. rechts neben dick 
blau). Da einige Hg Linien sehr breit sind, ist deren Intensität 
entsprechend niedrig.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Ich hab inzwischen mal was zusammengezimmert, das die Krümmung der 
Linien ausmisst und dann alle Pixel im Bild der gleichen Wellenlänge 
aufaddiert.

Dabei hat sich ein netter Nebeneffekt von der Farbkamera gezeigt. Die 
Pixel auf dem CCD sind ja alle gleich, nur sitzt ein Farbfilter drüber. 
Der ist aber auch nicht perfekt, und bei sehr stark belichteten 
Bereichen läuft die Sache in's weiß, weil genug Licht durch den Filter 
durchkommt.

Dadurch sieht man auch in den total überbelichteten Bereichen anhand der 
anderen Farben sehr gut wo der peak ist. Im Bild ist rgb der Kamera und 
lila sind die Spitzen die Hg liefern würde.

von I_ H. (i_h)


Lesenswert?

Seh grad, man sieht sogar die Hg-Linien kurz nach 400nm im blauen (mit'm 
Auge sieht man die helle der 3 problemlos). Einfallswinkel ist noch 
nicht ganz kalibriert, steht im moment auf 75°, daher die kleinen 
Abweichungen im blauen.

von I_ H. (i_h)


Lesenswert?

Probiere gerade eine neue Quelle für CCDs aus, hab bei egay grad 4 alte 
Barcodescanner für 2€ ersteigert. Die CCDs da drinnen haben 2048 Pixel 
und die Optik um einen Barcode aus 50cm Entfernung zu lesen ist auch 
schon drinnen. Klingt also vielversprechend.

von I_ H. (i_h)


Lesenswert?

Hab nun endlich die Barcodescanner hier. Da drinnen sitzen Toshiba 
TCD1205D, nach allem was ich im Datenblatt so gelesen hab, sind die 
Dinger sehr gut geeignet.
Die Photozellen sind deutlich größer (beim NEC 5x5µm, bei dem hier 
14x200µm), die Empfindlichkeit ist höher (160mal so hoch), das Ding hat 
einen eingebauten Shutter (Belichtungszeit ist also nicht von der 
Auslesezeit abhängig), und die spektrale Empfindlichkeit reicht von etwa 
200nm bis 1000nm (das Diagram hört bei 400nm und 70% Empfindlichkeit 
auf). Außerdem ist schon eine vollständige Optik dabei.

Die Sache ist auch so gebaut, dass man den CCD nicht ausbauen braucht. 
Wäre so ohne weiteres auch nicht möglich, da Quarzglasfenster und 
Keramikgehäuse, splittert verdammt schnell.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Na bitte. No NEC no cry :)

Die Sache hat noch einige Kinderkrankheiten, beim 1. Auslesen sind 
regelmäßige Fehler drinnen (beim kontinuierlichen Auslesen nicht) und 
scharf ist die Sache auch noch nicht. Außerdem sitzt der CCD mit Optik 
am Durchguckspektrometer.

Das Bild ist invertiert, der Einbruch kurz vor 1500 ist der grüne Peak 
der Leutstoffröhre. Bei 1100 müsste der 430nm sein, bei 1650 der dicke 
rote.

Die Belichtungszeit ist noch recht moderat. Laut Datenblatt geht noch 
deutlich mehr bevor der Schwarzwert ansteigt, von der Helligkeit her 
passt das also. Der grüne Peak ist übrigens übersteuert.

von I_ H. (i_h)


Lesenswert?

Na lecker, das wird'n Spaß. Das Ding ist leider kurzsichtig, scheinbar 
kann gerade dieser Barcodeleser nicht auf 50cm auslesen grmpf.
Mit brauchbarem Zoom (die Linse kann man zwischen 3 Positionen 
verschieben) liegt die scharfe Entfernung bei etwa 7cm, so weit muss 
dann auch der optische Weg zum Schlitz sein.
Ansich dürfte das kein Problem werden, aber es wird dann sehr kniffelig 
einen schmalen Schlitz zu bekommen. Je schmaler, desto besser die 
mögliche Auflösung.

Ansonsten ist die Optik ganz brauchbar, hab Linien mit wenigen Pixeln 
breite gehabt. Ein bisschen weitwinklig, aber das ist auch kein Problem, 
kommt die CD eben direkt vor die Linse.
Vielleicht findet sich auf Ebay eine Schlitzmaske, hab sowas schonmal 
gesehen.

Btw. interessiert das hier überhaupt noch jemanden?

von Kupfer Michi (Gast)


Lesenswert?

>Btw. interessiert das hier überhaupt noch jemanden?

Na, lass nicht gleich den Kopf hängen. Auch wenn es hier etwas ruhiger 
zugeht wie in dem n+1.ten LED Blinker Thread, so gibt es sicher doch den 
ein oder anderen der an deinen Experimenten interessiert ist.

Ich selbst hab leider momentan noch viel zu viel anderes vor, als dass 
ich mich jetzt an den Bau eines Spektrometer machen könnte, werd aber 
wenn es soweit ist sicher über die vielen Tips hier froh sein - von 
daher schon jetzt ein Danke.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Nach langem Probieren hab ich jetzt endlich die DVD so fest bekommen, 
dass es klappt. Das Bild ist wieder die Leuchtstoffröhre. Der kleine 
Höcker links dürfte 360nm haben, den sehe ich nicht, aber Quecksilber 
leuchtet da ganz gut. Der große Ausschlag ist grün, der ganz rechts 
liegt im Infrarot.

Auflösung ist noch grottenschlecht, weil der Schlitz etwa 5mm breit ist.


Hab ein kleines DVD Stück per Heißkleber auf die Platine vom 
Barcodeleser geklebt. Nachdem ich das mit'm Auge kalibriert hatte (so 
dass der CCD die Brechung auch sieht) hat's eigentlich wunderbar 
geklappt, hätte ich so nicht erwartet.
Der Ausschnitt ist auf der X-Achse 1:2 skaliert, also 1 Pixel auf'm Bild 
sind 2 Pixel auf'm CCD. Mehr Pixel in x geht leider nicht, der 
Öffnungswinkel beträgt etwa 45°, daher gucken 500px am Anfang und 
nochmal 500px am Ende daneben.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

So schaut die Sache mit der Kamera aus (richtig hochauflösendes 
Leuchtstoffröhrenspektrum hatte ich wohl noch nicht gepostet).

Eins kann man jetzt schon sagen, an die Auflösung kommt die CCD Methode 
ganz einfach nicht ran.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Man sollte übrigens aufpassen, dass die Rillen auf der CD parallel dem 
Spalt laufen. Zumindest in dem Bereich, den man anguckt.

Man sieht auf den Kamerabildern überall, dass die Linien oben/unten 
unscharf werden. Da laufen die Linien nicht mehr parallel, das lässt 
sich mit anderem Fokus nicht korrigieren.

Was passiert, wenn man den LinienCCD auf die falsche Stelle ausrichtet, 
dürfte klar sein... etwa 3 Stunden rumfrickelei, wieso der Mist nicht 
scharf werden will ;).


Hab die Schärfe jetzt nicht übermäßig genau eingestellt, aber sollte so 
passen. Sieht auch schon viel besser aus. Das "Rauschen" ist übrigens 
keins, die Empfindlichkeit der Pixel scheint nicht exakt gleich zu sein. 
Sieht zwischen unterschiedlichen Aufnahmen gleich aus.

So kann sich die Sache aber schonmal sehen lassen. Der größte Peak ist 
grün (links blau, rechts rot), an der hellsten Stelle übersteuert (10x 
Op im AVR, nicht CCD).


Als nächstes werd ich wohl mal die dimmbare Halogenlampe ranziehen. Dann 
kann ich über das Spektrum die Lichtfarbe zurückrechnen und mir anzeigen 
lassen... auch eine Alternative zum hingucken. Außerdem kann ich dann 
mal die Empfindlichkeit kalibrieren.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Das Ding funktioniert im Infrarotbereich wirklich sehr gut. Auf'm Bild 
ist die Halogenlampe recht dunkel.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Und hier ist sie auf voller Helligkeit. Man kann sehen, wie sich die 
Intensität in Richtung blau verschiebt.

Was die Wellen da zu suchen haben weis ich nicht. Peaks sind immer auf 
den selben Wellenlängen. Jetzt da ich weis wonach ich suchen muss, hab 
ich die Wellen auch im Durchguckspektrometer gefunden. Witzige Sache 
das.


EDIT: Ahh... das schein am Reflektor zu liegen, der macht die Wellen 
rein. Bei dem seh ich's ganz deutlich, bei der Birne selber sind sie 
nicht da.

Ganz rechts (bei 2100) sind übrigens etwa 1060nm. Da ist die CCD 
Empfindlichkeit im Vergleich zum Maximum bereits auf etwas über 5% 
gefallen.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Die Optik vom Barcodescanner ist leider ziemlich unscharf. Die Linse 
selber hat auf der Rückseite (Richtung CCD) nochmal einen Spalt, im 
Moment sind also 2 Spalten vorhanden, einmal am Eingang vom Spektrometer 
vor der DVD, und dann nach der Linse zwischen DVD und CCD.

Dementsprechend kommt natürlich recht wenig Licht an. Hatte testweise 
bei einer der Linsen mal den Spalt entfernt, aber hab es dann einfach 
nicht mehr scharf bekommen.


Immerhin steht jetzt die Kalibrierung so halbwegs (+/- 1..2nm). War 
garnicht so einfach... nachdem ich das Modell fertig hatte (5 oder 6 
Parameter) und die Messwerte nix brauchbares gebracht haben, hab ich ihn 
einfach die besten Parameter anhand bekannter Linien ausprobieren 
lassen.

Bis 1000nm geht das Ding leider nicht, bei 850 ist schluss. Liegt daran, 
dass Infrarot immer stärker gebrochen wird. Der UV Bereich ist 
theoretisch möglich, allerdings hatte ich bei 200nm schon Ausschläge... 
das wäre UV-C, das wird allerdings von der Luft absorbiert. Ich schätze 
mal ab so 300nm ist es brauchbar, hab aber auch nix zum Testen da.

Im Anhang ist eine grüne LED, die spikes sind beim Auslesen 
reingekommen, muss mal schauen wo das herkommt. Das Rauschen will ich 
noch wegrechnen.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Auch mal ganz witzig: Rot ist eine UV Led, grün die Fluoreszenz vom 
angeleuchteten Papier (war extrem dunkel, daher so verrauscht).

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Zur besseren Vergleichbarkeit der Auflösung, so schaut die ESL mit'm CCD 
Spektrometer aus. Leider kein Vergleich zur Kamera.

von Wahrlich (Gast)


Lesenswert?

Alles hoch interessant. Danke. Weiter so.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Eine effektive Rauschunterdrückung ist mir noch nicht gelungen. Ich hab 
schon versucht mit Schwarzbildern rumzurechnen, aber scheinbar ist das 
Problem nicht nur der Schwarzwert, der mit steigender Belichtungszeit 
immer weiter (und für jeden Pixel individuell) ansteigt, sondern auch 
die Empfindlichkeit jedes Pixels.

Das heist ich müsste zusätzlich noch einen Weißwert aufnehmen. Im Moment 
hab ich dazu keine Lust, dazu müsste ich den CCD nochmal aus dem 
Spektrometer rausholen. Hätte man besser vorher gemacht.

Eine Variante wäre allerdings, eine Quelle mit kontinuierlichem Spektrum 
(=Glühbirne) auszumessen und das Rauschen dann wegzurechnen. Hätte den 
Vorteil, dass da gleich auch die individuelle spektrale Empfindlichkeit 
der Pixel berücksichtigt wird, letztendlich bekommt ja jeder Pixel Licht 
mehr oder weniger einer Wellenlänge.

Ein kleines bisschen hat der Schwarzwert aber schon gebracht. Im Anhang 
ist eine Originalaufnahme von Tageslicht (etwa 400ms Belichtungszeit, 
256 ADC Abtastungen pro Pixel) ohne gegengerechnetes Schwarzbild.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Und so sieht die Sache mit gegengerechnetem Schwarzbild aus. Vor allem 
im linken Teil ist das Rauschen deutlich geringer, aber bei größeren 
Werten hat die individuelle Empfindlichkeit einen größeren Einfluss, und 
die ist noch nicht rausgerechnet.

Normalerweise sollte der Wert 0 erreichen wo kein Anteil im Spektrum 
ist, das tut es nicht wegen Streulicht.


Die Spektrale Empfindlichkeit ist übrigens noch nicht rausgerechnet, 
daher stimmt der Verlauf so noch nicht mit der echten Intensität 
überein. Bei 700nm beträgt die zB. nur noch 80% und fällt dann schnell 
ab.

Interessant ist der Knick bei etwa 760nm -> 
http://de.wikipedia.org/w/index.php?title=Bild:Atmosph%C3%A4rische_Durchl%C3%A4ssigkeit.png&filetimestamp=20080131182221
Passt relativ gut zu dem kleinen Knick den man auf diesem Bild erkennen 
kann.

Die Sache mit den Wellenlinien muss ich mir mal genauer angucken, keine 
Ahnung ob das so in ordnung ist.

von I_ H. (i_h)


Lesenswert?

Also ich kann die Barcodescanner als CCD Quelle nur empfehlen. Hab 
inzwischen noch einen 2. fertig gemacht, aber die Optik entfernt und mir 
einen Satz Linsen bei Ebay geschossen.
Ich schaff es trotz zugeklebtem Gehäuse und kürzester Belichtungszeit 
nicht, das Ding mit der Hand so abzudecken, dass der Pegel unter etwa 
20% vom Maximum fällt.
Den x10 Verstärker vom ATMega hab ich noch garnet benutzt, geschweige 
denn den x200 Verstärker, der bei dunklen Szenen auch brauchbare 
Ergebnisse liefert (was Rauschen angeht).

Schade ist nur, dass die Auflösung mit 2048pix nicht soo berauschend 
ist.


Hab mal angehängt wie die Dinger aussehen, bei dem unteren hab ich, 
nachdem das Fenster vom CCD gesplittert war (echtes Quarzglas), alles 
runtergekratzt um von hinten durchgucken zu können.
Das weiße rechts im unteren Bild ist eine Reflektion, das Licht kommt 
von vorn.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

scheint so, dass man im Nachhinein keine Bilder anhängen kann...

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Nachdem ich mich 'ne Ewigkeit daran versucht habe, die Linsenoptik 
scharf zu bekommen, hab ich die Sache mit den Linsen erstmal auf Eis 
gelegt.

Stattdessen mussten die Scannerspiegel herhalten. Der erste Versucht ist 
eigentlich garnicht schlecht geworden, ist eine grüne CCFL.

Brechen tut das Licht diesmal keine DVD, sondern eine Folie von Ebay. 
Die Anordnung ist denkbar einfach, Licht tritt durch einen Spalt ein, 
trifft nach der Brennpunktentfernung auf einen Hohlspiegel, wird 
reflektiert, trifft dann nach etwa 3/4 Brennpunktentfernung auf die 
Folie und nach der gesamten Brennpunktentfernung auf den CCD. Die Folie 
lenkt das Licht abhängig von der Wellenlänge um ein paar Grad in der 
Horizontalen aus.

Durch den einen Spiegel ergibt sich leider nur eine 1:1 Abbildung, also 
das Bild das auf den CCD projeziert wird, ist genauso groß wie das 
aufgenommene. Dadurch liegt die Grenze der Auflösung bei der 
Spaltbreite.
Ich hatte auch mal eine Signallampe auf die Weise abgebildet (ohne 
Lichtbrechung), da war der Peak etwa 5 Pixel breit (~70µm). Die Sache 
ist, bei genügend kleinem Spalt (in dem Fall war der Glühfaden wirksam), 
also recht genau.

Der Schwarzwert ist noch ziemlich hoch (etwa 66% vom Endwert, im Bild 
rausgerechnet), weil die Sache offen neben mir auf dem Tisch liegt. Die 
Lichtausbeute ist eigentlich ganz ok, lässt sich aber noch um 
Größenordnungen steigern (Licht lässt sich mit einer Linse auf den Spalt 
fokusieren).

Also alles in allem scheint das die weit bessere Methode zu sein. Die 
Folie hat außerdem den Vorteil, dass man einstellen kann, wie weit das 
Spektrum aufgefächert wird (Entfernung zwischen CCD und Folie).
Dafür muss man mehr Grips in den Spalt investieren, der muss wirklich 
klein sein.
Durch die direkte Abbildung kann man sogar ausrechnen, wie breit der 
Spalt ist. In dem Fall sind's etwa 40pixel, da einer 14µm breit ist, 
also 0.56mm.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Da könnte sogar wirklich noch was draus werden, das ist der grüne Peak 
im CCFL Spektrum. Ist aber garnet so einfach auf alle Wellenlängen 
scharf zu stellen, neben der Entfernung spielt da auch noch die Rotation 
vom CCD eine Rolle.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Na bitte... Gedult führt bekanntlich zum Erfolg. Die beiden kleinen 
Peaks links sind die beiden orangen Quecksilberlinien, das große rechts 
davon ist grün, und nochmal rechts davon blau (430nm). Dann kommt bei 
400nm nochmal blau, und bei 360nm (nicht auf'm Bild) ist nochmal eine UV 
Linie.

Die beiden Quecksilberlinien links hab ich mit dem anderen CCD 
Spektrometer nicht hinbekommen, hier sind sie nun ganz deutlich zu 
sehen.

Das Bild durch's Handspektrometer ist übrigens sehr weit oben zu sehen.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

So sieht übrigens der Aufbau aus. Das grüne Leuchten über der CCFL ist 
ein Abflussrohr, scheinbar ist das Ding nicht ganz lichtdicht. 
Normalerweise sitzt zwischen CCFL und CCD auch noch eine Trennwand, aber 
da kann ich nicht durchfotographieren...

Durch die geringe Krümmung vom Hohlspiegel ist das etwas größer 
geworden, aber was solls - es funktioniert. Nu darf ich mir überlegen, 
wie ich das fest zusammenbaue. Hab schon überlegt das einfach mit 
Heißkleber auf'm Schreibtisch festzumachen, aber das ist dann irgendwie 
doch zu unpraktisch.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Das ist etwas älter, aber ansich das selbe. Der helle Fleck links ist 
die Signallampe gegen Papier projeziert (die rote und blaue Linie ist 
auf'm Steckbrett, man erkennt auch noch die Kontaktfelder), rechts davon 
dann das Spektrum durch das transparente Gitter.

Bin übrigens von der CD weggekommen, weil die Linien nicht gerade sind. 
Da wo das Licht gebrochen wird ist das Bild ja noch nicht fokussiert, 
also das Licht von jedem Bildpunkt verteil sich über eine gewisse 
Fläche. Das wird dann problematisch wenn die Linien nicht gerade sind, 
weil dann je nach Position in eine andere Richtung abgelenkt wird, da 
kommt dann so ohne weiteres nie ein scharfes Bild raus.

von I_ H. (i_h)


Lesenswert?

Mist... der Aufbau hat eine grundsätzliche Unschärfe, weil das Licht 
nicht überall mit dem selben Winkel auf die Gitterfolie trifft (sieht 
man auch im Bild oben).

Hab das mal durchgerechnet, wenn ich nur 1/3 vom Spiegel benutze (etwa 
10°) lässt sich die Abweichung bei korrekter Ausrichtung vom Gitter auf 
etwa 1.8nm drücken, bei falscher Ausrichtung werden es auch mal >100nm.
Das erklärt, wieso das so 'ne Frickelei war, das Ding richtig 
auszurichten.

Bei 30° sind es schon 16nm, bei 5° sind's nur noch 0.4nm.

Um das vollständig zu korrigieren muss ein 2. Hohlspiegel her, nur dann 
kann man das einfallende Licht wirklich parallelisieren, durch's Gitter 
schicken, und dann auf den CCD fokussieren.

Eine Alternative ist, das Licht vorher mit einer Linse zu sammeln und 
auf den Spalt zu richten, der in einer so großen Entfernung steht, dass 
der Öffnungswinkel nach dem Spalt eben möglichst gering ist 
(Linsenbreite vs. Spaltentfernung).

Bei Ebay hab ich ein paar richtige Hohlspiegel in Aussicht, damit bau 
ich dann vll ein 3. Spektrometer. Jetzt werd ich wohl erstmal den 30° 
Hohlspiegel auf 2*15° stutzen (Plastik hat halt auch Vorteile), ist 
immernoch deutlich mehr als 5 oder 10°.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

Nochjemand hier?


So langsam kann ich verstehen, wieso Optiken für zB. Kameras so 
kompliziert sind. Das was man in der Schule bezüglich Optik gelehrt 
bekommt (bzw. das woran ich mich noch erinnern kann) ist alles Müll, 
nach dem Motto schöne heile Welt. Die Wirklichkeit ist dagegen grausam!


Plaziert man eine punktförmige Lichtquelle im Brennpunkt eines 
sphärischen Hohlspiegels sind die reflektierten Strahlen nicht 
parallel. Bis etwa 30° Spiegelwinkel funktioniert das mit recht geringen 
Abweichungen, aber darüber wird es immer schlimmer. Genauso gilt das 
natürlich umgekehrt für parallele einfallende Strahlen.

Und setzt man eine Lichtquelle in den Mittelpunkt vom Hohlspiegel (also 
Kreismittelpunkt, Hohlspiegel ist Ausschnitt vom Umfang) und verschiebt 
sie dann, so das nicht genau auf die Quelle zurückreflektiert wird, ist 
die Sache genauso unscharf.

Für den ersten Fall, also parallel/fokussiert bzw. umgekehrt gibt es 
Parabolspiegel. Da funktioniert das aber auch nur für einen bestimmten 
Einfallswinkel, desswegen plazieren die bei Teleskopen ihre 
Planarspiegel auch immer im Strahlengang, was ja eigentlich recht 
dämlich anmutet, weil dann weniger Licht reinkommt... so wie hier: 
http://wwwex.physik.uni-ulm.de/lehre/gk3a-2002/img470.gif


Hab mal ein Prog geschrieben, dass Spiegel- und Linsensysteme simulieren 
kann. Im Bild ist oben die Strahlenquelle, unten sollte es wieder auf 
einen Punkt fokusiert werden. Ist offensichtlich nicht so ganz der Fall.
Nu kann ich immerhin simulieren wie sich die geringsten Abweichungen 
erzielen lassen. Später kann ich dann damit auch das Beugungsgitter 
simulieren und ihn automatisiert nach der besten Anordnung suchen 
lassen.

Die Figur die da unten, wo der Fokus sein sollte, entsteht, nennt sich 
übrigens Kaustik. Und ähnliche Effekte treten auch bei Linsen auf (es 
sind mehrere), + chromatische Aberation.
Da wird auch klar, wieso in normalen Fotoapparaten 3 bis 5 Linsen 
stecken.

von I_ H. (i_h)


Angehängte Dateien:

Lesenswert?

So langsam kann sich die Sache sehen lassen (mal schauen, wann ich 
POV-Ray Konkurrenz machen kann). Auf'm Bild grün ist der Hohlspiegel, 
blau das Gitter so wie ich es da hab. Lichtquelle (600nm, 500nm und 
400nm) ist ganz oben, die Strahlen fangen etwas vor'm Fokus an, damit 
man dessen Breite (1 Pixel) genau erkennen kann.

Brechung am Gitter wird ordentlich simuliert. Eine neue Erkentnis ist 
auch schon gereift, bisher hatte ich nur die Spektralzerlegung im Bild 
oben probiert, also die, die zur Quelle hin gebrochen wird.
Die unten ist aber offensichtlich schärfer, zumindest bei der Anordnung 
hier. Dachte bisher immer, die unten wär absolut unbrauchbar.

Es macht fast den Eindruck, als könnte man die sphärische Aberation vom 
Hohlspiegel mit der Abweichung am Gitter halbwegs kompensieren. Der 
blaue Fokus unten sieht zB. verdammt gut aus, besser als der weiße.

Als nächstes muss ich mir noch einen Mechanismus ausdenken, der 
automatisch die Qualität vom Fokus bestimmt, dann kann ich ihn per Brute 
Force optimieren lassen.

von Kupfer Michi (Gast)


Lesenswert?

>So langsam kann sich die Sache sehen lassen

In der Tat, wird ja immer professioneller. Ich muss mich jedesmal, wenn 
ich deine Berichte lese, zurückhalten um nicht auch gleich damit 
anzufangen. Hab schon zuviele offene Projekte...

>sphärische Aberation vom Hohlspiegel mit der Abweichung am Gitter halbwegs
>kompensieren

Wieviel mm Fokusabweichung hast du denn über das CCD?
Die Krönung wäre natürlich wenn du diesen ganz einfach elektromechanisch 
(Magnetspule, Piezo) am CCD/Gitter oder Spiegel nachführen könntest.
Bei CD/DVD Leseköpfen wird dies ja auch so gemacht.
Eventuell must du dann mehre Teilaufnahmen machen.

Wäre es nicht sinnvoll wenn du in der Artikelsammlung einen kleinen 
Beitrag aufnimmst, der auf diesen Thread verlink?

Es wäre doch mehr als schade, wenn das hier gesammlte Wissen eines Tages 
spurlos unter den 100000 Threads verschwindet.

von Frank (Gast)


Lesenswert?

>Plaziert man eine punktförmige Lichtquelle im Brennpunkt eines
>sphärischen Hohlspiegels sind die reflektierten Strahlen nicht
>parallel. Bis etwa 30° Spiegelwinkel funktioniert das mit recht geringen
>Abweichungen, aber darüber wird es immer schlimmer. Genauso gilt das
>natürlich umgekehrt für parallele einfallende Strahlen.

Soweit ich mich an meine Optik-.Kenntnisse erinnere, war das genau der 
Grund dafür, warum man Hohlspiegel nicht aus einem Kreis- bzw. 
Kugelausschnitt, sondern einer Parabel bzw. Paraboloid macht - oder 
verwechsle ich da was?

Frank

von Magnus Müller (Gast)


Lesenswert?

Kupfer Michi wrote:
> Wäre es nicht sinnvoll wenn du in der Artikelsammlung einen kleinen
> Beitrag aufnimmst, der auf diesen Thread verlink?
>
> Es wäre doch mehr als schade, wenn das hier gesammlte Wissen eines Tages
> spurlos unter den 100000 Threads verschwindet.

Hat er doch schon gemacht...

http://www.mikrocontroller.net/articles/Digitales_PC-Spektrometer#Weitere_Bilder_und_Beispielspektren

Gruß,
Magnetus

von I_ H. (i_h)


Lesenswert?

Hat etwas gedauert, so schaut die Sache aus:

n=-1:
  fr=0.111029
  fg=0.0411198
  fb=0.0235626
n=0:
  f=0.188892
n=1:
  fr=0.396001
  fg=0.358758
  fb=0.325035

Einheiten gibt es noch nicht, das Bild stellt für x und y die 
Koordinaten 0 bis 100 dar.
fr ist der beste Fokus für rot, fg für grün und fb für blau. Bei n=0 
(das was unbeeinflusst durch's Gitter durchgeht) ist's bei allen 3 
gleich, also nur ein Wert. n=-1 ist nach unten gebrochen, n=1 nach oben.

Die Einheiten kann man vielleicht grob mit cm vergleichen, 0.2mm Fokus 
wären dann 14pixel auf dem CCD, 1.88mm schon unbrauchbare 134px.

Schön ist, dass die für n=-1 alle 3 besser sind als ohne Gitter. Nu kann 
ich ihn mal ein bisschen mit den Werten rumprobieren lassen. Es könnte 
sich aber herausstellen, dass die Fokuspunkte der verschiedenen 
Wellenlängen nicht auf einer Linie liegen... der CCD mag keine Knicke 
:(.

Eine mechanische Nachführung wollte ich eigentlich nicht reinmachen, 
wahrscheinlich muss ich dann alle Nase lang neu kalibrieren. Aber 
scheinbar lässt sich das ja so ausrichten, dass alle Wellenlängen 
gleichzeitig scharf/schärfer werden.


Den Artikel werd ich mal irgendwann etwas überarbeiten, was da steht ist 
stellenweise obsolete (der Artikel ist von moritzz). Mit Linsen wird es 
sehr schwer, nach dem Spalt würde ich nur noch Achromate einsetzen, und 
selbst da bleiben gewisse Bauchschmerzen.

Den Thread werd ich auch mal deutlicher hervorheben, jetzt gibt's ja 
nicht nur Bilder sondern auch ein bisschen Theorie.



@Frank

Jup, aber bei dem ist das dann nicht mehr so einfach. Das gilt nur, wenn 
die Lichtstrahlen auf einen bestimmten Punkt senkrecht einfallen, und 
dann liegt der Fokus mitten in der parallelen Strahlen. Also mal eben 
zur Seite ablenken wie im Bild oben geht damit auch nicht, da bräuchte 
man extra Spiegel.

von I_ H. (i_h)


Lesenswert?

Hab's geschafft 500nm auf etwa 2 Pixel zu fokussieren, die anderen waren 
mit 30px nicht soo schlecht. Allerdings liegen die Fokuspunkte tatsache 
nicht auf einer Linie.

Als nächstes werd ich aber erstmal genau ausmessen müssen, was ich da 
habe.

von Kupfer Michi (Gast)


Lesenswert?

>Eine mechanische Nachführung wollte ich eigentlich nicht reinmachen,
>wahrscheinlich muss ich dann alle Nase lang neu kalibrieren

Ich dachte da ja auch an eine Art Autofokus:
- Ablenkungsparameter durchsteppen und bei jedem Wert eine Aufnahme 
machen
- Abschnittsweise DFT des Spektrum berechnen und über die Steps hinweg 
den
Step suchen bei dem der hochfrequenten Anteile im DFT maximal wird.
- Regressionsgerade berechnen

Dies kann man entweder als Autokalibrierung per Knopfdruck bei einer 
bekannten Lichtquelle mit guter Spektrallienienverteilung machen und die 
Ablenkwerte dann abspeichern oder bei jedem Spektrum neu, denn wenn das 
Spektrum keine geigneten Spektrallinien zur Auswertung enthält ist es ja 
sowieso egal wenn das ganze nicht ganz scharf ist.

Ist natürlich ne ganze Ecke aufwendiger...

von I_ H. (i_h)


Lesenswert?

Hätte schon zweifellos Vorteile. Ich hab schon überlegt 2 CCDs 
hinzustellen, aber da ich sehr wahrscheinlich nur eine Reflektion (-1 
oder +1) scharf bekomme, würde das wohl nichts bringen.

Nur die Mechanik ist halt nicht ganz so trivial. Floppy-Schrittmotoren 
hätte ich 2 da, aber da gehört ja noch mehr dazu.


Hab jetzt endlich mal den Spiegel vermessen, 46.5cm Radius und 12.3° 
Ausschnitt. Mit einer genügend großen Auslenkung der Reflektion (also 
Entfernung des Fokuspunktes von der Quelle) ergibt sich ohne Gitter eine 
Genauigkeit von 10px. Die 0.188 oben entsprächen 134px.

Die Sache hat bei fixem Fokuspunkt einen Freiheitsgrad, den muss ich 
noch genau bestimmen (anschaulich: Im Bild oben den Spiegel nach unten 
verschieben und dann so drehen, dass der Fokuspunkt wieder stimmt).

von Kupfer Michi (Gast)


Lesenswert?

>Nur die Mechanik ist halt nicht ganz so trivial

Och, das könnte man vielleicht ganz einfach halten da du ja, wenn ich 
das richtige verstanden habe, nur wenige mm Verschiebung brauchst.

Z.B. ein oder beide Enden des CCD auf einen kleinen Lautsprecher 
(=Tauchspule) kleben, bzw. eine mechanische Übertragung herstellen.

Es kommt ja überhaupt nicht darauf an, dass du eine lineare 
Übertragungsfunktion hast, bzw. diese langzeitstabil ist.
Hauptsache der Fokusbereich wird abgedeckt, den Rest besorgt der 
Autofokusabgleich.

Statt der DFT kann man natürlich auch einfachere Verfahren anwenden um 
eine Kennzahl für die "Bildschärfe" zu extrahieren.

von I_ H. (i_h)


Lesenswert?

Das CCD muss ja auch fest sitzen, ich glaub ganz so einfach wird es dann 
doch nicht.

Was aber gehen könnte, wäre das Gitter direkt auf einem Schrittmotor zu 
montieren. Dann könnte man das frei drehen, und hätte so nicht nur die 
Möglichkeit den Einfallswinkel zu verändern, sondern könnte das Spektrum 
auch soweit auffächern, dass es nicht mehr auf den CCD passt. Je nach 
Winkel kann man sich dann aussuchen, welchen Wellenlängenbereich man 
aufnimmt, mit entsprechend besserer Auflösung.

Mit einem Gitterhohlspiegel ließe sich das Problem mit dem 
Einfallswinkel übrigens umgehen, richtig positioniert (Spalt im 
Kreismittelpunkt) fallen die Strahlen überall im selben Winkel auf die 
Oberfläche.


Übrigens hab ich grad festgestellt, dass das Ausnutzen vom oben 
angesprochenen Freiheitsgrad essentiell für das korigieren der 
sphärischen Aberation ist.
Für UV Licht hab ich einen Fokus von 0.5 Pixeln erreicht, ist die 
Entfernung von Quelle und Fokus zum Kreismittelpunkt der Linse identisch 
waren 30px das beste Ergebnis.

von I_ H. (i_h)


Lesenswert?

So schaut bisher das beste Ergebnis aus:

36.37 12.66 2.178 12.89 25.28   17.88; 1864


Die ersten 5 Werte sind die Pixelbreiten für 800, 600, 500, 400 und 
300nm, danach der durchschnitt. Nach dem Semikolon der Abstand in Pixeln 
zwischen 300nm und 800nm, in dem Fall würde also sogar noch ein keines 
bisschen mehr draufpassen.
Die Linearität der Fokuspunkte muss ich noch ausrechnen, sieht aber 
nicht schlecht aus.

Ich denke die Untergrenze für die Spaltbreite liegt bei etwa 200µm oder 
~14 Pixel.

von I_ H. (i_h)


Lesenswert?

Na was sagt man dazu... die Fokuspunkte liegen exakt auf einer Linie. 
Hätte ich nicht erwartet.

von I_ H. (i_h)


Lesenswert?

Mist... war ein Fehler im Code. Infrarot ist allgemein etwas schwierig, 
das hat immer den schlechtesten Fokus und auch die größte Abweichung. 
Wenn ich 400nm und 600nm auf 0 festsetze, hat grün 0.48mm Abweichung. 
Gleicht man das an bleibt also die Hälfte übrig.

von I_ H. (i_h)


Lesenswert?

27.26 9.345 1.352  10.5 20.35        13.76,    1915 ;

Mit einer deutlich veränderten Anordnung. Die Werte sind durch die 
1915px Breite nochmal besser. Ich muss das wirklich mal in nm umrechnen.

Scheinbar lassen sich für verschiedenste Anordnungen recht schnell recht 
gute Werte finden, vielleicht gibt es ja wirklich eine Ausrichtung bei 
der die Abweichungen zu fast 0 werden (vor allem die Fokusentfernung).
Eine interessante Kombination hatte ich bereits, da sind die Werte über 
fast alle Gitterwinkel gleich geblieben, allerdings bei >100px. 
Normalerweise überstreicht das locker Faktor 10.

von i_h (gast) (Gast)


Lesenswert?

Ich bin inzwischen mal dazu gekommen ein altes Teleobjektiv für 3€ von 
Ebay auszuprobieren. Die ersten Ergebnisse sahen sehr gut aus, Bild war 
sehr sehr hell und auch ziemlich scharf. Konnte mir das Spektrum von 
meiner Test-CCFL noch nie so gut auf'm Blatt Papier angucken, auch die 
orange Doppellinie war klar erkennbar.

von Palmenroller (Gast)


Lesenswert?

Hallo,

ich hab mir nicht alle Beiträge hier durchgelesen (sind ja irgendwie 
schon sehr viele geworden :-) )

Ich würde gern das Spektrometer nachbauen 
(http://www.mikrocontroller.net/articles/Digitales_PC-Spektrometer).
Nun wollte ich fragen, ob es irgendwie eine kompletten Schaltplan davon 
gibt.
Außerdem bin ich noch nicht so fit im Thema Mikrocontroller und deshalb 
wär ich über jede Hilfe sehr dankbar. Außerdem: Gibt es noch irgendetwas 
zu beachten bei dem Bau? Und ist er überhaupt für Anfänger geeignet?


Palmenroller

von I_ H. (i_h)


Lesenswert?

Falls es noch jemanden interessieren sollte...

Ich hab mit dem Projekt nochmal angefangen, mit einer etwas veränderten 
Optik und einem XMega32A4 mit 64kB SRAM als Unterbau (ich bin immer 
wieder begeistert von dem Ding). Das Ergebnis schlägt alles bisherige, 
sogar die Bilder mit der Kamera.

http://ih.doesntexist.org/ucnet/spec1.png - da könnte man sogar noch 
weiter reinzoomen

So sieht 'ne 6000K Energiesparleuchte aus, aufgenommen in einem 
HDR-Modus bei dem der uC das CCD mit aufsteigenden Belichtungszeiten 
belichtet und die jeweils gut verwertbaren (=hell genug, nicht zu hell) 
Pixel speichert.

Zum Vergleich, selbes Bild, statt dem Linien-CCD aber mit einer 
Spiegelreflex:

http://ih.doesntexist.org/ucnet/spec2.jpg

Die beiden Höcker bei 1500 == die grüne und orangene Linie sind gerade 
mal 2nm auseinander. Hier nochmal im Detail:

http://ih.doesntexist.org/ucnet/spec3.png

Der Peak bei etwa 1300 ist grad mal 3 Pixel breit, wobei der 3. schon 
<50% vom max. Wert liegt. Die Spiegelreflex kommt mit der Dynamik 
natürlich nicht mit.


Die Veränderungen waren eigentlich relativ einfach:

- Spalt durch eine ordentliche Konstruktion ersetzt. Hab 2 Arme von 
einem Zollstock genommen, Seite an Seite gelegt, 2 lagen Papier 
dazwischen und das dann mit Klebeband zusammengeklebt, so dass es die 
Arme zusammendrückt. Der Spalt ist 0.1mm..0.2mm breit und richtig 
gleichmäßig.

- Statt der Linse liegt jetzt ein echtes Objektiv im Strahlengang. Ist 
ein altes 70-210mm Zoom mit M42 Sockel, die CCD Aufnahmen schafft's 
sogar bei Offenblende. Leider dürfte das Ding aber das ferne UV 
schlucken, also nix mit UV-B.

- Direkt vor dem Objektiv hängt die bereits angesprochene Gitterfolie.

- Und halt der XMega mit mehr als genug SRAM.


Was noch zu tun ist:

- Die Folie wölbt sich immer ein klitze kleines bisschen. Tut sie das zu 
stark, wird das Bild verzerrt. Das will ich noch korigieren, indem ich 
das Ding auf eine Glasplatte klebe.

- Durch Streulicht gibt es noch Nullpunktfehler. Liegt daran, dass die 
Konstruktion im Moment noch offen ist, löst sich hoffentlich von selber 
wenn ich den Kasten zu mache.

von I_ H. (i_h)


Lesenswert?

Und zu guter letzt noch 'n Härtetest:

http://ih.doesntexist.org/ucnet/spec4.png

Die Neon-Glimmlampe in einer Steckdosenleiste. Das ist allerdings schon 
ein ziemlicher Grenzfall, aber man erkennt immerhin noch ziemlich viele 
Peaks.

http://www.baader-planetarium.de/dados/kundenreferenz/mueller_gross_neon_200l.jpg

So schaut das in guter Qualität aus. Die 4 großen Peaks zwischen 600 und 
625nm erkennt man recht gut, das sind die bei ~1750. Dann kommt auf 1800 
der rechts neben den 4, dann groß-klein-groß, und dann kommen die beiden 
großen Peaks die auf 640nm im anderen Bild liegen (inklusive dem einen 
Pixelfehler vom CCD).


Also eigentlich sind sie alle da wo sie sein sollten. Kann's kaum 
erwarten den Dunkelbildabzug zu implementieren, aber das Ding ist auch 
einfach zu dunkel.

von I_ H. (i_h)


Lesenswert?

Arrrr.... ich liebe es, wenn solche Sachen funktionieren.


http://ih.doesntexist.org/ucnet/spec5.png


Jetzt mit Dunkelbildabzug. Sagte ich vorhin die Glimmlampe wäre zu 
dunkel?

von blaubert (Gast)


Lesenswert?

Hat eigentlich jemand die Variante mit dem Drehschlitz und der 
Photodiode weiterverfolgt?

Falls es euch interessiert: Die Ixus Digitalkameras lassen sich mit ner 
"custom-firmware" booten, dazu gibts ja das chdk Projekt. Damit könnte 
man vielleicht einen mobilen "Spektralisator" bauen. Hat jemand ne Idee, 
wie ich ne Cd vor die Kameralinse kleben kann?

von I_ H. (i_h)


Lesenswert?

Das wird nicht gut funktionieren, hatten wir schon. Die CCD Pixel haben 
grad mal 14µm Abstand (sind aber sau empfindlich weil sie 200µm hoch 
sind), und trotzdem hab ich für die Glimmlampe schon 0.8s 
Belichtungszeit gebraucht (meine Olympus hätte in der Situation ~2min 
gebraucht).

Wenn man 'ne ähnliche Auflösung mit Fotodiode will, braucht die auch 
einen 14µm breiten Schlitz (viel Spaß beim Bauen), und dann werden 
immernoch pro Pixel 0.8s Belichtungszeit fällig.

Und zu guter letzt muss man den Schlitz auch noch auf 14µm genau 
positionieren können, um die Pixel zu treffen.


Umgekehrt könnte man zwar einen motorisierten Monochromator bauen (wiki 
sagt wie der genau funktioniert), aber da bleibt immernoch das Problem 
der in dem Fall µgrad genauen Positionierung. Und sämtliche 
Teleskopsteuerungen aus der Astronomie zeigen, dass das nicht trivial 
ist.

von I_ H. (i_h)


Lesenswert?

Kann allen, die CCDs auslesen, nur empfehlen die Timings sehr großzügig 
auszulegen!

Nachdem ich das Shutter-Gate und das Shift-Gate jetzt 10µs zusätzlich 
stehen lasse, hat sich das Rauschen auf fast 1/10 reduziert.

von Echo (Gast)


Lesenswert?

Moin Moin,

ich interessiere mich sehr für das Thema. Mir persönlich geht es um den 
Bau eines Spektrometers zur Messung der Extinktion/Fluoreszenz von 
Farbstofflösungen.

@ I_ H.

Welchen Aufbau verwendest du momentan? Immernoch einen Barcode-Scanner? 
Ich interessiere mich nämlich sehr für einen nachbau.^^ Verwendest du 
auch das Durchlicht-Gitter von Astromedia?

MfG Echo

von i_h (Gast)


Lesenswert?

Jup, der CCD ist immernoch der aus dem Barcode Scanner. Das Ding hat den 
Vorteil gegenüber Scanner-CCDs, dass es etwa Faktor 100 empfindlicher 
ist.

Der Aufbau sieht so aus:

http://ih.doesntexist.org/ucnet/s3.jpg

Inzwischen ist das alles befestigt, lichtdicht verpackt und auf 0.1nm 
genau kalibriert. Vorn am Objektiv hängt die Gitterfolie (ja, ist von 
Astromedia).

Ganz links wo das Isoband klebt ist der Spalt, aus den Schenkeln von 
'nem Zollstock (nebeneinander gelegt, Blatt Papier dazwischen, mit 
Klebeband zusammengeklebt (wichtig, das Klebeband ist leicht elastisch 
und drückt die Schenkel richtig zusammen)).


Das Gitter hat 900 Linien/mm, am liebsten hätte ich ein 50mm Objektiv, 
aber hatte nur ein 80-200mm Zoom übrig. Bei dem passt leider wirklich 
nur der sichtbare Bereich auf's CCD, hätte ganz gern noch ein bisschen 
IR und UV.

Mal schauen ob ich mir ein anderes Gitter besorge, oder ein anderes 
Objektiv.

von Steffen I. (echo)


Lesenswert?

Hmm kay,

als Spalt wollte ich ne Konstruktion aus 2 Rasierklingen nehmen, deren 
Spaltmaß wird dann mit nem Spaltmaßprüfer eingestellt (dieses Werkzeug 
mit den vielen Metallblättchen). Wegen CCD muss ich ma gucken, hab da 
noch keine Erfahrung mit. Es gäbe ja die Sensoren von Pollin oder die 
ILX von Sony zur Auswahl. Ich werde mir wahrscheinlich erstmal das 
Papp-Spektroskop von Astromedia mitbestellen um mich da einigermaßen 
reinzufinden xD. Momentan nutze ich BASCOM für kleinere Projekte mitm 
AVR, aber ich denke das kommt nicht hin mit der Geschwindigkeit des 
CCDs? Gibts zu den CCDs nich auch entsprechende Peripherie-ICs bzw 
Verstärker die den Auslesevorgang automatisch übernehmen können und mir 
nur dat Datenpaket liefern im Endeffekt?

MfG und schonmal danke für die Hinweise zu deinem Aufbau

von iswestija (Gast)


Lesenswert?

Leider sind sämtliche Code-Dateien von Moritz Greif nicht mehr online.
Schade. Oder wo kann man sie finden ?

von Echo (Gast)


Lesenswert?

Moin,

hab zwar den Code vom Moritz auch nicht direkt. Ich arbeite aber selbst 
an einer ASM-Version und könnte sie ja mal online stellen.

MfG Echo

von Y. T. (moritzz)


Angehängte Dateien:

Lesenswert?

Hi, hier ist der Assemblercode...
...und das Delphi-Tool, was ich damals geschrieben hatte, liest die 
Daten am COM port ein, und zeigt sie als Spektrum an.
Der Code hat zwar geklappt, ist natürlich aber n bissl durcheinander. 
Also ich blick da jetzt ehrlich gesagt auch nicht mehr so krass durch. 
Aber falls es fragen gibt, kann ich gerne behilflich sein. Am Besten 
isses wahrscheinlich, sich den Code (sowohl PC als auch Mikrocontr.) 
nochmal in schön selbst zu proggen, dann weiss man am Besten Bescheid 
:-)
Moritz

von photokram (Gast)


Lesenswert?

Gibt es denn neues auf dem Gebiet?

Bei Pollin gibt es z.Zt. CCD-Zeilen mit 2x5400 bzw. 2x10680 Pixel, die 
verwendenten NEC-Bausteine sind leicht anzusprechen. Als Auswerte-µC 
habe ich mir den dsPIC33FJ64MC802 ausgeguckt, der hat 16kByte RAM und 
einen ADC mit 1 Msps.

von A. Sinan B. (feza)


Lesenswert?

Hello,
Ich möchte mit einem µC einen CCD Zeilensensor auslesen. Könnt ihr mir 
bitte mit einer ausgeprobten Hardware Schaltung  aushelfen?

Ich wäre sehr dankbar.
FEZA

von ich (Gast)


Angehängte Dateien:

Lesenswert?

Linien-CCD wie im Datenblatt an den µC anhängen. Man braucht keine 
Elektronik dazwischen, wenn man den richtigen Chip hat...

von Basti (Gast)


Lesenswert?

Hallo zusammen,

bin auf das Projekt Spektrometer aufmerksam geworden und wollte gerne 
mal in dieser Richtung an den langen Wochenenden im Keller basteln. In 
der Projektbeschreibung sind die Links leider ohne Funktion, bzw. Ich 
komme auf eine Seite wo man sich einloggen muß.

Hat vieleicht jemand den letzten aktuellsten Code, der hier früher zum 
Download stand und kann diesen zumailen? Wäre schön :-)

Gruß an alle,
Basti

von LED-Matrixler (Gast)


Lesenswert?

Ein paar Posts weiter oben von deinem steht er zum Download im Forum.

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

Basti schrieb:
> bin auf das Projekt Spektrometer aufmerksam geworden und wollte gerne
> mal in dieser Richtung an den langen Wochenenden im Keller basteln. In
> der Projektbeschreibung sind die Links leider ohne Funktion, bzw. Ich
> komme auf eine Seite wo man sich einloggen muß.
>
> Hat vieleicht jemand den letzten aktuellsten Code, der hier früher zum
> Download stand und kann diesen zumailen? Wäre schön :-)


Ich habe auch mal in einem eigenem Projekt damit rumgebastelt.
Vieleicht hilft Dir ja mein Link dazu:
http://bascom-forum.de/showthread.php?4201-Spektroskopie-mit-ILX551B-2048-Pixel-Zeilensensor

Die Software ist zwar in Bascom geschrieben, ist aber für das Projekt 
schnell genug. Lässt sich auch sehr einfach in C übersetzenn, da 
eigentlich das Ganze sehr kurz und simpel ist. Den Quellcode findest Du 
beim obigen Link.

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.