How I Fixed My Burnt BTS7960 Motor Driver and Brought It Back to Life

by Chijipeters in Circuits > Electronics

64 Views, 0 Favorites, 0 Comments

How I Fixed My Burnt BTS7960 Motor Driver and Brought It Back to Life

20250626_153048.png
20250625_224635.png
20250626_115702.png

Background

While testing my motor driver, I accidentally connected an unregulated 5V supply directly to the VCC pin of the BTS7960 board. This mistake burned out the onboard buffer IC, a 74HC244 (Octal Buffer/Line Driver), which handles the logic-level signal routing between the microcontroller and the BTS7960 H-bridge chips.

This is a common issue among makers and hobbyists, and it often leads people to dispose of the entire motor driver. But in reality, the two BTS7960 chips usually survive the mishap, the only component that fails is the 74HC244 buffer IC.

In this blog post, I will show you how to bypass the burnt buffer IC and directly control the BTS7960 chips using an Arduino (or any microcontroller). This way, you can still reuse your motor driver without replacing the damaged buffer IC or buying a new module.


Signs of Failure

The most obvious sign of failure is a visible burnout or hole on the buffer IC itself, usually near the middle of the chip. Despite all external connections being correct, the motor driver will stop responding entirely, no output to the motor, no current draw, and sometimes even shorting on signal lines.

This failure can be deceptive. Since the BTS7960 H-bridge chips are typically robust and remain unharmed, many users misdiagnose the board as completely dead and throw it away. In reality, it's just the 74HC244 that's failed, and with a simple bypass, the board can be restored to working condition.


Supplies

Tools Needed

To carry out this simple repair and bypass the damaged buffer IC, you'll need the following tools and components:

  1. Burnt BTS7960 Motor Driver Module – The board with the damaged 74HC244 buffer IC
  2. Multimeter – For basic continuity testing and voltage checks
  3. Jumper Wires – To manually connect control signals to the BTS7960 H-bridge chips
  4. 10 kΩ Resistors × 4 – Used to limit current going into the control inputs
  5. 470 nF Ceramic Capacitors × 2 – For decoupling and noise filtering
  6. Soldering Iron & Desoldering Tools – For safely removing or bypassing the buffer IC
  7. Flux and Solder – To ensure clean and reliable solder joints


Optional

  1. Arduino Uno or any other Microcontroller – For testing the repaired board with control signals

Remove the Buffer IC

20250626_120040.png
20250625_192027.png

The datasheet for the BTS7960 driver IC from the manufacturer shows a simplified application circuit that directly connects the BTS7960 to a microcontroller, without the use of a buffer like the 74HC244. This is the same approach we'll use to revive the burnt motor driver.

Start by carefully desoldering the damaged 74HC244 buffer IC from the board. Once removed, clean the solder pads using flux, solder wick, or a desoldering pump to expose the traces.

Identify Pads

table.png
20250625_185340.png
20250626_115348.png

Your goal is to find the four output pads from the buffer IC: 1Y0, 1Y1, 1Y2, 1Y3, which lead to the BTS7960 chips. Also identify the corresponding input-side pads, 1A0, 1A1, 1A2, 1A3, where the signal from your microcontroller would normally come in.

On the BTS7960 module, the buffer IC usually connects as shown in the table

Bridge the Pads With Resistors or Extend With Wires

20250625_191035.png
20250625_192520.png
20250625_192827.png

Option A: Use Resistors on the Board

Solder a 10 kΩ resistor across each pair:

  1. 1A0 to 1Y0
  2. 1A1 to 1Y1
  3. 1A2 to 1Y2
  4. 1A3 to 1Y3

This setup allows you to keep using the existing input header on the board for signal input.


Option B: Use Wires with Inline Resistors

Solder wires from each of the Y-side pads (1Y0-1Y3) and connect them directly to your microcontroller. Add a 10 kΩ resistor in series to each wire, close to the microcontroller. In this case, you won’t use the input header on the BTS7960 board anymore.

Also, after the buffer IC is removed, you no longer need to power the board's VCC pin (5V), just connect GND between the motor driver and your microcontroller.


Add Noise Filtering Capacitors

20250625_194341.png

For stability, a 470nF ceramic capacitor is soldered directly from VS to GND close to each of the two BTS7960 IC on the board. This is recommended to provide current for the switching phase via a low inductance path as suggested by the device datasheet..

Final Testing

circuit_image (1).png

Connect the following to your microcontroller:

  1. PWM pins should be connected to GPIO pins on the microcontroller
  2. Enable pins can be tied to 5V for constant HIGH or controlled via the GPIO pin of the microcontroller.
  3. GND is shared between the microcontroller and motor driver.

Upload your motor control code, power the motor driver with an external 12V–24V DC supply and test.

If everything is wired properly, your BTS7960 module should now work just like before, even without the buffer IC.


Connections to test with an Arduino Uno Microcontroller

  1. RPWM from BTS7960 to D5 on the Arduino Uno
  2. R_EN from BTS7960 to pin D7 on the Arduino Uno
  3. LPWM from BTS7960 to pin D6 on the Arduino Uno
  4. L_EN from BTS7960 to pin D8 on the Arduino Uno


Arduino Test Code for Repaired BTS7960

// Define BTS7960 input pins

const int RPWM = 5; // Right IN (PWM)

const int LPWM = 6; // Left IN (PWM)

const int R_EN = 7; // Right INH (Enable)

const int L_EN = 8; // Left INH (Enable)


void setup() {

// Set control pins as outputs

pinMode(RPWM, OUTPUT);

pinMode(LPWM, OUTPUT);

pinMode(R_EN, OUTPUT);

pinMode(L_EN, OUTPUT);


// Enable both sides

digitalWrite(R_EN, HIGH);

digitalWrite(L_EN, HIGH);

}


void loop() {

// Rotate motor forward

analogWrite(RPWM, 200); // PWM signal (0–255)

analogWrite(LPWM, 0);

delay(3000); // Run for 3 seconds


// Stop motor

analogWrite(RPWM, 0);

analogWrite(LPWM, 0);

delay(1000);


// Rotate motor in reverse

analogWrite(RPWM, 0);

analogWrite(LPWM, 200);

delay(3000);


// Stop motor

analogWrite(RPWM, 0);

analogWrite(LPWM, 0);

delay(1000);

}


Downloads