DIY Gammaspektrometer mit SiPM

Begonnen von NuclearPhoenix, 23. Februar 2022, 19:47

⏪ vorheriges - nächstes ⏩

mbtx

Intressant wäre, ob einige Linien in dem Hintergrundspektrum echt sind, insbesondere bei 500 keV. Mit einem Germaniumdetektor können sehr viele Linien detektiert werden.

http://dx.doi.org/10.1119/1.1976670

Vermutlich sind es hier eher Artefakte?

NuclearPhoenix

Nein, die einzelnen Linien bei 500 sind nur Artefakte von der kurzen Aufnahme. Wenn ich hier deutlich länger als 30 min aufnehme, dann verschwindet das auch alles.

Aber besonders um 511 herum hat man dann Probleme mit dem RP2040 ADC, siehe https://pico-adc.markomo.me/INL-DNL/#dnl und https://www.geigerzaehlerforum.de/index.php/topic,974.msg12496.html#msg12496. Das wäre normalerweise noch viel schlimmer (quasi unbrauchbar), aber ich rechne den Kanal schon automatisch raus, dann geht es. Die Linie sieht man aber trotzdem immernoch ein wenig.

Im Übrigen sind das nicht keV, sondern wie auf der Beschriftung schon angedeutet einfach nur bins. Die entsprechen hier den ADC Kanälen. Kalibriert befinden wir uns hier grob bei 60 - 150 keV.

mbtx

Danke für die Antwort, ist auch zu erwarten, dass man ohne gekühlten Germaniumdetektor keine Chance hat, diese Masse an Linien zu trennen.

NuclearPhoenix

Ist zwar schon spät, aber ich möchte das jetzt noch erledigen: Endlich ist es soweit und ich kann die neue Version des Boards vorstellen! :yahoo:  :yahoo:

Es gibt viel zu viele Verbesserungen, als das ich jetzt hier jede einzelne Änderung aufzählen kann. Ich habe auf Hackaday einen Post auf Englisch verfasst, bei dem all die Neuerungen aufgezählt werden. Diejenigen unter euch, die das besonders interessiert lade ich gerne dazu ein dort vorbeizuschauen. :)

Kurz gefasst habe ich vor allem versucht die Benutzerfreundlichkeit so viel wie möglich zu verbessern. Das bedeutet ein unnötiges Poti weniger, zum Erhöhen/Verringern der Parameter dreht man jetzt alle Potis gleichermaßen im/gegen den Uhrzeigersinn, Softwareeinstellungen wurden vereinfacht und vor allem, wie hier schon einmal erwähnt, ist der Gain fix. Alles in allem ist das PCB gleich groß geblieben, was auch daran liegt, dass ich auf 0603 Komponenten umgestiegen bin. Dadurch konnte ich auch das Layout nochmal deutlich verbessern. Das es dadurch nicht einfacher zu verlöten wird ist mir klar, aber das Layout war mir hier leider einfach wichtiger. Manche Komponenten wie die ICs und SiPM Entkopplungskondensatoren sind gleich groß geblieben.

Sie dürfen in diesem Board keine Dateianhänge sehen.

Die Energieauflösung und der Messbereich wurden auch nochmal einen Ticken verbessert im Vergleich zu den vorigen Beiträgen hier, wie man z.B. in folgendem Spektrum sehen kann:

Sie dürfen in diesem Board keine Dateianhänge sehen.

Ich habe immer noch keine gute Cs-137 Quelle, deshalb muss ich noch ein bisschen mit anderen Dingen messen für eine genaue 660 keV Auflösung... :) Im Gegensatz zur HW Version 2 ist die Auflösung jedenfalls ein großer Sprung in die richtige Richtung.
Im Anhang noch ein paar weitere Spektren die ich heute schnell gemacht habe: einmal Am-241 für den unteren Energiebereich und einmal Pechblendehaltige Glasur mit deutlichem Bi-214 Peak in der Mitte. Das sind übrigens alles 30 Minuten Spektren ohne irgendeine Abschirmung oder so, also weder Blei noch elektrisch.

