manage 700 devices

Dear experts, pls help to find the best solution for my project.
It’s needed manage 700 devices using 48V, located as a line 7 meters.
I.e. 100 devices per 1 meter. Distance between Interface boards = 0,5 meters.
Central board sends bits to Interface boards.
If bit=1 interface board should send 48V to a device, if bit=0 – not send.
Signal from all Interface boards must be sent to all 48V devices simultaneously. I.e. devices must work simultaneously.
Time between bit sequences = 1ms
Pls, see the attached picture.

I know two solutions.
Solution 1:
Central board = Arduino UNO
Interface boards = Shift registers 74HC595 + transistor arrays ULN2003A + buffers 74HC241
Protocol SPI.

Arduino using SPI sends 700 bits per 1ms to shift registers 74HC595 (daisy chain connection) and using latch all bits will go to devices through transistor arrays ULN2003A. Buffer 74HC241 will retransmit Clock, Latch, Data signal from one Interface board to another.

But I am afraid that because of long distance and retransmissions Clock signal will be distorted and data can’t be written into some 74HC595.

Solution 2:
Central board = Arduino UNO
Interface boards = Arduino Nano + Shift registers 74HC595 + transistor array ULN2003A + buffer 74HC241
Protocol between all Arduino - UART TTL
One digital input of all Arduino Nano is connected to Central board through transistor.

Central boards sends many bits to all Arduino Nano (for example 700bits * 300, i.e. 50bits*300 for each Interface board). So, all Arduino Nano will know data in advance for 300 times and they just need push data to their shift registers partially 50 bits for one time, wait for 1ms and push next 50 bits and so on.

But here all Arduino Nano should start write data to register simultaneously.
So, Central board must “inform” about it all Arduino Nano.
That is why one digital input of all Arduino Nano is connected to Central board through transistor.
When signal is HIGH from Center board, Arduino Nano should write 50 bits to register and switch latch.

Here I am not sure about simultaneity of appearing data in shift registers and simultaneous work of 48V devices.

May be there is another solution…
Guys, how do you think?
Pls, help…

Your schemes do no seem to take the "slave select" line into consideration. Without this line being implemented, it won't work. Also, how would the shift registers be able to cause a retransmission?

Paul

Hi Paul! Yes, from Center board there will be 3 wires: Clock, Data, Latch.
I suppose to use buffer 74HC241 for retransmission. It will be after the last shift register in each Interface board.
Will it work and in which speed?

Replace 74HC595 + ULN2003 with TPIC6B595 or TPIC6C595.
I'd go with 74AC125 for a buffer. More drive capability to overcome capacitance of cabling between units.

digitalWrite(ssPin, LOW);
for (x=0; x<numberOfBytes; x=x+1){
SPI.transfer(dataArray[x]);
}
digitalWrite(ssPin, HIGH); // all outputs update on this rising edge.

With 74AC125, the delay thru each part is 6-7nS, so with 10 buffers all outputs will still update in the same clock cycle, to the eye it will look simultaneous. Will need many more to have enough lag from first to last to notice it.

CrossRoads:
Replace 74HC595 + ULN2003 with TPIC6B595 or TPIC6C595.
I'd go with 74AC125 for a buffer. More drive capability to overcome capacitance of cabling between units.

digitalWrite(ssPin, LOW);

for (x=0; x<numberOfBytes; x=x+1){
SPI.transfer(dataArray[x]);
}
digitalWrite(ssPin, HIGH); // all outputs update on this rising edge.



With 74AC125, the delay thru each part is 6-7nS, so with 10 buffers all outputs will still update in the same clock cycle, to the eye it will look simultaneous. Will need many more to have enough lag from first to last to notice it.

Hi Cross! Thank you for so great suggestions! TPIC6B595 and 74AC125 - it's really what I need.
I have several questions:

  1. how many TPIC6B595 can I locate in an Interface board? Are 6-8 ok?
  2. what is the optimal distance between Interface boards (between 74AC125 of one Interface board and the first TPIC6B595 of the next Interface board) for Clock 8MHz and Data 1-4MHz? Is 0.5 meters ok?
  3. which wires should I connect to buffer 74AC125? Clock, Data and Latch? or only Clock? or only Clock and Latch?

Thanks!