Close
0%
0%

All-In-One Gamma-Ray Spectrometer

More sensitive to gamma radiation than a Geiger counter with the added bonus of telling exactly what's inside your samples!

Similar projects worth following
Using a small custom PCB with a Raspberry Pi Pico 2 microcontroller, a scintillator (typically NaI(Tl)) and a silicon photomultiplier (SiPM) you can build your own gamma spectrometer! The needed processing and multi-channel analyzer are all on-board so no external parts are needed, except something to look at the data (with a screen, obviously).

This detector uses a silicon photomultiplier (SiPM) instead of the usual photomultiplier tubes that are more common with these types of DIY projects. This means that the whole assembly is much smaller and also safer, because no high voltages are needed! Also in contrast to projects like theremino you don't strictly need a computer or even an external sound card -- everything is self-contained. You can do standalone measurements using only a USB power cable and save the spectra to the Pico's flash storage or connect to your PC via the Serial-over-USB connection.

Here are some of the most important key facts:

  • Compact design: Total size 120 x 50 mm. Approx. 70.5 x 50 mm area for electronics and additional 49.5 x 50 mm to mount a scintillator.
  • All-in-one: No external parts (e.g. sound card) required to record gamma spectra.
  • Standalone spectra recordings on built-in flash.
  • Easily programmable using drag-and-drop firmware files or the standard Arduino IDE.
  • Low-voltage device: No HV needed like with photomultiplier tubes.
  • Can use SiPMs in the voltage range of 27.5 V to 33.8 V.
  • 4096 ADC channels with built-in 3 V voltage reference.
  • Energy resolution of up to 7% @ 662 keV possible; highly dependent on your SiPM/scintillator assembly.
  • Energy Mode: ~10 µs total dead time while measuring energy (default settings).
  • Geiger Mode: ~1 µs total dead time without energy measurements (default settings).
  • Low power consumption: ~15 mA @ 5 V with default firmware at normal background.
  • Built-in ticker (buzzer) for audible pulse count rate output.
  • Additional broken-out power pins and I2C, SPI and UART headers for custom parts (e.g. display, µSD card, etc.).
  • Simple OLED support out of the box (SSD1306 and SH110x).
  • Built-in True Random Number Generator.

More information can also be found in the GitHub repository...

Ok nice, but how do I get it?

  • DIY version: Download BOM and Gerber files or use Kitspace.
  • Buy a complete board: Head over to Tindie.
  • If you don't want to deal with all of that, feel free to contact me. Just send me an e-mail if you want and we'll figure something out.

The principle of operation for the detector looks like this:


Read more »

BOM.csv

BOM for the detector board

application/vnd.ms-excel - 2.34 kB - 04/11/2023 at 21:03

Download

schematic.pdf

Schematic of the detector board

application/pdf - 136.30 kB - 04/11/2023 at 21:03

Preview

  • 1 × Raspberry Pi Pico 2 Microcontroller and heart of this detector
  • 1 × MicroFC-60035 SiPM The silicon photomultiplier used with the scintillator
  • 1 × Main detector PCB Production-ready gerber file in GitHub repo or Kitspace
  • 63 × Components main detector board See BOM for exact parts
  • 1 × Scintillator For example NaI(Tl)

