CAN Bus Physical Layer Implementation


I'm currently in the process of designing a wired network for home automation and have chosen CAN. I've been prototyping with the Seeed Studio shields, but for my full implementation I'll be using custom circuit boards with the same CAN controller and transceiver. My questions relate not to these chips but to general implementation of the bus in hardware.

I've been reading through documentation form Schneider Electric (here). My plan is to have simple PCBs for the taps with terminal blocks for CANH, CANL, and GND and another simple set of PCBs for bus termination. The CANH and CANL wires will be a twisted wire pair of 22 AWG hookup wire from Adafruit and will be bundled up with the ground cable in plastic spiral wire wrap.

At start the bus should only be about 10 feet long with three devices, but I'm hoping for this to be extensible. I'm aware that as I add length to the bus I may have to reduce my baud rate due to capacitance.

Is anyone here experienced with CAN bus at all and can point out any details I'm not accounting for? I'd hate to twisted together 10 feet of wire and find out I did something terribly wrong! :slight_smile:


You can use CAT5, just pick a pair already twisted. You can use the other pairs for 24V and GND from a descent Use a step-down to 5V on each node and it should keep current very low.

Btw, you just need CAN H and CAN L for communication, there’s no need to share same ground.

You can use CAT5, just pick a pair already twisted. You can use the other pairs for 24V and GND from a descent Use a step-down to 5V on each node and it should keep current very low.

That's a very convenient solution, thanks for the tip!

Btw, you just need CAN H and CAN L for communication, there's no need to share same ground.

In my application some of the devices will be powered by a separate battery or other power source. Without a common ground is it not possible a pretty large voltage differential could appear across the CAN bus? Do the transceivers isolate the bus in some way and to what degree?

Standard transceivers are not isolated but you can get isolated ones ( or build your own isolation, but I can't see a reason why complicate things for a home-automation environment. The CAN transceivers are normally very resilient and already tolerant to some kind of offset.

Now I mention that there's no need for common ground, but if you start to have huge ground offsets for any reason, you would need a common ground, but in this case would be interesting to understand why. You mentioned battery devices, that can be a good reason to share ground.

Now if you use a Cat5 or multi-pair wire, why battery if you already have wiring going to the remote node? If you end-up with a very long bus, you could even split the power distribution in smaller segments.

I hadn’t considered the Cat5 wire before, I just had some hookup wire laying around and had planned to use that. Looking into Cat5 though I see it is pretty economical and will make power transmission pretty straightforward as well. The industrial quantities will motivate me to expand the bus and make use of it too! :slight_smile:

I’ll probably be moving forward with that and when I get to implementation I’ll be sure to post my results back here. One thing I know I’ll be keeping in mind with the Cat5 cable is that the gauge is rather small so I will want to have smaller supplies spread throughout so I’m not running too much current through tiny conductors.

Sure, you'll have massive voltage drop along the cable... that's why the best approach is to have the highest voltage as possible, like 24V (or even 36V/48V) and have an efficient step-down on each node.

Something like this should be ok from a 24V rail:, there's a variable output option as well:

With an 1Amp PSU at 24V you should be able to feed lots of nodes :slight_smile:

If you need really long Bus and still have a single power supply along of it, a 48V would be the best option, here a cheap step-down:

You should be able to get good PSU and centralizing the power source you can easily add a battery backup.

I am currently running a CAN Bus in my house.

Specs: 12 cheap Chinese CAN Bus modules.
11 cheap Chinese Arduino Pro Mini's, one for each module.
1 cheap Chinese Arduino UNO at the receiving end in my office.
1 cheap 5v DC power supply connected at the 100' point ( supplies most of the power ).
200' cheap four conductor telephone wire from Lowe's ( not twisted pairs ).
11 cheap plastic electrical boxes w/covers from Lowe's.
12 RJ11 telephone jacks.

My office is at the south end of the house and my cable runs from there all through the house and the final end is in the garage. There are ten temp/humidity sensors and two door sensors.

I use the red and black wires for system power. And I use the yellow and green wires for the High/Low.
I put RJ11 telephone plugs on all the wire ends. And RJ11 telephone jacks on each node box which
connect to the CAN Bus module and Mini Pro. This system has now been running for about ten months with no problems. It has never failed, just keeps thumping away.