Introduction: How to Make a Fake Geiger Counter

Picture of How to Make a Fake Geiger Counter
What sound effect can enhance a mad scientist's lab at Halloween?  The ticking of a geiger counter!  And imagine...What if you had a fake geiger counter you could wave over anything, and whenever you wanted, set off furious clicking? 

That's what I built for our Halloween party last year.  We had a guided tour, where the resident mad scientist took people around in a small group.  When they got to the toxic waste dump, they were "checked out" with the fake geiger counter...and wouldn't you know it?  Some of them were already exposed before they came.  Tsk, tsk.

It turns out that a low-key, realistic effect like this will creep people out much more than a lot of traditional stuff (I speak from experience.)  A skeleton popping out of the ground?  Eh.  A zombie munching on an arm?  Cute.  I've been exposed to radiation?!  AAAHHHHHH!

After searching the web, it seems that no one has created a live geiger counter sound effect generator.  You can find short sound clips of geiger counters, but they're only a few seconds long and they sound like a recording, plus if you used one it would repeat the same pattern over and over.  I wanted a hand-held device that would generate the sound effects live.

This is an extremely accurate simulation of the real thing.  I've shown it to people who work with radiation in their jobs, and they've all said, "Yup, that's what it sounds like."

Check out this video:

There are two parts to making this - the electronics and the geiger counter prop itself.

Electronics Sound Effects Overview

This is powered by an Arduino.  When you turn it on, it makes a slow, "background radiation" clicking sound effect.  Press the button and the sound effect rapidly ramps up to an alarming rate.  Release the button and the clicking goes back to normal.  There's also an optional LED that acts as a power light and flickers with the clicking, but the unnerved Trick-Or-Treaters didn't seem to notice it.

The Arduino generates a randomized clicking on one of its pins.  This is sent to a small LM386 amplifier which boosts the volume, and powers a mini 8 ohm speaker.  I tried connecting the Arduino directly to the speaker, but even with a capacitor, you can barely hear the clicks, so I added the LM386 circuit.

UPDATE, 5/22/2013:
I've found a pre-made mini audio amp that is better than the LM386, and is really cheap.  See the last step.

Step 1: Electronics Schematics

Picture of Electronics Schematics

This is quick to assemble on a breadboard.  Note that you should click on the schematic and view the original size, so you can read all the notes clearly.

Electronics parts:

- Arduino.  I used the "Diavolino" from Evil Mad Science: 
If you use this you'll also need an FTDI cable to program it, see their site for details.  Not only is it inexpensive but the Evil Mad Science people have lots of other cool kits.  Check out their Larson Scanner!
- Battery box.  The Diavolino can use one that holds 3 AA batteries and this lasts much longer than a 9V.

- LM386 Low Voltage Audio Power Amplifier.  This is a classic chip, available at Radio Shack, Jameco, etc.
- 220nf capacitor
- 220uf electrolytic capacitor
- 8 ohm speaker.  I had a few surplus speakers, but none of them were good enough.  I finally used a quality one that's loud, Jameco Part no. 135589.

- Pushbutton, momentary on.  One of these:
- 2.2k resistor

- LED.  I used red.  This is optional but adds a nice touch.
- 330 ohm resistor

- On/off switch.  This is spliced into one line from the battery box to the Arduino.

After testing the circuit, I built the LM386 amp on a small Radio Shack project board, and included the connections for the button as well.  This was to save space in the project box.

Step 2: Program the Arduino

Picture of Program the Arduino

A little background and credit where credit is due...

This project started when "joshua17ss2" on asked if there was a circuit to make geiger counter clicking sounds.  After some discussion, "Hooked on Scares" (who knows his stuff and has his own controller board at suggested some code.  I discussed this with a friend of mine, who is a network software engineer, and he got intrigued by the problem.  After a couple of weeks of coding in his off time, we had the result I've got here.  Of course, when he did it, he said, "What's this Arduino stuff?" and coded it in straight C for the Atmega chip.  After Halloween, I spent time over a few nights wrapping my head around what he'd done and porting the code to the Arduino environment, which turned out to only be a few changes. 

If you want to run this on an Atmega chip without the Arduino bootloader, you can find the changes needed in the comments.

So, program the Arduino with this code, hook it up to the LM386 amp, speaker, and the button, and you'll be good to go.

Step 3: Assemble It

Picture of Assemble It

These days, a geiger counter is a small square box.  But we wanted something a bit more interesting (and threatening), so I made this look like one of the older models with a handle.  Do a Google image search for "geiger counter" if you want examples.

Parts needed:

- Project box.  The one I had on hand is 5 1/2" long, 3 1/4" wide and 2 1/2" high.  Made by Serpac, I got several at Jameco.
- 1/2" PVC parts.  From the hardware store.  There are two end caps, two 90 degree elbows, and some straight parts.
- Lid from a can of spray paint, used for the sensor area (the speaker is hidden here).

This was pretty simple, I got it all done in an afternoon.  We were in a rush to complete a bunch of stuff for Halloween, so this isn't as neat as it could be (you can see hot glue here and there, and the holes in the sensor aren't as straight as I'd like, and they could've been cleaned up a bit), but it was used at night and no one noticed or cared.

Assemble the handle from the PVC tubing.  Drill holes in both end caps, one to mount the button and the other for the wire to come out inside the box.  Solder long wires onto the button.  After spray-painting the handle black, thread the wires through the hole in the cap, screw the button in place, put the cap on the end of the handle, then thread the wires through the rest of the handle.

Drill a hole in the project box for the PVC tube, push the end of the handle through the hole, thread the wires through the other end cap, and use the second end cap to hold the handle in place.  Hot glue around the base of the handle where it meets the project box will keep it from slipping.

For the sensor, cut the lid of the spray paint can down so it's shorter (this is 3/4" tall), then drill a bunch of holes in it in a pattern.  I also spray painted it silver.  When you figure out where the sensor will mount, drill a hole for the speaker wire behind it.  Hot glue the speaker in place in the lid, thread the wires from the speaker through the hole in the body, and hot glue the sensor assembly in place.

Drill holes for the on/off switch and the LED.  Wire them up and mount them to the lid.

Finally, tape the battery box into the bottom, connect up all the wires to the Arduino and the LM386 amp, and close it up.

Step 4: Here's the Result

Step 5: Update, 5/22/2013

Picture of Update, 5/22/2013

A friend let me know about this very cheap, very tiny, audio amplifier board.  It's based on the PAM8403 chip and can easily be found if you search for "PAM8403 Super Mini Digital Amplifier Board" or "Mini Digital Power Amplifier Board 3W+3W DC AMP".  It costs less than $5.00 and can be found as low as $3.25.

You can use it instead of the LM386 board, and it will take less time to make, and will be louder.  The top photo is a closeup, and you can see how small it is really is next to an USQuarter on the breadboard.

To hook it up, power goes to 5+ and GND in the center (the GND next to L+), the speaker goes to R+ and R- on one end, and then the sound from the Arduino connects to RIN on the other end of the board.  The board supports stereo (and is pretty good at it!) but for this use, we only need one channel.  I found no difference in this application if I connected the GND next to the RIN to the ground of the circuit.


PhilM49 made it! (author)2016-04-27

I ended up building mine in an old 720 civil defence meter, based on the instructions from "The Tinkerers Apprecentice" below. Used an Adafruit Mono 2.5W Class D Audio Amplifier - PAM8302 (, and works perfectly ($3.95), and a barebones arduino.

Has anyone ever mad any luck in getting the old Civil defence round meter to work via PWM or something else - this would be perfect. The meter is marked as 50 micro amps, but I don't know it's internal resistance

PhilM49 (author)PhilM492017-02-11

Has anyone ever figured out how to get one of the old analog meters in the unit working? That would make this perfect.

PhilM49 made it! (author)PhilM492017-02-19

Completed my second model and have the meter in the old Civil detector working perfectly. Also, I used a tilt sensor to trigger it so no need for external buttons etc.

Jeff Haas (author)PhilM492017-02-19

Very nice!

PossumT made it! (author)2016-10-31

This Halloween I decided to make a fake Geiger counter. I thought I'd do a web search to see if someone had done it before (no use reinventing the wheel) and I came across this page. Excellent work!

I made a few changes to the design:

1) The Arduino environment allows you to configure inputs with an internal pull-up, so you can get away without using the external 2.2 k pull-up resistor. Not a big deal, but it doesn't hurt to reduce the component count. I also omitted the LED as suggested.

2) I can see that the code was written by someone with an embedded controller background. It's very efficient, but it's quite difficult to follow and doesn't take advantage of the built-in features of the Arduino environment.

I've created a simpler program which does the job. The ramping up/down of the click rate isn't as sophisticated as in the original design, but sounds good enough to me. Here is the code I used (hope it displays OK):

