Giosuchthilfe
Newbie
- Registriert
- Dez. 2024
- Beiträge
- 1
Ich habe ein DIY-Spektrometer gebaut und benötige Hilfe bei der Entwicklung einer dazu passenden Software. Obwohl ich bereits ein Grundgerüst erstellt habe, treten immer wieder Fehler auf, und es fehlen einige wichtige Funktionen. Hierbei wäre ich über Unterstützung, Ideen und gegebenenfalls eine Code-Umsetzung sehr dankbar.
Da ich selbst Chemielaborant bin und meine Kenntnisse in der Programmierung begrenzt sind, habe ich bereits detaillierte Anforderungen und ein bestehendes Grundgerüst (beschrieben unten). Ziel ist es, eine funktionierende Software zu entwickeln, die sowohl chemisch-numerische Berechnungen als auch eine benutzerfreundliche GUI beinhaltet.
Projektübersicht: Was ist das Ziel der Software?
Ich habe ein Spektrometer gebaut, das Licht durch eine Küvette leitet, es mit einem Beugungsgitter aufspaltet und eine Webcam verwendet, um die spektralen Daten aufzuzeichnen. Die Software soll:
1. Automatisch Wellenlängen kalibrieren.
2. Absorptionsspektren erstellen und diese als numerische Daten speichern.
3. Echtzeit-Chromatogramme bei einer oder mehreren spezifischen Wellenlängen darstellen.
4. Eine Benutzeroberfläche bereitstellen, die auch für chemische Experimente genutzt werden kann.
Technischer Hintergrund
Hardware:
• Kamera: Handelsübliche Webcam.
• Optische Komponenten: Beugungsgitter von Perkin-Elmer, Sammellinse, Messküvette.
• Lichtquelle: D2-Lampe oder LED.
Software-Anforderungen:
Die Software soll die Kamera initialisieren, Referenzspektren aufnehmen und kalibrieren sowie folgende Funktionen bieten:
• Echtzeit-Chromatogramme: Absorption gegen Zeit darstellen.
• Wellenlängenauswahl: Absorption bei bestimmten Wellenlängen berechnen.
• Daten speichern: CSV-Dateien mit Spektren und Chromatogrammen.
Bisheriger Fortschritt: Was habe ich schon?
Ich habe bereits eine rudimentäre GUI erstellt, die aber mehrere Probleme aufweist:
1. Die Kamera wird zwar als „initialisiert“ angezeigt, es gibt jedoch keine Garantie, dass tatsächlich Daten gelesen werden.
2. Das Referenzspektrum wird angeblich gespeichert, aber es gibt keine Möglichkeit zu überprüfen, ob dies korrekt erfolgt ist.
3. Das Echtzeit-Chromatogramm zeigt keine Daten an, und die Einzelmessungen funktionieren nicht.
4. Einige GUI-Funktionen scheinen nur optisch vorhanden zu sein, haben aber keine Implementierung.
Detaillierte Anforderungen an die Software
Hier ist eine Liste der spezifischen Anforderungen, die ich für die Software benötige:
1. Kamera-Initialisierung:
• Eine Funktion, die sicherstellt, dass die Kamera korrekt initialisiert wurde.
• Wenn die Kamera nicht funktioniert, sollte die Software eine Fehlermeldung anzeigen.
2. Referenzaufnahme:
• Eine Funktion, die ein Referenzspektrum aufnimmt und speichert (z. B. das Spektrum einer Lichtquelle ohne Probe).
• Das Referenzspektrum sollte in der GUI visualisiert werden, um seine Korrektheit zu überprüfen.
3. Spektrale Verarbeitung:
• Berechnung der Absorption A(\lambda) = -\log(I_{\text{Probe}}/I_{\text{Referenz}}) .
• Glättung und Filterung der Spektren, z. B. mit einem Savitzky-Golay-Filter.
4. Echtzeit-Chromatogramm:
• Eine Schleife, die Daten kontinuierlich aufnimmt und die Absorption bei einer spezifischen Wellenlänge berechnet.
• Die GUI sollte das Chromatogramm in Echtzeit aktualisieren.
5. Einzelmessungen:
• Eine Funktion, die auf Knopfdruck ein Spektrum aufnimmt und in einem separaten Plot darstellt.
6. Wellenlängenauswahl:
• Der Benutzer sollte in der GUI eine Wellenlänge (z. B. 254 nm oder 365 nm) eingeben können.
• Die Software sollte überprüfen, ob die eingegebene Wellenlänge im kalibrierten Bereich liegt, und bei ungültigen Eingaben eine Warnung anzeigen.
7. Daten speichern:
• Alle Spektren und Chromatogramme sollten automatisch in CSV-Dateien gespeichert werden, um später analysiert werden zu können.
Code-Struktur und Technologie
Die Software sollte modular aufgebaut sein, um Fehler einfacher beheben und Funktionen erweitern zu können. Empfohlene Technologien:
• Python mit:
• opencv: Für die Kameradatenaufnahme.
• matplotlib: Für die Visualisierung in der GUI.
• numpy: Für numerische Berechnungen.
• scipy: Für Filterung und Glättung.
• tkinter: Für die grafische Benutzeroberfläche (GUI).
• pandas: Für die Speicherung von Daten in CSV-Dateien.
Warum ich Hilfe brauche
Ich habe bereits viele Versuche unternommen, aber da ich nur begrenzt Zeit und Programmierkenntnisse habe, stoße ich immer wieder auf Probleme. Falls sich jemand mit Python-Programmierung oder Spektrometer-Software auskennt und bereit ist, mir zu helfen, wäre ich sehr dankbar. Es könnte entweder durch direkte Code-Erstellung oder durch Verbesserung meines bestehenden Grundgerüsts erfolgen.
Also grundlegend habe ich wie gesagt eine Lichtquelle die das Licht in verschiedenen Wellenlängen ähnlich wie bei einem Regenbogen durch ein glas Gefäß schiesst durch welches die enthaltenen Substanzen das Licht in verschiedenen Stellen ‚schlucken‘ zu einem Anteil und das aufgetrennte Licht was am Detektor also meiner webcam wie ein Regenbogen Spektrum als Bild erkennbar wird sollte von Pixel zu graustufen und alogrhytmen von 0-1200 nm umgerechnet werden und die intensitätsverteilungen als y Achse dargestellt werden. Nachdem man in der Software das eigene emissionspektrum der Lampe Kalibrieren kann wird das als nullwert gespeichert. Dann kann man an einer bestimmten Stelle der x Achse zb 380 nm messen und dann ein chrosmtogramm in Form von der Zeit also sobald man startet es als Zeit auf der x Achse und bei der ausgewählten Intensität der x Achse und unterscheide Echtzeit dargestellt wird.
Jede Idee, Unterstützung oder auch nur ein Ansatz, wie ich weiterkomme, würde mir enorm helfen!
Wenn du Fragen hast, was genau gemacht werden muss, lass es mich wissen, und ich erkläre es gern detaillierter. Vielen Dank für jede Unterstützung!
Da ich selbst Chemielaborant bin und meine Kenntnisse in der Programmierung begrenzt sind, habe ich bereits detaillierte Anforderungen und ein bestehendes Grundgerüst (beschrieben unten). Ziel ist es, eine funktionierende Software zu entwickeln, die sowohl chemisch-numerische Berechnungen als auch eine benutzerfreundliche GUI beinhaltet.
Projektübersicht: Was ist das Ziel der Software?
Ich habe ein Spektrometer gebaut, das Licht durch eine Küvette leitet, es mit einem Beugungsgitter aufspaltet und eine Webcam verwendet, um die spektralen Daten aufzuzeichnen. Die Software soll:
1. Automatisch Wellenlängen kalibrieren.
2. Absorptionsspektren erstellen und diese als numerische Daten speichern.
3. Echtzeit-Chromatogramme bei einer oder mehreren spezifischen Wellenlängen darstellen.
4. Eine Benutzeroberfläche bereitstellen, die auch für chemische Experimente genutzt werden kann.
Technischer Hintergrund
Hardware:
• Kamera: Handelsübliche Webcam.
• Optische Komponenten: Beugungsgitter von Perkin-Elmer, Sammellinse, Messküvette.
• Lichtquelle: D2-Lampe oder LED.
Software-Anforderungen:
Die Software soll die Kamera initialisieren, Referenzspektren aufnehmen und kalibrieren sowie folgende Funktionen bieten:
• Echtzeit-Chromatogramme: Absorption gegen Zeit darstellen.
• Wellenlängenauswahl: Absorption bei bestimmten Wellenlängen berechnen.
• Daten speichern: CSV-Dateien mit Spektren und Chromatogrammen.
Bisheriger Fortschritt: Was habe ich schon?
Ich habe bereits eine rudimentäre GUI erstellt, die aber mehrere Probleme aufweist:
1. Die Kamera wird zwar als „initialisiert“ angezeigt, es gibt jedoch keine Garantie, dass tatsächlich Daten gelesen werden.
2. Das Referenzspektrum wird angeblich gespeichert, aber es gibt keine Möglichkeit zu überprüfen, ob dies korrekt erfolgt ist.
3. Das Echtzeit-Chromatogramm zeigt keine Daten an, und die Einzelmessungen funktionieren nicht.
4. Einige GUI-Funktionen scheinen nur optisch vorhanden zu sein, haben aber keine Implementierung.
Detaillierte Anforderungen an die Software
Hier ist eine Liste der spezifischen Anforderungen, die ich für die Software benötige:
1. Kamera-Initialisierung:
• Eine Funktion, die sicherstellt, dass die Kamera korrekt initialisiert wurde.
• Wenn die Kamera nicht funktioniert, sollte die Software eine Fehlermeldung anzeigen.
2. Referenzaufnahme:
• Eine Funktion, die ein Referenzspektrum aufnimmt und speichert (z. B. das Spektrum einer Lichtquelle ohne Probe).
• Das Referenzspektrum sollte in der GUI visualisiert werden, um seine Korrektheit zu überprüfen.
3. Spektrale Verarbeitung:
• Berechnung der Absorption A(\lambda) = -\log(I_{\text{Probe}}/I_{\text{Referenz}}) .
• Glättung und Filterung der Spektren, z. B. mit einem Savitzky-Golay-Filter.
4. Echtzeit-Chromatogramm:
• Eine Schleife, die Daten kontinuierlich aufnimmt und die Absorption bei einer spezifischen Wellenlänge berechnet.
• Die GUI sollte das Chromatogramm in Echtzeit aktualisieren.
5. Einzelmessungen:
• Eine Funktion, die auf Knopfdruck ein Spektrum aufnimmt und in einem separaten Plot darstellt.
6. Wellenlängenauswahl:
• Der Benutzer sollte in der GUI eine Wellenlänge (z. B. 254 nm oder 365 nm) eingeben können.
• Die Software sollte überprüfen, ob die eingegebene Wellenlänge im kalibrierten Bereich liegt, und bei ungültigen Eingaben eine Warnung anzeigen.
7. Daten speichern:
• Alle Spektren und Chromatogramme sollten automatisch in CSV-Dateien gespeichert werden, um später analysiert werden zu können.
Code-Struktur und Technologie
Die Software sollte modular aufgebaut sein, um Fehler einfacher beheben und Funktionen erweitern zu können. Empfohlene Technologien:
• Python mit:
• opencv: Für die Kameradatenaufnahme.
• matplotlib: Für die Visualisierung in der GUI.
• numpy: Für numerische Berechnungen.
• scipy: Für Filterung und Glättung.
• tkinter: Für die grafische Benutzeroberfläche (GUI).
• pandas: Für die Speicherung von Daten in CSV-Dateien.
Warum ich Hilfe brauche
Ich habe bereits viele Versuche unternommen, aber da ich nur begrenzt Zeit und Programmierkenntnisse habe, stoße ich immer wieder auf Probleme. Falls sich jemand mit Python-Programmierung oder Spektrometer-Software auskennt und bereit ist, mir zu helfen, wäre ich sehr dankbar. Es könnte entweder durch direkte Code-Erstellung oder durch Verbesserung meines bestehenden Grundgerüsts erfolgen.
Also grundlegend habe ich wie gesagt eine Lichtquelle die das Licht in verschiedenen Wellenlängen ähnlich wie bei einem Regenbogen durch ein glas Gefäß schiesst durch welches die enthaltenen Substanzen das Licht in verschiedenen Stellen ‚schlucken‘ zu einem Anteil und das aufgetrennte Licht was am Detektor also meiner webcam wie ein Regenbogen Spektrum als Bild erkennbar wird sollte von Pixel zu graustufen und alogrhytmen von 0-1200 nm umgerechnet werden und die intensitätsverteilungen als y Achse dargestellt werden. Nachdem man in der Software das eigene emissionspektrum der Lampe Kalibrieren kann wird das als nullwert gespeichert. Dann kann man an einer bestimmten Stelle der x Achse zb 380 nm messen und dann ein chrosmtogramm in Form von der Zeit also sobald man startet es als Zeit auf der x Achse und bei der ausgewählten Intensität der x Achse und unterscheide Echtzeit dargestellt wird.
Jede Idee, Unterstützung oder auch nur ein Ansatz, wie ich weiterkomme, würde mir enorm helfen!
Wenn du Fragen hast, was genau gemacht werden muss, lass es mich wissen, und ich erkläre es gern detaillierter. Vielen Dank für jede Unterstützung!