Ir directamente al contenido

All items ship from our office in Colorado USA - $5.95 Flat-Rate US shipping & free shipping on orders over $75!

Double BTS7960 43A High Power Motor Driver / Smart Car Driver Module with Current Limit User Guide

BTS7960 43A High Power Motor Driver / Smart Car Driver Module

BTS7960 Motor Driver Overview

The Double BTS7960 is a fully integrated high-current 43A H-bridge motor driver module designed for demanding DC motor drive applications. Built around two Infineon BTS7960 half-bridge ICs configured as a full H-bridge, this module makes interfacing with microcontrollers like Arduino, ESP32, and Raspberry Pi straightforward thanks to its integrated driver ICs featuring logic-level inputs, current sense diagnostics, slew rate adjustment, and dead time generation.

The module includes comprehensive built-in protection against overtemperature, overvoltage, undervoltage, overcurrent, and short circuit conditions — making it an excellent choice for robotics, smart car platforms, electric vehicles, industrial automation, and any project requiring reliable high-current bidirectional DC motor control.


Features

  • Dual BTS7960 half-bridge ICs in full H-bridge configuration
  • Peak drive current of 43A per channel
  • Motor supply voltage range: 6V to 27V DC
  • Logic-level control inputs compatible with 3.3V and 5V microcontrollers
  • PWM frequency capability up to 25 kHz
  • Working duty cycle: 0% to 100%
  • Current sense (IS) output pins for real-time current monitoring
  • Integrated protection: overtemperature, overvoltage, undervoltage, overcurrent, and short circuit
  • Over-voltage lock out and under-voltage shut down
  • Isolated heat sink design for efficient thermal management
  • Control mode: PWM or logic level
  • Compact board size: 50mm × 50mm × 43mm (L × W × H)
  • Weight: approximately 66g

Specifications

Parameter Value
Driver IC
Dual BTS7960
Configuration
Full H-Bridge
Motor Supply Voltage (B+)
6V – 27V DC
Logic Input Voltage
3.3V – 5V
Peak Current
43A
Continuous Current
~10A (with adequate cooling)
PWM Frequency
Up to 25 kHz
Duty Cycle Range
0% – 100%
Operating Temperature
-40°C to +125°C
Board Dimensions
50mm × 50mm × 43mm
Weight
~66g

Schematic

BTS7960 Double 43A High Power Motor Driver / Smart Car Driver Module with Current Limit Schematic

Pin Descriptions

Control Input Header (8-Pin)

The 8-pin control header connects to your microcontroller. All logic inputs are active-high and compatible with both 3.3V and 5V logic levels.

Pin Label Function Description
1
RPWM
Forward PWM Input
Forward level or PWM signal, Active High. Apply PWM here to control forward motor speed.
2
LPWM
Reverse PWM Input
Reverse level or PWM signal, Active High. Apply PWM here to control reverse motor speed.
3
R_EN
Forward Drive Enable
Forward drive enable input, Active High. Set LOW to disable forward drive.
4
L_EN
Reverse Drive Enable
Reverse drive enable input, Active High. Set LOW to disable reverse drive.
5
R_IS
Forward Current Sense
Forward drive side current alarm/sense output. Analog voltage proportional to motor current.
6
L_IS
Reverse Current Sense
Reverse drive side current alarm/sense output. Analog voltage proportional to motor current.
7
Vcc
+5V Logic Supply
+5V power supply input for the logic/control circuitry. Connect to microcontroller 5V output.
8
GND
Ground
Ground reference. Must be connected to the microcontroller ground.

Motor Power Screw Terminals

Terminal Label Function Description
1
B+
Motor Power Supply (+)
Positive motor power supply input. 6V – 27V DC.
2
B−
Motor Power Supply (−)
Negative motor power supply / Ground.
3
M+
Motor Output (+)
Motor positive terminal connection.
4
M−
Motor Output (−)
Motor negative terminal connection.

 

BTS7960 43A High Power Motor Driver / Smart Car Driver Module with Current Limit Pin Descriptions

How It Works

The BTS7960 module operates as a full H-bridge, which allows current to flow through a DC motor in both directions — enabling both forward and reverse rotation as well as dynamic braking.

