DIY Gammaspektrometer mit SiPM

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

⏪ vorheriges - nächstes ⏩

NuclearPhoenix

Hier mal eine kleine Vorstellung von einem DIY Detektor an dem ich ungefähr die letzten 1.5 Jahre immer wieder gearbeitet habe und ich glaube ich bin an einem Punkt angekommen, wo man das als "fertig" betrachten könnte ;)

Das ganze ist Open Hardware, kann also von jedem heruntergeladen und nachgebaut werden. Deswegen hoste ich das ganze auf GitHub, dort gibt es außerdem noch den Code dazu, und weitere Doku:

https://github.com/Open-Gamma-Project/Open-Gamma-Detector

Vom Prinzip her ist das ein normaler Szintillationszähler, man braucht also auf jeden Fall noch zusätzlich einen Szintillator. Nur benutze ich zum Unterschied der meisten anderen DIY Geschichten keine PMT, sondern einen sehr empfindlichen Silizium Photomultiplier (SiPM). Dadurch wird das ganze deutlich kompakter und man muss sich nicht mehr mit Hochspannung herumspielen. Im Gegensatz zu Detektoren wie z.B. Theremino wird auch kein Mikrofoneingang/keine Soundkarte gebraucht sondern die Umwandlung von Pulsen zu Energie wird direkt onboard gemacht. Dadurch kann man das ganze mit jedem beliebigen USB-fähigen Gerät benutzen, an dem man dann später die Daten haben will. Sieht man vom Ausmaß des Szintillators ab, also nur die Platine für sich, dann ist das ganze mit ziemlich genau 6x6 cm recht kompakt für eine DIY Lösung.

Der Raspberry Pi Pico Mikrocontroller ist das Herzstück der Datenverarbeitung und mit dessen ADC werden 4096 Kanäle vermessen. Das macht dann zusammen mit dem Energiebereich von ca. 30 keV bis knapp 1400 keV eine theoretische Auflösung von 0.33 keV pro Kanal.

Vom Preislichen liegen wir bei grob 120€ (~15€ für die SMD Bauteile, 4€ für den Pico, ~70€ für das SiPM, 20-30€ für die Platine) ohne Szintillator, natürlich stark abhängig wo man einkauft und in welchen Mengen. Wie man sieht verursacht das SiPM den absoluten Großteil der Kosten, das ist ein durchaus berechtigter Kritikpunkt. Durch Sammelbestellungen kann man den Preis hiervon noch deutlich reduzieren.

Ich benutze die finale Version jetzt seit kurzem und bin selber noch dabei einen Haufen Spektren aufzunehmen. Am-241 und Lu-176 gibt es zum Beispiel schon auf GitHub zu sehen (1h Messdauer), das Lutetium habe ich hier auch schon mal in den passenden Thread geschickt. Das ganze war letztendlich "nur" ein Projekt um zu lernen wie sowas genau funktioniert und auch mein Einstieg in die Gamma-Spektroskopie. Und wenn ich schon an sowas arbeite, dann kann ich das auch öffentlich machen bevor es in der Versenkung verschwindet. Vielleicht interessiert oder hilft es ja noch jemandem ;D

NuclearPhoenix

#1
So... habe jetzt noch einmal ein paar Fotos vom Board zusammen mit dem Szintillator gemacht, damit man sich besser einen Eindruck machen kann.

Nicht wundern, der Szinti ist mit dem SiPM über Silikonfett verbunden, dann nur mit Isoband zugeklebt, deswegen habe ich da für ein wenig mehr Halt zwei Gummibänder drum gemacht - ist auf jeden Fall verbesserungswürdig ;)

Dann kann ich auch noch zwei neue Spektren anbieten: Ein kleiner Knopf mit Urangehalt (pre WW2, deswegen noch U-235 vorhanden) und eine Tasse mit Pechblende (Schwarzumdruck).

NuclearPhoenix

In der Zwischenzeit habe ich herausgefunden wieso ein ADC Kanal so furchtbar erhöhte Werte anzeigt und damit das Spektrum wie hier in einem Bereich extrem verzerrt. Ich probiere auch mal gleich das neue Feature zum Bilder einbinden ;D

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

Das Ganze ist nämlich nicht nur ein Kanal, sondern gleich 4 Stück, die völlig überempflindlich gegenüber dem Rest sind. Das kann man auch hardware-seitig nicht ändern, sondern ist einfach ein Herstellungsfehler bei dem Microcontroller den ich hier benutze. Hier sieht man das ganz gut, das ist ein gut 4 Stunden Hintergrund (der erste Peak geht natürlich noch sehr weit aus dem Bild heraus, aber sonst würde man den Rest nicht sehen):

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

