Wired communication from 1 atmel to many nodes

Right now i am looking for a better way to communicate to our wired nodes in a project that we are working on.

Currently there is 1 main node that all other nodes talk to that in turn handles all data back to a single computer. The nodes talk to the main node via Full Duplex 485.

I can do 4 nodes this way by having 4 separate 485 drivers sharing the same serial port to provide information to the nodes via the RS-485...

Topology goes as follows:

computer ----> main Node--> rs-485 --> daughter node
|--> rs-485 --> daughter node
|--> rs-485 --> daughter node
|--> rs-485 --> daughter node
|--> rs-485 --> daughter node
|--> rs-485 --> daughter node


(there are up to 12 nodes at this time that i need to communicate with, but more will eventually be created)

the rs-485 on the main node shares the second serial port on the device that is being used (there are 2 serial ports the other is being sent to the computer).

If i put a 5th device on the port that is live the signal on the serial port at the atmel device gets pulled from ~4.2V to about 2.9-3V for a digital high signal not including any extra noise from the multiple cable runs.

The length of the cables vary from 60Ft to 200Ft.

each node has a dedicated cable run that is terminated at the end of the run.

What is a recommended way of doing the communication between a single main node to many daughter nodes and allowing the daughter nodes to talk to the main node, but not to one another.

• I'm really not sure what problem you are having. RS485 drivers are good for many, many more slave connections than 4 or 5. – Andy aka Jan 7 '15 at 19:20
• It sounds like you're trying to make a star topology with bus topology devices. You only need 1 driver at the atmel end and all the slaves connect to that one driver. – Majenko Jan 7 '15 at 19:31
• Since I am using a Star style topology the multiple cable runs does not play well with a single driver in the experience that i have with it... I am currently using the LTC1690 rs-485 driver since i have had the best luck with it. – Friendlyghost89 Jan 7 '15 at 22:51

Could you set your daughter nodes as network slaves? Using a Master-Slave protocol and setting the daughters as slaves, they will only respond if they have been queried.

If I am not mistaken, using a multi-drop network topology with only one termination (rather than a a dedicated-terminated cable for each node), should avoid the large voltage drop.

• The daughter nodes have to be able to speak to the master under certain conditions... Think of it on how an alarm system speaks all the nodes talk to 1 central node and that central node can also poll info from the nodes to make sure they are still working not a basic alarm system(crude example but similar style) – Friendlyghost89 Jan 7 '15 at 23:48

The solution that @Javi proposes is identical to a control system I implemented in the early 1980s for control of projectors, videotape machines etc in a television studio environment. It was designed against a SMPTE draft standard, but I don't see anything on the web that suggests it ever became a full standard. From memory, specs were:

1. Worked over several hundred metres cable length
2. Standard audio twisted pair cable
3. 37kbaud async communication (modern micros could do better)
4. Only required standard UARTs
5. One master and up to 32 slaves on the bus.
6. Simple state-machine protocol. "Break" (a long low on the bus) would put all slaves into a known configuration. Master polled slaves regularly and asked if they had any data. Master would then initiate the transfer.
7. Ability to tell slaves they were part of a group, then the master could issue group commands.

RS485 is reasonably tolerant of a star topology, but I suggest you measure the longest cable run, and work out the reflection time (use 0.6 * speed of light as the speed on the cable). If the reflection time is under 10% of a bit time, you should be OK. The real fix is to run a single cable with one set of terminator resistors at the furthermost slave.