I purchased two low cost Arduino-compatible Geiger-Muller (GM) tube module somewhere in 2013 but only recently I am finally able to assemble them to count coincident signals.
If two GM tubes aligned on top of each other, both tubes sends a "click" signal simultaneously in time, it is highly probable that they are both detecting the same particle passing through it. To design an electric circuit that is able to recognize both signals coming in simultaneously while filtering others is what physicist calls "coincident circuit".
Coincident signal is the OUTPUT of the AND logic gate, which triggers ON only when both GM Tube A and GM Tube B sends a signal simultaneously in time.
Early particle physicists studied cosmic rays using cloud chambers. To "catch" photos of high energy particles coming from the sky passing through a cloud chamber, the chamber is often installed two or more GM tubes parallel to it. If a pair or more of these tubes sends coincidence signal to a controller circuit, it will recognize the simultaneous signal and "turn on" the chamber momentarily for photography.
As I intend to repeat these findings, I must first build a coincidence detector.
When a particle passes through a GM tube, it always gives a LOW going pulse for a short time known as "dead time". The GM tube module I got gives a low of 0V for about 0.3 to 0.4 ms. These low going pulses, if connected directly to an Arduino's interrupt-sensitive pins (pin 2 and pin 3 for Arduino UNO), can be detected using attachInterrupt() command to count individual pulses.
I do not have the programming expertise to sketch an Arduino C/C++ code that detects two LOW pulses in the same time, so I went for the old school logic system using analogue ICs. It seems to work just fine and here's how:
1. An ionizing particle passes through a GM tube, its output goes LOW for a short time.
2. This LOW pulse triggers a 555 timer set up in monostable mode. The 555 timer reads the LOW pulse, and converts it to a square wave HIGH pulse. The duration of HIGH pulse can be adjusted with the following formula: t = 1.1RC. (Refer to the following diagram for the location of R and C) My RC values are chosen so I can extend the HIGH pulse from 0.5 ms to 2 ms. I am using 2 ms so far.
3. If two GM tubes sends LOW pulses at the same time, both 555 timers will invert and extend them to HIGH pulses. In reality, the high pulses are approximately +4.1 V with respect to LOW of +0.1 V, at Vcc of +5 V.
4. These HIGH going pulses are sent to a general purpose NPN transistors in series (I happen to have some 2N3904s) through a current limiter of 10 kOhms. The serial transistor act as an analog AND gate. Only both HIGH pulses from the 555 timers arriving the transistors at the same time will allow current passing through both transistors to the 5kohms pull-down resistor.
5. When that happens, a lead wire from the pull-down resistor to Arduino pin 2 allows it to read the sudden changes of voltage if coincidence occurs. Arduino then proceeds to counting, putting result on 16x2 LCD screen.
Simplified block diagram of the coincident-detecting system. A pulse shaping circuit (green) was necessary to "improve" the recognition of the pulse sent by the GM tubes.
Simplified circuitry of the pulse shaping and logic gate part of the coincident system. the R = 20 kOhm allows HIGH pulse-width extension up to 2.0 ms.
The circuit works but flawed: The "pseudo-digital" LOW of the twin NPN transistor is no where near 0 V. Instead, it pulses from -0.3 V to 3 V whenever GM Tube B pulses HIGH. A coincidence signal from both tubes will give a pulse from -0.3 V to 5.5 V. Hence, the resistance of the pull-up resistor connected to the twin transistor must be selected in such a way tube B will only give a logic output less than 3V, so Arduino ADC will not recognize false HIGHs from tube B alone.
The pull-up resistor I use has a value of 5kOhm.
A pushbutton and 16x2 LCD was connected to the Arduino. The sketch written for this is very simple. It counts any interrupt from pin 2, and displays the counts on an LCD screen. The pushbutton resets the count:
const int pb = 5;
int pbValue;
volatile unsigned long CNT_AB; // variable for counting interrupts coming from AND gate
#include<LiquidCrystal.h> // adding LCD from the library
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); // defining digital pinout for LCD
//====================================================================================
void setup() {
pinMode (pb, INPUT);
pbValue = 0; // initial pushbutton value
Serial.begin(9600);
lcd.begin(16,2); // initializes dimension of LCD display, 16 char x 2 lines
CNT_AB = 0; // CNT value for AB initially 0
lcd.setCursor(0,0);
lcd.print("Coincidence V0.1");
lcd.setCursor(0,1);
lcd.print("ACJC 2021");
delay(2000);
cleanDisplay();
attachInterrupt(digitalPinToInterrupt(2), GetEvent_AB, RISING); // detect event in pin 2
}
//====================================================================================
void loop() {
lcd.setCursor(0,0); // Sets cursor to character 0, row 0
lcd.print("COINCIDENCE: "); // Prints the defined word
lcd.print(CNT_AB);
pbValue = digitalRead(pb);
if (pbValue == HIGH) {
CNT_AB = 0;
}
}
//====================================================================================
void GetEvent_AB() {
CNT_AB++;
}
//====================================================================================
void cleanDisplay (){
lcd.clear();
lcd.setCursor(0,0);
lcd.setCursor(0,0);
}
Preliminary finding of coincident signal per hour from this setup is not significantly different from another coincident detecting IC written long ago by a friend.
Coincident Counts per Hour (CPH) was calculated with both tubes configured in similar geometrical position. At a total of 16 hours acquisition time gives the following table (date, time, counts for the past hour):
My analog-IC Method 16 Pin IC (C.K.'s program)
2/Mar/2021 22:48 47 11/Oct/2020 18:00 47
2/Mar/2021 21:47 50 11/Oct/2020 19:00 41
2/Mar/2021 20:47 39 11/Oct/2020 20:00 45
3/Mar/2021 13:09 49 11/Oct/2020 21:00 42
3/Mar/2021 12:05 43 11/Oct/2020 22:00 47
8/Mar/2021 16:32 46 11/Oct/2020 23:00 30
8/Mar/2021 15:31 49 12/Oct/2020 09:00 39
8/Mar/2021 14:31 48 12/Oct/2020 10:00 55
8/Mar/2021 13:31 41 12/Oct/2020 13:00 46
8/Mar/2021 12:31 49 12/Oct/2020 14:00 42
9/Mar/2021 23:14 47 13/Oct/2020 09:00 43
10/Mar/2021 12:52 39 13/Oct/2020 10:00 35
10/Mar/2021 13:52 44 13/Oct/2020 11:00 42
10/Mar/2021 14:52 30 13/Oct/2020 12:00 42
10/Mar/2021 15:53 42 13/Oct/2020 13:00 55
10/Mar/2021 16:53 54 13/Oct/2020 14:00 59
-------------------------------------------------------------------------------------------
Average: 45 [CPH] 44 [CPH]
Thus, to answer the following questions in cyan:
1. Is the coincident system capable of operating continuously in long hours?
Conclusion: (from preliminary results) Yes, with the exception of hardware problem whenever GM tube A PCB is torsionally stressed, it works well otherwise for at least 5 hours continuously. In actuality, every acquisition with a cloud chamber would only last at most an hour before condensant refill is necessary. About 40 photographs per hour, regardless of quality, is expected.
2. Is the counts from my coincident system consistent with other coincident systems?
Conclusion: (from preliminary results) Yes, although only one system was compared, the compared system was fully-digital and written separately by a different author. He programmed the IC to extend each GM tube pulse to 0.5 ms while mine was set to 2.0 ms. Despite these differences, our CPH readings are comparable.