View all 6 components

  • First Pico 2 Testing

    NuclearPhoenix08/29/2024 at 12:21 0 comments

    Just tested the new Pico 2 and the results are pretty amazing actually.

    The DNL issues, are obviously gone and with it the `cps correction` setting and some of the code in the event interrupt that had to handle the 4 error channels. Finally no more random peaks or missing channels in the spectrum!

    Due to this combined with the more powerful processor cores (and FPU), the total dead time reduced significantly, which is probably the biggest change. With the same settings both on the Pico 1 and Pico 2 at default settings the dead time in energy mode halved (!) from ~24µs to ~12µs. The dead time in Geiger mode actually reduced more than that, it only registered ~1µs of dead time on the Pico 2, while the Pico 1 had about 4µs. This is of course only the software-measured dead time, there will still be a bit of a constant overhead on top of all of that, that cannot be measured in software. It's pretty safe to assume that this hasn't changed too much between the revisions, so the relative decrease in dead time is very significant.

    The flash size is now triple that of the old version at 3 MB reserved for custom spectrum storage. This means you're able to record almost 3x the amount of spectra before running out of space, which is also huge.

    The cherry on top of all of this is that power efficiency went up too. Without any further changes, the detector now consumes a good 10% less power than before according to my testing. I will also investigate the new sleep/dormant modes of the RP2350 as soon as there is support for these.

    On a side note, I was able to overclock the Pico 2 to 250 MHz at the default 1V core voltage in the sketch, which is 25 MHz higher than with the Pico 2 (225 MHz). Therefore the `overclock` uf2 file will be clocked at 250 MHz from now on.

    All of the hardware and software files are up to date now for the Pico 2 and development will continue on the Pico 2 from now on. The new board revision 4.2 is unchanged from the old one besides the switch to the Pico 2 and an updated BOM position for the out-of-stock buzzer. I will update the post on my website to also reflect these results.

  • OpenDosimeter Project

    NuclearPhoenix08/21/2024 at 10:09 0 comments

    Hey there, I wanted to give a quick shout-out to an awesome new derivative project: The OpenDosimeter.

    If you're interested in dosimetry and radiation protection, go check them out! They're fully open-source and currently working hard to publish all the info and details needed to reproduce the device.

    https://github.com/OpenDosimeter/OpenDosimeter

  • Raspberry Pi Pico 2 and the Open Gamma Detector

    NuclearPhoenix08/10/2024 at 18:03 0 comments

    This article was originally posted on my homepage.

    The RP2040 microcontroller that is being used in the original Raspberry Pi Pico finally got a worthy successor: the RP2350! And with it Raspberry Pi released a new and improved version of the Pico, fittingly named the Raspberry Pi Pico 2. This is a big change for the Open Gamma Detector project, because it is going to substantially improve device speed and analog readout.

    The Raspberry Pi Pico 2, sourced from their Pico 2 product brief, see below.

    It's a drop-in replacement part for the original Pico, which means the pinout and sizing is the same as well as the software should be compatible with any changes, which is actually pretty huge. Ideally, the original Arduino IDE sketch can be reused without any modifications and the used pins on the device also remain the same.

    The new RP2350 boasts double the SRAM (520 KB), double the onboard flash (4 MB) and more powerful ARM Cortex-M33 cores. With it finally comes an FPU for faster floating point calculations and they actually fixed the DNL issues with the ADC boosting its performance by 0.5 ENOB! That means I can finally drop all of the botched code for the DNL issue compensation.

    The chip also adds a ton of new security features and optional RISC-V cores, which is very exciting to see, but not really relevant for the project. However, this is going to make the Pico 2 and RP2350 hugely more popular for all kinds of different IOT projects as soon as a wireless version comes out.

    What I'm excited to see as well is how the power draw changes for the whole device and if the switching regulator on the board changed, which could affect the noise levels on the board and most importantly, the noise at the ADC voltage reference. As far as I'm aware they also changed sleep and dormant modes, which should make them a lot more useful and more low-power compared to before. Anyways, the new core architecture will definitely change power draw, I'm sure. Let's hope it's for the better :D

    I have pre-ordered a Pico 2 now and I'm going to have a look at it as soon as it arrives. I'm certain it'll be a substantial upgrade in all of the relevant aspects to the project. I'll keep you updated!

    Check out the product brief from Raspberry Pi (PDF): https://datasheets.raspberrypi.com/pico/pico-2-product-brief.pdf

    Let me know what you think and how this is going to affect all kinds of different projects!

  • Rev 4.1: PCB Layout Update

    NuclearPhoenix03/29/2024 at 12:00 0 comments

    Did some work on the PCB and slightly updated the layout to make it all look better. The MCX connectors are now placed symmetrically on the board and the silk screen has had a heavy rework. On top of that I also added a grounded guard ring around the perimeter of the electronics section.

    The only other change is a different type of 22µF cap for bypassing, which now has an increased max voltage rating to better cope with DC bias. Other than that, everything remains the same.


  • Updated SiPM Carrier Boards

    NuclearPhoenix02/16/2024 at 20:38 0 comments

    I reworked the SiPM carrier boards a little in terms of the layout and also used the opportunity to make a board for the 3mm MicroFC SiPM from onsemi. This will definitely come in handy if someone wants to play around with these little LYSO sticks (4x4x20mm or so). The files for the 3mm carrier board can be found on GitHub: https://github.com/OpenGammaProject/Tiny-3mm-MicroFC-Carrier-Board

    At 6x6mm, the board is slightly larger than a 4x4mm LYSO scintillator face, but it really couldn't be much smaller and it should work reasonably well regardless.

    Overall, the layout of all boards is now tidier and, above all, the important connections are all a lot more clear better marked. I also reduced the distance between the individual SiPMs a little in the 2x2 array. The circuit is otherwise identical.

    Here are the latest PCBs:

  • FW 4.2.0: Recording to flash

    NuclearPhoenix01/20/2024 at 18:36 0 comments

    This new update is a little bit bigger than the last one. One major new feature is the option to record spectra 100% locally on the device and save the data to the onboard flash to be retrieved at a later point. You can start a recording via the serial interface and then keep track of the status or stop it manually before it finishes. The data that has been gathered can be again printed to the serial interface at any point after that. For this I have also added a couple new commands relating to the filesystem on the Pico's 2MB flash.

    Because of these changes, your current settings and also the runtime stats of your device will be reset once you update! So be sure to note your settings beforehand and restore after the update if you changed anything.

    There are also some smaller changes like a change in default settings (see below) and better formatting for the general info and fs info screens over the serial interface.

    Full list of changes:

    • Flash space (total 2MB) on the Pico is now divided 50:50 between the onboard file system and the program space (1MB for the filesystem). This change will result in a reformat of existing devices.
    • Changed default settings for "subtract_baseline" and "cps_correction":
      • subtract_baseline = true
      • cps_correction = false
    • Improved formatting of "read info" and "read fs" info screens. Also removed some irrelevant data from the "read fs" screen.
    • Standalone recordings: Start and stop spectrum recordings via the serial interface, the rest will be handled by the device, you don't need an active connection in between and you can collect the data anytime after it finishes. The data will be saved to flash in a compatible JSON (NPESv2) format for viewing in other software. There is also a tiny indicator on the OLED for when the device is currently recording. The device will stop recording after the set time has run out and will autosave regularly (every 15 minutes) just in case of a power failure. New serial commands, pretty self-explanatory:
      • record start <time in minutes> <filename>
      • record stop
      • record status
    • New filesystem commands to view the contents of the data directory and of files that were previously recorded (NPESv2 JSON). There is also an additional command to remove files once you don't need the data anymore. The 1MB of flash on the Pico FS can hold a lot of spectrum files (get used and free sizes using "read fs" command). Commands:
      • read dir
      • read file <filename>
      • remove file <filename>


    I think these are really cool changes and finally start to show the power of this device. Neither do you need a sound card or any additional hardware to generate spectra, you don't even need a computer all the time anymore with the stock firmware. Set and forget. Set up your serial recording, and then come back hours later to "download" the data from the device. Just copy paste the contents into a file on your system and open it in Gamma MCA or a compatible program to view in all its glory. No additional computing needed. Doesn't matter what you do with your computer. Just be sure to keep the device powered ;)

    Enjoy!

  • FW 4.1.0: Button Changes

    NuclearPhoenix01/17/2024 at 22:31 0 comments

    With the latest firmware update I changed the way the buttons on the board work. In the past the BOOTSEL button on the Pico would always change the mode of the detector while the other button on the main board toggled the buzzer. This was always a bit odd to use honestly, especially when you have an OLED installed directly on the pin header next to the button.

    With firmware version 4.1.0 the large button on the main board now took over the BOOTSEL button's job and changes the mode as well. BOOTSEL on the Pico will from now on always reboot the device into bootloader mode for easier updating. You can change the mode by pressing shortly on the other more accesible and larger button. Long-pressing on the button will toggle the buzzer on or off.

    Also the display now reacts more quickly to reflect the change in mode by changing the screen after you pressed the button.

    And last but not least, today I managed to break my record for my personal best achieved energy resolution. I used the same mushroom sample (Cs-137) that I always used before and got 7.4% @ 662keV, nice!

    This is the configuration I used: 1x1" with 2x2 SiPMs like previously, but with a new detector main board.

    It's actually one of the pre-assembled boards, which interestingly slightly outperformed my hand-soldered version by almost half a percent lol

    Cheers!

  • Board Restock Rev 4

    NuclearPhoenix01/14/2024 at 00:01 0 comments

    Finally, after all the delays, the long awaited restock is here. You can once again get the fully pre-assembled main boards for the Open Gamma Detector on Tindie. EDIT: It's the new version of course, Rev 4! Here's a link to the listing:

    https://www.tindie.com/products/28827/

    This time they come in a nice black color with ENIG surface finish and all the necessary connectors pre-assembled too. As always you will have to get yourself a SiPM and scintillator as these are not included. The boards will need to be programmed at the first start as they don't come pre-loaded. If you're not sure how to do this, here is a quick guide (it's really easy): https://github.com/OpenGammaProject/Open-Gamma-Detector/tree/main/software#firmware-files

    Cheers!

  • (Small) Update

    NuclearPhoenix12/27/2023 at 21:29 0 comments

    Just a quick reminder that the project is not dead (and also a very tiny update) :D

    Regarding the Tindie restock, I'm sorry for the seemingly endless delays. The boards are currently in production and I'm expecting them to be in stock again ready for shipping by early to mid January.

    To keep you interested and as a sort of small additional teaser, here is a comparison between my "old" scintillator with only a single SiPM that I used for all spectra up to this day and a brand-new 1x1" crystal with the 2x2 SiPM array:

    As you can see, the spectrum is a lot cleaner in total, the range is larger and the energy resolution is a lot better too. Keep in mind however, that this version costs at least around 100$ more than the "simpler" version, due to the added SiPMs and the larger, 4-layer array PCB.

    The larger scintillator comes with some additional benefits such as greater efficiency and therefore also higher count rate. You don't need one as large as this, though. 18x30mm is also a great size already pretty capable.

  • Notes about averaging (settings)

    NuclearPhoenix12/06/2023 at 21:41 2 comments

    I'm doing some last in-depth testing to optimize all the device settings for the best energy resolution possible and it looks like I found a much better suited setting for the ADC "averaging". In my case, I was able to get an improvement of about 1% just by switching this setting ("set averaging 2" from the default value 5). I've also just now changed the default value for averaging to 2 in the 4.x.x firmware to apply this improvement. If you already changed something in the settings, or you're using one of the older board revisions, you'll have to edit it manually.

    Give it a try, it might even work on older board revisions, but your mileage may vary. Nothing can break, so just feel free to experiment. If you're not sure, just reset the settings afterwards and you're fine.

View all 56 project logs

  • 1
    OPTIONAL: Solder SiPM carrier board components

    This is an optional step if you're using the carrier boards. If you're not and just soldering wires directly to the SiPM or doing it otherwise, skip this part. Note, however, that soldering wires to the SiPM itself is much harder than using the breakout board.

    You can choose to add the optional SMD components, to add some more power decoupling. This might help stability especially for longer cable lengths. If you're doing so, bridge the solder jumper and connect wires to VCC, GND and A(node) pads. If you're not using the SMD parts, solder directly to A(node) and C(athode) and the jumper remains open.

  • 2
    Couple SiPM with scintillator

    Center the SiPM on the scintillator crystal and put some silicon grease or other special coupling material between the two parts to optimize the optical coupling (and minimize reflections). This step is important!

  • 3
    Wrap scintillator assembly

    Use black electrical insulation tape or similar non-transparent material to wrap the whole assemby, but watch out for the cables, of course. This will reduce light passing to the SiPM to an absolute minimum, otherwise it won't work properly. You should use multiple layers of tape just to be sure.

    Tip: I'm using tightly-wrapped Kapton tape on the outer-most layer to avoid the insulation tape from getting too loose.

View all 8 instructions

Enjoy this project?

Share

Discussions

ysyangsongzz wrote 07/18/2022 at 09:20 point

OK,NuclearPhoenix .I see it again.

  Are you sure? yes | no

ysyangsongzz wrote 07/18/2022 at 08:29 point

Hello,NuclearPhoenix .Is the NaI crystal used  one inch in the DIY project? SIPM is 6mm*6mm. I want to ask how SIPM and Nai are coupled to ensure the photon collection rate.  THe energy resolution question in the PMs,the PMs is what?

  Are you sure? yes | no

NuclearPhoenix wrote 07/18/2022 at 09:15 point

The coupling process is described in the build instructions and on GitHub. "PMs" are the private messages here on Hackaday, you sent me a message there.

  Are you sure? yes | no

ysyangsongzz wrote 07/15/2022 at 00:36 point

Hello,NuclearPhoenix .How many sipms are used in this DIY projet? What is its resolution to Cs-137? Schematic v2.0 version has been released on GitHub website. When can the corresponding v2.0 PCB be released?

  Are you sure? yes | no

NuclearPhoenix wrote 07/15/2022 at 12:05 point

Just one SiPM, otherwise I would have stated so in the documentation. The PCB is already released on GitHub. I already replied to your energy resolution question in the PMs.

  Are you sure? yes | no

ysyangsongzz wrote 07/14/2022 at 02:42 point

Have you considered the temperature drift of SIPM?

  Are you sure? yes | no

NuclearPhoenix wrote 07/14/2022 at 15:51 point

No, it's not temperature corrected since this is a DIY project designed for use in controlled environments. Of course there is some drift, but if you use it close to the nominal 25°C you will not notice it.

  Are you sure? yes | no

Wesley Ellis wrote 05/19/2022 at 00:36 point

Neat project, but I think there's a typo in "a USB power cable and safe the spectra to the Pico's flash storage" where safe should be save

  Are you sure? yes | no

NuclearPhoenix wrote 05/19/2022 at 09:17 point

Yes, thank you!

  Are you sure? yes | no

yahyabangash2004 wrote 05/06/2022 at 16:06 point

Good initial

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates