PWM crosstalk/coupling?

I’m using 4 Dual VNH3SP30 Motor Driver Carrier MD03A controllers on a large robot, 24" square. Each controller is connected to a drive motor and a steering motor. I have used 28 gauge ribbon cable for the a,b pwm and vcc lines. Before installing the controllers on the robot, I tested each of them with the motors they’re driving and there were no problems.
What I am experiencing is what looks like crosstalk (I’m and EE). When I turn one motor on, 1,2 or 3 others come on also. I haven’t used capacitors on the motors yet - I will though. Do I need to be using shielded wire for the pwm lines? A MEGA is being used to talk to the controllers.

A second, related problem. When I run a motor forward, it runs as expected. When in reverse, there is a lot of noise, it runs very slow and with little torque.

I am powering this system with a 12v 18AH battery for the motors, and a second 12V 7AH battery with 5.0 V regulator for the electronics.

What I would do to debug this:

If you hook an oscilloscope to the PWM inputs of the motors that are supposed to not be running, what do you see on those signals? This should tell you whether it’s a problem before or after the controllers. With analog oscilloscopes, you should also be able to tell digital signals from analog interference/EMI/ringing.

If you unhook the motor that you are starting from the controller (while power is off) and then try to start that motor, do the other motors start? If they do, it’s very likely a software problem, or a combination of the software and how the hardware is hooked up.

If you unhook all the controllers, and look at all the outputs with an oscilloscope or logic analyzer, what do you see? This should clearly identify whether the software is actually doing the right thing or not.

When I disconnect all but one or two of the PWM lines at the MEGA, and drive one of the lines still connected, I see several of the other motors running. When I disconnect all but one or two of the PWM lines at the motor controller end and then drive on of the lines still connected, none of the other motors/controllers are active - not a peep. Is it the experience of others that, when running multiple PWM lines to motor controllers, shielded wire is the answer? I think I"m missing something.

With ribbon cable, you can have every odd wire grounded. This essentially eliminates crosstalk, if that is the problem.

Are you sure the PWM outputs are set as output pins? By default, they are inputs, but the “output” register controls a weak pull-up to the pins. Thus, the pin may read “high” or “low” based on the pull-up state, even when it’s actually an input.

jwatte - Yes, they are configured as output.

Jim Remington - have you actually seen this in operation? I’m about ready to re-wire with shielded twisted pair. I’ll wait to hopefully hear from you.

I believe what Jim suggests was the theory behind “UATA” cables that were popular for hard drives before SATA replaced them. IIRC, ATA used to be a 40-pin unbalanced interface, and UATA (ATA with UDMA modes) made it 80 pins where every other pin was ground – not quite differential signalling, but second best :slight_smile: