loading
Picture of Arduino Geiger Counter
Build a Geiger counter out of an Arduino
 
Remove these adsRemove these ads by Signing Up

Step 1: What you will need

What you'll need:
-Arduino (Can be any type but must have 5V capabilities to work with Geiger counter and LCD)
-Sparkfun Geiger Counter (Other geiger counter boards might work the same but I do not know)
-LCD display
-LED
-Piezo Buzzer
-9V Battery & Battery Clip
-Slider switch
-Project Box ~ (129mm*64mm*45mm)

Step 2: Prep

Picture of Prep
IMG_1346.jpg
IMG_1347.jpg
Solder wires to the RX, GND, and VDD of the LCD display

Also solder wires to the 5V, TX, and GND of the geiger counter.

Step 3: Wiring

Picture of Wiring
Here is the circuit diagram for the Geiger counter

Step 4: Program

// Copy paste the following code into the Arduino program:
// Note: You need to have the RX and TX unplugged from the Arduino to program it
// To program an Arduino Pro Mini with an Arduino UNO follow this link

// Geiger Counter
// Eric Bookless
//
// Introduction
//
// Uses a Sparkfun Geiger Counter to measure radiation and converts it to counts
// per minute. The calculated counts per minute is displayed on an LCD screen.
// Each count is registered with an audible and visual signal by the use of a
// piezo speaker and an LED.
//
// Setup:
//
// - Connect the LED and piezo speaker to pins 9 and 8 respectively
// - Attach pins RX, GND, and VDD from the LCD display to pins 2, GND, and VCC on
//   the Arduino.
// - Attach Geiger counter to power source with pins VCC and GND and connect the
//   TX pin to the RX pin on the Arduino
//


#include <SoftwareSerial.h>

int i;
int count;
int old = -1;
int check;
float CPM;
float now;
float time;
int start;
int piezo = 8;
int led = 9;
char OnesString[10];
char DecimalString[10];
char TimerString[10];

SoftwareSerial mySerial(3, 2);

void setup(){
  pinMode(piezo, OUTPUT);
  pinMode(led, OUTPUT);
  Serial.begin(9600);
  mySerial.begin(9600);
  delay(500);
 
  mySerial.write(254); // move cursor to beginning of first line
  mySerial.write(128);
  mySerial.write("                "); // clear display
  mySerial.write("                ");
}
 

void loop(){
  i = 0;
  count = 0;
  start = millis();
  while (i < 30){
    digitalWrite(led, LOW);
    digitalWrite(piezo, LOW);
    if (Serial.available() > 0) {  // If information available
      check = Serial.read();       // Read serial input
      if (check > 0){
        count++;                    // If it is a hit, increment counter
        digitalWrite(piezo, HIGH);  // Makes audible sount when there is a hit
        digitalWrite(led, HIGH);    // Blinks LED when there is a hit
      }
    }
   i = millis();
   i = i - start;
   i = i/1000;
  
   sprintf(TimerString, "%2d", 30-i);
  
   mySerial.write(254); // cursor to 7th position on second line
   mySerial.write(192);
  
   mySerial.write(TimerString);
  
  
  }
 

  CPM = count*2;
  old = count;                 // Resets 'if' statement
  int cpm = CPM;
  int temp = CPM*1000;
  int decimal = temp % (cpm*1000);
 
  sprintf(OnesString, "%3d", cpm);
 
  mySerial.write(254);         // Displays CPM
  mySerial.write(128);
  mySerial.write("CPM: ");
  mySerial.write(OnesString);
}

Step 5: Designing the Project Box

1.  With the project box I was using there was extra plastic around the edges preventing the Geiger counter from going all of the way to    
      the edge of the box. I fixed this by simply chiseling away at it.

2.  Next I cut the holes for the switch and drill a hole for the tube.

3.  Then drill screw holes for the standoffs on the geiger counter.

4.  Cut a hole for the master power switch.

5.  To cut the slot for the lcd screen I drilled several holes about the same size as the screen and carefully removed the remaining      
      material with a sharp chisel. I positioned the screen so that the top left screw hole of the project box would go through the top left
      mounting hole of the screen.

6.  You may need to trim some parts of the project box to insure a good fit.

7.  Once you have the LCD screen where you want it you can drill holes for the LED and Piezo speaker.

Step 6: Assembly

1.  Glue the LED and Piezo speaker into the top of the project box. (Hot glue works particularly well)

2.  Mount the main power switch first (Since it will be below the geiger tube board). I added hot glue to protect the solder joints.

3.  Attach the LCD screen to the top of the project box Fit Geiger tube in the box ( I found the mini fit well if I put the exposed pins below
     the geiger tube)

4.  Close 'er up and your done!!

5.  Test to make sure it works!!!

any chance of a video of it in action? Curious to see what your display shows. I'm trying to use a 7 segment display to show just the count. https://www.sparkfun.com/products/retired/9765

iBooky (author)  RabbidSquirrle7 months ago

Unfortunately I do not have the Geiger anymore, it was a gift for someone but from what i remember the output looked something like this:

CPM: ### ##

(Displays CPM) (Countdown timer until next reset)

The display you are looking at should work fine though, i would recommend looking at any tutorials they might offer as I suspect the display functions will be a bit different than the ones in the script I provided.

Not a problem, I just like seeing videos as they show how it looks and sounds when it's active. I was originally going to only do one display that showed CPM but I had a second one laying around and figured I'd just set it up so I can see when it's going to refresh. Here's my "prototype" that's usually as far as I ever get. I'll have to figure out how to add some decimal points when I have some more time. http://youtu.be/uovu7EXB1Qc Thanks for the great instructions.

chuckmerja9 months ago

thanks!

We are having some trouble getting it going. We thought the "Friday" video on Sprakfun used analog port, but some tuts we've found use serial port (Tx on Geiger, Rx on Ardunio Uno). Like http://www.instructables.com/id/Arduino-Geiger-Counter/ wherein he uses a serial 16x2 LCD to see data. We want to see it on our serial monitor AND log it to SD card. We get something like 214K for a value, and no, this place doesn't glow in the dark. Suggestions? Has anyone logged this to SD card (with other sensors?)

Star3161 year ago

Hey just asking again could i use this: http://www.ebay.com/itm/Assembled-DIY-Geiger-Count...

Instead of the spark fun geiger counter? THX

iBooky (author)  Star3161 year ago

Yes, that should work fine

Star3161 year ago

Nice work! Just asking what wires do we use for step 2?

iBooky (author)  Star3161 year ago

Thanks! The VCC, 5V and GNDs are to power the geiger counter and LCD display while TX and RX are what the Arduino uses to receive information from the Geiger tube and transmit information to the LCD display.

Star316 iBooky1 year ago

Thanks! Followed you! :) 3rd follower! :3

Could i also use the arduino uno instead of the mini?

iBooky (author)  Star3161 year ago

Yes, just make sure your project box is big enough to fit the Uno

iBooky (author) 2 years ago
Thank you, it displays a counts per minute instead of counts per second. Measuring half life would be pretty cool and I haven't tried that yet, thanks for the suggestion.
nice work. i would have some idea of how to make the detection apparatus of the geiger-marsden tube but very well done on building a system that appears to give you a counts or counts per second(becquerels) reading. you may wish to use it to measure the half life of the source in a smoke alarm but unless it is a very sensitive system you will have to wait a long time(432 years for the count rate to halve but some calculations based on A=A0 x e^(-L x t) would allow a measurement of the half life without waiting so long.).