explanation for voltage drop - suggestions?

I've got a weird problem that I can't figure out. I've made a cable that connects to a custom shield on a Mega 2650. The cable goes to a few external stepper drivers. For each driver there are three wires: one ground and two signal wires. The wires are of identical length from the Arduino to the motor driver, about 6ft or so. The grounds are all connected together, for all the drivers, back to the Arduino ground. The cable itself is a bunch of twisted pair wires, themselves twisted and then all of it shielded.

For each motor, both signal wires are connected to digital outs on the arduino. Both pins on the board are correctly outputting 5v at the board. I'm getting 5v on each at the correct locations on the shield. However, by the end of the cable, one of the wires is only giving me 1V. The other is a solid 5v. I've checked all solder connections, and I've tested continuity. Everything is as it should be, except this one wire is losing 4v somewhere along the way. Any ideas why?

There are 4 motor drivers that connect to this cable. When I wired it up, I didn't really bother to pair up the two signal wires for each motor so that they come from the same twisted pair inside the cable. Could this be why this is happening?

Thanks!

What is the resistance of the wire?
If it is not open, you must be wiring it incorrectly or there is a poor connection.

Probably the Arduino cannot drive the motors, you need a separate power supply to drive them
you need a transistor to drive the motors and you need to connect GND's of both the Arduino and external power supply

LarryD: 0.8 ohms on my multimeter, the same value for both wires.

robtillaart: The Arduino isn't powering the motors, it's just sending a signal pulse to an external driver, which is powering the motor.

Everything is as it should be, except this one wire is losing 4v somewhere along the way.

No matter what resistance that wire is there should be the same voltage on the start as the end providing there is no load on the far end.

So if you are getting only 1V at the end then there must be a connection to ground. Check the with a meter.

Either one connection is faulty or one pin on the Mega is faulty - can you swap wires/pins
to determine which is responsible?

So I've checked the wire in question and I'm getting no continuity when I connect it to ground. Is there some other way I should test this?

MarkT: I know I'm getting 5V on the correct pin on the shield, so it's not the output of the Arduino. The shield has a header that goes to a ribbon cable that's connected to a DB25 port. This has tested out ok. I've also taken apart my DB25 connector and tested the continuity of the wire (from the solder joint in the connector to the far end of the cable), and it's fine. And I've tested the DB25 connector itself and found no issues. I guess that leaves the connection between the wire and the DB25 port, so I'll check that next.

EDIT: just tested continuity from the pin on the DB25 connector to the far end of the wire, and it's fine.

I'm getting some voltage here, which I can verify by setting the pin's out to LOW. That drops it down to nothing. But when it's set HIGH, I'm consistently only getting 1V on that wire.

Unfortunately, I don't have any free wires left in the cable that I can test this with, as they're all soldered to the DB25 connector and assigned to pins on the Arduino.

Can you post a picture (not more than 1000 pixels) of your wires and Arduino connection.

I'll need to draw a diagram, since the arduino is about 6 feet from the end of the cable, on the other side of a big metal enclosure. Hang on and I'll draw it up and post.

Ok, here's a diagram of the basic layout. This is simplified, in that there are actually 11 sensors and there will eventually be 4 motor drivers (I'm only working with one at the moment). There are also 2 additional relays, but they're hooked up in exactly the same way and are functioning normally.

The motor driver only shows the connections coming in from the Arduino. I didn't think the outputs were relevant, though I suppose it may be worth noting that the COM connection on the driver is also connected to the Motor's ground wire.

The pin giving me trouble is #26, which connects to the "H.OFF" setting on the driver - a holding lock on the motor, which I need to be able to turn on and off at will. I've swapped the connector for Pin 4 to this, and that engages and disengages the lock correctly, so I've ruled out a problem with that in the driver.

Sorry this isn't a proper schematic, but hopefully it'll help.

So when you swap pins 4 & 26 at the far end (not arduino) does the fault follow the pin or is it swapped over.

I hope you are not connecting an arduino output directly to a relay, should not be asked to supply more than 40mA. Also is there a reverse biased diode across the relay?

When I swap 4 & 26, with 26 connected to the motor driver's CCW+ input, the problem follows the pin, 1V output, no motor movement. But the H.OFF then works with Pin 4 connected to it.

On the relay, yes, it's connected directly to the Arduino. It's an Omron G2R-2 SND 5V (Datasheet: Omron 198059, 1 datasheet pdf). I'll be using three of them: one controls the main power, 120VAC, another will control the 24VDC lamp house for the scanner, and the third controls 50VAC that drive the tension motors. Right now only one is wired up, for the main power on/off.

I'm replacing them with a couple of these units, though, since they're DIN-rail mountable: http://www.ebay.com/itm/131280406501?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Now that I look at it, it looks like the relay might be drawing too much power. Could that be causing this problem? If so, why would it only happen (all the time) on that one pin?

Yes that relay takes 106mA and 40mA is the point where damage starts to occur. Also as I said before you need a diode across that relay as well as a transistor to drive it.
It is possible that could be your problem. At the Arduino end disconnect all the signals and then only connect up the problem pair. Have you got a link to the motor driver data sheet. It sounds like there might be an optio isolator without a resistor in that. That would explain the voltage drop.

Just to be clear, when pin 4 drops to 1V you are measuring this without pin 4 being connected to the motor driver aren't you? Or does it only drop when you connect it up?

Ahh - ok. So I just re-tested it:

Pin 4: Totally disconnected from motor driver
Pin 26: Connected to H.OFF on driver: 1V
Pin 26: Disconnected from driver: 5V

I don't have a definitive link to the motor driver datasheet. It's an older driver and according to Oriental Motor, who makes it, was originally only sold in the Japanese market.

As for disconnecting things at the Arduino - that's going to take some time. Since everything is soldered to the motherboard, I'll need to manually wire up the spare Mega I've got to only include those two outputs.

For the relays can you suggest a transistor/diode combination I might use (or if not a specific one, the specs you'd recommend)? There will be three relays, all the same spec as the one I'm using now. Two will be used for controlling AC circuits (120v and 50v), and one will be used to turn on and off a 24vdc device.

Also, I guess while I'm at it I should also be putting diodes on all the the motor control outputs, right? Suggestions for those?

Thanks!

I guess while I'm at it I should also be putting diodes on all the the motor control outputs, right?

No the motor driver should have its own internal protection diodes.

For the relays can you suggest a transistor/diode combination I might use

No, any cheap NPN and diode like the 1N4001 will do.