

The BTS7960 is a high-current H-bridge motor driver IC designed for controlling DC motors. It is capable of handling up to 43A of continuous current, making it suitable for high-power applications. The device is widely used in robotics, automation, and industrial motor control systems due to its efficiency and robust design. Additionally, the BTS7960 includes built-in protection mechanisms such as over-temperature and over-current protection, ensuring reliable operation in demanding environments.








The BTS7960 is a powerful motor driver with the following key specifications:
| Parameter | Value |
|---|---|
| Operating Voltage Range | 5.5V to 27V |
| Continuous Current Rating | Up to 43A |
| Peak Current Rating | 50A |
| PWM Frequency | Up to 25kHz |
| Logic Input Voltage | 3.3V or 5V (TTL compatible) |
| Over-Temperature Protection | Yes |
| Over-Current Protection | Yes |
| Dimensions (Module) | 43mm x 45mm x 28mm |
The BTS7960 module typically comes with the following pins:
| Pin Name | Description |
|---|---|
| VCC | Power supply for the motor (5.5V to 27V). |
| GND | Ground connection. |
| RPWM | Right PWM input signal for controlling motor direction and speed. |
| LPWM | Left PWM input signal for controlling motor direction and speed. |
| R_EN | Enable pin for the right side of the H-bridge. |
| L_EN | Enable pin for the left side of the H-bridge. |
| IS | Current sensing output (optional, used for monitoring motor current). |
| Motor+ | Positive terminal of the motor. |
| Motor- | Negative terminal of the motor. |
Below is an example of how to control a DC motor using the BTS7960 and an Arduino UNO:
// Define pins for BTS7960 connections
const int RPWM = 5; // Right PWM pin
const int LPWM = 6; // Left PWM pin
const int R_EN = 7; // Right enable pin
const int L_EN = 8; // Left enable pin
void setup() {
// Set pin modes
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(R_EN, OUTPUT);
pinMode(L_EN, OUTPUT);
// Enable both sides of the H-bridge
digitalWrite(R_EN, HIGH);
digitalWrite(L_EN, HIGH);
}
void loop() {
// Example: Rotate motor forward at 50% speed
analogWrite(RPWM, 128); // 50% duty cycle
analogWrite(LPWM, 0); // No signal to LPWM
delay(2000); // Run for 2 seconds
// Example: Rotate motor backward at 75% speed
analogWrite(RPWM, 0); // No signal to RPWM
analogWrite(LPWM, 192); // 75% duty cycle
delay(2000); // Run for 2 seconds
// Stop the motor
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
delay(2000); // Wait for 2 seconds
}
Motor Not Running
Overheating
Erratic Motor Behavior
Arduino Not Controlling the Motor
Can the BTS7960 drive stepper motors?
What is the purpose of the IS pin?
Can I use the BTS7960 with a 3.3V microcontroller?
What happens if the motor draws more than 43A?
By following this documentation, you can effectively use the BTS7960 motor driver in your projects.