M-SiPM gamma counter


Yes, I’ve did it! Finally I’ve designed and made a portable gamma ray counter based uppon CdWO4 or CsI(Tl) scintillator coupled to a 6x6mm SiPM. It will be very usefull, connected via Bluetooth with my mobile phone, to find radioactive stuff at antique fairs and second hand stores. Let’s find some radium painted clocks! The key point is that it should had to be small enought to fit a pocket, with a rechargeable LiPo battery and USB-C connector for practicity. Scintillator crystal give it an unbeatable sensibility: at first I’ve prototyped it with CsI(Tl) but, in order to get it smaller, I’ve choosed CdWO4. This kind of material thanks to it’s huge density can be as sensible as Csi(Tl) with a lower volume.

This project is not open source, I will share the schematic and the Android App example made with App Inventor, you can download it here: p9A0i_bluetooth_dinamico


You can build your own version of the circuit/software for your and only your persona use, taking example from my schematic or copying it.

You cannot make a commercial product without infranging my Copyright (C) Papadopol Lucian Ioan 2021 All rights reserved.


This is the general schematic so you can give a general idea of it. Next sections will explain in detail some key parts of it.

Basically we can see 5 functional blocks in it:

-MCU Stem32L053 that counts pulses, turn on/off power to peripherials and send data via UART

-TIA + SiPM for pulse extraction/forming

-SiPM bias supply

-LiPo charger and voltage regulators

-Bluetooth module

Regarding LiPo charger and Bluetooth module there is almost nothing to say. They are standard building blocks. Voltage regulators, one is always working to feed the MCU. The second one is controlled by MCU in order to activate/deactivate Bluetooth, op-amp chain an bias supply.

The push button in the middle of the schematic does exactly that. Via ISR tells the MCU to give up/stand-by

How MCU detects/count pulses? It takes advantage of the internal OPAMP.  C_IN+ is the pulse input on the +IN oin of internal comparator, a voltage divider made with R18/R19 sets the LLD. In the schematic it’s set to 1/2Vcc because is 100k/100k. That’s wrong, put there to indicate that you have to verify with oscilloscope your noise level at C_IN+ pin and set the divider accordingly. I’ve set to 60mV. When a pulse is >> LLD the comparator triggers an ISR and increment a counter. This counter is read and sent via UART once per second and then reset.

SiPM bias PSU

This schematic generates +28.5V bias from 1S LiPo, 4V aproximatively, with 10mVpk-pk noise. It’s derivated directly from MAX5026 datasheet. Please read it!

R13-R14 selects output voltage. L1 is 47uH with 300mA current capabilty from Wurth brand. Output ripple filter is made with CLC cell C7-L2-C11. Please select good 1uF 50V ceramics or tantalum.


This part of the schematic despite it’s simplicity had taked me a lot of time to optimize it. The first opamp it’s the TIA. It’s gain is set by the 10k feedback resitor. The 470-680pF capacitor in parallel is needed to compensate the SiPM capacitance. You must choose it in order to prevent oscillation of the stage. The second stage it’s an inverting gain stage with 10x gain. You can change gain here. Please note that every opamp work biased at 1/2Vcc via the 10k/10k partitors on -IN pin. This gives the possibility to have negative pulses at the exit of the TIA that are reverted by the second, gain amp.

The OpAmp must be choosen to have >=1Mhz GBP for CdWO4 and >=10Mhz for CsI(Tl).

This is how pulses looks at the exit of this stage. The result is good enought for doing basic gamma spectroscopy. I will try do enable my project to do it by adding a bypass track to the ADC in pin and set the MCU ADC to run in continous + DMA mode with fully software peak searching. This will be added here ASAP