As you have probably have guessed from this website, I am really passionate about Physics, and I have a desire to understand how all visible and invisible things work on our Universe. Radioactivity has been a phenomenon that has always stirred my interest. I guess it reminds us of a world that is vaster than the visible and mundane everyday things that bore our everyday life.
Some time ago I decided to order a Geiger Tube on eBay. It's an SBM-19 tube, which mas made in the former Soviet Union. I went for this one as my first tube, since it is quite sensitive to background radiation, around 80 Counts per Minute (CPM), which means I can already get some "clicks" without the need of radioactive sources.
A Geiger tube is a hollow metallic cylinder, with another metallic rod in the middle, and the interior is filled with a noble gas like Argon or Neon. The metallic rod and the cylindrical shell are kept at very high voltage (around ~400V), just below the electric breakdown voltage of the gas. This way, whenever an ionizing particle/ray enters the tube, it ionizes one of the gas's atoms, causing an avalanche of free electrons which are accelerated by the extremely high electric field established between the cathode and anode. This in turn generates a current pulse, that signals an ionization event.
After this brief discussion, we can already have a glimpse of which would be the essential building blocks of a Geiger counter. We need:
The following sections outline how each of these blocks are internally design. In the end, you can see the final result of them operating together in the chapter Operation and Testing, and also the Future Work I have planned.
As previously mentioned, all code can be checked out from the following Git repository: https://bitbucket.org/jpcf1/geigerc
So... we need 400V! That's a far away from the 9V battery planned to be used! Well, it may seem like that, but in the end a high voltage simply means that there is a very high electric field between two points, and this is achieved, for instance, by accumulating charge on capacitor plates up to a point where the voltage across them is 100V, or 200V if we charge it a bit more, or 300V if we give it even a bit more.. until we reach our 400V target that sets the Geiger tube in its optimal operation region. Remember that Q=CV, or V=Q/C. And our battery has plenty of charge (Q) accumulated, we just need to find a way to jiggle it from one place to the other!
Okay, just connect the 9V battery to the capacitor, you might say! Well, from elementary circuit theory, the capacitor would asymptotically charge to 9V, so that the potential difference between the battery and the capacitor would match, and therefore no further current would flow into the Capacitor that would charge it to voltages higher than 9V. What we need then is a way to shoot current into the capacitor, regardless of the voltage across its terminals.
One way to achieve this is using a DC-DC Boost converter topology, as can be seen below.
The operation is very simple. As you might know, the voltage across an inductor with inductance L is V = L di/dt, and if we rearrange the equation, we get TODO. In simpler terms, the inductor accumulates current across itself whenever a voltage is applied to it, and the current cannot change instantaneously across its terminals, since the inductor differentiates current, and this would cause a current spike. Therefore, the inductor is the perfect "current pistol" we spoke about before (well, actually more like a current hose!). Consider in the above figure that we apply a Pulse-width Modulation (PWM) signal to the transistor gate.
On the folder analog/dcdc, you can find an LTSpice simulation of this circuit, together with a python script that automates the simulation runs. The values used for the components are:
The python script simrun.py
launches two LTSpice simulations in parallel threads that simulate two states of the circuit: the startup, and the steady-state
phase (when Vo has already reached its target value). Each simulation run has its own .sp
file for analysis, where you specify the SPICE analysis commands for
each type of run. They are, in turn, configured in a Python dictionary that is parsed by the script. The analysis file in both cases has only one variation, which is the .op
operation point setting for a steady-state scenario. In order for the script to run, you simply need to install the ltspice
and the matplotlib
python packages.
The simulation results are the following:
It takes around 15 seconds for Vo to rise to the operating voltage, but, when in steady-state, the voltage is stable around 401 V, with a ripple voltage of around 700mV. We should
note that this simulation is a worst-case scenario, since we have not included the Geiger tube, and the Rb is continuously sinking current to ground. With a Geiger tube however,
we would only have 10 μA pulses for each crossing ionizing particle, and otherwise it behaves like an open circuit: this means that the capacitor does not discharge as much (only to the
feedback resistors), and therefore the Vo decreases less. This is why we need a feedback control loop, which will be explained further ahead.
As can be seen in the analysis_ss.sp
and analysis_init.sp
files, I have included a few SPICE .meas
commands to calculate
interesting metrics such as average input and output power, average and peak currents, and so on.
.raw
files can be quite big (around ~1GB), depending on the length of the simulation.It is important to notice that, when running freely with a given duty-cycle, we can have a potentially instable system, whose output voltage can rise indefinitely until the capacitor explodes! Among other factors, even if we calculate the exact δ and T and leads to a given Vo, the load can vary. If the load increases, the capacitor discharges less during every transistorOFF stage, and therefore the net result can be an increase in Vo, instead of it remaining constant.
There is a very simple remedy for this: negative feedback! For this, we use Rf1 and Rf2 as voltage dividers, that divide Vo suitable to be fed to a microcontroller ADC. The microcontroller can then react on changes in Vo, and lower or increase the δ accordingly, so that less current, or more, is fed to the Capacitor.
The chosen values for Rf1 and Rf2 yield a voltage division factor of 0.004678. This means that for Vo = 400V, Vf ≈ 1.87 V, which is a voltage suitable for a microcontroller ADC, since its reference voltage will be the microcontroller supply voltage of 5V (an LM7805 voltage regulator is used).
From the Geiger Tube's Datasheet, and also from circuit measurements using the Soundcard Oscilloscope, I gathered two important facts:
The current pulses can be amplified by a BJT NPN Transistor. We can simply feed the negative end of the tube to the base of the transistor, which then generates a sinking current at the collector of Ic = β Ib, where Ib is in this case the current generated by the tube, and β is a transistor parameter, generally in the order of 100~200. In fact, I ended up using a Darlington Pair composed of two BC547 NPN transistors cascaded. As it is known from theory, this is the equivalent of using a transistor with an equivalent βeq = β2. With this configuration, we are effectively multiplying the current by a factor of around tens of thousands, bringing the current pulse closer to the hundreds of mA range. If we then connect a Resistor to the collector of this transistor pair, with that current, we already get a workable voltage level. Et voilà, we have our current-to-voltage ready!
Okay, now that the pulses coming from the tube are actually noticeable, we need to tackle the final problem of their timing. The "dead time" measurement I presented is actually a maximum value. This means that the pulses can actually be shorter, fainter. This might be okay if you want to see your particles as a blinking led, but timing variability is not good to serve as input to some sort of digital counting mechanism.
The solution I designed was to time the pulses using a 555 Timer IC, in its Monostable Multivibrator configurations, which means that, whenever triggered, the 555 generates a single-shot voltage pulse, whose timinig is extremely precise, and dictated by T=ln(3)×RC ≈ 1.1×RC, R and C being the values we choose for the Resistor and Capacitor used. Using R=22k and C=10nF, we get a pulse of 220 μ s, which is very close to the maximum dead time of the tube. The final circuit is shown below, in Figure 4.