digital transmission over long cables

Go To Last Post
8 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'm trying to drive 10x 75HC595 in serie over a distance of 20meters.
I'm using flat cables with 10 conductors.
All goes well for 3-4 units with less than 10meters, but as you might expect, I have transmission errors for more/longer than that.

I'm using a 125KHz SPI clock, but even if I decrease it to 500Hz I keep getting errors, so I guess it is more an EMI issue.

I have 1uF+100nF bypass on all chips, and the output to the bus is driven by transistors in totem pole.

I know the best would be to use a shielded cable and differential signals over twisted pairs...
But I'm trying to find ways I could preserve the signal integrity with the current design. (as bad as it is)

I thought I could make signal repeaters, add caps on the data lines, or sinking/sourcing current to a mid voltage or to a rail...
but that might not be a good idea because of the resistance of the wires...

Any idea on what could be best ?

Thanks !

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Termination.

To be more precise a biased termination.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

how much lines are used?
20meter flat cable sounds really expensive and indeed bad design.
you could make the signal lines differential,but then you need the connections.
you could make a current sensing system, If you can increase the voltage on the lines and then use opto isolators.
for emi you could make 1 line ground next signal then ground again that also should help a bit.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Do you have the '595s wired in parallel (driving all of the serial in lines together) or daisy chained (wiring the serial out from the first chip to the serial in on the second etc)? Can you scope the signals at the point in the chain where errors occur to see what's going on?

One potential issue is the rise and fall time of the clock line. You'll have a fair bit of reactance from the long cable slowing the transition times, and if the signal lingers in the middle too long you may be getting spurious clock transitions. Adding schmitt triggered buffers to the clock line at each node will help with that.

What sort of leads are the '595s driving? You may also need some bulk capacitance at each node, depending on what they're doing the caps you have may not be sufficient to maintain voltage supply levels during periods of high current consumption.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

A common problem. It serves to educate about signal integrity. As the others have noted, ground between each signal and something like a 33ohm resistor in series. The clock is usually the worst offender. The other issue is ground bounce. When switching large loads the 0V between the nodes may not be the same. If this violates the logic levels then certain nodes interpret this as a logic change and decide to reset/load/clock when they shouldn't. You've been lucky to get it to work over 10m - i've had issues on distances of 1m!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks all for the feedback.

I have the usual SPI lines : data, clock, OE, latch and +5V, GND.
I alternated power supplies/gnds with the signal lines.
Differential, opto coupling ... surely nice but it adds a good deal of price and complexity.

I'm driving the 595 daisy chained (Q7' into next spi in)
They don't have any significant load. (I mean less than 100uA)

Unfortunately, it is difficult to connect a scope in the current setup. (making it problematic to debug)
But I'll give it a try.
Before installation I tested with 20meters cable and it was ok. Of course things get different when installed.

Now I'm starting to think totem pole is actually a bad idea.
I'm reducing significantly the voltage swing on the data lines...
A single transistor and a pull up should be better.
(I don't mind the extra power wasted)

Nice idea for the schmitt trigger buffer.
I'll give it a try.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

did you measure the current while the chain was active?
or when it was waiting for a next transmission?

I have been bit in the past where when the system was waiting the current indeed was close to 0, but when we activated the clock that would change to milliamps.

I'm also interested in the impedance of that 20meters. If the supply also runs through them you might want to check the impedance and see that the supply is not becoming unstable due to the switching load(your data-lines switching)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks for all the suggestions, it is now all working fine.
Seems the main issue was the wire resistance, the totem pole voltage drop combined with stray capacitance.
I added a few 74HC244 on strategic places on the cable and I can now transmit data at 8MHz without a glitch.
74x244 is not a schmitt triggered one, but I had no schmitt triggered ICs in sufficient stock.
For the clock and data I combined two outputs to compensate for the much faster signal.
I didn't had a chance to measure the voltage drop at the end of the cable yet.

Now that I have more time, I'll redesign using RS-485 and RJ45 twisted pair cabling which is way more resilient.

Thanks again for the feedback, it's always a pleasure to post a question on this forum and get return so quickly.