This is NOT a real radiation detector. It's a teaching tool that produces statistically realistic Poisson-distributed clicks at any background rate you choose, so you can demonstrate randomness, dose-rate maths, and counter electronics without owning an actual SBM-20 tube.
Why bother: a real Geiger tube costs more than a starter kit, runs on 400V, and is fragile. A simulated counter is safe for kids, takes 30 minutes to build, and you can crank the 'radiation level' up or down with a knob.
Parts
- Arduino Nano
- Active piezo buzzer (the kind with an internal oscillator)
- 10kΩ potentiometer
- 1602 LCD (with I²C backpack)
- 1 × LED + 220Ω current-limit resistor
The maths (this is the fun part)
- Real radioactive decay follows a Poisson process.
- The waiting time between events is exponentially distributed.
- Given a mean rate λ (counts per second), the time-to-next-event = −ln(U) / λ, where U is a uniform random number in (0, 1).
- So even though the average is 'X clicks per second', individual intervals can range from microseconds to seconds — which is exactly what gives a real Geiger counter that irregular, organic sound.
Sketch outline
void loop() {
float lambda = map(analogRead(A0), 0, 1023, 1, 200); // 1 to 200 cps
float u = random(1, 1000) / 1000.0;
unsigned long delayMs = -log(u) / lambda * 1000.0;
delay(delayMs);
digitalWrite(BUZZER, HIGH);
digitalWrite(LED, HIGH);
delay(2);
digitalWrite(BUZZER, LOW);
digitalWrite(LED, LOW);
counts++;
}On the LCD: a running average (CPM = counts per minute) and the current λ, so students can see how the dial maps to the click rate.
Teaching exercises
- Cover the buzzer and listen to two settings — can a human reliably tell them apart?
- Plot the inter-click intervals over a minute on graph paper — confirm they look exponential.
- Add a 'shielding' button that halves λ to demonstrate inverse-square law (sort of).
Upgrade path: when you're ready, swap the random generator for a real SBM-20 tube + a 400V boost converter, and the buzzer + counter logic stays exactly the same.