Möchte man den Gain manuell wirklich mal ändern, weil es gar nicht passt oder der Energiebereich zu klein/groß ist, gibt es dafür ebenfalls eine kleine Anleitung auf GitHub. Dafür muss man lediglich drei (0603) Widerstände ändern. Ansonsten funktioniert es so out-of-the-box deutlich schneller ein gutes Signal zu bekommen und man muss nur SiPM Spannung und Diskriminatorschwelle einstellen.

Das sind mal einige der großen Neuerungen. Wie gesagt gibt es da noch viele kleine Dinge, das sprengt aber sonst den Rahmen hier. ;)

Eine kleine Enttäuschung gibt es trotzdem: Der Stromverbrauch liegt -- aus welchem Grund auch immer -- wieder bei etwa 25 mA @ 5 V und damit deutlich höher als bei meinen letzten Tests. Das wird wieder einmal am Pico mitsamt der Software liegen, muss ich mir also im Laufe der Zeit weiter ansehen.

Auf GitHub gibt es wie immer alle Schaltpläne, BOM und PCB Dateien, um das ganze selbst zu bauen. Kitspace sollte auch so bald wie möglich auf die neuen Daten anspringen. Außerdem gibts bei mir wieder fertig bestückte Boards zu kaufen.

Bin sehr gespannt auf euer Feedback, Vorschläge oder auch Fragen! :good3:

Innerhalb der nächsten paar Tage werde ich auch die Neuerungen rund um das Mini SiD vorstellen, nur so viel vorab.

NuclearPhoenix

Neue Firmware Version 3.0.1: Nur ein geringfügiges Update um die CPS Berechnung am Display besser zu machen. Ganz nach den Ideen in dem Thema habe ich einen Ringspeicher für 5 Sekunden an Werten eingebaut.

Das angezeigte Spektrum zählt unabhängig davon weiterhin bis zu einer bestimmten Anzahl an Impulsen; die Zeit dafür wird rechts oben angezeigt. Das Display aktualisiert sich auch weiterhin jede Sekunde.

NuclearPhoenix

Neue Firmware Version 3.1.0:
- Neue Konsolenfunktion "set correction <toggle>" um die CPS Korrektur manuell zu deaktivieren. Wie hier beschrieben, werden die 4 fehlerhaften ADC Kanäle verworfen, um die CPS Messung aber nicht zu verfälschen, werden sie beim Kanal 0 wieder angehängt. Das sorgt aber oft dafür, dass die vertikale Skalierung in Gamma MCA nicht passt. Deshalb kann man die Korrektur nun deaktivieren. Die 4 Kanäle werden aber weiterhin ignoriert.
- Viele Fehlerbehebungen bei den Einstellungen. Sollte etwas auf Anhieb nicht funktionieren, kann ich euch nur empfehlen, die Einstellungen mal zurückzusetzen.
- Fehlerbehebung bei der DC Bias Subtraktion die zu einem Integer Overflow führen konnte.

Übrigens @dekagon: Falls du dein Glück mit den PMTs nochmal versuchen möchtest, wäre die Hardware Revision deutlich besser dafür geeignet. Du müsstest nur am Eingang wieder ein paar Widerstände entfernen, ansonsten sollte alles funktionieren. Standardmäßig gibt es jetzt nämlich Dioden zur Überspannungssicherung und das Triggersystem wurde auch soweit verbessert, dass es mit vielen unterschiedlichen Pulsformen klar kommt. So lange du positive Spannungspulse reinschickst, sollte viel mehr passieren als mit den letzten Boards. Generell ist die Hardware viel zuverlässiger als früher.

NuclearPhoenix

Cs-137 Spektrum von einem Kollegen mit NaI Szintillator (6.6% Energieauflösung) und dem MicroFC Array Board (2x2 SiPMs) von hier: https://www.geigerzaehlerforum.de/index.php/topic,1107.msg19403.html#msg19403
Dafür wurden alle 4 SiPMs einfach parallel betrieben, also alle Jumper geschlossen. Erreicht wurden knapp 8% Auflösung bei 662 keV, was schon recht gut ist. :)

