CAN bus (Controller Area Network) is the backbone communication protocol in automotive electronics, industrial machinery, and robotics systems worldwide. Understanding CAN bus connector and wiring is essential for anyone working with automotive ECUs, industrial PLCs, motor controllers, or multi-node embedded systems. This guide covers CAN bus connector types, DB9 and M12 pinouts, termination resistors, cable specifications, and how to wire and test a CAN bus network — with India-specific sourcing notes.
Table of Contents
- CAN Bus Fundamentals
- CAN Bus Connector Types
- CAN Bus Cable Specifications
- Termination Resistors
- Network Topology and Node Addressing
- CAN Bus with Arduino and MCP2515
- Wiring Troubleshooting and Testing
- Frequently Asked Questions
CAN Bus Fundamentals
CAN bus is a differential serial communication protocol developed by Bosch in 1983, operating on two wires: CAN_H (CAN High) and CAN_L (CAN Low). The differential signal provides excellent noise immunity, making CAN bus suitable for harsh automotive and industrial environments. Key characteristics:
- Speed: 10 kbps to 1 Mbps (CAN 2.0); 2–8 Mbps for CAN FD
- Distance: Up to 1 km at 50 kbps; 40 m at 1 Mbps
- Nodes: Up to 127 nodes on one bus
- Topology: Linear bus with 120 Ω termination at both ends
- Fault tolerance: Dominant/recessive encoding allows bus-off error recovery
CAN Bus Connector Types
DB9 (DE-9) Connector — CANopen Standard
The most common connector used in industrial and laboratory CAN bus implementations. The CANopen standard (CiA 303-1) defines the DB9 CAN pinout:
| Pin | Signal | Description |
|---|---|---|
| 2 | CAN_L | CAN Low (dominant = low voltage) |
| 3 | GND | Signal ground |
| 7 | CAN_H | CAN High (dominant = high voltage) |
| 9 | V+ (optional) | Bus power supply (optional, 7–24V) |
Pins 1, 4, 5, 6, 8 are reserved or unused in standard CANopen. Always verify pinout against your specific device documentation — some non-standard devices deviate from CiA 303-1.
OBD-II Connector — Automotive CAN
The OBD-II port (found under the dashboard of every car and motorcycle manufactured after 2005 in India under AIS-137 regulations) carries CAN bus on specific pins:
- Pin 6: CAN_H (high speed, 500 kbps)
- Pin 14: CAN_L (high speed, 500 kbps)
- Pin 3: CAN_H (medium speed, if present)
- Pin 11: CAN_L (medium speed, if present)
- Pin 16: Battery 12V
- Pin 4/5: Ground
M12 Circular Connector — Industrial CAN
M12 connectors are the industrial standard for field wiring in harsh environments. The 5-pin M12 A-coded connector is used for DeviceNet and CAN bus:
- Pin 1: V+ (Bus power, 24V)
- Pin 2: CAN_H
- Pin 3: GND
- Pin 4: CAN_L
- Pin 5: Shield/drain
M12 connectors provide IP67 water and dust protection and withstand vibration — essential for outdoor industrial deployments in India’s monsoon conditions.
Phoenix Contact / Weidmuller Terminal Blocks
For PCB-mount CAN bus connections in control panels, 5mm pitch screw terminal blocks are widely used. A 3-way terminal block carries CAN_H, CAN_L, and GND. These are available from local industrial electrical suppliers across India at ₹15–40 per terminal block.
CAN Bus Cable Specifications
Cable Requirements
CAN bus cables must meet specific electrical requirements for reliable operation:
- Type: Twisted pair with shield — twisting reduces differential noise pickup
- Characteristic impedance: 120 Ω (matches the termination resistors)
- Wire gauge: 24 AWG (0.22 mm²) for stub connections; 22 AWG (0.34 mm²) for main bus runs
- Capacitance: Less than 60 pF/m
- DC resistance: Less than 70 mΩ/m
Standard CAN Bus Cable Options in India
- Beldon 9841: The gold standard for CAN bus cable. 120 Ω, single twisted pair with shield. Available from industrial cable distributors in India at ₹35–60 per metre.
- LAPP UNITRONIC BUS CAN: Available from LAPP India, ₹45–80 per metre.
- Generic 120 Ω DeviceNet cable: Available online via Indiamart, ₹20–40 per metre. Verify impedance specification before purchase.
- For prototyping: Twisted pair from CAT5e Ethernet cable (impedance approximately 100 Ω) works for short benchtop runs up to 1 Mbps. Add 120 Ω termination resistors at both ends.
Maximum Bus Lengths by Speed
CAN Bus Speed vs Maximum Cable Length:
1 Mbps → 40 m (high-speed automotive, short runs)
500 kbps → 100 m (automotive diagnostic)
250 kbps → 250 m (standard industrial)
125 kbps → 500 m (building automation)
50 kbps → 1000 m (low-speed industrial)
10 kbps → 6700 m (maximum specification)
Note: Add 5 m penalty for each stub connection
Max stub length: 0.3 m at 1 Mbps, 3 m at 250 kbps
Termination Resistors
CAN bus requires exactly two 120 Ω termination resistors — one at each end of the bus. This matches the cable’s characteristic impedance and prevents signal reflections that cause communication errors.
Termination Rules
- Always and only 2 termination resistors — never more, never fewer
- Place at the physical ends of the cable, not at intermediate nodes
- Connect between CAN_H and CAN_L
- Value: 120 Ω, ±1% tolerance, 0.25W minimum power rating
Split Termination
For improved noise immunity, use split termination: two 60 Ω resistors in series between CAN_H and CAN_L, with a 4.7 nF capacitor from the midpoint to ground. This filters common-mode noise on the bus — recommended for automotive or high-noise industrial environments.
Standard termination:
CAN_H ---[120Ω]--- CAN_L
Split termination:
CAN_H ---[60Ω]---+---[60Ω]--- CAN_L
|
[4.7nF]
|
GND
Network Topology and Node Addressing
Linear Bus Topology
CAN bus must use a linear (daisy-chain) topology. Each node connects via a short stub (≤0.3 m at 1 Mbps) to the main bus line. Star topologies and long stubs cause signal reflections and must be avoided.
Node Addresses
CAN does not have explicit addresses in the hardware layer — addressing is handled by the protocol layer (CANopen, J1939, etc.). In CANopen:
- Node IDs range from 1 to 127
- Node ID 0 is the broadcast address
- IDs are typically set via DIP switches, configuration software, or on boot EEPROM
CAN Bus with Arduino and MCP2515
The MCP2515 is a standalone CAN bus controller with SPI interface, commonly paired with the TJA1050 or MCP2562 CAN transceiver. This combination is the most accessible way to add CAN bus to an Arduino project.
#include <mcp2515.h>
// MCP2515 on SPI: CS=10, INT=2
MCP2515 mcp2515(10);
void setup() {
Serial.begin(115200);
mcp2515.reset();
mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ); // 500kbps, 8MHz crystal
mcp2515.setNormalMode();
Serial.println("CAN Bus Ready");
}
void loop() {
struct can_frame frame;
// Send a CAN frame
frame.can_id = 0x123; // 11-bit standard ID
frame.can_dlc = 4; // 4 data bytes
frame.data[0] = 0xDE;
frame.data[1] = 0xAD;
frame.data[2] = 0xBE;
frame.data[3] = 0xEF;
mcp2515.sendMessage(&frame);
// Check for received message
if (mcp2515.readMessage(&frame) == MCP2515::ERROR_OK) {
Serial.print("ID: 0x");
Serial.println(frame.can_id, HEX);
for (int i = 0; i < frame.can_dlc; i++) {
Serial.print(frame.data[i], HEX);
Serial.print(" ");
}
Serial.println();
}
delay(100);
}
Wiring Troubleshooting and Testing
Basic Voltage Checks
With the bus running, measure CAN_H and CAN_L relative to ground with a multimeter:
- Recessive state (no transmission): Both CAN_H and CAN_L at approximately 2.5V
- Dominant state (during transmission): CAN_H ≈ 3.5V, CAN_L ≈ 1.5V (differential voltage = 2V)
- Bus fault (short circuit): Both wires at same voltage or at 0V/5V
Termination Check
Power off all nodes on the bus. Measure resistance between CAN_H and CAN_L with a multimeter. You should read approximately 60 Ω (two 120 Ω termination resistors in parallel). If you read 120 Ω, only one terminator is connected. If you read less than 50 Ω, a node is incorrectly acting as a terminator or there is a short circuit.
Common Wiring Faults
- Missing termination: Bus works at short distances but fails as length increases — reflections cause frame errors
- CAN_H and CAN_L swapped: Bus completely non-functional — double-check wiring at every connector
- Missing ground: Differential signals remain valid but common-mode voltage shifts — works between nearby nodes but fails across isolated power domains
- Star topology instead of linear: Works for 2–3 nodes at low speed but causes failures at high node counts or speeds
Frequently Asked Questions
What is the difference between CAN 2.0A and CAN 2.0B?
CAN 2.0A uses 11-bit message identifiers, allowing 2,048 unique IDs. CAN 2.0B (extended frame) uses 29-bit identifiers, allowing over 500 million unique IDs. Automotive protocols like J1939 use extended 29-bit frames. CANopen typically uses standard 11-bit frames. Both formats can coexist on the same physical bus.
Can CAN bus be used over long distances in Indian industrial installations?
Yes — at 125 kbps, CAN bus runs up to 500 metres, and at 50 kbps up to 1 km. For Indian factory floor applications, 250 kbps at 250 m is a common working point. Use proper 120 Ω Belden 9841 cable, minimise stubs, and ensure solid ground connections between all node enclosures to handle India’s industrial noise environment.
What is CAN FD and should I use it?
CAN FD (Flexible Data Rate) is an upgraded version supporting 2–8 Mbps data phase speeds and up to 64-byte payloads (vs 8 bytes in classic CAN). Required for modern automotive applications (AUTOSAR, Ethernet gateway bridging). For most Indian industrial and hobbyist applications, classic CAN at 500 kbps or 1 Mbps is sufficient. MCP2518FD module available on Amazon India for Arduino CAN FD projects.
Does CAN bus need isolation in industrial applications?
Yes — in industrial environments with variable ground potentials (multiple machines, heavy motor drives), galvanic isolation is strongly recommended. ISO1050 or ADM3054 are popular isolated CAN transceivers. The common-mode voltage tolerance of standard TJA1050 is only ±12V — motor drive environments can generate ground differentials far exceeding this.
Where can I buy CAN bus modules for Arduino in India?
MCP2515 CAN modules are widely available on Amazon India (₹120–250), Robu.in, and Zbotic.in. These modules include the TJA1050 transceiver and typically provide a screw terminal for CAN_H, CAN_L, and GND connections. OBD-II CAN sniffers are also available for automotive diagnostics projects at ₹500–1,500.
Add comment