The BTS7960 (commonly referred to as the IBT-2) is a high-current H-bridge motor driver designed for controlling DC motors. It is capable of handling high currents (up to 43A) and operates with PWM (Pulse Width Modulation) signals for precise motor speed and direction control. The module features built-in protection mechanisms, including overcurrent and thermal overload protection, making it a reliable choice for demanding motor control applications.
The BTS7960 motor driver is designed to handle high-power motors with ease. Below are its key technical details:
Parameter | Value |
---|---|
Operating Voltage | 5V logic, 6V–27V motor voltage |
Maximum Continuous Current | 43A |
Peak Current | 50A |
PWM Frequency | Up to 25kHz |
Logic Level Input Voltage | 3.3V or 5V (compatible with Arduino) |
Overcurrent Protection | Yes |
Thermal Shutdown | Yes |
Dimensions | 43mm x 45mm x 28mm |
The BTS7960 module has a total of 8 pins for interfacing with a microcontroller and motor. Below is the pinout:
Pin Name | Type | Description |
---|---|---|
VCC | Power Input | 5V input for logic circuitry. |
GND | Power Ground | Ground connection for logic circuitry. |
RPWM | Logic Input | PWM signal for controlling motor speed in one direction. |
LPWM | Logic Input | PWM signal for controlling motor speed in the opposite direction. |
R_EN | Enable Input | Enable pin for the right half-bridge. Set HIGH to enable. |
L_EN | Enable Input | Enable pin for the left half-bridge. Set HIGH to enable. |
MOTOR+ | Motor Output | Connect to the positive terminal of the motor. |
MOTOR- | Motor Output | Connect to the negative terminal of the motor. |
Power Connections:
Microcontroller Interface:
Control Logic:
Below is an example of how to control the BTS7960 motor driver using an Arduino UNO:
// Define pins for BTS7960 motor driver
#define RPWM 9 // PWM pin for forward direction
#define LPWM 10 // PWM pin for reverse direction
#define R_EN 7 // Enable pin for right half-bridge
#define L_EN 8 // Enable pin for left half-bridge
void setup() {
// Set pin modes
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(R_EN, OUTPUT);
pinMode(L_EN, OUTPUT);
// Enable both half-bridges
digitalWrite(R_EN, HIGH);
digitalWrite(L_EN, HIGH);
}
void loop() {
// Move motor forward at 50% speed
analogWrite(RPWM, 128); // 50% duty cycle (128 out of 255)
analogWrite(LPWM, 0); // LPWM set to LOW
delay(2000); // Run for 2 seconds
// Stop the motor
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
delay(1000); // Pause for 1 second
// Move motor in reverse at 75% speed
analogWrite(RPWM, 0); // RPWM set to LOW
analogWrite(LPWM, 192); // 75% duty cycle (192 out of 255)
delay(2000); // Run for 2 seconds
// Stop the motor
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
delay(1000); // Pause for 1 second
}
Motor Not Running:
Overheating:
Erratic Motor Behavior:
Module Shuts Down Unexpectedly:
Q: Can I use the BTS7960 with a 3.3V microcontroller?
A: Yes, the BTS7960 is compatible with both 3.3V and 5V logic levels.
Q: What is the maximum PWM frequency supported?
A: The module supports PWM frequencies up to 25kHz.
Q: Can I control two motors with one BTS7960 module?
A: No, the BTS7960 is designed to control a single motor. For dual-motor control, use two modules.