Geiger counter

From Alnwlsn - Projects Repository
Jump to navigation Jump to search
Completed unit in 2018.

A Geiger counter has been on my list of projects for a while, and in Spring 2018 I made one based on the very available Russian SBM-20 Geiger-Muller tubes, one of the most common cheap tubes on Ebay.

The heart of the Geiger counter is the GM tube, which is a tube filled with gas, and two electrodes. A high voltage is applied to the tube, usually around 400 volts. When a particle of ionizing radiation passes through the tube, it will ionize a molecule of the gas, and allow a tiny bit of current to flow through the tube. If we can detect the tiny current that flows through the tube, we can count them and find out the rate of radiation exposure in the area.

Hardware

Since it has been a while since building, I don't have a full schematic ready. But briefly:

  • The GM tube is a SBM-20. It can measure beta and gamma radiation. A resistor of several megaohms is placed in series to protect the tube from excessive current flow.
  • An ATTiny84 microcontroller controls the HV power supply, counting, and user interface.
  • The pulse detection circuit is made from a couple resistors, capacitors, and transistors, and comes from one of the common Geiger kit plans available online.
  • The power supply is a boost converter made from an inductor being repeatedly shut off, which creates high voltage spikes. A diode rectifies the high voltage and stores it in a capacitor. A voltage divider allows the microcontroller to read the high voltage. Signal to the boost converter is supplied by the microcontroller, at about 8kHz. PWM on this 8khz signal controls the output voltage. The ATTiny provides a feedback control system, which is an I (integral) controller, which I found was quite stable. I also tried a P controller and PI controller, but I could not tune these as well.
  • Power is supplied by an 18650 battery.

Case

The outside of the case has all user controls, inputs and outputs.

  • On the left side of the case, there are two switches:
    • Top Switch - When pulled towards front face, will enable internal speaker to provide Geiger "clicks"
    • Bottom Switch - When pulled towards face, will hold Center button down. I originally planned to use this for an extra user interface item, but ran out of IO.
  • On the front face:
    • 7 segment display - showing all the user interface operations
    • Blue LED - Turns on when high counts of radiation are observed
    • Buttons, Center, Left, and Right. These are the main interface controls.
  • On the right side:
    • 3.5 mm jack - provides Gnd, radiation pulse output, and serial output from the microcontroller
    • Barrel connector - Connect 3.7V - 5V here for external power. Center positive.
    • Microusb - Connect USB to charge battery. It should not be used to run the system, probably.
    • Power switch - Switches between battery power and external power barrel connector.

2019 redesign

The first case was very brittle ever since it came off the printer, and it eventually broke apart. I had made some more successful case designs for my other projects since then, and I decided to make a new case.

  • I removed the segmented interior, so that the different components could be set into the case without the trouble of running wires through a bunch of different holes.
  • Removed the switch that hold the center button down. Why did I need it.
  • Added screw holes to hold the switches in place with bolts instead of hot glue.
  • Placed all controls and ports on right side.
    • Bottom switch is power switch
    • Top switch is speaker on/off
    • The USB port is now used to power the device when charging, just like on the Model T speedometer. This replaces the barrel power connector.
    • Replaced the 1/8" jack with a 5 pin connector which connects to the ISP port (without VCC). This port can be used to program the ATTiny without opening the case, and the pins can be programed for other uses to get count data out.

Software / Operator interface

The Geiger counter is controlled mainly through the three buttons on the front of the unit.

  • The right button is the Mode Select button. Pressing this button will advance to the next mode. While pressed, it will display the number of the mode that will be active upon release.
  • The center button is used as the main Alt/alternate button. This is used because not all information can be displayed in just 4 digits.
  • The left button is either a second alternate button or a reset button.

Modes

There are 10 modes in the current system:

  • 0 - Counts per minute, calculated over 1 minute.
    • Center button - Displays seconds of the frame (0 to 59). When the number has rolled over back to where it was, one minute has passed, and a complete set of new data has been read.
    • Left button - Resets count.
  • 1 - MicroSiverts per hour, calculated over 1 minute. Displays as a float, yyyy.xxxx (ie 0001.251 or 1.251 uS/h. With no buttons pressed, the display shows digits after the decimal point (xxxx)
    • C - display high digits of number (yyyy).
  • 2 - Counts per hour, calculated over 1 hour. Displays as integer (yyyyxxxx). Normally displays values up to 9999 (the xxxx digits)
    • C - display high digits of number (yyyy).
    • L - display current minute of frame (0 to 59).
  • 3 - MicroSiverts per hour, calculated over 1 hour. Same display format as mode 1. Normal display is digits after decimal point.
    • C - high digits of number (before decimal place).
  • 4 - Total count. Display is an integer like mode 2.
    • C - display high digits of integer.
    • L - RESET this counter.
  • 5 - Threshold to turn on blue LED. When counts/min are more than this value, blue light will turn on.
    • C - doubles threshold value
    • L - halves threshold value
  • 6 - LED display brightness
    • C - Increment value
    • L - Decrement value
  • 7 - Display voltage of HV power supply (in Volts)
    • C - displays analogRead() value of HV read. (0-1023)
    • L - displays pwm out value (0-255)
  • 8 - Displays battery voltage (in Volts *100)
    • C - displays analogRead() value of battery reading.
  • 9 - Display 4 lower "random" bits
    • C - displays decimal representation of 8 random bits (0 to 255).

Files