4
\$\begingroup\$

I want to create simple network consisting of 1 master and up to 16 slave nodes. Project will be based on PIC MCUs.

Network has the following specs/requirements:

  • Relatively low speed
  • Inexpensive
  • Cable lengths up to 20m
  • 4-line limit (2 power + 2 data)
  • Slaves connected directly to Master (Star network)
  • Master initiates any transmissions (if it matters)

I have considered 1Wire, I2C and RS485, and my final choice fell onto RS485 as it seems the best for the task at hand.

However, I've been reading that using Star topology with RS485 is not recommended due to reflection and some other issues.

What would you recommend as the best option in this case? Stick with RS485 or look somewhere else?

\$\endgroup\$
2
\$\begingroup\$

Use switch

RS485 has a bus topology. The big problem is that if you have star topology, every ray of the star has to be terminated. This way, the master transmitter will be loaded with 16x||120Ω = 7.5Ω. Of course such small impedance will overload the transmitter.

There is another solution however. You should use a switch and connect the master only to the ray you want to communicate. I am not sure how exactly this schematic has to be implemented...

One of the solutions is to use a multiplexer and 16xRS485 transceivers - such as SN75176 or similar.

Another way is to use one transceiver and some analog multiplexers with low enough internal resistance.

(Or even electromechanical relays as a some kind of ultra-conservative design :) )

Connect the network in star without termination

It is clear, that if there is no termination resistors, the RS485 network can be safely wired in star topology.

The additional research lead me to this article, that states that for relatively short lines, the termination resistors can be omitted. The term "relatively short" depends on the transmission speed and for 9600bps is about 600m (stated in the article).

I made the same approximated calculations and for 20m line the transmission speed is around 1Mbps.

The condition is that the delay of the signal in the lines for 3 or 4 full trips (enough to dump the reflections) must be shorter than the half time of 1bit transmitted.

Well, in the article there is a presumption that the bit is checked near the middle of the bit width, but some receivers make several sampling of the bit in order to decrease the errors. In this case probably the acceptable speed will be even lower.

\$\endgroup\$
  • \$\begingroup\$ Thanks for the explanation. I like this approach, so I'll give it a shot. I'll try to find some mux with low resistance, hopefully it should do the trick. \$\endgroup\$ – Alex Oct 21 '13 at 10:01
  • \$\begingroup\$ I have decided to go with 16xSN75176, seems to be the best option at the moment. :) \$\endgroup\$ – Alex Oct 23 '13 at 8:32
  • \$\begingroup\$ @Alex - I am interested in this project, because I planned to do something similar. Is your project open source and can I follow it somehow? \$\endgroup\$ – johnfound Oct 23 '13 at 14:07
  • \$\begingroup\$ @Alex - There is some new information in the answer. It promises an easy solution. :) \$\endgroup\$ – johnfound Oct 24 '13 at 16:57
  • \$\begingroup\$ I'll probably open-source the communication part, as I already have comm protocol which I used over RS232 earlier and wanted to publish it, so I'll adapt it to this case. Regarding the answer update, I believe that star topology is possible, however there is one more reason I'll split the lines, namely, I have to handle the dynamic addressing of slaves and this will go a long way to achieve that. \$\endgroup\$ – Alex Oct 25 '13 at 20:16
2
\$\begingroup\$

Star connected networks have a limited operating distance at which point "reflections" will cause problems. This can be broken down to unit A transmitting to unit B - if there is nothing terminating the cable at point B, there will be reflections of energy back up the cable to point A. This can corrupt the data and make life difficult and really boring actually.

On short cable lengths reflections quickly die down and for slow speed data (a few kbps) you might get away with no terminators providing you slew rate limit the data edges being transmitted both ways - this largely gets rid of the high frequency content of the signal and things can just about work. So if you are going to transmit and receive a couple of kbps then use a 485 driver with slew rate control such as this the DS36C280. Rise and fall times can be as long as 3 micro seconds. This might work and there may be others than can provide even slower slew rates.

Alternatively, would sir be interested in using radio? It means the cabling is much simpler - just power to all the slaves and no need to worry about the power interfering with the data (it can happen). Nordic produce a decent array of radio transceivers at what appear to be insanely low prices. Here is an example, the nRF9E5 but there are probably other choices too.

\$\endgroup\$
  • \$\begingroup\$ Thanks for the clarification. I have actually considered wireless option initially, as it generally is better approach, however I only have access to nRF24L01 (now obsolete) chips. Until I get access to RF SoC you suggested (or something similar), I'll have to stick to cables, but I'll definitely go with wireless option in next iteration. \$\endgroup\$ – Alex Oct 21 '13 at 9:57

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.