Sie dürfen in diesem Board keine Dateianhänge sehen.

NuclearPhoenix

FW Version 3.2.0: Zwei ziemlich große Verbesserungen: eine bei der Totzeit des Detektors, die andere bei der Anzeige im Geiger-Modus. Der Bildschirm im Geiger-Modus war bisher immer recht nutzlos, weil er weiterhin das Spektrum angezeigt hat. Weil aber keine Energiemessung stattgefunden hat, wurde einfach nix angezeigt ;)
Das hat sich jetzt endlich geändert!

Hier ist wie immer eine Liste der Änderungen:
  • Viel schnellere und stabilere Interrupts für eine verbesserte Totzeit und weniger falsche Peaks an den unteren ADC-Bins. Ich habe die Totzeit neu gemessen und es sieht so aus, als ob beide Modi ca. 10 µs schneller als zuvor sind (mit "set averaging 1", bei höheren Werten ist es sicher noch besser). Das ist echt eine riesige Verbesserung! Dadurch performt der Detektor auch bei höheren Zählraten (>10k cps) deutlich besser.
  • Durch Drücken der BOOTSEL-Taste auf dem Raspberry Pi Pico wird jetzt zwischen Geiger- und Energiemessmodus gewechselt.
  • Der Geiger-Modus hat jetzt eine eigene OLED-Oberfläche mit mehr Informationen über die aktuelle Zählrate. Daran werde ich aber sicher noch weiterarbeiten um mehr Informationen, wie etwa den Verlauf der Zählrate in einem Diagramm, anzuzeigen.
  • Der Befehl "read info" listet auch die Gesamtzahl der Detektorimpulse auf, also die counts seit Start des Geräts.

Alle uf2-Dateien für das Update sind wie immer (ab jetzt) auf GitHub. Viel Spaß!

NuclearPhoenix

Ich bin grade dabei einen optionalen Ticker für das Gerät einzuprogrammieren. Irgendwie habe ich da aber leider Probleme. Eigentlich sollte es ja ausreichen, wenn ich einen Buzzer zwischen einen 3.3V Digitalpin und GND lege, und dann den Digitalpin ein- und ausschalte, je nachdem wie lang der Puls sein soll. Das funktioniert bei mir aber irgendwie nicht.

Hat da jemand zufälligerweise Erfahrung mit simplen Buzzern und einem Raspberry Pi Pico? Und wie lange sollten die Pulse ungefähr sein, damit man was hört? Höher als 16 kHz oder so darf es ja auf gar keinen Fall sein, wenn ich das richtig verstehe. Da habe ich schon das erste Problem, weil meine Messroutine zu schnell ist... (ca 50 - 20 µs)

Ich bin auch dankbar für Hinweise, wie andere eine Tickerfunktion implementiert haben! ;)

DG0MG

Es kommt drauf an, was das für ein Buzzer ist. Es gibt magnetische und Piezos und beide Sorten jeweils mit und ohne Elektronik.
Wie Du es beschreibst, ist Elektronik im Buzzer nötig. Ist die nicht da, musst Du die NF selber erzeugen, bei Piezos am besten durch Umpolen, also nicht zwischen I/O-Pin und GND, sondern zwischen zwei I/O-Pins.
Die Frequenz sollte der Resonanzfrequenz des Piezos entsprechen (~3 kHz) und einige 10 msec lang sein.

Kann auch noch sein, dass 3.3 V zu wenig für einen Piezo sind, dann besser einen Treibertransistor mit einer Induktivität im Kollektorzweig und parallel dazu den Piezo.
"Bling!": Irgendjemand Egales hat irgendetwas Egales getan! Schnell hingucken!

NuclearPhoenix

Okay, danke für die Infos! In dem Bereich habe ich noch gar keine echte Erfahrung, deshalb vielleicht meine dummen Fragen.

