NetIO GC10 Geiger Counter general information and code

  • Recently I got an Arduino Uno clone to play around with. It turns out it can also act as an USB RS232 serial interface for devices connected to it. Since I never got an USB–serial interface before either, I thought it would be interesting to try interfacing with the NetIO GC10 counter I have. I previously used to count and log 5V Geiger pulses from it using an audio jack connection and a very simple electric circuit, but this method over time proved to be a bit overkill for my purposes, in addition to being prone to various issues.

    Arduino Uno only has one built-in hardware serial port available (pins 0–1), which is shared with the USB computer connection. This means that if a serial device is connected here, it can intefere with PC communication. However, arranging a so-called soft serial connection with other pins is a possibility, although it will have lower performance than the hardware serial connection. To do this I used the altsoftserial library, which adds a serial port on pins 8–9. This is where I connect the Geiger counter.

    The GC10 counter automatically sends CPM data every second. Every string is terminated with an explicit CRLF sequence, which in printf-like commands in many programming languages is represented by the escape sequence /r/n.

    Below is a photo of my current arrangement. The Geiger counter is powered directly by the Arduino board through the VCC pin of the data I/O interface. The manufacturer points out that other VCC/DC inputs must not be used at the same time or the Geiger counter will be damaged.

    In the above photo, black tape is covering the annoyingly bright LED and the loud buzzer (when it's enabled).

    Arduino C code used:

    Python code used to continuously log data from it through the hardware serial port:

    Typical output from the above code

    2020-01-29T12:02:38.193560, 86
    2020-01-29T12:02:39.197706, 87
    2020-01-29T12:02:40.204730, 88
    2020-01-29T12:02:41.208844, 89
    2020-01-29T12:02:42.212709, 90
    2020-01-29T12:02:43.220673, 90
    2020-01-29T12:02:44.215784, 90
    2020-01-29T12:02:45.230620, 90

    Other Resources

    EDIT: it appears that code indentation got messed up while copy-pasting code here. This will not be an issue for the Arduino code, but it will for the Python code for logging. Until I fix this in this comment, the Python code is simple enough for most people with some experience with the language to quickly solve the issue in their favorite IDE.

    EDIT2: the problem above appears to have been solved.

  • While surface area certainly plays a primary factor on sensitivity, according to tests made by the author in the page below, SBM-20 GM tubes become more sensitive and have a shorter dead-time up to significantly higher voltages than generally recommended. The voltage at which a continuous discharge starts occurring inside the tube appears to be higher than what can be safely set in the NetIO GC10 counter through the serial interface (the 2N80 power MOSFET used for the internal boost circuit has an absolute maximum voltage rating of 800V and some margin will have to be provided) :…0-geiger-muller-tube.html

    Other that the calibration will be slightly off, I'm not sure of what drawbacks there will be in running the tube at for example 600V instead of 400V (current setting on my counter; the default setting was 313V). Anode–cathode voltage from the counter needs a high impedance probe for accurate readings, so these values are just estimations based on the internal voltage setting.

    According to the manufacturer (NetIO), GM tube voltage should be 5.7 × HVG, where HVG is the variable which can be tweaked. On my counter it was 55 by default (313V). Following some tests, yesterday I found that my SBM-20 tube (manufactured in the 8th week of 1985) stops working below a setting of 39 (222V).

  • I tried using the Geiger Counter on an unshielded location on the desk next to my PC at increasing voltage settings (400V, 500V, 600V) applied to the GM tube. The high peaks are when I placed a 1 Kg potassium hydroxide canister close to the GM tube as a sort of check source to observe immediate differences in response after changing the setting.

    The base signal appears to have increased slightly and possibly become more stable, but the KOH peaks remained about the same.

    To change voltage I sent to the Geiger counter, in sequence through the Arduino serial interface passthrough:

    'set hvg=xx\r\n'

    With xx being a decimal number representing GM tube voltage divided by 5.7.

    The 'stop' and 'go' commands stop and interrupt the 1Hz CPM output from the counter, which can potentially interfere with configuration commands. These are optional, though. The 'save' command saves the new configuration into the GC's integrated controller's EEPROM, making it persistent across resets

    To check if the settings have been applied (besides actually measuring the voltage, which I cannot properly do with my equipment), it is possible to use the 'show' command as done for the other ones mentioned above. A typical output/response from the counter would then be—LFCR sequences omitted:

    ttc: 1771
    gms: 165
    atc: 1500
    hvg: 105

    hvg here shows the tube voltage setting, which should correspond to the one previously configured. Here, 105×5.7=598.5V.

    Other information:

    • gms: the CPM conversion rate to obtain the displayed µS/h value
    • atc: A threshold CPM value above which an alarm sounds (I've never tested this)
    • ttc: The total GM counts recorded since the counter was last reset. This is a kind of undocumented function. An alternative mode of operation could be extracting this instead of using the 1Hz CPM value. In this case turning off CPM output with the 'stop' command can be useful. After that, one would periodically monitor for the response obtained from the counter after sending the 'show' command.
  • Alternative way of interfacing the NETIO GC10 geiger counter

    In the past can provided a solution to interface the GC10 geiger counter to a PC by a serial connection.

    The problem to overcome was that the GC10 serial interface uses positive 5 Volt signal levels, which does not conform to the official RS232 serial interface voltage levels which uses both positive and negative voltages.

    can solved this by using an Arduino processor board in order to convert the 5 volt serial signals to the Arduino serial over USB communication channel, the USB then connected to the logging computer.

    While that approach provided a good workable solution, it had some minor drawbacks.

    - The standdard Arduino has both a serial over USB connection and also a 5 volt serial interface, but both can not be used at the same time

    - To solve the above problem, an additional serial port was created in software by using an available software library.

    - Using the software implemented serial port needs programming your Arduino.

    Needing to set up a serial communication to the GC10, instead of using an Arduino I decided to use a simple 5 volt serial to usb printed wiring board which was designed for use as an Arduino add on. (Some used this kind of solution also for other types of geiger counters)

    This poststamp sized module I used is called the CJMCU CP2102 and is readily available from several sources.

    I did not use the supplied pin header, instead I used a 5 wire interface cable, one end having a female connector for connection to the GC10, the other end being lose wires to be soldered to the CJMCU CP2102 board.

    The following picture shows the connection wiring

    After making the connection between the GC10 and the CJMCU CP2102 board we can then connect the CJMCU CP2102 board to a PC by an USB cable.

    Power to the CJMCU CP2102 board and the GC10 is then supplied through the USB cable.


    When powering the GC10 in this way, do not use at the same time the alternate +5V or battery supply connection on the GC10

    The GC10 documentation states that it can damage your GC10.

    After connecting the USB cable to the PC, you can use the assigned virtual serial port on your computer to aquire the data sent by the GC10 or sending commands.

Subscribe to our newsletter

It's sent once a month, you can unsubscribe at anytime!

View archive of previous newsletters

* indicates required

Your email address will be used to send you email newsletters only. See our Privacy Policy for more information.

Our Partners

Supporting researchers for over 20 years
Want to Advertise or Sponsor LENR Forum?
CLICK HERE to contact us.