Advertisement
Intermediate Time: 2–3 weeks Electronics Engineering

High Voltage Power Supply (Geiger Counter)

Build a 400V high-voltage power supply for a Geiger-Müller tube radiation detector with pulse counting and dose rate display.

High VoltageGeiger CounterBoost ConverterRadiation DetectionSafety
DifficultyIntermediate
Duration2–3 weeks
Components10 items
Steps3 steps

Introduction

Build a 400V high-voltage power supply for a Geiger-Müller tube radiation detector with pulse counting and dose rate display. This comprehensive guide covers everything from design through implementation, testing, and deployment.

Theory & Background

Geiger tube: sealed gas-filled cylinder (typically Neon + Halogen at low pressure). Central anode wire (+) surrounded by cathode cylinder. Bias voltage: 400–500V applied. Radiation passes through thin window, ionizes gas → ion avalanche (Townsend discharge) → current pulse detectable externally. Pulse duration: 100µs (recovery time). Quench gas (halogen) prevents continuous discharge (self-quenching). Output pulse: negative-going (~400V) pulse on anode — requires quench resistor (10MΩ) to limit current and voltage divider + coupling capacitor to create MCU-compatible 5V logic pulse.

Advertisement

Components & Requirements

10 components required for this project.

#ComponentPurposeQty
1SBM-20 or J305 Geiger-Müller TubeRadiation sensing element (beta/gamma)x1
2MC34063 boost converter IC5V → 400V HV generationx1
3High-voltage capacitor (0.1µF, 630V)HV filter capacitorx2
4Fast-recovery diode (1N4007 × 4)Voltage multiplier rectifierx4
5Voltage divider (1MΩ + 10kΩ) for HV senseSafe HV measurement (÷100)x1
6Arduino NanoPulse counting and displayx1
7OLED 0.96" display (I2C)CPM, µSv/h displayx1
8Piezo buzzerRadiation click soundx1
9Interrupt input (100kΩ pull-up + 4.7kΩ quench)Tube pulse detectionx1
10HV probe cable (for oscilloscope testing)HV measurement safetyx1

Step-by-Step Implementation

Follow these 3 steps carefully.

1
Geiger-Müller Tube Operation

Geiger tube: sealed gas-filled cylinder (typically Neon + Halogen at low pressure). Central anode wire (+) surrounded by cathode cylinder. Bias voltage: 400–500V applied. Radiation passes through thin window, ionizes gas → ion avalanche (Townsend discharge) → current pulse detectable externally. Pulse duration: 100µs (recovery time). Quench gas (halogen) prevents continuous discharge (self-quenching). Output pulse: negative-going (~400V) pulse on anode — requires quench resistor (10MΩ) to limit current and voltage divider + coupling capacitor to create MCU-compatible 5V logic pulse.

2
400V Boost Converter Design

MC34063 boost converter driven at 50kHz. L1: custom wound on toroidal core (100µH). Switch: N-channel MOSFET (IRFZ44N). Diode: UF4007 (ultrafast, 1A, 1kV). Output: 400–500V adjusted by voltage divider feedback to MC34063 feedback pin. Voltage multiplier (Cockcroft-Walton): cascade of diodes and capacitors multiplies AC to higher DC. Alternative to single-stage boost — fewer inductor turns. Output ripple: typically 5–10V (measure with HV probe before connecting to GM tube). Safety: 400V at any current is lethal — treat all HV nodes with extreme respect.

3
Radiation Unit Conversion

CPM (Counts Per Minute): raw count rate — depends on tube size and sensitivity. µSv/h (microsieverts per hour): radiation dose rate — biological hazard unit. Conversion: manufacturer-specific. SBM-20: 1 µSv/h ≈ 175 CPM (for Cs-137 gamma). Background radiation: 0.1–0.3 µSv/h (10–50 CPM). Radiation sources: potassium in bananas (~0.01 µSv/h contact), smoke detector (Americium-241, low activity, ~0.01 µSv extra at contact), granite countertop, dental X-ray (50–100 µSv per image but brief). Alert levels: 1 µSv/h = elevated (investigate), 100 µSv/h = evacuate area immediately.

Code & Implementation

Core code for geiger_counter.ino:

