Necessary to think about wire interference for long ribbon wire?

Hi all,

I am building a prototype which has an arduino uno in a project enclosure on one end, and a bunch of sensors and actuators about two meter away, connected by a 10 wire-ribbon (like this: http://static0.ponoko.com/images/thumbnails/2011/07/30/004741_file.jpg?&s=c3fc6a1a30d78ad0). This wire is going to carry 9V, 5V, GND, and several digital data streams (0-5V). So there are no analog inputs through the wires.The current that will be flowing through will mostly be small amounts (i.e. 20mA for the data lines) and some bigger amounts (max. around 400mA for the 5V to GND). Being a relative beginner in electronics, I was wondering whether I should try to keep certain wires apart, because of interference or electromagnetism or whatnot (as the wires are directly next to each other on the ribbon). For instance, keeping the data lines away from the 9V, or keeping them apart from each other? Or doesn't interference play any significant role at these voltages and currents? Thanks!

What is the nature of the data? As in, how fast does it change?

If you have very fast edges in your digital signals you could see crosstalk from one wire to the next one over. The easiest fix for this is to not have very fast edges – which can usually be achieved by putting resistors in series with each data line to slow down the edge rate. You’ll have to tell us more about the “digital data streams” to determine whether or not this will work.

You also mentioned that the data lines will have 20mA of current flowing – is that because they are optically isolated? If so, you already have a pretty good method of noise immunity that is not going to depend so much on edge rates or how close the signals are.

Without any resistors or optoisolators, I would begin by separating data lines with ground lines, for example: data<–>ground<–>data<–>9V<–>data<–>ground, etc.


The Rugged Audio Shield: Line In, Mic In, Headphone Out, microSD socket, potentiometer, play/record WAV files

There is going to be:

  • a piezo buzzer on 9V, which will give short beeps but also more dynamic sounds over pwm
  • a vibration motor on 3V, probably going to give short bursts (e.g. 100ms on, 900ms off)
  • a three digit 7-segment LED display, connected to a few daisy-chained 8-bit shift registers, so only three wires in the ribbon (relatively fast updates in clock, latch and input wire)
  • a servo motor on 5V which is updated constantly

Hope this helps...

Hmm...OK, you will have a "noise soup" I think. The vibration motor and servo motor will likely be the noisiest. Keep them on one end of the cable, keep the shift register pins on the other and put 100 ohm resistors on them to slow them down a bit. That's how I would start.

-- The QuadRAM shield: add 512 kilobytes of external RAM to your Arduino Mega/Mega2560

Thanks Rugged! So do you mean put 100R's on the motor lines, or on the shift register lines (or both)? Also, would it matter if I put the 100R's at the Arduino end or at the receiver end? I have a more room at the Arduino end (the receiver end is going to be worn on the wrist), so it would be more convenient to put them there...

Just the shift register lines. Putting resistors at the Arduino end will be fine.

-- The Basic Motor Driver: simple, inexpensive motor driver for 1 stepper motor or 2 DC motors