Geiger counters are devices used to detect radioactive emissions, most commonly beta particles and gamma rays. The counter consists of a tube filled with an inert gas that becomes conductive of electricity when it is impacted by a high-energy particle.
The Geiger–Müller tube or G–M tube is the sensing element of the Geiger counter instrument used for the detection of ionizing radiation.
Biemster wanted to improve this counter to an IoT device connected to the network byusing ESP8266 to discover easily where are the harmful radioactive things around.
Running down the center of the tube there’s a thin metal wire made of tungsten. The wire is connected to a high, positive voltage so there’s a strong electric field between it and the outside tube.
When radiation enters the tube, it causes ionization, splitting gas molecules into ions and electrons. The electrons, being negatively charged, are instantly attracted by the high-voltage positive wire and as they zoom through the tube collide with more gas molecules and produce further ionization. The result is that lots of electrons suddenly arrive at the wire, producing a pulse of electricity that can be measured on a meter, and if the counter is connected to buzzer heard as a “click.” The ions and electrons are quickly absorbed among the billions of gas molecules in the tube so the counter effectively resets itself in a fraction of a second, ready to detect more radiation.
In a nutshell, driving a G-M tube typically consists of 2 distinct parts:
- Providing the tube with a high voltage source for it to operate.
- Detecting each ionization event and convert it to a format that can be processed and sent over the internet.
Generating high voltage can be done by using PWM (Pulse-Width Modulation) signals after flashing the ESP8266 with the MicroPython firmware (version 1.8.3, with 10 kHz PWM support). Detection can be implemented as an interrupt handler that listens for and acts on discharges in the tube. Each discharge means a new detection.
You will need the following components:
- 1x ESP8266
- 1x STS-5 Geiger tube
- 1x 4.7 mH inductor
- 1x 4.7 nF Capacitor
- 1x KSP44 transistor
- 1x 2N3904 transistor
- 1x 1N4007 diode
- 1x 4.7M resistor
- 1x 100k resistor
- 1x 10k resistor
- 1x 220 ohm resistor
- 1x optional piezo buzzer
The circuit works as follows: A ~1 Khz squarewave turns the MPSA44 high voltage transistor on and off, generating high voltage when the inductors current is shut off. The voltage depends on the pulse width of the square wave which can be tweaked in software. The 1N4007 diode rectifies this voltage, and the High-Voltage capacitor removes most of the ripple on this voltage. The resistor limits current to the G-M tube. The current pulses from the tube generate a voltage drop over the 100K resistor which turns on the BC546. When this happens the voltage through the 10K resistor is pulled to ground, generating a negative going pulse each time the G-M tube detects an ionizing ray or particle.
The code reports every event over MQTT, the lightweight IoT protocol. It also reports the CPM (Counts per Minute) and the time passed since the previous event as (CPM,dt). The library of this project is available at Github, It handles the low level stuff such as PWM and pin assignments, and a general part that will communicate the measurements out to the world.
For more details, build instructions, and project updates you can follow the project on hackday.