H-Bridge Basics: An H-bridge uses four switching elements (in this case, integrated MOSFETs inside the BTS7960 ICs) arranged in an "H" pattern around the motor. By activating different pairs of switches, current flows through the motor in either direction:

  • Forward rotation: RPWM receives a PWM signal (with R_EN and L_EN both HIGH) → current flows from M+ to M−
  • Reverse rotation: LPWM receives a PWM signal (with R_EN and L_EN both HIGH) → current flows from M− to M+
  • Brake/Stop: Both RPWM and LPWM set LOW → motor coasts to a stop
  • Fast Brake: Both RPWM and LPWM set HIGH → motor terminals are shorted, causing rapid deceleration

Speed Control: Motor speed is controlled by varying the duty cycle of the PWM signal applied to either RPWM (forward) or LPWM (reverse). A higher duty cycle means more average voltage is applied to the motor, resulting in higher speed. The module supports PWM frequencies up to 25 kHz, which is above the audible range and helps reduce motor whine.

Current Sensing: The R_IS and L_IS pins output an analog voltage proportional to the current flowing through the respective half-bridge. This can be read by a microcontroller's analog input to monitor motor current for diagnostics, stall detection, or current limiting.


Wiring / Hookup Guide

What You'll Need

  • Double BTS7960 43A Motor Driver Module
  • Arduino Uno, Mega, Nano, ESP32, or compatible microcontroller
  • DC motor (rated within 6V–27V range)
  • External power supply appropriate for your motor (6V–27V DC, sufficient current rating)
  • Jumper wires (for control connections)
  • Appropriately rated wires for motor power connections

Wiring Diagram — Arduino Uno

Connect the module to an Arduino Uno as follows:

BTS7960 Pin Arduino Uno Pin Notes
RPWM
Pin 5 (PWM)
Must be a PWM-capable pin
LPWM
Pin 6 (PWM)
Must be a PWM-capable pin
R_EN
Pin 7 (Digital)
Or tie directly to 5V to keep always enabled
L_EN
Pin 8 (Digital)
Or tie directly to 5V to keep always enabled
R_IS
A0 (Analog)
Optional — for current monitoring
L_IS
A1 (Analog)
Optional — for current monitoring
Vcc
5V
Logic power supply
GND
GND
Common ground is essential

Motor Power Side:

BTS7960 Terminal Connection
B+
External power supply positive (+)
B−
External power supply negative (−) / Ground
M+
Motor terminal 1
M−
Motor terminal 2

⚠️ Important: The motor power supply ground (B−) and the Arduino ground (GND) must be connected together (common ground) for the control signals to work properly. Do NOT power the motor from the Arduino's 5V or Vin pin — always use a separate external power supply rated for your motor's voltage and current requirements.


Arduino Example Code

Basic Motor Speed and Direction Control

This example demonstrates controlling a DC motor's speed and direction using the BTS7960 module with an Arduino.

// BTS7960 Motor Driver - Basic Speed & Direction Control
// Envistia Mall - envistiamall.com

// Pin Definitions
const int RPWM = 5;    // Forward PWM pin
const int LPWM = 6;    // Reverse PWM pin
const int R_EN = 7;    // Forward enable pin
const int L_EN = 8;    // Reverse enable pin

void setup() {
  // Set all control pins as outputs
  pinMode(RPWM, OUTPUT);
  pinMode(LPWM, OUTPUT);
  pinMode(R_EN, OUTPUT);
  pinMode(L_EN, OUTPUT);

  // Enable both channels
  digitalWrite(R_EN, HIGH);
  digitalWrite(L_EN, HIGH);

  Serial.begin(9600);
  Serial.println("BTS7960 Motor Driver Ready");
}