Die einfachste und schnellste Lösung die mir eingefallen ist, ist einfach genau diese 4 Kanäle herauszunehmen und im Spektrum selber zu ignorieren. Damit brauche ich keine aufwendigeren Methoden und verliere nur 4 Kanäle. Das neue Hintergrund-Spektrum sieht dann so aus (auch wieder 4h):

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

Schon weeesentlich besser, ohne viel Aufwand. Am besten wäre es natürlich, wenn das hardware-technisch repariert wird, aber das kann sehr lange dauern ;)

Das hier ist natürlich ein bisschen eine technische Diskussion, aber ich fand es durchaus interessant um zu verstehen wie das alles zustandekommt :)

NuclearPhoenix

Ich habe das ganze Projekt übrigens schon länger auf Hackaday als Projekt hochgeladen:
https://hackaday.io/project/185211-all-in-one-gamma-ray-spectrometer

Dazu gibt es auch einen tollen Artikel vom IEEE Spectrum Magazin: https://spectrum.ieee.org/pi-pico-gamma-ray-detector

In Anlehnung an das SiPM Steuerungsboard hier im Forum und anderes Feedback was ich so bekommen habe, habe ich die Platine übrigens aktualisiert. Damit kann man, wie auch bei eben genanntem Board, verschiedene Pulsschwellen, Gains und SiPM-Spannungen einstellen, sodass es mit den verschiedensten SiPMs und Szintillatoren funktioniert die man so bekommen kann. Demnächst wird man das auch fix fertig online kaufen können, dazu werde ich aber hier nichts posten. Falls ihr also daran interessiert seit, verweise ich euch auf Hackaday.

Im Anhang noch ein tolles Lu-176 Spektrum, welches ich in dünner Bleiabschirmung (~0.5 cm) über 4 Stunden aufgenommen habe. Für nichtmal 5 g Lutetium insgesamt (~20 cps mit Hintergrund im Blei) ist es denke ich ganz gut geworden ;D
Wie man sieht ist auch das Problem mit den ADC Kanälen vom Pico kaum mehr sichtbar. Nur mein Szintillator hat nur leider ein bisschen eine schlechte Auflösung bzw. ist schon stellenweise ganz leicht gelb angehaucht. Sonst wären die beiden Peaks noch etwas schmäler, aber dafür kann ja der Detektor sonst nichts ;)

DG0MG

Zitat von: NuclearPhoenix am 23. April 2022, 15:54Das Ganze ist nämlich nicht nur ein Kanal, sondern gleich 4 Stück, die völlig überempflindlich gegenüber dem Rest sind. Das kann man auch hardware-seitig nicht ändern, sondern ist einfach ein Herstellungsfehler bei dem Microcontroller den ich hier benutze.

Ich hab noch nie einen Raspberry Pi pico benutzt, aber hier beschwert sich ein youtuber darüber,
dass die A/D-Wandler-Ergebnisse sehr verrauscht wären:
https://www.youtube.com/watch?v=F0o1C7nEgw0
Die Ursache würde in dem auf der Platine verbauten Step-Down-Schaltregler liegen, auf dessen unruhigem Output dann auch die Referenzspannung des A/D-Wandlers liegt. Hast Du das mal untersucht?
"Bling!": Irgendjemand Egales hat irgendetwas Egales getan! Schnell hingucken!

NuclearPhoenix

Zitat von: DG0MG am 24. Juli 2022, 17:23
Zitat von: NuclearPhoenix am 23. April 2022, 15:54Das Ganze ist nämlich nicht nur ein Kanal, sondern gleich 4 Stück, die völlig überempflindlich gegenüber dem Rest sind. Das kann man auch hardware-seitig nicht ändern, sondern ist einfach ein Herstellungsfehler bei dem Microcontroller den ich hier benutze.

Ich hab noch nie einen Raspberry Pi pico benutzt, aber hier beschwert sich ein youtuber darüber,
dass die A/D-Wandler-Ergebnisse sehr verrauscht wären:
https://www.youtube.com/watch?v=F0o1C7nEgw0
Die Ursache würde in dem auf der Platine verbauten Step-Down-Schaltregler liegen, auf dessen unruhigem Output dann auch die Referenzspannung des A/D-Wandlers liegt. Hast Du das mal untersucht?
Ah, sehr cool - das Video muss ich mir anschauen!

Ist mir bekannt, der A/D Wandler ist leider die größte Schwachstelle vom Pico. Einerseits durch die Referenzspannung im Sinne von sowohl Rauschen, als auch von der Ausgangsgenauigkeit (sind glaube ich nur ~2%). Und dann gibt es eben noch den Effekt den ich hier weiter oben beschrieben habe. Das ist aber alles nicht allzu tragisch wenn man damit umzugehen weiß. Hier ist eine sehr gut dokumentierte und genaue Untersuchung vom Pico ADC: https://pico-adc.markomo.me/

