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
Starting from
$64.99
NuclearPhoenix has 86 orders / 0reviews
Ships from Austria
Using a small custom PCB with a Raspberry Pi Pico 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 x 50 mm area for electronics and additional 50 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: ~20 µs total dead time while measuring energy (default settings).
  • Geiger Mode: <5 µs total dead time without energy measurements (default settings).
  • Low power consumption: ~20 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.

The principle of operation for the detector looks like this:


Read more »

BOM.csv

BOM for the detector board

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

Download

schematic.pdf

Schematic of the detector board

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

Preview
Download

  • 1 × Raspberry Pi Pico 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

  • 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.

  • Software Changes for FW 4.0.0

    NuclearPhoenix12/03/2023 at 11:01 0 comments

    Hello again, just a quick post to keep you updated on the software changes that I did to the new 4.0.0 firmware. Yesterday I already mentioned my work on the software without telling you what has changed. So here we are, these are all significant changes to the firmware:

    • Removed command for the buzzer on-time per tick. It's now fixed to 10ms.
    • Added command to enable/disable the buzzer. (default is off)
    • Added command to set the tick rate of the buzzer. (default is every 20 pulses)
    • Added a running median for the device dead time to better compute the current dead time.
    • All cps values on the display are now also dead time corrected. This applies to both the energy measuring and geiger modes.
    • Implemented the additional button on the PCB to toggle the buzzer on or off.
    • All serial commands that took "enable" or "disable" as a parameter now use "on" or "off". So, for example, "set display enable" now becomes "set display on". If you're not sure, the "help" command tells you exactly what you need to know.

  • More Tests and Documentation

    NuclearPhoenix12/02/2023 at 19:42 0 comments

    I already updated most of the documentation on GitHub and did a lot of additional testing. I also did most of the things I wanted to do for the firmware and uploaded the first 4.0.0 FW files. However, there are some "bad" news: the energy resolution didn't change a lot if at all when compared to the last revision. More testing revealed it stays much the same, so that was a fluke. But that doesn't change the fact that all the other changes and improvements still hold.

    I did some more testing on the energy range and noise levels too and these are my (practical) results:

    Can you see the difference? I'm sure you can. The new hardware produces a LOT cleaner spectra and if you look closely you can see the background plateau extends farther to the left after the 32 keV peak up to around 10 keV. This will be more visible in the next images. All of these spectra were recorded using the same crystal, same settings and everything. I recorded my mushroom sample, that's why I got these nice Cs-137 peaks.

    As you can clearly see, the peaks are a bit cleaner in general and the measurable plateau extends farther to the left after the 32 keV peak all due to the lesser noise floor. I've now used SMA 8 for both of these spectra. You can also see the reduction in noise in the compton spectrum to the left of the photopeak.

    I'm also still currently recording some new example spectra for GitHub and after that I'll check if the two modes of the SMPS on the Pico result in any changes and what averaging setting is the best for energy resolution. I'll keep reporting my findings of course.

    Still waiting for the updated OSHWA certification, once that's done, the new PCBs will go into production for Tindie and I will update the PCB files one last time to update the cert mark. I think I already mentioned the updated Tindie price in one of the last posts: it will have to go up by 5 bucks to accomodate the 4L board and the extra components, so the price will be 64.99 USD. I think that's more than fair given all the added value :)

    The Tiny SiPM breakout board will get a bit cheaper, it'll be around 1.00 or 1.49 USD. I'm also thinking about adding the temperature corrected standard MicroFC breakout board to the store. Let me know if you're interested in that!

    Cheers!

  • Revision 4.0 Status Report

    NuclearPhoenix11/28/2023 at 22:55 0 comments

    The latest hardware revision of the board is now almost complete. I've finished work on the hardware, did some testing and adapted the Arduino sketch to work on the new hardware just now. I'm very shortly going to talk about all the changes with the Rev 4 hardware.

    Most of the actual circuitry has been taken straight from the last revision with only minimal changes. So like I said in one of the last logs here on Hackaday, this is mostly a quality of life update and largely concerning the change of the PCB layout.

    Here is a list of all significant changes to the electronics:

    • Added a small buzzer
    • Added an additional button
    • Added two MCX connectors for a much improved and reliable connection to your SiPM/scintillators
    • Added an optional gain trim pot for the pre-amp
    • The PCB now has 4 layers instead of 2, with much improved board layout and layer stackup resulting in a lot less noise according to my tests
    • Changed the two 4-pin and single 2-pin headers for a single 10-pin header for the broken-out GPIO pins
    • Added an additional cap to the SiPM PSU output for better stability
    • Increased decoupling cap size in general all over the board
    • Swapped out some critical resistors for ones with less tolerance and a much lower temperature dependency to increase the detector response over vastly different temperatures. In the past especially the threshold voltage could be easily disturbed by a change in temperature. This is now a lot better according to my testing as well, I didn't have much of a threshold drift up to almost 60°C.
    • Decreased the threshold voltage range maximum to a more reasonable value. This also makes setting the right voltage a lot easier and helps with drift.
    • Added a board cutout to help with separating the two PCB sections if you decide to cut the additional space off
    • Some part consolidation (BOM)

    Admittedly, this is all a bit technical, but I guess you're here for the tinkering and the behind-the-scenes stuff anyways ;D

    In short, what does this mean for you, the user? Well, first of all, you finally got a buzzer and an additional button, how nice is that? You also got a more reliable option to connect the SiPM if you so desire. The device should also be a bit more stable now in general. And on top of all of that, I got a noticeable improvement in energy resolution (up to 1%, but I have to do some more testing on that) and I was even able to get a usable spectrum down to about 10 keV due to the less noise!

    Here are two test spectra that I did that back what I just told you (only 30 minutes, so expect results to be a bit better with longer recordings):

    About 9% energy resolution with a 9% scintillator and a single SiPM.
    Easily able to fully resolve the lower ~26keV peak of Am-241. Range goes down to about 10keV.

    Here are some renderings on how the final PCB looks like (with an OSHWA mark placeholder). I already have an assembled one here, but that's nothing worthy of showing off due to all the soldering and changes I did to it ;)


    I am going to do some more testing for the Arduino sketch that runs on the Pico and I still have to implement the button and some other buzzer-related things. It already works totally fine and stable just like the old software, only some functions are missing and I want to do some more optimizations on top of that.

    There will also be another batch of assembled PCBs on Tindie in a couple of weeks, this time the pin female headers on the board will also come pre-assembled in contrast to the last batch where they were left out. Price will probably need to go up like $5 per piece to compensate for the added parts and the 4L board, but I think that's more than fair given the number of improvements ;)

    So stay tuned for more updates on the Tindie stock as well!

    In addition to all of that, the PCB will also get a final, tiny update when I get the OSHWA certification again (just adding the mark to the silkscreen). There is still a lot to do for me, I'm going to slowly update everything...

    Read more »

  • Updated 2x2 SiPM Array

    NuclearPhoenix11/24/2023 at 17:30 0 comments

    Just did a quick rework of the 2x2 MicroFC SiPM array PCB, added the temperature compensation from the single PCB and cleaned up the layout in general. It's now 2x2cm in size and still keeps the easy solderability for the four SiPMs (results in a fill factor of ~40%), while also adding the ~21mV/K slope for the power supply.

    Front side with only the four SiPMs

    Front side with only the four SiPMs
    Back side with all the other components
    Back side with all the other components

    If you want to use it, just connect your power to the "VCC" pad, ground to "GND" and then the SiPM anodes to the spectrometer. You can check the set voltage at the "C" pad on the PCB. If you don't want to use the extra circuitry, you can just solder your power straight to the "C" pad and not bother with the other circuitry. However, you'll still have to solder the low-pass filters for each SiPM, otherwise they won't work.

    You can find all the files here: https://github.com/OpenGammaProject/MicroFC-SiPM-Array-Board

    Let me know what you think!

View all 52 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

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