Arduino – Is it necessary to use a pull down resistor with this BTS7960

arduinodriverlong-distancemotorpulldown

I have an Arduino Nano controlling a BTS7960 that is 10 meters away.

I have one 24V power supply.

Both the Arduino and the BTS7960 get 5V through a an LM2596 step down converter.

The BTS7960 "Enable" pins are hooked up to 5V output of the step down converter.

schematic

My problem is that this setup burnt the BTS7960 Before replacing it, I want to identify what made it burn.

I suspecting that either the RPWM and LPWM became both HIGH (from parasites + long wire ) and burnt the driver so I should add pull down resistors, or there is something wrong with this configuration and using buck converters with common GND is what caused problems.

When I turn on the power supply the motor rotates for few seconds even though the Arduino didn't give orders to turn the motor on yet.

Update :

I changed the setup by adding a second 24V power supply that power the Arduino and the motor driver only, now it's been running for 15 days without any sign of noise signals triggering the motor driver.
This may not be the best solution but it seems like it work

Best Answer

You probably have a ground loop, and it's causing false signalling from the Arduino to the motor driver.

Basically, if you look at your diagram, you need to mentally substitute a string of resistors and inductors for all of the wires. The longer the wire is, the larger the resistance and inductance -- and ten meters is entirely too long for a single-ended logic-level signal.

Communication over that distance, in the presence of a noisy power connection* should either be done with the very careful application of something like RS-232, or -- far better -- with differential signalling (like RS-422) or by carrying the signal ground on a separate wire from the Arduino to the motor driver, and then using opto-isolators at the motor driver.

With your current setup, when the motor is on, and especially when you're driving a PWM signal to it, voltage will appear across your ground wire -- but the signals you're using to the driver board are referenced to the Arduino's ground. If the motor ground drops enough, the signals from the Arduino can both appear to be "on", even if they're not. Moreover, if the driver isn't protected, then the signals can go outside of the voltage range the chip can stand, and fry it on the input side.

Using differential signalling or opto-isolators running off of a separate reference ground from the Arduino will fix that. Using an Arduino on the left side for whatever user interaction you want, with a serial line (that itself uses RS-422) to the Arduino on the right side to drive the motor, will fix that.

You could also just generate 5V at the motor, and power the Arduino with a separate ground wire that's well-isolated from the one driving the motor. As long as you don't have any other ground connections, that may work -- but, 10 meters is a long way for what you're attempting.

Or you could place the motor driver right next to the Arduino, and just run your 10m wires out to the motor. That may actually be the easiest way to accomplish something that's electrically sound.

Having a circuit at the motor driver that won't let you simultaneously drive both half-bridges would be a good thing, too.

* Anything powering a motor is noisy.

Related Topic