Geiger–Müller counter that works with Arduino
The Geiger–Müller counter is a relatively simple tool to measure ionizing radiation. To increase sensitivity, construction presented here contains three (instead of one as usually) soviet STS-5 lamps. This is important for measurements of natural sources of (low) radiation like soil, rocks (an article about my trip with Geiger–Müller counter on Śnieżka mountain).
Principle of operation of a Geiger–Müller counter
When high voltage (typically 380-420V) is applied to the Geiger–Müller tube, the tube doesn’t conducts electricity, but it does conducts for a short period, when radiation particle is observed. Those pulses are observed by the detector. The level of ionizing radiation is proportional to the amount of pulses detected in a constant interval of time (typically from 20s to 2,5min).
Geiger–Müller tube behavior can be described as a “button”, that is “pushed” by an ionizing particle.
Let’s go further into the details. Geiger–Müller tube is made of two electrodes, ionizing particle creates a spark gap between them, to reduce amount of current that flows in this situation, a resistor is put in series with the tube. Marked as R1 on above circuit, R6 on below. Typically it’s in a range 1-10M, acceptable values are listed in documentation of the GM tube.
There are a different ways to obtain a signal from the tube, in presented here, a resistor is connected in series between the tube and ground, changes of the voltage on the resistor are measured by the detector. This resistor is marked as R2 on above diagram, R7 on below. Typically it’s in a range 10-220k.
Similarly to diode, a Geiger–Müller tube has its polarity, when connected in the opposite direction it will work incorrectly.
Below is shown a signal from GM tube when a particle is detected.
The electronic circuit of a Geiger–Müller counter
MC34063 is a DC/DC converter used to produce required high voltage, one of it’s advantage over a simple NE555 or similar generators in this circuit is that it can monitor the output voltage and adjusts parameters to make it stable (R3, R4, R5, C3).
IC1A, R8, R9 are used as a comparator to filter out noises and produce binary signal (low=no pulse at this moment, high=pulse is currently being observed). R10, R11, R12 and a bunch of transistors drives LED, a speaker and (as an option) external digital devices, e.g. Arduino, or other evaluation board.
Waring! The device uses high voltage and can lead to unpleasant shock, injury or death. Don’t touch the PCB or tubes when power is on.
Vcc=5V, current consumption=30mA.
First running and troubleshooting
The voltage on C4 should be in an acceptable range for used GM tube. It’s usually is around 400V – be careful during measurements! If the voltage is out of range, then C1 (frequency of DC/DC converter), C3, R3, R4, R5 (feedback voltage of the DC/DC converter) can be adjusted.
Next thing is presence or absence of pulses on R7. If there’s no pulses as presented on above picture then verify if the GM tube is plugged according to its polarity.
If pulses on R6 are visible, but IC1A output doesn’t change, then R8, R9 should be modified, they set the threshold when signal signal from R6 should be interpreted as low or as high.
The PCB uses THT and SMD components, but nothing that can’t be done without hot-air station. It has one layer.
The project was modeled using Eagle, all files can be downloaded from my GitHub.
As visible on the pictures, I’ve used 32F429IDISCOVERY board to count pulses and to visualize results.
The project was made in CooCox IDE and was built on top of the libraries from stm32f429 repository made by MaJerle.
The firmware can be downloaded from my GitHub, from the same repository where hardware model is stored.