4
\$\begingroup\$

I'm designing a communication network for private home automation. My design goals are:

  1. Local wrt network changes. That is, changing one part of the network should not require modification of the network as a whole.
  2. Easy to use. Adding or removing devices should be simple.
  3. Allow complex topologies, ideally multi-star.
  4. Being able to use existing infrastructure (CAT 5 cables).
  5. Inexpensive.

Originally I considered 1-Wire, but further investigation lead me to the conclusion that it doesn't cope well with EMI noise and that the available hardware is becoming obsolete.

Learning about CAN, I then considered ISO 11898-3 physical layer, which does allow multi-star topology. However, it seems that it's not being widely used nor supported, and I only found a very few ICs that support it. And most importantly, it's lacking the locality property: The terminator resistance should be split equally between all terminal nodes, which means either updating the whole network after adding a new node, or accepting improper termination.


Eventually I came to the idea to make the CAN bus internally linear, and achieve arbitrary topology by connecting each node to it by two pairs of wires. One pair connects to the "left" part of the bus (pins 3 and 4 below) and the other pair to the "right" part (pins 5 and 6). Both ends of the bus will be terminated in the master node. Essentially this is traversing the network tree:

Parts of the bus could be connected as follows (Vcc is power distributed from the master node to all the others):

Schema

I see these advantages:

  • The bus will be linear, adhering to the standard and making its behavior predictable.
  • Can use standard ISO 11898-2 components.
  • Satisfies my design criteria above.

And potential disadvantages:

  • Uses 2 pairs of wires instead of 1, making the bus twice as long, However, the actual length of cabling will be the same, since I'd use CAT 5 cables anyway.
  • Somewhat less resilient - a broken connection cuts off the rest of the bus, not just a sub-tree.
  • All sockets need to be plugged in, otherwise the bus gets broken. So if a node is removed, either its closest split needs to be removed as well, or it needs to be replaced by a stub that connects 3⬌5 and 4⬌6.

Is this a viable, or commonly used approach? Are there any potential pitfalls?

\$\endgroup\$
5
  • \$\begingroup\$ Cat5 pairs are 3+6 and 4+5. What is VCC? If this carries power, look at PoE; meeting 802.3af/at standards would be difficult here, but there are some off-standard solutions as well. Remember that power doesn't have to follow same path as data. \$\endgroup\$
    – mbedded
    Commented Jul 24, 2020 at 22:43
  • \$\begingroup\$ You're right, the pin numbers were wrong, I fixed that. (I didn't care about exact details yet.) PoE is a good idea. Ethernet+PoE was actually one of the alternatives I considered as well, but it seems to be much more challenging technically, and even more (or even impossible) to achieve arbitrary branching of the network. In any case I like the idea of adhering to its standard pin connections, even if it won't be 802.3af compatible. \$\endgroup\$
    – Petr
    Commented Jul 25, 2020 at 9:14
  • \$\begingroup\$ Is seems that your split could/should be totally symmetric (radially). Then it wouldn't matter which port was used for what, which would simplify install and reduce risk of crosswiring. \$\endgroup\$
    – mbedded
    Commented Jul 25, 2020 at 14:49
  • \$\begingroup\$ Passive PoE - like you have - is pretty common, and usually uses 12-48V with a pretty low current limit (for safety). Watch for voltage drop across cables; the increased V will give you more margin and (with switching regulators) will decrease the drop itself. \$\endgroup\$
    – mbedded
    Commented Jul 25, 2020 at 15:05
  • \$\begingroup\$ @mbedded Both are great ideas, thanks! I found MAX17610 current limiter, which looks ideal both for protecting and monitoring the power part of the network. \$\endgroup\$
    – Petr
    Commented Jul 28, 2020 at 17:40

1 Answer 1

1
\$\begingroup\$

I started to explore this idea as an open-source project, to experiment with it and validate it in practice: https://github.com/ppetr/home-automation-CAN

\$\endgroup\$

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.