I want to wire a CAN bus for multiple motors(BLDC) in robotic arm. I am building out my motor such that they have a controller and a CAN transciever built in. There will be upto 6 motors with the total length of the bus bieng around 1 to 1.5 meter.

What kind of physical architecture is best suited for this kind of application?

Should I daisy chain them or should I use a T connector and drop off a connection for every motor or is there an option better than both? Considering I will have around 6 drop off points.

My main requirements are reliability of data, atleast 256kbps of speed on the CAN Bus, and also, the whole system with the motors will be moving and could be exposed to noise from the motor power line.

  • \$\begingroup\$ If you have to do a T, keep in mind that max drop length is 1m. It does help you, however, that the length of the bus is short and the data rate is moderate. \$\endgroup\$ Commented Jul 14, 2016 at 17:03
  • \$\begingroup\$ Exactly why did you choose CAN? \$\endgroup\$
    – PDuarte
    Commented Jul 14, 2016 at 19:46
  • \$\begingroup\$ @PDuarte I'm using can mainly for the addressing(filtering messages via ID) and noise tolerance features, do you think any other bus would serve those aspects better? \$\endgroup\$ Commented Jul 15, 2016 at 20:19
  • \$\begingroup\$ @TarangShah CAN it's a good choice. Although if you need to simplify your design but keep the addressing feature you can also consider LIN as a solution. It's a little worse for noise tolerances but I'm pretty sure it'll be reliable for your application. \$\endgroup\$
    – PDuarte
    Commented Jul 15, 2016 at 20:45
  • \$\begingroup\$ @TarangShah ... and it's also cheaper \$\endgroup\$
    – PDuarte
    Commented Jul 15, 2016 at 20:46

1 Answer 1


You would have a CAN backbone of the typical layout, as shown in this Wikipedia-provided image: enter image description here

You'll want to define how this backbone will be routed in your robot. The resistors will go at each end of the backbone. "T" or "Y" connectors and/or splices are commonly done. CAN "Y" connectors are a reliable way to do it but will be expensive and consume space. Splices are cheap and small but make sure they are reliable.

Given your dimensions, you are well within tolerances for backbone total length and stub lengths.

If each controller drop on the bus has an optional 120 ohm CAN resistor, make sure it is taken off in the drops in the middle and left on in the nodes at the end, such that there are only two 120 ohm resistors in the circuit. As per some CAN specs (J1939) you aren't supposed to put the resistors inside a node, but many (most?) products put them into nodes because it is far cheaper that way. To make sure you did a good job, put a multimeter between CAN High and Low and you should see close to 60 ohms (which is what you get with two 120 ohm resistors in parallel).

For your robot, try to twist the CAN High and Low wires together as they make their run through the robot. For your application I wouldn't worry too much about the number of twists per inch, and frankly it would probably work without twisting, but it gives it some EMI resistance which is probably why you are using CAN.

If you are making your own harness, try to use yellow wire for CAN High and green wire for CAN Low. Those are the standard colors.

Bonus if you get a UTP or STP (unshielded/shielded twisted pair) cable to do your install. If you use shielded, you will need to connect the shield to negative battery. For your application, I suspect you won't need shielded cable and can get away with unshielded cable or unshielded wires twisted together.

You may also check out the DB9 CAN standard - might be useful, or maybe not.

enter image description here

  • \$\begingroup\$ I was suggested to use a dual output CAN transciever(AMIS 42700 - onsemi.com/pub_link/Collateral/AMIS-42700-D.PDF) to daisy chain the motors, will that be overkill? for my lengths? \$\endgroup\$ Commented Jul 15, 2016 at 20:21
  • \$\begingroup\$ "Those are the standard colors" As per which standard? Industry de facto? \$\endgroup\$
    – Lundin
    Commented Aug 9, 2016 at 12:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.