Monday, May 9, 2011

Arduino Geiger Counter

This is what a typical pulse looks like taken at the LED connector of the Geiger counter board:

Only the first square is an actual pulse, the following peaks are artefacts caused by the oscillator for the high voltage power supply for the Geiger tube. Since counting on the Arduino is done by triggering interrupts, the peaks cause a problem since a number of them cause additional interrupts. When the optocoupler is the only electronics component between the Geiger counter board and the Arduino, there are about 8-10 interrupts per real counts.

Even with a 10uF capacitor between pin 3 and 4 of the optocoupler

there are several peaks, resulting in several unwanted interrupts.

A 4.7uF capacitor has a shorter decay time, of course, but artificial counts still do occur.

Double count:

Single count:

It seems like double counts occur when the particle pulse arrives at a time that is shortly before a spike from the power supply, thus causing the small spike on the capacitor decay curve to be at a level of more than half the 5 Volts, thus triggering an interrupt. When the spike occurs at a time when the voltage has already dropped to below two Volts, then an interrupt is not triggered because the condition of a transition from "LOW" to "HIGH" is not met. (I use the "RISING" option to trigger an interrupt).

Although there are not many incidents of double counts with the 4.7uF capacitor, it would be nice to have a design that counts only actual radioactive events.

So I choose a combination of hardware and software to solve the problem: A capacitor suppresses the artificial counts at the end of a sequence, and a timeout in the interrupt routine suppresses the artificial counts at the beginning of a sequence.

On the circuit with the 4.7 uF capacitor, the voltage on the Arduino drops to 1 Volt after 5ms.
So if I suppress all counts for 5 ms after an initial interrupt, there should be no more artificial counts.

With a dead time of 5ms per count, the system is capable of counting up to 12,000 cpm (counts per minute) which is far beyond unhealthy radiation, so this design seems to be a feasible solution.

Tuesday, May 3, 2011

Arduino Geiger Counter

This project involves a Geiger counter that is connected to an Arduino with an ethernet shield. The Geiger counter is a working analog board that is available at

This is based on an idea by ibtek who has kindly provided me with answers to questions I had.

The way to get the signal into the Arduino is to replace the LED with and opto-isolator and then to trigger an interrupt on the Arduino when a count is detected.

Friday, April 8, 2011

Temperature and Humidity Sensor Network with Arduino and Ubuntu

The goal of the project is to have ethernet enabled Arduinos with temperature and humidity sensors, and to plot the measurements over time in a web browser.

Here is a description of the completed hardware and software:
Instructions and code

Friday, January 7, 2011

A few weeks ago, I set out to create an Arduino project. It is now working, and I will post the results and all the source code soon (after a bit of code clean-up.)

Here is the original post:

A humidity and temperature sensor network:

Every node consists of an Arduino board and an ethernet shield and a Sensirion SHT15 Humidity and Temperature Sensor on a breakout board. I will use the enclosure that accomodates an Arduino, an ethernet shield and place the sensor in the battery box. That makes for nice, compact nodes.


I will use a web browser to plot the temperature and humidity data and use the flot library for live plotting

The server will be a fanless Shuttle XS35GT with an HDMI port that can be connected to a TV.

If possible, I will integrate this into XBMC (a media center software) so that it can be controlled with the remote control.

The operating system is Ubuntu 10.10.

Sunday, December 26, 2010

Installing Apache, MySQL, and PHP on Ubuntu

To store the temperature and humidity data in a database and to retrieve those data through a web browser, we will need the MySQL database and the Apache web server software. The most straight forward method to do this in Ubuntu is to install the "LAMP" software stack. LAMP stands for "Linux - Apache - MySQL - PHP".
This is a pretty commonly used combination

The individual steps are to open a command prompt (shell) and to enter the following commands:

  • sudo apt-get install tasksel
Then run it:
  • sudo tasksel
and from the list, select LAMP-server and install it.

Further resources:

Testing and learning MySQL:

Tuesday, December 7, 2010


This blog is dedicated to my activities with the Arduino platform. I am an open source and Linux user and supporter and have read about the Arduino platform in the Linux Format magazine.
I am also a member of the Arduino community at