User Tools

Site Tools


CAN-GC2a Universal 16 port I/O node for CANBUS

gc2a-module.jpg ContentHardwareCANBUS

Copyright Rob Versluis / Peter Giling

The CAN-GC2a is an alternative to the CAN-GC2 with almost the same capabilities running on the CANBUS open source CAN standard.
This unit uses an Arduino nano processor board, instead of the PIC processor.
Since there is still some development going on, please keep coming back here.
Interesting features are coming up.

The Board

A jumper makes it possible to set terminator on the last board in the CANBUS chain.
This jumper connects a 120 Ohm resistor to the CANBUS.
White connectors at the back are compatible with all GCA(MGV)xx interfaces.
These interfaces are mostly electrical isolated from CANBUS by optocouplers.
Power, as available in CANBUS-cable, is only used for supply of CANBUS board itself.
As a standard recommandation for all CAN systems, connection and disconnection of cables is not possible while system is running.
Using this cheap and rigid d-type connector with locking screws will avoid that connectors drop off accidently.

Nano & Nano Every

The Nano cannot use the A6 and A7 pins as output. (Port J4-9 and J4-10)
Nano Every is able to use port 9 and 10 also as output.
Only Every is supported.

X1 16MHz

Recommended is to use a 16MHz crystal for the MCP2515 operating speed.

Improved supply

More and more, switching power regulators come within reach of us railroad enthousiasts.
The widely popular 7805 5V regulator can be replaced with a switching regelulator like R-78E-5.
The costs are higher, but the advantage is a far better effiency in the power part of this board.
The 1 Amp type can really 'transform' the 12-17V supply in the CAN network to 5 Volt and deliver 1 Amp continue load
without getting serously hot.
It is a big improvement, and the CAN-GC2a kit will contain that chip.

The Arduino sketch

For source code and compiling read this chapter: RCAN

The hardware

The schematics
The schematics
The pcboard and parts positions
The partslist
Gerber files
N.B. Only complete ordered kits will be supported!


  • For connection with interfaces, see instructions in propriate interface.

Connector J3 10 pin header

I/O port Connector Pin Remark
+5V 1
1 3
2 4
3 5
4 6
5 7
6 8
7 9
8 10

Connector J4 10 pin header

I/O port Connector Pin Remark
+5V 1
9 3 input only on the Nano Classic1)
10 4 input only on the Nano Classic2)
11 5
12 6
13 7
14 8
15 9
16 10

Direct connection of leds to outputs

Reed switches and hall sensors

Read switches and hall sensors can be used as feed-back sensors.
However, since the contact information inside the CAN-GC2a is arranged so that the unit is
low sensitive for distorsions, the minimum pulse lenght should be at least 50 miliSecs to be accepted (0.05 second).
In addition to that, reed-contacts usually give more than 1 pulse when activated, known as 'contact dender'.
For this way of sensoring, a special pulse-extender will be available inside the firmware.
This option is indicated as 'BK'.

Hardware for CAN-GC2a

Boards and complete kits are available from
The programming of the Arduino nano itself can be done via USB port.



Hold down the button at power on to reset/initialize the EEPROM with following settings:

  • port 1-8 switch with address 1-8
  • port 9-16 block with address 9-16

The same can be achieved by sending a Clear command.


Set the first found change. This button must be pushed multiple if more then one port or setting is changed.
The sequence of change check is:

  1. Ports
  2. Node configuration
  3. SoD

Set all

Set all ports and options.

Save output state

Write the output state in EEPROM after detecting a power off command on the CANBUS.
The outputs will be restored after the CAN-GC2a is powered on.

Short events

Ignore the event node number and compare the event number only.

Long events

For long events the BUS variable on the interface tab of sensors, switches and other objects is used to address the module its node number.
The address variable is equal to the one used with short events.


"Start of Day"
The CAN-GC2a will report the status of every input after receiving an accessory command with this address. (Short event)
The SoD address should be the same as set for the Controller and can be tested with the SoD button.

Node Nr.

For outputs with long events only.
Inputs will use the CAN-GC2a node number for events.

Port types

Type Description Recommendation
IN Input Normal input port. Push buttons, feedback of servos/points and hall sensors.
BK Block Input with a 2 seconds delayed off. (±50ms) Occupancy detectors.
SW Switch Continuous output. Single coil switch drivers like servos.
PU Pulse Output with x ms activation time. (±50ms) Note: A software timed off is not possible with CANBUS; It is realized in the hardware.

Pulse time

Activation time for pulse type outputs.


Inverts the port.


Every port has a test button in which also the current state is displayed as a "1" or "0".
The state is only updated after pushing a test button.


Shows the Rocrail object ID which is linked to this port.


The information of the LEDs is explained on the firmware page: LEDs

Node Variables

NV# Purpose
1 General configuration
2…17 Port configuration
1) , 2)
Use the Nano Every
can-gca2a-en.txt · Last modified: 2024/03/09 07:51 by rjversluis