Deshalb habe ich übrigens Platz für eine Spannungsreferenz auf der Rückseite des neuen PCBs gelassen. Die kann man jederzeit einlöten und dann ist man zumindest dahingehend alles los. Ich hatte nur bei meinen ersten Testläufen keine wirklichen Verbesserungen bei meinen Messungen gesehen, deswegen ist das fürs erste optional... lässt sich ja auch einfach nachrüsten.

Weil im Video der Pico W erwähnt wird: Den finde ich ja auch sehr, sehr spannend. Den kann man in Zukunft (bei entsprechenden Lieferständen) ohne weiteres statt dem Standard-Pico einbauen und könnte bspw. irgendwie über WLAN (ohne extra App) die Daten, Spektren, etc abrufen. Ist wirklich super, was man damit wieder alles machen kann :good3:

NuclearPhoenix

Habe jetzt mal bei einem Hersteller eine kleine Serie fertigen lassen, die Boards sehen echt super aus (auch wenn ich da noch ein wenig manuell rumgelötet habe ;D). Hier habe ich jetzt mal den Szintillator noch nicht am Board angebracht, weil ich erst noch ein bisschen herumprobiert habe.

Die Spektren sehen auch wie zu erwarten aus, dafür habe ich wieder meinen üblichen 18 x 30 mm NaI benutzt -- eingestellt sind ca. 29.4 V und ~60-fache Verstärkung. Der Stromverbrauch liegt mit ~75 mW bei normaler Hintergrundstrahlung auch unter dem erwarteten Niveau. Mit ein paar Softwaretricks kann man den Verbrauch auch sicher noch senken ;)

Raddet

Zitat von: NuclearPhoenix am 24. Juli 2022, 19:36Ist mir bekannt, der A/D Wandler ist leider die größte Schwachstelle vom Pico

Warum nicht externe ADCs verwenden? Auf separaten spezialisierten Mikroschaltungen? 16-Bit oder 24-Bit. Wie schnell soll die Digitalisierung erfolgen?

NuclearPhoenix

Zitat von: Raddet am 20. August 2022, 12:07Warum nicht externe ADCs verwenden? Auf separaten spezialisierten Mikroschaltungen? 16-Bit oder 24-Bit. Wie schnell soll die Digitalisierung erfolgen?

Eine einzelne Messung dauert im Moment ca. 6 µs; laut Datenblatt hat der Pico einen 500 ksps ADC. In diesem Bereich sind 16 bzw. 24-bit ADCs schon sehr viel teurer. Außerdem muss man sich dann auch um die Datenübertragung kümmern und wenn das über I2C läuft, dann addiert sich da noch zusätzliche Totzeit dazu die keiner will. Außer den DNL Problemen funktioniert der ADC mit Referenzspannungsquelle trotzdem recht gut.

NuclearPhoenix

Zitat von: NuclearPhoenix am 20. August 2022, 12:40
Zitat von: Raddet am 20. August 2022, 12:07Warum nicht externe ADCs verwenden? Auf separaten spezialisierten Mikroschaltungen? 16-Bit oder 24-Bit. Wie schnell soll die Digitalisierung erfolgen?

Eine einzelne Messung dauert im Moment ca. 6 µs;
Ich habe zufällig gerade nochmal nachgeschaut, das war leider falsch was ich hier geschrieben habe. Wie man auch auf GitHub nachlesen kann liegen die maximalen CPS für die Spektroskopie bei 40,000 cps und im "Geiger-Modus" (also nur Pulszählung) bei 110,000 cps ohne das man irgendetwas an der Software tricksen müsste. Dementsprechend lange sind dann eben die einzelnen Auslesevorgänge.

Einmal ADC auslesen dauert um die 20 µs. Das ist sehr wahrscheinlich vor allem deswegen so langsam, weil die Software in der Arduino IDE geschrieben und kompiliert wird. Trotzdem reicht die Geschwindigkeit für viele Sachen völlig aus, deswegen möchte ich die absolute Einfachheit der Arduino Software vorerst nicht dafür opfern ;)

NuclearPhoenix

Da ich vor kurzem an einen neuen (gebrauchten) SiPM gekommen bin, konnte ich endlich die (alte) große SiPM Trägerplatine entfernen und das ganze mit Szintillator schön auf dem Detektor PCB montieren :yahoo:

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

