This page presents a curious way to build a Geiger counter: build it out of obsolete parts. The project is based on a PIC16F84 processor (which I have in large quantities), an overly available Russian Geiger tube (СБМ20, $20 maximum inc. deliv. on eBay), and an overly available LCD display pack (Hitachi HD44780).
I'd like to thank John Giametti (https://sites.google.com/site/diygeigercounter/), who has personally helped me solve the impulse signal noise issue, and suggested me to use the interrupt logic on the PIC. I've also used his high-voltage generation circuit :).
The following web pages (and their authors) helped me address some implementation issues:
The Geiger tube acts as a particle detector. It needs some high-voltage. We're gonna generate that high-voltage using some analog circuit, then process its output through some interrupt on the processor. Every Xth of a second, the processor will enter into the display mode, thus compute and display the results.
The counting theory and the 8-bit computations (additions and divisions) have been previously tested using Java. See the download section for the source code.
I've *ripped off* some schematic from John Giametti (with his permission), showing only the parts used. The original work can be downloaded from his website. Don't pay attention to those electronic parts that are listed, but not present on the schematic. The ones that are present however, can help adjust the circuit.
The PIC16F84 is a simple fixed-cycle, 8-bit processor. It is cheap and can be easily programmed using widely available tools. It can contain up to 1024 instructions, which is sufficient for us (but we're close to the limit).
The СБМ20 is an old Russian Geiger tube. It needs 400V to work properly, and can detect Gamma radiations (and also some Beta). It has a dead time of 190µs: during that time, no radiation can be seen by the tube. If you do simple maths, you can suppose that it can *theoretically* handle up to 5263 counts per second. That's 315780 CPM (Counts Per Minute).
The Radex RD1503 uses the same type of Geiger tube. Thus I used the same conversion from ticks to µSv/h: X counts per 40 second range -> (X/100) µSv/h. In terms of Standard Units, that's a full range of 0.00µSv/h to 2105.20µSv/h. Sufficient enough to cover the radioactivity emission range from background radiation to high radiation areas in nuclear plants (see Wikipedia's page on Sievert for details).
Please pay attention when manipulating the high-voltage parts!
As soon as the PIC is powered on, it displays a nice signature on the LCD (very short), then begins counting. Every 10 seconds, it will display the radioactivity levels in µSv/h (line 1) and CPM (line 2). Every second, if sufficient ticks are received for the computation to be some way *accurate*, the LCD will display an approximation of the radiation level, in µSv/h only (also on line 1). It will not display the CPM (on line 2), but only '~' characters, so that you can tell when it's displaying approximate values or more statistically accurate ones.
Ticks are processed through the use of hardware INTerruptions. The interrupt section takes approx. 20 cycles to switch, compute and return to the original position. There's some mechanism implemented to take into account that delay in the compute and display procedures, so that the results are always of an acceptable accuracy, regardless of the number of ticks that have been processed.
8-bit processors don't support values superior to 255 (oh wait, what?!). Moreover, old PICs like the PIC16F84 don't have divisions. We must therefore do some fine maths, in order to achieve this kind of processing. Hopefully, the software has been validated with the help of Java.
Here is the list of the functions implemented:
The version 1.1 does not make use of all these divisions, but rather makes use of approximations.
The decode20(approx) function: takes in a value between 0 and 999999, and gives out a 6-digit, decimal value. This function is used to display the values on the LCD screen.
Radioactivity levels: normal.
I still have some interferences in the signal from the Geiger tube, due to the proximity of the inductor / its type. STILL IN PROGRESS.