/* Fake geiger counter V1.0
By Possum Dreaming 2016

D18 is connected via a switch to GND, pressing the switch makes the counter tick faster
D19 goes to a transistor which drives the speaker

#define SLOW_TICK_DELAY 80

int max_off_delay;

void setup() {
pinMode(18, INPUT_PULLUP);
pinMode(19, OUTPUT);
max_off_delay = SLOW_TICK_DELAY;

void loop() {
int off_delay = random(max_off_delay) + 1;

for (int i = 0; i < off_delay; i++) {
// Poll the button while waiting
// Button pulls down, so 0=pressed 1=released
if (digitalRead(18)) {
// Released, so ramp speed down (i.e. increase the delay between ticks)
if (max_off_delay < SLOW_TICK_DELAY) max_off_delay++;
} else {
// Activated, so ramp speed up (i.e. decrease the delay between ticks)
if (max_off_delay > FAST_TICK_DELAY) max_off_delay-=2;
// To make the ramp up less jumpy, we exit the delay loop at once if the maximum delay has reduced to below the current delay.
if (max_off_delay < i) break;

digitalWrite(19, HIGH);
digitalWrite(19, LOW);

For anyone using this code, the line


determines the width of the "click" pulse sent to the speaker. You might want to adjust this value to suit your individual speaker. Too small a delay reduces the volume and too long a delay sounds less like a click.

BTW, I changed the I/O to D18 for the input and D19 for the output simply to make it easier to connect to the board I had.

3) I didn't have an audio amplifier to drive the speaker so I simply drove the speaker directly using a small NPN power transistor (see the attached schematic). You could also use a MOSFET.

If you do this, you will have to use code I've provided and not the original code. The original code appears to produce a square-wave output rather than a short discrete pulse for each click. This is fine when using an audio amplifier coupled via a capacitor like in the original design, but when driving a speaker directly like I did, it puts DC through the speaker coil for the entire positive portion of the wave. This would give an average power dissipation of around 2 W, which will most likely burn out a speaker designed for more like 0.5 W.

4) I used 4 AA cells rather than 3 to give me a bit more headroom when using old batteries. Also, the speaker was powered direct from the batteries so that I didn't stress the on-board regulator of the cheap Chinese Arduino clone I used.

Jeff Haas (author)PossumT2017-01-05

Very nice! The little Nano clones were not so easy to get when I first did this, but they're perfect for it. I also like what you did with the grill on the bottom.

PossumT (author)Jeff Haas2017-01-06

Thank you :)

The grill at the bottom was a case of necessity being the mother of invention. I had originally intended to just drill some holes in the plastic, but they didn't look very good, so I covered them up with an off-cut of heavy-duty mesh.

jonthan.kidishman (author)2016-12-28

hey jeff
could you post a picture of the circuit scheme with the PAM?
having a bit of trouble trying to guess it out.

Zoom in on the photo of the PAM board next to the breadboard (it is upside down compared to the diagram that shows the connections).
Referring to the photo, from top to bottom:

The first two are the sound from the Arduino...
Black goes to GND. Green is the signal (sound input from the Arduino).

Next is power from the Arduino:
The red wire is 5V from the Arduino, black is GND to the Arduino.

The bottom two are the speaker connections. These are red and black but when you use a little speaker like this it really doesn't matter which one goes where.

Main tip is to make sure that the sound input from the Arduino goes into the same channel as the sound out to the speaker - so GND and RIN for the input and then R+ and R- for the speaker connection.

CrystalL65 (author)2016-07-18

Maybe we chose this as a bar too high for our first arduino project. step two you gloss over just how to get the program onto the board. saying you can put it directly onto the chip. so how...

Jeff Haas (author)CrystalL652016-07-18

If you're not familiar with any Arduino concepts, go to the tutorials at one of these websites and work through hooking it up, loading a simple blinking LED program onto it, etc.



Jeff Haas (author)2016-04-22

Phil, whenever you connect a button to a microprocessor (Arduino, Basic Stamp, etc.) you need the resistor. Here's a link to a tutorial on the Arduino website, it explains what's going on:

Jeff Haas (author)Jeff Haas2016-04-22

One more link - there's a great Instructable on how Arduinos read buttons.

PhilM49 (author)2016-04-22

Hi all

I've just made one of these with an Arduino UNO, and it works fine, except sometimes seems to spontaneously go into "detection" mode i.e. as if the button has been pressed, but it hasn't. I can't read this style of Arduino code - anyone have any suggestions?

Jeff Haas (author)PhilM492016-04-22

Double-check the way you've got the button set up - it needs the pull-up resistor connected as in the diagram. Otherwise you might be false triggers.

Southpole (author)2015-07-28

it's interesting that you have to resort to an Arduino. there really seems to be no analog schematic for a geiger counter sound effect. i guess one would need a source for shot noise with adjustable frequency, but it really does not appear to exist.

Jeff Haas (author)Southpole2015-07-28

There were no analog circuits I could find when I first started this project. Your comment got me to search again...I turned up two newer projects that create similar sound effects, but with much less control and fidelity to the sound of a real geiger counter.

The advantage of an Arduino is that there is software control over the effect, including the ramping up and down of the clicking when the button is pressed. Also, some physics formulas were used to get the right type and rate of clicking.

And since I posted this in 2012, Arduino clones have become very inexpensive, which makes this way of doing it less trouble than wiring up a circuit yourself.

shatan made it! (author)2014-06-11

Thanks to Jeff i made my counter version for STALKER LARP.

acmefixer (author)shatan2015-06-30

I'm going to check eBay for one of those GCs. For an aiduo amp, all you need is a transistor and a resistor or two. Pulses are easy to amplify.

Jeff Haas (author)shatan2014-06-11

Very nice!

Do you mind showing what you did to make it look that way, and the other internal details (like the gauge on the top)?

shatan (author)Jeff Haas2014-06-26

(sorry for my english)

Most interesting
part is "magic eye" tube. It was used in old sound amplification
circuits, but this one i bought in ebay. It works on +12vdc so i have to use big
12vdc accumulator. There are two audio amplifiers: one PAM8403 board and one
from old PC speakers which have sound
level knob. Through bigger amplifier i ran bigger speaker and tube driver,
through smaller amplifier i ran second speaker and sound value meter(which i
found in broken big amplifier)

And i have done
little changes in C code to make LED blink depended on sound.

Box is just
ordinary electric distribution box which i painted in green.

Jeff Haas (author)shatan2014-06-26

Thanks for the info and the pictures! I didn't know what a Magic Eye tube was before this. I found this article on Wikipedia which explains it:

I'm sure people reading this will want to know what updates you made to the C code. If you have time, please upload it here.

Also, your use of the Magic Eye gives me an idea, for people reading this in the future - I think you could use an LM3914 to drive an LED bargraph to get a modern version of this display. See info at Sparkfun:

shatan (author)Jeff Haas2014-08-26

Sorry for late response, but i have lot of work nowadays. So difference in code its just one word in 143 line. Need to change from "shift" to "sit" in 143 line: "led_out(sit);" For next year i thinking to add battery voltage meter like or . It makes me lot of fun:)

Jeff Haas (author)Jeff Haas2014-06-26

Also this tutorial on the chip is good:

jan.koppandi (author)shatan2014-08-21

Were is the sparkling LED with the "e" and the atom-symbol in the left-down-corner coming from?

The Tinkerers Apprentice made it! (author)2014-10-04

Hi Jeff,

Sorry this took so long to get posted, I've been in a rush to get the rest of my mad scientist's lab ready! Here's the pics of my modified Geiger Counter, using your fabulous instructable! I just followed it exactly and everything worked first time =) First off, I just clipped a couple of wires and unscrewed the original guts to make room for my new ones. Then I unscrewed the original "zero" knob and mounted my switch there. I had to drill a few holes in the Geiger Counter for the button at the tip of the handle, and then holes for the speaker (I really did have a pattern set out for the speaker holes, not sure what happened to it during the drilling though, lol). I hot glued the speaker directly to the case, making a good bead around the lip of the speaker, and hot glued all open electrical connections for insulation. And finally, I mounted the electronics with sticky velcro to keep it insulated from the case.

Thanks again for the inspiration and clarification on my questions!


Wow, that's pretty impressive.

FYI to other readers...there are a lot of these old geiger counters on ebay.

Hi Jeff,
Thanks for this project! I'm wondering, if I use the mini digital amplifier board, do I still need the capacitors and if so, where do I place them? Thanks for the help, I'm planning on making this using an actual old style Geiger counter for my mad scientist lab this year!

Good question. I just re-tested this - you don't really need the capacitors if you're using the small audio amp.

I solder short wires to the audio board and power it from the Arduino. The 5V and GND in the center go to those connections on the Arduino, and the RIN (for Right speaker in) takes the connection from pin 10. Then R+ and R- on the audio board go to your speaker. An old computer speaker works fine, but I tried a few, and the best was the heaviest, because it had the biggest magnet on the back. If the speaker is in a closed compartment, it will sound better, since all the sound will be reflected out.

And please post a video of your completed project! It will be interesting to other people here to see how you modified the old Geiger counter.

Thanks so much for the quick reply! I'll be sure to post pics or video of my completed project, I'm just waiting on the speaker to come in and then I'll get started on it! Thanks again.

akumabito (author)2014-09-01

I would like to make one, but I am a noob at Arduino. Someone gave me an Adafruit Gemma board. From what I can tell, it's basically a severely stripped-down version of the regular Arduino boards. Can it be used for this project?

When I try to load you code, it gives me an error message. I assume it's either an error on my part, or the Gemma board can't run the code..

'TCCR1B' was not declared in this scope.

FUMH43DH2MYLUI4.ino: In function 'void stop_timer1()':

FUMH43DH2MYLUI4:45: error: 'TCCR1B' was not declared in this scope

FUMH43DH2MYLUI4.ino: In function 'void start_timer1()':

FUMH43DH2MYLUI4:50: error: 'TCCR1B' was not declared in this scope

FUMH43DH2MYLUI4:50: error: 'WGM12' was not declared in this scope

FUMH43DH2MYLUI4.ino: In function 'void set_compare_timer1(uint16_t)':

FUMH43DH2MYLUI4:62: error: 'OCR1AH' was not declared in this scope

FUMH43DH2MYLUI4:63: error: 'OCR1AL' was not declared in this scope

FUMH43DH2MYLUI4.ino: In function 'void ioinit()':

FUMH43DH2MYLUI4:156: error: 'TCCR1A' was not declared in this scope

FUMH43DH2MYLUI4:157: error: 'TCCR1B' was not declared in this scope

FUMH43DH2MYLUI4:163: error: 'WGM12' was not declared in this scope

FUMH43DH2MYLUI4.ino: In function 'int main()':

FUMH43DH2MYLUI4:178: error: 'TIMSK1' was not declared in this scope

Jeff Haas (author)akumabito2014-09-01

The Adafruit Gemma has a different processor than a standard Arduino. It's designed to be a very small board that is used in "wearable" projects and sewn to clothing. The processor has much less memory and doesn't support all the same features as the chip on a regular Arduino.

If you want to do this project, you'll need to get a standard Arduino or Arduino clone.

danisparx (author)2012-09-14

i have just finished building this but it's r quiet any ideas as to why?? or a solution to make it louder, need it for mid next month and my knowledge is lacking Thanks

Jeff Haas (author)danisparx2012-09-14

Make sure you use the amp, if you don't use that, you get a very quiet clicking sound. I also had to try a few different little speakers to get one that performed well.

danisparx (author)Jeff Haas2012-09-15

i made the amp as per your design then i also checked a couple of other sites about the LM386 chip and found the gin could be adjusted witn a cappy between 1 and 8 and then a pot in series but even trying that i cant get any real sound from it??

danisparx (author)danisparx2012-09-15

ok maby when i follow all the design and check my work properly ill realise to ground pins 2 and 4 lol that helped but im still not loud enough?? im going to be using it at a party so need a lil more volume if u know a way to max this or should i build another one and drive one into the other amp??

Jeff Haas (author)danisparx2012-09-15

Glad to hear you fixed the amp. I made a lot of the same kinds of errors when I was first building circuits.

I'm on the road right now, so I can't test this, but I think you could take the output from the LM386 amp and put it through a set of computer desktop speakers, instead of into the small 8 ohm speaker. It depends on if you want to make a hand-held device or just need the sound effect for the background.

You can also try the more advanced versions of the LM386 circuit on the datasheet and see if they give you enough volume, but I think that might not be as easy as using the computer speakers.

danisparx (author)Jeff Haas2012-10-02

well its all up and running now i used a 8 ohm speaker and a 10 uF cappy across 1 and 8 also i took the output off the diavalino and the ground to pins 2 and 3 and powered the amp with a seperate 9V pp3 Battery and it got loads louder but i did suffer with more background noise, also i used a simple sound to light (LED) circuit and made a dial to show the levels of radiation, it looks pretty cool to be honest, thanks

Jeff Haas (author)danisparx2012-10-02

That's awesome, good to hear you solved it. And I like the idea of using the sound-to-light circuit to make the dial light up. If I'd had more time when I was making this (and I'd thought of it) I probably would have done it too.

Put some pictures and a video of your final build up, it sounds cool.

About This Instructable




More by Jeff Haas:Modify A Talking Skull To Say Anything You WantControl A Fog Machine With Your MicrocontrollerHow To Make A Fake Geiger Counter
Add instructable to: