DIY Geiger Counter
Ever since I first learned about radiation back in school, I've been fascinated by it. Discovered in 1895 by Wilhelm Röntgen and later studied in depth by Marie Curie, radiation is a hidden mystery. As humans, we can't see or feel these invisible rays and particles, which makes them even more intriguing. The dangers of radiation weren't really understood until much later. It wasn't until Hans Geiger and Walther Müller introduced the first Geiger counter in 1929 that we finally had a way to detect and measure it.
These days, radiation is carefully monitored, so it's not something most of us think about much. Normal background radiation isn't really a threat anyway.
But let's be honest — who doesn't love that iconic clicking sound from an old Geiger counter? There's something strangely satisfying about it. Just owning one would be awesome! So, I decided to build my own.
At first, it seemed like a Geiger counter would be way too complex to make at home. But it turns out, you actually can build one yourself! Sure, you could just buy one, but the DIY route is way more fun — plus, it's a great excuse to learn something new. The tubes themselves are pretty easy to find on cheap sites like AliExpress or eBay.
The high-voltage circuit was definitely the part that intimidated me the most. I put this project off for a while because back then, I knew a lot less about electronics than I do now. After a bit of research, I found a few different options and eventually based my build on this awesome open-source project: https://mightyohm.com/blog/products/geiger-counter/
With a simple 555 timer, you can create a boost converter circuit that provides an adjustable voltage for the tube. So, I ordered the parts, soldered everything onto a perfboard, and — to my surprise — it actually worked! Turns out, generating high voltage isn't as complicated as it sounds.
I also wanted to try out soldering with a hot plate for this build. It's a great way to step up your soldering game and prepare for using smaller components in future projects.
The circuit boards and stencil for this project were kindly provided by PCBWay — more on them later in the blog!
Project files can be found here: https://github.com/KonradWohlfahrt/GeigerCounter
Supplies
HV Circuit (only TH-Components, for easier soldering):
- 1x 1nF
- 2x 10nF
- 2x 220pF
- 1x 1N914
- 1x 1N4937
- 2x 5x20 Fuse clip
- 2x 5P-2.54 Header
- 1x 10mH
- 2x 2N3904
- 1x FJN3303
- 1x 220k
- 1x 1k
- 1x 330r
- 2x 100k
- 1x 8.2r
- 1x 10r potentiometer
- 1x 4.7M
- 1x 22k
- 1x 10k
- 1x TLC555
- 1x M4011/J302/SI-3BG
Main Board (resistor and capacitor size: 0805):
- 2x BH-AA-A5BJ012
- 1x Passive Buzzer 12x9.5
- 2x 22uF
- 6x 100nF
- 2x 22pF
- 1x 10uF
- 1x 1uF
- 2x 100pF
- 1x SS34
- 1x 6P (2x3) 2.54 ICSP Header (optional)
- 2x 5P-2.54 Header
- 2x Switch 12x12 & Round Button Cover
- 1x 22uH
- 5x 5161BY Seven Segment Digit
- 2x 0805 LED red
- 1x 0805 LED green
- 3x MMBT2222A
- 1x 220k
- 1x 30k
- 3x 10k
- 3x 220r
- 3x 1k
- 1x 33r
- 1x 1.2k
- 1x 680r
- 1x SKF14L3
- 1x Switch SMD 3x6
- 1x MT3608
- 1x ATmega328P
- 1x TM1637
- 1x 8Mhz/16Mhz 3225 crystal
3d Printed Housing:
- 8x M3 Threaded Heat Insert: 5x4,2mm (height x outer diameter)
- 3x M3x18mm
- 2x M3x6mm
- 3x M3x20mm
- 1x M3 Threaded Heat Insert: 3x4,2mm (height x outer diameter)
- 1x M3x4mm
The PCBs
As always, I designed the PCBs in EasyEDA. This time, I decided to split the project across two seperate boards — it just makes things easier to tweak and adapt later on. One board handles the tube circuit, while the other takes care of the "brain".
For the tube board, I went with through-hole components so it's nice and easy to solder — even if you're a beginner. You don't actually need the main board; you can simply connect the tube PCB to any microcontroller you like, and it'll work just fine.
The main board, on the other hand, is a bit more advanced than my previous designs. I mostly used SMD components, and this one definitely isn't meant to be hand-soldered with an iron. Instead, I wanted to give hot plate soldering a try — and honestly, it turned out to be so good and surprisingly easy!
Once the design was ready, I sent it off to PCBWay to have the boards and stencil fabricated. They always do a great job with both quality and turnaround time, and their services makes the whole process super smooth. PCBWay offers great production for your own projects. Whether PCB prototypes, CNC milling, or 3D printed parts, they offer it all for a good price and product like quality! Check them out if you want to take your projects to the next level!
Soldering the High Voltage Circuit
Start by soldering all the axial resistors and diodes. Follow the schematic or the parts table on my GitHub to make sure each resistor values goes into the correct spot. Pay close attention to the diodes — make sure they're oriented the right way before soldering!
Once those are in place, trim the excess leads and move on to the larger components. The variable resistor should be bent slightly so it sits flat on the board — this keeüs the profile nice and low.
Next, add the fuse clips and carefully insert your Geiger tube. You'll probably need to bend the tube's legs a little to get a snug fit.
Finally, solder two 5-pin (2.54mm) headers onto the PCB so you can connect it to a detection and display circuit!
Adjusting the Voltage
⚠️ High Voltage Warning
Be careful — the circuit can create voltages from 200 to 500V, which probably won't be lethal, but it'll definitely give you a nasty shock if you touch the wrong spot. Always stay alert and work at your own risk!
Start by powering the PCB using a 5V rail — either from your Arduino or a bench power supply. Connect your multimeter to the tube clips and note the voltage reading. Now, slowly turn the blue potentiometer to adjust the output.
For the M4011 tube, you're aiming for around 380~450V. Once you've dialed in the right voltage, you can safely insert the tube — and just like that, your high voltage circuit is ready to roll!
The middle pin labled "PULSE" is normally pulled up to VCC and briefly drops to GND whenever a radioactive particle ionizes the gas inside the tube.
You could stop here and simply connect the pulse pin to a microcontroller interrupt to count and display the readings — or even build your own custom radiation monitor. But I decided to go a step further and give it a bit of a retro flair with a bigh five-digit seven-segment display, all powered by just two AA batteries.
Soldering the Control Circuit
This was my first time soldering with a hotplate, but honestly, the process was pretty straightforward! I started by placing the stencil on top of the PCB and secured it with some tape. Then I added solder paste and used ascraper to spread it evenly across all the pads.
Once I removed the stencil, I was greeted with perfectly applied solder paste — very satisfying! Next, I placed all the components onto the PCB and heated the hotplate up to 170°C. Watching the relow process in action was really cool.
Of course, things didn't go perfect — I accidentally knocked off a few of the still-hot components and had to rework them with a regular soldering iron...
Finally, all that's left is soldering the on/off switch, buttons, seven-segment display, buzzer, and AA battery holder. You can also add the ICSP header to the PCB, but just make sure to select the correct top part when printing the case so everything fits properly.
Programming the ATmega
Programming the bare ATmega is a bit more complex than programming the Arduino or ESP. You can find tutorials online on how to use the Arduino UNO as an ISP programmer.
First, connect your Arduino UNO/Nano to your PC and upload the ISP example:
'File/Examples/11.ArduinoISP/ArduinoISP.ino'
Then, add the following line to your board mager URLs:
'File/Preferences/Additional board manager URLs'
Install the MiniCore board manager — restart your IDE once done — and connect your Arduino to the Geiger counter like the following:
I used the following settings for my IC - they may vary:
Burn the bootloader first, then upload the program with:
'Sketch/Upload Using Programmer'
Printing the Housing & Preparing
First, print the top and bottom of the case, as well as the battery lid. If you've added the ICSP header, make sure to print the top with the corresponding cutout. You can even print the radioactive symbol in a different color and glue it on top — it really makes your Geiger counter pop!
Next, take the eight threaded heat inserts and press them into the holes as show in the pictures. The smaller heat insert goes in the back to hold the battery lid.
Assembly
Now, place the Geiger counter into the top housing and screw it in securely with two screws. Attach the bottom part and fasten it with three screws. The battery lid will snap into the cutout on the other die of the screw.
And just like that — your very own Geiger counter is fully assembled! Pop in the batteries, flip the switch and enjoy your new tool.
How to Navigate
The two buttons on the Geiger counter let you navigate through its features. When you power it on, you'll see a quick boot animation. Before launching into the main loop, it will display the battery percentage — the display brightness will reduce if too low.
Pressing the lower button cycles through the different measurement modes: µS/h (microsieverts per hour), cpm (counts per minute) and counts.
The upper button resets the counts back to zero, which also restarts the µS/h and cpm readings. Holding down the upper button takes you into the settings menu. Once there, the lower button cycles through the options and the upper button changes the selected setting. A long press brings you back to the main display.
All your settings are saved in the EEPROM, so nothing is lost when the power is turned off.
Here's what you can adjust right now:
- Battery type: Alkaline, NiMH or Lithium
- Sound: On or Off
- LED: On or Off (note: the warning LED can't be turned off)
I might add more options later, but for now, these are plenty to keep things simple and functional.
Final Words
Let's wrap things up: I'm happy to say that I've met all my goals for this project! The Geiger Counter is fully portable, has that nice retro vibe, makes satisfying clicks, and — most importantly — it actually works. So far, I've learned that I don't own anything particularly radioactive at home, which is probably a good thing... even if I wish the numbers would climb a bit faster!
To really put it to the test, I reached out to my od physics teacher, who kindly offered to check the counter with some actual radioactive sources. From those experiments, I can say with confidence that the counter performs great. We even managed to overload the display. Since the progam uses interrupts to detect pulses, an extremely high pulse rate doesn't give the MCU enough time to update the display between events. Just imagine the buzzer going absolutely wild!
A quick note on the calibration factor — while researching, I found this excellent article:
https://sites.google.com/site/diygeigercounter/technical/gm-tubes-supported
It suggests that a conversion factor of around 153.8 works reasonably well for converting CPM to µS/h. Because this is a DIY project, you should expect some accuracy limitations. Ideally, you'd test your own tube and determine a more precise conversion factor — but for general use, this values seems pretty good.
As with any projects, there's always something to improve. For version 3 of the main PCB, I plan to address one issue: the MT3608 boost IC doesn't perform very well at the lower voltages supplied by AA batteries, meaning you can't use the full battery capacity. Unfortunately, I haven't found a suitable drop-in replacement. If you're building version 2, I recommend adding a 100µF capacitor across 5V and GND rails to help stabilize the output.
Check my GitHub to see whether the updated version is available — the new main PCB will remain compatible with both the HV board and the housing, and I'll upload a revised parts list as well.
Well, that's everything!
Once again, a bit shout-out to PCBWay for supporting this project with their excellent PCB fabrication. Thanks for reading — and until next time!