Im Zuge dessen habe ich mich auch ein wenig mit dem Gain herumgespielt und ich habe jetzt ohne Probleme einen Messbereich von ~20 keV bis ~3.2 MeV. Als Beweisfoto (;D) wieder meine typischen LYSO Stäbe, was "schöneres" habe ich im Moment leider nicht hier. Ist auch nur eine 10 Minuten Messung, aber reicht zum Nachsehen. Ich werde in der näheren Zukunft auf jeden Fall auch mal die Chance haben ganz interessante Proben damit zu spektroskopieren. Das werde ich dann mit Sicherheit auch hier reinschreiben ;)

NuclearPhoenix

Hab heute endlich mal die Gelegenheit gehabt ein paar neue Materialien zu messen. Einerseits eine Armbanduhr mit schönen Radiumzeigern -- die hats auf ca. 160 cps gebracht. Andererseits eine normalen Na-22 Prüfstrahler, der war zwar schon ein bisschen älter (das macht bei der Halbwertszeit schon einen Unterschied), aber hats trotzdem noch auf gute 650 cps gebracht.

Beim Na-22 sieht man schon sehr gut die energieabhängige Effizienz von NaI im Vergleich zum 511 keV Annihilationspeak!

Ich weiß zwar nicht, ob das hier schon besser in die Kategorie "Gamma-Spektroskopie" gehört, aber da es alles mit dem Detektor hier zusammenhängt lasse ich das mal hier so stehen :)

nukulus

cooles teil  :yahoo:
vorallem dass es direkt per USB angeschlossen werden kann finde ich gut!

was jetzt noch cool wäre:
akkubetrieb und späteres auslesen der daten - dann könnte man PC-los im keller messen
entweder nativ oder über ein zusätzliches logger/akku-modul

ich könnte dir eine box dazu zeichnen die man dann drucken kann wenn du willst :)

NuclearPhoenix

Zitat von: nukulus am 09. Oktober 2022, 15:51cooles teil  :yahoo:
vorallem dass es direkt per USB angeschlossen werden kann finde ich gut!
Danke! Da es sowieso schon tausende Lösungen in Verbindung mit USB-Soundkarten gibt, dachte ich mir mal ich probiere was anderes. Das ist schon super angenehm, wenn ich die Analysesoftware im Browser habe und dadurch den Detektor selber überall mitnehmen kann und extrem schnell auch auf fremden PCs alles funktioniert.

Zitat von: nukulus am 09. Oktober 2022, 15:51akkubetrieb und späteres auslesen der daten - dann könnte man PC-los im keller messen
entweder nativ oder über ein zusätzliches logger/akku-modul
Ich hatte mir eh schon gedacht, dass ein SD-Karten Slot ganz nett wäre. Im Moment kann man aber auch schon theoretisch den verbauten Flash im Pico benutzen. Ist max. 1 MB soweit ich weiß, also das wäre kein Problem. Nur ist der halt leider wegen den geringen Schreibzyklen wesentlich kurzlebiger als jede SD Karte oder EEPROM.

Zum Akku: Der Raspberry Pi Pico lässt sich sehr leicht auf externen Batterie/Akkubetrieb umstellen. Dafür habe ich auch auf der Platine die "VBUS" und "VSYS" pins angegeben. Batteriebetrieb geht dadurch ohne externe Teile mit einer Eingangsspannung von ca 1.8 - 5.5 V (wenn man USB nicht nutzen möchte, sonst braucht man noch eine Diode). USB-Powerbanks gehen natürlich sowieso. Will man jetzt noch einen extra Akku + Ladegerät integrieren muss man sich eine kleine Schaltung dazubasteln, siehe das Bild (rote Teile). Das ist zwar nicht on-board vorhanden aber man kann alles über die beiden "VBUS" und "VSYS" pins anbinden. Ist also recht modular. Um die Kosten und die Komplexität des Aufbaus zu drücken möchte ich sowas aber ehrlich gesagt vorerst nicht integrieren.

Zitat von: nukulus am 09. Oktober 2022, 15:51ich könnte dir eine box dazu zeichnen die man dann drucken kann wenn du willst :)
Oh, das wäre super toll! :)  :)  Sowas wollte ich schon lange organisieren, weil ich sonst nur die blanken Platinen habe.

NuclearPhoenix

Habe heute ein wenig mit den kleinen Standard-OLEDs (die SSD1306er) herumgespielt und in der Arduino Firmware auch gleich Unterstützung dafür eingebaut. Die etwas größeren 128x64 px OLEDs werden jetzt ohne weiteres erkannt und benutzt.

Im Anhang sieht man die Messsituation mit meinen kleinen LYSO Stäben und der resultierende Display-Output. Obwohl der Energiebereich derzeit sehr groß für das kleine Display ist, kann man trotzdem den Unterschied zw. den ~200 und ~300 keV Peaks sehen. Darüber die gemessene Aktivität :good3: