Gamma Ray Spectroscopy The Pomelo Way

Depending on the circumstances you find yourself in, a Geiger counter can be a tremendously useful tool. With just a click or a chirp, it can tell you if any invisible threats lurk. But a Geiger counter is a “yes or no” instrument; it can only tell you if an ionizing event occurred, revealing nothing about the energy of the radiation. For that, you need something like this gamma-ray spectroscope.

Dubbed the Pomelo by [mihai.cuciuc], the detector is a homebrew solid-state scintillation counter made from a thallium-doped cesium iodide crystal and a silicon photomultiplier. The scintillator is potted in silicone in a 3D printed enclosure, to protect the hygroscopic crystal from both humidity and light. There’s also a temperature sensor on the detector board for thermal compensation. The Pomelo Core board interfaces with the physics package and takes care of pulse shaping and peak detection, while a separate Pomelo Zest board has an ESP32-C6, a small LCD and buttons for UI, SD card and USB interfaces, and an 18650 power supply. Plus a piezo speaker, because a spectroscope needs clicks, too.

The ability to determine the energy of incident photons is the real kicker here, though. Pomelo can detect energies from 50 keV all the way up to 3 MeV, and display them as graphs using linear or log scales. The short video below shows the Pomelo in use on samples of radioactive americium and thorium, showing different spectra for each.

[mihai.cuciuc] took inspiration for the Pomelo from this DIY spectrometer as well as the CosmicPi.

15 thoughts on “Gamma Ray Spectroscopy The Pomelo Way

  1. A fantastic project Mihai! I really like the way you draw the spectra on the screen with the device (and the computation that must go with it on an embedded platform). Also I appreciate the choice of SiPM, we have a new 2.0 design of Cosmic Pi in the works (coming soon to github) that uses the same one from Broadcom.

    Also small note for the editor/Dan who wrote the piece, the cosmic pi link at the bottom is wrong I think it should be :)

  2. Overall neat project but I wish he implemented CPM as rolling average (which would give a neat, fluid readout – like in analog meters) instead of loop where it counts for 1 second and displays the result.

    1. Hi! Thanks for your feedback — you’re right, I’m still trying to figure out the best way to handle the CPM reading to both be agile enough, while also to not have the significant fluctuations you mentioned. I’ll try your suggestion with a rolling average and experiment with different averaging times.

    1. Hi, Michael! Yeah, these small scintillators are pretty cool — and not TOO expensive either. But I don’t think they’d be good for the ~6 keV of Fe-55. I’ve been testing this project with Am-241 which has a 60 keV gamma line but also a bunch of other lower energy ones (14, 18, 21, and 26 keV). All of these lower energy peaks appear as just a single blob in the CsI(Tl).

      For resolving the Fe-55 lines you kinda need to have the photon interact directly in the semiconductor — we did this in the lab with expensive silicon drift detectors that had a thermoelectric cooler inside.

      Buuuut with a replacement physics package with a bunch of BPW34 PIN diodes and a charge sensitive preamp we might just also look at those lines. Hmm..

  3. Couple thoughts:
    Your CsI(Tl) is too small for gammas above about 200keV. Your Compton continuum will dominate the spectrum of say a Cs-137 source.

    Switch to CLYC as your detecting crystal. Better resolution than CsI and with pulse discrimination you can detect neutrons too. Of course, if you’re only interested in gammas LaBr3(Ce) or CeBr3 have energy resolutions of sub-3% FWHM at 662keV. This is important as you shrink the size of the detector down to roughly 1 cubic inch.

    Can you adjust the lower level discriminator? Gain adjustments? Export spectra in a csv form or something?

    Nonetheless, I like what you’ve done here. We were doing similar things in our R&D lab back in the early 2000s. Nice to see the tech moving up the technology readings ladder.

    1. Hi, Mark, thanks for all your comments!

      You’re right, the CsI(Tl) crystal is fairly small and that does affect the peak-to-Compton significantly — especially if you’re used to large scintillators. But it’s not totally hopeless either. I don’t have a Cs-137 spectrum handy, but you can see a Na-22 one at the end of this project log:
      The 511 keV line is quite ok, and the 1274 keV line is about the same height as its Compton continuum.

      Oooh, you’re way ahead of me with the CLYC — I’d love to give that a go and try gamma/n discrimination!

      Yes, the lower level discriminator can be adjusted from software, but the gain of the front-end section is fixed. You *can* adjust the SiPM bias voltage from software though, so that gives some flexibility in picking your gain. That’s how I implement temperature compensation for the SiPM.

      Right now I output spectra in a JSON over the serial port, and I’m trying to cobble together some python scripts to write these to different formats. I’d love to easily import spectra in, say, InterSpec.
      Or, since the board with the user interface also has wifi, I could have it serve a web page that you can just download the .csv spectrum from.

        1. It’s not that hard to run zigbee on esp32-c6. They even have examples, ready to go.

          The problem with c6 is that it can run either wifi or zigbee, so ultimately you need two esp32, one of them should be c6. One for zigbee and another one for wifi.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.