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
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.
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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
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 | |
Gruss, moritz
Gast
#938038
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
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
Gast
#938064
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
Gast
#938074
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.
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.ä.?
Gast
#938096
> ...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.
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.
Gast
#938122
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.
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.)
Gast
#938463
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
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.
Gast
#938521
@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
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!
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.
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?
Gast
#938743
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).
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.
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...
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.
Ey, das mit der Belichtungszeit klappt nicht. Es kommen keine Daten an.. Hier der essentielle Code, sollte eigentlich selbsterklärend sein:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
Gast
#938916
@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
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
Gast
#938923
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
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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Kann das unterschiedlich lange brauchen, z.B. je nach Spannung/frequenz, o.ä. ?
Gast
#938932
Das Timing eines codes kann man mit dem Simulator testen. Der AVRStudio4 Simulator kann diese Hardware.
Der ADC selbst braucht 13 ADC Takte (also 13 Takte von 125kHz)
Gast
#939152
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.
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..
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.
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.
Gast
#939310
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.
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.
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.
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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
Gast
#939881
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
Gast
#939882
Sorry, 1 MBit/s. Ist aber immer noch genug.
von FTDI? kenn ich, werde ich mir sowiso einige besorgen, dann fertig auf nem Platinschen fürn zehner. Gibts ja uch bei ebay...
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.
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!
Pollin hat meine CCDs heut losgeschickt. Hab grad mal in's Tageslicht gehalten, hab sogar die Hβ und die beiden dickeren Mg Linien erkannt.
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.
- 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.)
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
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.
Interessantes Projekt. Mach doch daraus einen Artikel für den Wettbewerb: Beitrag "Ankündigung: Mikrocontroller.net Artikelwettbewerb"
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.
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.
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).
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.
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.
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.
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.
> 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.
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.
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).
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.
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.
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.
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.
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.
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 ?
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.
So schaut die Ausleseschleife im Moment aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
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).
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.
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.
Das sieht schon besser aus. Die Belichtungszeit ist immernoch etwas heikel, aber ist schonmal besser geworden.
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).
So sah das Ergebnis am Anfang aus.
Gast
#942924
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.
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. :-)
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.
Gast
#942958
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!
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.
Mist, das war's falsche Bild... hier das richtige.
Gast
#943080
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.
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.
Gast
#943185
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.
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?
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".
Gast
#943671
>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.
Trotzdem ist das Prinzip ganz interssant. Welchen externen SRAM-Chip hast du verwendet? Ich bin schon lange auf der Suche nach sowas!
Kannst du kiloweise von 486er Mainboards runterkratzen. Aber bitte nicht von den wertvollen Exemplaren ;)
Gast
#944098
>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.
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.
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.
Nummero 2
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.
Gast
#961107
>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.
Gast
#961111
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Ω.
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.
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.
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?
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.
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.
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.
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 :)
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.
Gast
#961543
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.
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.
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.
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.
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.
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.
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.
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.
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?
Gast
#984972
>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.
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.
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.
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.
Das Ding funktioniert im Infrarotbereich wirklich sehr gut. Auf'm Bild ist die Halogenlampe recht dunkel.
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.
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.
Auch mal ganz witzig: Rot ist eine UV Led, grün die Fluoreszenz vom angeleuchteten Papier (war extrem dunkel, daher so verrauscht).
Zur besseren Vergleichbarkeit der Auflösung, so schaut die ESL mit'm CCD Spektrometer aus. Leider kein Vergleich zur Kamera.
Gast
#990002
Alles hoch interessant. Danke. Weiter so.
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.
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.
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.
scheint so, dass man im Nachhinein keine Bilder anhängen kann...
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.
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.
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.
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.
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.
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°.
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.
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.
Gast
#1002482
>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.
Gast
#1002488
>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
Gast
#1003465
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
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.
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.
Gast
#1003868
>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...
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).
Gast
#1004107
>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.
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.
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.
Na was sagt man dazu... die Fokuspunkte liegen exakt auf einer Linie. Hätte ich nicht erwartet.
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.
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.
Gast
#1028522
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.
Gast
#1031788
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
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.
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.
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?
Gast
#1833691
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?
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.
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.
Gast
#1860596
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
Gast
#1862893
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.
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
Gast
#1897644
Leider sind sämtliche Code-Dateien von Moritz Greif nicht mehr online. Schade. Oder wo kann man sie finden ?
Gast
#1903616
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
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
Gast
#1997062
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.
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
Gast
#2219144
Linien-CCD wie im Datenblatt an den µC anhängen. Man braucht keine Elektronik dazwischen, wenn man den richtigen Chip hat...
Gast
#2907168
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
Gast
#2907192
Ein paar Posts weiter oben von deinem steht er zum Download im Forum.
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.










































