A 100V rail is recorded as 0.1V on
the ADC pin. With 10-bit resolution
on the ADC, I have a resolution of
5 mV on the ADC. This translates
to 5V resolution on the voltage rail.
This is plenty good.
I added one other feature. I
wanted a clean stable voltage on
the Geiger tube. With all these
pulses, I was getting too many
spikes. I added a three-stage RC
filter on the output of the rail. Each
capacitor is 10 nF, and I wanted a
1 ms time constant, so I used 100K
resistors in each stage.
By experimenting around, I
found that a pulse width driving the
transistor of about 0.5 ms was the
minimum width to get the full
voltage across the inductor. The
fastest they would be generated is
For these sorts of pulses, a
scope is an essential lab instrument
tool. One of my favorite lower end
scopes is the Picoscope 2204A: an
eight-bit 100 Msample/sec scope
with a list price of $129 shipped
with their standard scope software. Figure 6 shows the
voltage on the rail with the 1,000x attenuator and the
pulses to the transistor, while the voltage is being
regulated at 310V. Each pulse increased the voltage on
the rail; while between pulses, the voltage drooped due to
the 10 meg bleed resistor.
I like feedback. I added an LED in series with the
digital signal to the transistor that triggers the high voltage.
This way, I can glance at the board and confirm by the lit
LED that pulses are going to the high voltage generator.
Pulse Detection Circuit
Each ionization avalanche causes a brief current pulse
through the Geiger tube to ground. To measure this
current pulse, I passed the current through a 10K resistor
and measured the voltage pulses on my scope. A 1V pulse
means 0.1 mA of current. Figure 7 shows a few of these
pulses. The scope limit is 20V on this scale.
The pulses are typically greater than 0.5V across the
10K resistor. Just to give a little bit of margin, I used a
100K resistor across the transistor base in the detector
circuit. The exact value wasn’t important, as long as the
voltage pulses were above 0.6V — enough to turn on the
transistor and pull the Arduino pin down.
I set up the Arduino digital pin as an input using the
INPUT_PULLUP mode. This ties the input receiver on the
pin to the +5V line through a 10K resistor. Normally, when
the transistor is off, the input voltage read is a logic 1 at
5V. When the transistor turns on from a detected current
pulse, the input to the pin is pulled low and seen as a low
by the Arduino.
I used an interrupt function to react to the falling edge
signal picked up on one of the digital input pins. When a
falling edge is detected, the function in the interrupt
increments a counter and waits for 8 ms as a dead time.
In the avalanche process, sometimes double pulses are
created due to secondary breakdown in the gas. Adding
this 8 ms delay avoids any double counting. It also
increased the dead time.
For example, if in 60 seconds, there are 600 counts,
August 2017 35
■ FIGURE 7. Current pulses from the Geiger tube with a source nearby
showing current peaks from 0.4 mA to 2 mA.
■ FIGURE 6.Voltage pulses into the transistor and the output voltage rail
with just background counts.
1 Arduino Uno
1 Solderless breadboard
1 RadioShack 273-1380 audio output transformer
1 TIP31 NPN transistor
2 Red LEDs
3 1N4007 1 kV diodes
5 10 nF 1 kV ceramic capacitors
5 100K resistors
1 10 meg resistor
1 1 meg resistor
1 10K resistor
1 1K resistor
1 Arduino piezoelectric buzzer