DIY a Simple Geiger Counter

by Lawrence Link in Circuits > Arduino

1325 Views, 10 Favorites, 0 Comments

DIY a Simple Geiger Counter

rendered.jpg
IMG_20210404_115158.jpg

Introductions


Recently I've got interested in radiation, normally we cannot see charged particles travel around us (even through us!) But by using a device like a cloud chamber, the magnificent phenomenon will be seen -- tons of them are actually there!

Just by seeing how many trajectories are in there to evaluate how much radiation we are actually experiencing is really not enough. It is using a Geiger-Muller device to do jobs like this.

What is a Geiger Muller Tube?

A Geiger-Muller tube is a tube filled with noble gases (e.g. argon), and 2 terminals were attached at both ends. After applying a voltage that is not enough to ionize the gas when there's no particle passes through but if there is any particle passes through it can ionize the gas and thus make the tube conductive, we can get a pulse from it and detected by the MCU. The pulse frequency is related to the strength of radiations.

Download the Code and PCB/Schematic Files(EasyEDA)

F3%SD{A`Q49P}EEZISB]KFP.png

I upload my code to my Github repository, and you can download it simply by clicking [↓CODE] button (main branch).

In the folder named "hardware", you can find the PCB file and the schematic file if you want to make any change under the license of GPL 3.0.

I also upload a release of the board Gerber file if you want to download it directly.

Soldering Essential Part That Is Needed to Program the Chip

Schematic_Geiger Counter II_2021-04-04.png
(8H~JNGAXHG4IBE}}CC3_W1.png

To program the chip m328p only requires a few components. Personally I recommend to program the chip first, don't play with HV source first, if anything goes wrong it might destroy the MCU.

First, solder U3(m328p) and decoupling capacitors around it, then X2 crystal, and the RN1 pull up resistor network, then J1(ICSP) and J2(HUART). (Soldering the screen and its components is recommended here)

Then connect a programmer like USBasp(Currectly I'm using) or AVRISP, or even another arduino that is programmed as "Arduino ISP" to program the chip.

If you want to skip the step of using Arduino IDE, you can use the binary files in folder "firmware". and upload it with something like AVRDUDESS (board v2)

Once the program is uploaded, you should see the screen show my logo.

Other Components of the Project

WARNING: DO NOT CONNECT THE GEIGER TUBE TO THE BOARD WITHOUT TUNING THE VOLTAGE!

If the thing all goes right in the STEP2, we can solder other components on the board now.

The recommended order is:

Buttons & RGB LED & Buzzer -> HV Power Source -> Power Managing circuit

Before you solder the HV power source and connect the Geiger tube, you can try to short PD2(pin 32) to GND to trig the counter, if the screen turns to the counting screen means the MCU works fine.

After soldering the button stuff, it's time to do the HV part. First, make sure that you have disconnected all power sources and the HV switch is OFF(if you forgot, this might give you a painful shock and has the potential to cause other dangerous trouble). When you believe the HV part is finished, hook up the power, then connect a multimeter or the scope probe to the output of the HV source. I'm using an M4011 Geiger-Muller tube so we should tune the voltage to a level that is recommended on the datasheet(~310V). Also, you should avoid touching the HV part. I'll recommend you to have plexiglass at bottom

After doing these, you should hear the typical Geiger clicks, and it's time to put the power managing circuit on it.

Now the board should be finished.

Theory Behind Counting

In the code, we can find a function that converts CPM to usv/h, and the usv/h is a more standard unit to use.

Every tube we can buy gives us a different converting ratio, but typically 151CPM = 1uSv/h

I used Timer1 to count pulses in 15secs, and then multiplex them with 4 to get CPM, then convert to sievert.

For more detail, you can check my code, and if you have any questions please let me know in the comment. If you like this project, please consider having a Star on my Github page. And even help me to create more functions. :-)