Geiger Counter

Another take on a DIY Geiger Counter, capable of alpha, beta and gamma detection, in a 3D printed enclosure.

Similar projects worth following
A simple DIY Geiger Counter with the following features.

1. Detects alpha, beta and gamma radiation
2. Theoretical range of 0 - 10000 Counts/Second (CPS) with autoscaling and dynamic averaging for responsive Counts/Minute (CPM) displays
3. Displays immediate and accumulated dosage
4. Displays Counts and roughly estimated Sivert values
5. Provides a mode to accumulate over a specified period
6. Mute control
7. Rechargeable battery with Low Battery indication (or USB power)

I've long wanted a Geiger Counter, even though I really have no need for one.  Last year I decided to indulge this desire and after some research, I bought a LND712 tube from Images Scientific Instruments.  I contemplated trying to build my own high voltage generator but ultimately decided to save the time and frustration and bought this High Voltage generator board from RH Electronics.  I choose the LND712 because it is capable of detecting alpha particles as well as beta and gamma particles and isn't too expensive.  I hooked it all up and looked at the occasional pulse on my scope.  I also made a 555 timer chip based clicker based on the designs from Images Scientific Instruments.  Then I got busy and everything started collecting dust.  I recently had about a week between other [paying] projects so I threw this gadget together using other parts I had laying around and using my 3D printer.  Although the Lilygo T-display display is fairly small, it allowed an easily handheld device.

Although I'm not sure how many people will want to duplicate this exact design, I'm making it publicly available in the hopes that some parts of it may be useful to people.  Certainly it is easy to swap out various parts, such as the tube and/or HV driver for other components and still make use of the code here.  Or take the code and edit the GUI section for a different display.  The repo contains a hardware schematic, the firmware (source and compiled binaries), 3D printed enclosure design and STL files as well as an operational description and some notes.

Please note that this is an uncalibrated amateur device and it shouldn't be used for any critical or safety applications.

Since it is uses an ESP32 module it has plenty of room for future enhancements such as the ability to log to an external app over Bluetooth or Wifi or even to serve up a remote web view via Wifi.

  • Firmware update

    Dan Julio04/25/2024 at 04:00 0 comments

    I just pushed a new firmware version 1.1 (source + compiled binary) to the repo.  It has new features and bug fixes that I found when I finally got around to testing the code with a function generator standing in for the geiger tube so I could generate very high count rates.

    New Features

    The Counts Per Second (CPS) and average-based Counts Per Minute (CPM) are logged to the USB serial interface every second in an easy-to-parse format.

    I (15388) cnt_task: CPS = 2, CPM = 24
    I (16388) cnt_task: CPS = 3, CPM = 84
    I (17388) cnt_task: CPS = 3, CPM = 100
    I (18388) cnt_task: CPS = 2, CPM = 103

    The idea is that software running on an external computer could get access to the raw data from the Geiger Counter for use logging or posting to the server.

    I used LVGL to animate the movement of the gauge needle between updates for a much nicer GUI experience.  Now it looks a little more like a real analog meter.

    Finally, I also added a software click output on spare GPIO 2 because I figured not everyone would like to build the 555-based clicker hardware.  GPIO2 could be connected directly to a device like a piezo buzzer or it could drive a simple 2N2222A type speaker driver as shown below.  The pulse is 2.5 mSec long (changeable in config.h) with a 2.5 mSec off period after to ensure the speaker is never left in a 100% on state.

    Bug Fixes

    The GUI task computes versions of the raw CPS and CPM that are supposed to account for the tube's 90 µSec dead time.  However the calculation for the CPM was off by a factor of 60 which broke calculations of dose and automatic range switching for the gauge.  So that got fixed as did deciding which value to use in switching ranges on the gauge so another bug where the gauge needle would go off the far end because it was trying to display something like 1099 CPS on a range of 0 - 1000 CPS.

    Finally I completely rewrote the dynamic averaging algorithm used to compute the average CPM values.  Normally it's easiest to just store 60 individual CPS values in an array and average that for CPM.  However during conditions where the rate of pulses/sec is changing quickly, such as moving close to or away from a radiation source, then the CPM value is very very slow to change because it's being averaged over 60 seconds.  So my code looks at two averages, one over the entire array (up to 60 seconds of data) and one over the last 5 seconds of data.  If the short average is significantly different than the long average then the short average is used and the long average reset to restart with only 5 seconds of data in it.  A special case is implemented for very low counts (e.g. background radiation) where it's not uncommon for 2 or 3 CPS values to be 0.  In this case the average is completely started over so it grows one entry per second starting with the very low rates.

View project log

Enjoy this project?



flip.phillips wrote 04/24/2024 at 16:02 point

I have a keychain GC from Cherlnobyl - it was issued to citizens (and has a keychain loop) after the disaster to monitor the environment - so now I want to build one of these :)

  Are you sure? yes | no

Dan Julio wrote 04/25/2024 at 04:06 point

Wow.  That looks cool.  What a thing to have to have had.  Have you opened it up?  Does it have a some sort of output that could be hooked to the Lilygo T-Display?  That'd be a cheap way to give that piece of history a display.

  Are you sure? yes | no

flip.phillips wrote 04/25/2024 at 15:16 point

It's most definitely a noisy analog beast. But, a little ADC and some other magic. Shoot, these days there's probably a BT/WiFi MC w/ an ADC I could just slip in the case... so project ahoy!

  Are you sure? yes | no

Maximus Panin wrote 04/24/2024 at 16:01 point

Total price ?

  Are you sure? yes | no

Dan Julio wrote 04/25/2024 at 04:04 point

I spent $75USD for the LN712 tube, $50USD for the HV board and $20 for the Lilygo T-display.  Everything else I had in my "pile".  Any Geiger Counter tube/circuit that puts out a pulse can be connected to the Lilygo T-display if you already have one and just want the display (make sure it's 3.3V levels). 

  Are you sure? yes | no

aaaaaa wrote 04/17/2024 at 17:38 point

can You connect it to radioactive@home?

  Are you sure? yes | no

Dan Julio wrote 04/17/2024 at 22:25 point

No, sorry, it currently doesn't connect to anything.  I went to the website and it seems pretty dead and couldn't find any documentation about how one would go about logging to it.

  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