Detecting Nuclear Radiation: The Geiger Counter Build

Hello Guys!

As I like to share my personal build project to have other people enjoy them.
Therefore I will share my progress of building a geiger counter with a Russian SI8B pancake tube here.

The tube features a very thin mika window.

The tube isn’t in production anymore. Its a old soviet counting tube thats very sensitive. It can detect alpha beta and gamma rays.

This old tube will get new technology to make it work.
Namely a ESP32 SOC with integrated wifi functionality and a color TFT touchscreen.

I have chosen a ESP32 because I want to have the ability to stream current measurement data to a PC for logging purposes.

The TFT will be used to display graphs and current radiation values.

Some other guy already did something like that. Here

I currently only got the tube but I will share my build progress if someone is interested.

1 Like

I will start with my requirement list.

It includes features i want and is my starting point for the electronic design.


  • Powered by a single Li-Ion cell (3-4,2V)
  • charging and programming with USB
  • able to have 24/7 runtime (charging rate needs to be higher than power usage)
  • full battery protection
  • able to send data to a MQTT host (over wifi)
  • geiger tube voltage adjustable (300-500V)
  • audible and visual count feedback

nice to have:

  • external counting tube connectable
  • touchscreen

I am not designing for lowest cost, so i will just grab the best / first part that fulfills all my requirements.

I all ready choose the ESP32 SOC to fulfill the MQTT over Wifi requirement.
This makes a 3,3V power supply necessary. As my battery will be below and above 3,3V, i will use a buck/boost converter to stabilize it to 3,3V.

I will use a TPS631000 as my main power supply.
Its not the most efficient and can supply more than enough current but its available and does not need many parts.

The complete 3,3V rail load will not be more than 500mA, so a Isat > 1A inductor should be enough.
To keep the efficiency highish, i will use a low resistance inductor.
Something like the Wurth electronic 744029001 should work well.

The data sheet of the TPS states we should use a 511k and a 91k resistor to set the output voltage to 3,3V. I do not have these values on hand so i will use something more common: 100k / 560k.

The basic power supply should be done.

Next on the list is the tube voltage generation.
It will use a simple boost converter with a voltage trippler behind it.

A quick spice simulation shows that this circuit is viable.

The PWM signal for the mosfet (i think i will be going BJT) will be generated by the ESP32 soc. R1 represents the tube and the voltage divider load.
A 10M voltage divider will be added to measure the tube voltage to close the feedback loop with the ESP32.

Thats it for today. Next on the list: the battery charger.

Hello Guys!

as i said: next up the charger.

It should be able to charge the battery, monitor its state and power the counter without a cell or with an empty one while still charging.

After some searching, i decided on the bq24075.
With its Power Path architecture, its able to charge the battery independently while still powering the device.
It can also respect the 500mA input current limit that the USB specifications set for USB devices.
Perfect for this device.

Sure it would be good do adhere to the USB spec…

500mA max after enumeration …

nobody else does that.

I could make the input current limit dynamically switchable by the ESP32.
But i dont think i would ever have a need for that. Allmost all USB ports can deliver 1A without a problem. Some cheap power supplys will crap out. However, the charging IC has a trick up its sleeve for situations like that.

A feature TI calls “DPM” or dynamic power management. The IC will essentially measure the USB bus voltage and reduce the charge current if the voltage drops too much. This makes a 1A current limit viable as even cheap supplys that cant deliver that will work.
The IC will just reduce the charge current if the USB port voltage is sagging too much.

So setting 1A and everything is good.

With everything set up and drawn we get the complete power supply solution.

The charge and power good pins will be piped into the ESP32 to display the current state: viable USB power input and if currently charging or battery fault.

To protect against over discharge, the ESP32 will measure the battery voltage and switch itself off by disabling the 3,3V buck/boost converter.

Quite easy so far.

I am not sure if someone is even reading this. But at this point i am committed and will post everything to have at least some reference documentation for me.

Whats next?
We are still missing the SOC and its connections to all the components.
Programming is also not possible right now. So i will do that first to have the USB part done!

I will need to convert the USB signal to serial. The ESP32 uses serial to upload programs to it and to talk to a host.
I will use a CP2102 as a USB/serial converter. Its found on most ESP32 breakout boards so i can just buy a NodeMCU and harvest the ESP32 and the CP2102 from it.

Its easy to use. Just connect some decoupling caps and pull reset high to make the chip provide a serial connection.

A little something is still needed: to program the ESP32 it needs to be reset while a special pin (GPIO0) is held low to signal the SOC that it should not run its saved program but rather receive serial instructions / a new program.
The DTR and RTS signals are used to set the ESP into programming mode. Two transistors are needed as gates to archive the right logic:

Only if DTR is high and RTS is low, reset is pulled low.
While RTS needs to be high with DTR low to pull GPIO0 low.

Programming is now possible with Arduino or ESPtool just by connecting to the USB Port.