void loop() {
  // --- Forward: Ramp up speed ---
  Serial.println("Forward - Accelerating...");
  for (int speed = 0; speed <= 255; speed += 5) {
    analogWrite(RPWM, speed);
    analogWrite(LPWM, 0);
    delay(50);
  }
  delay(2000);  // Run at full speed for 2 seconds

  // --- Forward: Ramp down speed ---
  Serial.println("Forward - Decelerating...");
  for (int speed = 255; speed >= 0; speed -= 5) {
    analogWrite(RPWM, speed);
    analogWrite(LPWM, 0);
    delay(50);
  }
  delay(1000);  // Pause 1 second

  // --- Reverse: Ramp up speed ---
  Serial.println("Reverse - Accelerating...");
  for (int speed = 0; speed <= 255; speed += 5) {
    analogWrite(RPWM, 0);
    analogWrite(LPWM, speed);
    delay(50);
  }
  delay(2000);  // Run at full speed for 2 seconds

  // --- Reverse: Ramp down speed ---
  Serial.println("Reverse - Decelerating...");
  for (int speed = 255; speed >= 0; speed -= 5) {
    analogWrite(RPWM, 0);
    analogWrite(LPWM, speed);
    delay(50);
  }
  delay(1000);  // Pause 1 second
}

Motor Control with Current Monitoring

This example adds current monitoring via the R_IS and L_IS pins:


// BTS7960 Motor Driver - Speed Control with Current Monitoring
// Envistia Mall - envistiamall.com

// Pin Definitions
const int RPWM = 5;
const int LPWM = 6;
const int R_EN = 7;
const int L_EN = 8;
const int R_IS = A0;   // Forward current sense
const int L_IS = A1;   // Reverse current sense

// Current sense scaling factor (approximate)
// The IS pin outputs ~8.5 kA/A (8500:1 ratio)
// With a 10k pull-down resistor: V_IS = I_motor * 10000 / 8500
// Adjust this calibration factor based on your setup
const float CURRENT_SCALE = 0.0269;  // Amps per ADC unit (approximate)

void setup() {
  pinMode(RPWM, OUTPUT);
  pinMode(LPWM, OUTPUT);
  pinMode(R_EN, OUTPUT);
  pinMode(L_EN, OUTPUT);
  pinMode(R_IS, INPUT);
  pinMode(L_IS, INPUT);

  digitalWrite(R_EN, HIGH);
  digitalWrite(L_EN, HIGH);

  Serial.begin(9600);
  Serial.println("BTS7960 Motor Driver with Current Monitoring");
}

// Drive motor forward at specified speed (0-255)
void motorForward(int speed) {
  analogWrite(RPWM, speed);
  analogWrite(LPWM, 0);
}

// Drive motor in reverse at specified speed (0-255)
void motorReverse(int speed) {
  analogWrite(RPWM, 0);
  analogWrite(LPWM, speed);
}

// Stop the motor
void motorStop() {
  analogWrite(RPWM, 0);
  analogWrite(LPWM, 0);
}

// Read and display current
void readCurrent() {
  int r_current_raw = analogRead(R_IS);
  int l_current_raw = analogRead(L_IS);

  float r_current = r_current_raw * CURRENT_SCALE;
  float l_current = l_current_raw * CURRENT_SCALE;

  Serial.print("Forward Current: ");
  Serial.print(r_current, 2);
  Serial.print(" A  |  Reverse Current: ");
  Serial.print(l_current, 2);
  Serial.println(" A");
}

void loop() {
  // Run forward at 50% speed
  Serial.println("Running forward at 50% speed...");
  motorForward(128);
  delay(500);
  readCurrent();
  delay(2000);

  // Stop
  motorStop();
  delay(1000);

  // Run reverse at 75% speed
  Serial.println("Running reverse at 75% speed...");
  motorReverse(192);
  delay(500);
  readCurrent();
  delay(2000);

  // Stop
  motorStop();
  delay(2000);
}


Motor Control Truth Table

R_EN L_EN RPWM LPWM Motor Action
HIGH
HIGH
PWM
LOW
Forward at PWM-controlled speed
HIGH
HIGH
LOW
PWM
Reverse at PWM-controlled speed
HIGH
HIGH
LOW
LOW
Coast / Stop (motor free-wheels)
HIGH
HIGH
HIGH
HIGH
Fast Brake (motor terminals shorted)
LOW
LOW
X
X
Disabled (motor free-wheels, driver off)
LOW
HIGH
X
X
Forward disabled, reverse available
HIGH
LOW
X
X
Reverse disabled, forward available

Application Tips and Best Practices