geiger_counter.ino C/C++
#include <Wire.h> #include <Adafruit_SSD1306.h>  #define GEIGER_PIN 2          // Interrupt pin for GM tube pulses #define BUZZER_PIN 8 #define HV_SENSE_PIN A0       // Voltage divider output (HV/100)  // SBM-20 tube conversion factor #define COUNTS_TO_USPH 0.00571f  // 1 CPM = 0.00571 µSv/h  volatile unsigned long pulse_count = 0; unsigned long last_count_time = 0; float dose_rate_usph = 0; float cpm = 0;  // Interrupt: called on each Geiger pulse void IRAM_ATTR geiger_pulse() {     pulse_count++;     // Generate click sound on each radiation event     static bool buzzer_state = false;     digitalWrite(BUZZER_PIN, buzzer_state = !buzzer_state); }  Adafruit_SSD1306 display(128, 64, &Wire, -1);  void setup() {     pinMode(GEIGER_PIN, INPUT_PULLUP);     attachInterrupt(digitalPinToInterrupt(GEIGER_PIN), geiger_pulse, FALLING);     pinMode(BUZZER_PIN, OUTPUT);     display.begin(SSD1306_SWITCHCAPVCC, 0x3C);     Serial.begin(9600); }  void loop() {     // Update every 10 seconds for stable reading     if(millis() - last_count_time >= 10000) {         unsigned long counts_10s = pulse_count;         pulse_count = 0;         last_count_time = millis();                  cpm = counts_10s * 6.0f;                  // Scale to per-minute         dose_rate_usph = cpm * COUNTS_TO_USPH;                  // Check HV level (should be ~400V, sense = 4.0V with /100 divider)         float hv = analogRead(HV_SENSE_PIN) * 5.0f / 1023.0f * 100.0f; // ×100 for actual HV                  display.clearDisplay();         display.setTextSize(2); display.setTextColor(WHITE);         display.setCursor(0, 0); display.print(dose_rate_usph, 3); display.print(" uSv");         display.setTextSize(1);         display.setCursor(0, 20); display.print("CPM: "); display.print(cpm);         display.setCursor(0, 35); display.print("HV: "); display.print(hv, 0); display.print("V");         display.setCursor(0, 50);         if(dose_rate_usph < 0.5) display.print("Status: NORMAL");         else if(dose_rate_usph < 10) display.print("Status: ELEVATED");         else display.print("ALERT: HIGH RADIATION");         display.display();                  Serial.print("CPM:"); Serial.print(cpm); Serial.print(" uSv/h:"); Serial.println(dose_rate_usph);     } }

Testing & Troubleshooting

Test High Voltage Power Supply (Geiger Counter) by verifying each subsystem individually before full integration.

!
Troubleshooting Tips

Verify power voltages, check ground connections, use serial monitor for debug.

Real-World Applications

*Personal radiation monitoring in nuclear areas
*Food and water contamination screening
*Mine and geological radiation survey
*Nuclear power plant safety monitoring
*Medical physics radiation protection
*Environmental radiation mapping
*Educational nuclear physics demonstration
*Emergency response radiation detection

Extensions & Next Steps

  • Add GPS for radiation mapping (create radiation map overlaid on Google Maps)
  • Implement energy spectrometry with NaI scintillator + PMT
  • Build a beta/alpha/gamma discrimination circuit
  • Add wireless data upload to RadTrack.me or global radiation monitoring network
  • Design an SMT version with proper EMC shielding

Interactive Playground

Coming Soon

An interactive simulator will be available here — simulate circuits and run code in-browser without hardware.

Frequently Asked Questions

Is it safe to work with a Geiger counter and background radiation sources?
Background radiation: completely safe. Natural background (0.1–0.3 µSv/h) represents roughly 2–3 mSv/year — within normal variation across different locations. Calibration sources like small Americium-241 (smoke detector button: 1 µCi = 37,000 disintegrations/second) and Uranium glass: safe to handle briefly, don't inhale dust, don't ingest. High-voltage safety: the 400–500V in the Geiger counter power supply IS dangerous — can cause ventricular fibrillation. Keep HV nodes insulated and enclosed. Discharge capacitors before working inside. Never add more radiation sources without training — always verify dose rate with calibrated instrument first.
Advertisement