Next up is the ESP module and display.
I will use a 2,8" TFT touch display on a breakout board. I cant be found by searching “2.8 Zoll TFT Touch LCD Display ILI9341 240x320” on aliexpress.

It features a SPI bus for the TFT, Touchscreen and SD card.
The SPI bus is shared between all of the endpoints and just uses a single chip select pin to ensure the SOC is talking to the right endpoint.
I am not sure if i will ever use the SD card but connecting it does not hurt.

Might be that i need some other pins to control some functions. I will add them later.

While i did the charger for the 18650 cell, i did not yet implement reverse polarity protection, fusing and voltage measurement.
Measurement is done by a simple voltage divider. To not waste power, a N-Ch fet is used to switch it off while the unit is off / no measurements are done.

Fusing is also easy: just a simple 0603 SMD fuse. If it blows, something is horrible wrong as the charger IC features short circuit detection, so soldering is necessary, no need for a easy replaceable fuse.

For reverse polarity protection, i use a N-Ch Fet.

The NTC is connected to the charger IC that suspends charging at too high and too low temperature.

Thats it for the battery and uC.

Just the tube count interface, the speaker, indicator interface and HV generator is left to do.

Last Step:

HV generation, counting pulse processing, speaker and led.

The HV generator is a simple step up boost converter with an additional voltage trippler to increase the voltage.
Q1 gets fed with a pwm signal which in turn periodically charges the inductor with a magnetic field.
When Q1 switches off, the inductor tries to keep the current flowing which increases the voltage = inductive kickback. This kickback is stored inside the output caps and trippled by the caps+diodes.

The output voltage is measured with the divider and fed into the esp32. It then can control the PWM signal into Q2 to set the voltage to anything we want.

The tube is connected with a 5M1 resistor. To count the pulses, a resistor (R19) is inserted into the ground path. If a pulse occurs, the tube is essentially a short, therefore R20 and R19 form a divider that and create low voltage spikes.
These spikes get compared to a reference voltage. The IC1A functions as a comparator and buffer amplifier. The pulses then get fed into the speaker, led and esp32.

The LEDs can be switched by the ESP32. I wanted to have the possibility to have the puls led be red/yellow/green depending on the dose rate. The ESP32 just needs to pull the corresponding pin low but does not need to set its pins fast to display the pulses.

Same for the speaker. The ESP got the ability to switch the speaker between 3 volume levels (off / low / mid / high) by setting the current thats charging the inductor L3. The inductive kickback is driving the piezo. This is done to increase the volume as 3,3V pulses would be really quite on the piezo.

Thats essentially the whole circuit. I will start the layout process but its a relatively simple and big board, so no real need to show that here.
Next few posts will be about the 3D design of the case.

A quick word on the tube:

The tube is very interesting, its essentially a big gas discharge tube.
Its filled? with low pressure helium and neon gas.
To use the tube, it gets supplied with a high voltage trough a high value resistor.
The voltage needs to be just low enough to NOT strike an ark inside the tube.

For this tube thats round 400V.

If radiation hits the fill gas, it will strip electrons off the gas and therefore ionize the gas slightly. The ionization is enough to cause an avalanche and strike an discharge which discharges the tubes capacitance.
Because of the high series resistor, the discharge promptly extinguishes and the tube electrodes charge up again.

That principle of operation is simple but effective. Everything with enough energy is causing a single event discharge. There is a dead time because of the “recharge” of the tube capacitance. This time limits the maximum radiation that can be counted.

The discharge has a nice side effect: Its visible!
Because of the HeNe fill gas and the mica window, each discharge is visible as a short reddish-orange flash. Quite nice to look at.
You can see more discharges with the bag of uranocircit closer to it.

Its a very sensitive tube, the large area should make it possible to measure bananas and salt (K60).
So the typical science stuff should be possible.

However I hope to NEVER see this tube glow continuously… It would mean my HV supply failed and produces enough voltage have a continuous discharge OR the scary variant: so much radiation.

Very nice old tech!

1 Like

reserved 3D case design

Took a while but I finally got the PCBs ordered, delivered and soldered up.

The display is on the front which also holds most of the ICs. (usb->serial, Lipo charging and dc converter)
The back side holds the battery and the piezo buzzer that’s used to generate the clicking sounds.

Thats it for now.
I will start working on the software soon.

Now with 100% more software:

I made a few mistakes on the first board. The uC internal pull-up resistors aren’t strong enough, so I needed to solder some external pull-ups to some pins.
I also ordered the wrong charger IC which makes a additional resistor necessary.
I experimented with the volume from the click sound and decided on two completely different resistors than planed.

Otherwise everything is working great.
The Touchscreen works good. Changing values is done by touching the values like the integration time in the bottom left.

The tube is very sensitive, I can certainly detect the granite tiles in the hall.
Some dried polish mushrooms also show increased values.

I just need to add Wifi/MQTT support and decide on what data to push over the USB port.
Also need to print a case…
:smiley: “just”