0
\$\begingroup\$

Do you have any recommendations for a medium range (~10 meters) two-wire bus? My supply voltage is 24V and I'll have a single master with ~50 slaves connected to it. I've looked into:

  • I2C - Great but won't reach that long (Capacity limit, bus buffers might be an option though)
  • SPI - Not two-wire, but kind of the same deal as I2C
  • CAN - An option, but this is more of a multi-master bus and probably needs a termination resistor
  • RS485 - Seems like the best choice so far, could use an UART-RS485 transceiver, but still needs a termination resistor like CAN does

Topology

\$\endgroup\$
  • \$\begingroup\$ What types of outside interferers must you tolerate? If the interferers cause bit errors, will your system detect those and request a 2nd transmission? And are your Grounds at the same potential (anything that uses multiple power outlets inside a house must expect SOME ground voltage differences)? What data rates? 100 ohm bus (lots of twisted-pairs are about 100 ohms, with 10,000pF (10nF, 0.01uF) every meter to reduce the amplitude of electric-field-injected spikes, will have 10 microsecond timeconstant, easily allowing 1,000 bits per second. And use Schmidtt Trigger receivers. \$\endgroup\$ – analogsystemsrf Feb 18 at 14:52
  • \$\begingroup\$ I don't know how I'm gonna manage interference yet, but this is non-critical data and gets refreshed often enough to not matter at this stage. My grounds are all at the same potential, since they will all be fed by the same power supply. I edited my question to show my topology and further illustrate my planned circuit. Every slave basically a single pcb. They are probably going to be connected with pcb edge connectors but I'm kinda worried about the contact resistance in those. \$\endgroup\$ – cyntrex Feb 18 at 15:20
  • \$\begingroup\$ It doesn't look like a two wire bus application to me. Did you ask a similar question a week or so ago? \$\endgroup\$ – Andy aka Feb 18 at 15:52
  • \$\begingroup\$ Interesting, that was not me but I'm looking for a sort of similar thing. I didn't find this question when I searched though. My goal is to design a fully modular LED panel system though, not a festo cube. Maybe this can be accomplished with I2C multiplexing, but I don't know how well this would work considering I'm designing it to be fully modular. \$\endgroup\$ – cyntrex Feb 18 at 16:04
  • \$\begingroup\$ The way you have the wiring drawn will not work for CAN or RS485. You need to daisy-chain, not repeatedly fan out. \$\endgroup\$ – DKNguyen Feb 18 at 21:33
2
\$\begingroup\$

50 slaves sounds a lot like you want a proper network with flexible architecture instead of a shared bus, even if only to isolate problems. Your rather complex graph illustrates how little a daisy-chained bus would work for you.

As such, Ethernet is pretty popular, and mature. With IP and TCP atop of that, there's even proven software stacks that you can find for almost all microcontrollers that come with Ethernet interfaces.

These certainly are ubiquitous, and not too expensive. For example, the SAME53 family comes with a 10/100 Mb Ethernet MAC. Just add a RMII PHY (86 ct example), and be done: you get full networking, with collision detection, checksum offloading and whatnot. Since that thing is a popular ARM, you probably get to choose when (if, no need for IP in all cases) picking a network stack.

So: When building a network, like you clearly do, use a network, not a bus.

\$\endgroup\$
0
\$\begingroup\$

RS485 connection from the master to all the slaves connected in parallel would probably be best. Two wires for half-duplex, four wires for full-duplex.

This application goes into details of wiring them all up. Need a termination resistor at each end of the chain (master, and final slave).

https://www.maximintegrated.com/en/app-notes/index.mvp/id/723

\$\endgroup\$
  • \$\begingroup\$ Since I'm designing this to be fully modular and I don't want to burn watts in resistors where I don't absolutely need to, I don't really see this as a viable option. \$\endgroup\$ – cyntrex Feb 19 at 8:51
  • \$\begingroup\$ Make one of the modules the termination resistor that goes at the end of the chain. \$\endgroup\$ – CrossRoads Feb 19 at 11:27
  • \$\begingroup\$ But any one of those modules should be able be repositioned to any given position in a 2D-field as long as it is still connected horizontally or vertically with any other slave or the master. \$\endgroup\$ – cyntrex Feb 19 at 12:35
  • \$\begingroup\$ If you don't arrange the bus as a long parallel set of wires with slaves attached here & there with short stubs, and a termination wire at the end of the parallel set of wires, then I suspect you will have signal degradation problems to deal with. \$\endgroup\$ – CrossRoads Feb 19 at 12:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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