Power Supply Sizing

  • Always use an external power supply rated for your motor's stall current, not just its running current. A motor that draws 5A running may draw 20A+ at stall.
  • Add a large electrolytic capacitor (1000µF – 4700µF, voltage rated above your supply) across the B+ and B− terminals to absorb voltage spikes from motor switching.

Heat Management

  • The module's aluminum heat sinks are designed for moderate loads. At sustained currents above 10A, consider adding active cooling (a small fan directed at the heat sinks).
  • Monitor the heat sinks during initial testing. If they become too hot to touch comfortably (~60°C+), reduce the load or add cooling.

PWM Frequency Selection

  • The default Arduino analogWrite() PWM frequency (~490 Hz on most pins, ~980 Hz on pins 5 and 6) works well for most applications.
  • For quieter motor operation, you can increase the PWM frequency up to 25 kHz using timer register manipulation. Higher frequencies reduce audible motor whine but may slightly reduce efficiency.

Wire Gauge

  • Use appropriately rated wire for the motor power connections. For currents up to 10A, use at least 16 AWG wire. For higher currents, use 12 AWG or heavier.
  • Keep motor power wires as short as practical to minimize voltage drop and electromagnetic interference.

Common Ground

  • Always connect the ground of your microcontroller to the GND pin of the BTS7960 module AND to the B− terminal of the motor power supply. A missing common ground is the most common cause of erratic behavior.

Flyback Protection

  • The BTS7960 ICs include internal flyback diodes, so external flyback diodes across the motor terminals are generally not required. However, adding them does not hurt and provides an extra layer of protection for very inductive loads.

Troubleshooting

Symptom Possible Cause Solution
Motor does not spin
Enable pins (R_EN / L_EN) not set HIGH
Ensure both enable pins are driven HIGH or tied to 5V
Motor does not spin
No common ground between MCU and module
Connect Arduino GND to module GND and B−
Motor does not spin
Insufficient motor power supply voltage
Verify B+ voltage is within 6V–27V and supply can deliver required current
Motor spins in wrong direction
RPWM and LPWM swapped
Swap the RPWM and LPWM connections, or swap M+ and M− motor wires
Motor stutters or behaves erratically
Missing or inadequate decoupling capacitor
Add a 1000µF+ electrolytic capacitor across B+ and B−
Module overheats
Sustained current too high without cooling
Reduce load, add active cooling (fan), or use shorter duty cycles
Arduino resets when motor starts
Motor inrush current causing voltage dip
Use a separate power supply for the motor; do not share with Arduino
No current reading on IS pins
IS pins not connected or no pull-down resistor
Ensure IS pins are connected to analog inputs; some modules require an external pull-down resistor

Frequently Asked Questions

Q: Can I drive two motors with this module?
A: No. This module uses two BTS7960 ICs configured as a single full H-bridge to drive one DC motor bidirectionally. To drive two motors independently, you need two of these modules.

Q: Can I use this with a 3.3V microcontroller like the ESP32? 
A: Yes. The control inputs accept logic levels from 3.3V to 5V, making it compatible with both 5V Arduino boards and 3.3V boards like the ESP32, ESP8266, and STM32.

Q: What is the maximum continuous current? 
A: While the BTS7960 ICs are rated for a 43A peak current, continuous current depends heavily on cooling. With the stock heat sinks and no active cooling, plan for approximately 10A continuous. With active cooling (fan), you can sustain higher currents.

Q: Can I use this for a stepper motor? 
A: No. This module is designed for brushed DC motors only. For stepper motors, use a dedicated stepper driver such as the A4988 or DRV8825.

Q: Do I need to use the enable pins? 
A: The enable pins (R_EN and L_EN) must be HIGH for the driver to operate. You can either control them from your microcontroller (useful for emergency stop functionality) or tie them directly to 5V if you want the driver always enabled.


Ready to get started? 

Purchase this module: Buy the Double BTS7960 43A High Power Motor Driver


Resources


This guide is provided by Envistia LLC / Envistia Mall for educational and technical reference purposes. Always follow proper electrical safety practices when working with high-current motor drivers. Specifications are based on manufacturer data and are subject to change without notice.

Share this guide:
in

🛒 Related Products

Find the components mentioned in this guide in our store.

Browse Products →