Ich habe eigentlich gar keine Ahnung was ich hier vor mir habe... :))
Das ist einfach irgendein Buzzer, den ich noch in einer Lade gefunden habe. Da steht auch nicht wirklich viel drauf, und zu "KIB-28" habe ich auch nichts passendes im Internet gefunden.

Was ich weiß ist, dass er zwischen 3.3V und GND statisch einen (sehr lauten) Ton von sich gibt, also dürfte da schon irgendeine Elektronik drinnen sein. Wenn ich das aber mittels Digitalpin am Pico nachbauen möchte, funktioniert es nicht wirklich. Dann habe ich nämlich keinen statischen Ton mehr, da muss ich noch in meiner Software nachforschen. Vielleicht eignen sich dafür einige Pins nicht richtig.

Vielleicht sollte ich mir mal einen Buzzer holen, wo ich vorher weiß womit ich es zu tun habe :P

Und vielleicht liegen meine Misserfolge auch daran, dass ich zu viel manuell machen möchte und sich da die verbaute Elektronik quer legt. Dann wohl eher mit einem "einfacheren" Buzzer ohne integrierte Elektronik.

Henri

Ja, in dem Teil ist die Elektronik schon drin. Vielleicht braucht der mehr als die paar mA, die so ein Controllerpin liefern kann? Und er benötigt sicherlich auch ein paar ms zum "Anlaufen". Hast Du vielleicht PWM am Pin?

Ich hatte auch mal mit so einem ähnlichen Teil gebastelt, aber kleiner und von Ekulit. Dem waren keine kurze Einzelimpulse zu entlocken, ich glaube unter 200 oder 300 oder sogar 400 ms ging bei dem Teil gar nichts...

NuclearPhoenix

Zitat von: Henri am 14. Mai 2023, 22:40Vielleicht braucht der mehr als die paar mA, die so ein Controllerpin liefern kann? Und er benötigt sicherlich auch ein paar ms zum "Anlaufen". Hast Du vielleicht PWM am Pin?
12 mA kann ich über einen Pin liefern, würde mich schon wundern, wenn das nicht ausreichen würde. PWM habe ich an dem Pin, ja. Das mit dem Anlaufen habe ich noch nicht getestet, das muss ich mir mal anschauen! Kann tatsächlich sein, dass es an sowas liegt.

Zitat von: Henri am 14. Mai 2023, 22:40Dem waren keine kurze Einzelimpulse zu entlocken, ich glaube unter 200 oder 300 oder sogar 400 ms ging bei dem Teil gar nichts...
:good3:

NuclearPhoenix

Danke euch! Es stellt sich heraus, dass tatsächlich meine Ansteuerung das Problem war. Einfach nur einen Digitalpin HIGH oder LOW zu setzen hat nicht ausgereicht. Ich musste mittels den Arduino Funktionen analogWrite() oder tone() ein PWM Signal anlegen. Wenn ich hier eine Pulsdauer >~5 ms (bei 3 kHz Frequenz) einstelle, dann höre ich auch ohne Probleme die einzelnen Ticks! :good2:  :good2:

Henri

Zitat von: NuclearPhoenix am 15. Mai 2023, 13:28Danke euch! Es stellt sich heraus, dass tatsächlich meine Ansteuerung das Problem war. Einfach nur einen Digitalpin HIGH oder LOW zu setzen hat nicht ausgereicht. Ich musste mittels den Arduino Funktionen analogWrite() oder tone() ein PWM Signal anlegen. Wenn ich hier eine Pulsdauer >~5 ms (bei 3 kHz Frequenz) einstelle, dann höre ich auch ohne Probleme die einzelnen Ticks! :good2:  :good2:

Ach, dann hat der Piezo KEINE Elektronik drin? Du hattest ja oben geschrieben, dass er piepst, wenn Du eine Gleichspannungsquelle anlegst?   :unknw: 

Aber egal, Hauptsache es funktioniert jetzt!  :good2: