Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use BTS7960: Examples, Pinouts, and Specs

Image of BTS7960
Cirkit Designer LogoDesign with BTS7960 in Cirkit Designer

Introduction

The BTS7960 is a high-current H-bridge motor driver designed for driving DC motors and other inductive loads. Manufactured by ARDUINO with the part ID UNO, this component is ideal for applications requiring precise motor control, such as robotics, automation, and industrial systems. Its robust design includes built-in protection features like overcurrent, overtemperature, and undervoltage safeguards, ensuring reliable operation in demanding environments.

Explore Projects Built with BTS7960

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Arduino Mega 2560-Based Obstacle-Avoiding Robot with Ultrasonic Sensors and Motor Drivers
Image of MEGA: A project utilizing BTS7960 in a practical application
This circuit is a robotic control system utilizing an Arduino Mega 2560 to manage two BTS7960 motor drivers for controlling multiple 775 motors. It incorporates several HC-SR04 ultrasonic sensors for obstacle detection, potentiometers for setting movement limits, and limit switches for safety, enabling the robot to navigate and avoid obstacles autonomously.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino-Controlled Robotic Motors with Joystick Interface
Image of forklift: A project utilizing BTS7960 in a practical application
This is a joystick-controlled motor driving system. An Arduino UNO reads inputs from an Adafruit Arcade Joystick and outputs control signals to BTS7960 motor drivers, which in turn power several 12V geared motors. The system is designed for directional control of motors, suitable for applications such as robotic vehicles or motorized platforms.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino Mega 2560-Based Obstacle-Avoiding Robot with Ultrasonic Sensors and BTS7960 Motor Drivers
Image of MEGA: A project utilizing BTS7960 in a practical application
This circuit is a robotic system controlled by an Arduino Mega 2560, which uses multiple ultrasonic sensors for obstacle detection and potentiometers for setting movement limits. It drives four 775 motors through two BTS7960 motor drivers, with limit switches and a rocker switch for additional control inputs.
Cirkit Designer LogoOpen Project in Cirkit Designer
Battery-Powered Motor Control System with BTS7960 and Fly Sky Receiver
Image of BTS motor Driver: A project utilizing BTS7960 in a practical application
This circuit is designed to control two 775 motors using BTS7960 motor drivers, an electronic speed controller (ESC), and a Fly Sky receiver. The Fly Sky receiver receives control signals and distributes them to the motor drivers and servo internal circuits, which in turn control the motors. Power is supplied by a 2200mAh LiPo battery.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with BTS7960

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of MEGA: A project utilizing BTS7960 in a practical application
Arduino Mega 2560-Based Obstacle-Avoiding Robot with Ultrasonic Sensors and Motor Drivers
This circuit is a robotic control system utilizing an Arduino Mega 2560 to manage two BTS7960 motor drivers for controlling multiple 775 motors. It incorporates several HC-SR04 ultrasonic sensors for obstacle detection, potentiometers for setting movement limits, and limit switches for safety, enabling the robot to navigate and avoid obstacles autonomously.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of forklift: A project utilizing BTS7960 in a practical application
Arduino-Controlled Robotic Motors with Joystick Interface
This is a joystick-controlled motor driving system. An Arduino UNO reads inputs from an Adafruit Arcade Joystick and outputs control signals to BTS7960 motor drivers, which in turn power several 12V geared motors. The system is designed for directional control of motors, suitable for applications such as robotic vehicles or motorized platforms.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of MEGA: A project utilizing BTS7960 in a practical application
Arduino Mega 2560-Based Obstacle-Avoiding Robot with Ultrasonic Sensors and BTS7960 Motor Drivers
This circuit is a robotic system controlled by an Arduino Mega 2560, which uses multiple ultrasonic sensors for obstacle detection and potentiometers for setting movement limits. It drives four 775 motors through two BTS7960 motor drivers, with limit switches and a rocker switch for additional control inputs.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of BTS motor Driver: A project utilizing BTS7960 in a practical application
Battery-Powered Motor Control System with BTS7960 and Fly Sky Receiver
This circuit is designed to control two 775 motors using BTS7960 motor drivers, an electronic speed controller (ESC), and a Fly Sky receiver. The Fly Sky receiver receives control signals and distributes them to the motor drivers and servo internal circuits, which in turn control the motors. Power is supplied by a 2200mAh LiPo battery.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications

  • Robotics (e.g., motorized arms, wheeled robots)
  • Industrial automation systems
  • Electric vehicles and carts
  • Conveyor belts and other motorized machinery
  • DIY motor control projects

Technical Specifications

The BTS7960 is a versatile motor driver with the following key specifications:

Parameter Value
Operating Voltage 5V logic input, 6V–27V motor voltage
Maximum Continuous Current 43A
Peak Current 50A
PWM Frequency Up to 25 kHz
Logic Level Voltage 3.3V or 5V compatible
Overcurrent Protection Yes
Overtemperature Protection Yes
Undervoltage Protection Yes

Pin Configuration and Descriptions

The BTS7960 module typically includes the following pins:

Pin Name Type Description
VCC Power Input Connect to 5V logic power supply.
GND Ground Connect to the ground of the power supply.
RPWM Logic Input PWM signal for controlling motor rotation in one direction.
LPWM Logic Input PWM signal for controlling motor rotation in the opposite direction.
R_EN Logic Input Enable pin for the right half-bridge. Set HIGH to enable.
L_EN Logic Input Enable pin for the left half-bridge. Set HIGH to enable.
IS Analog Output Current sensing output. Provides a voltage proportional to the motor current.
+V Motor Power Input Connect to the positive terminal of the motor power supply (6V–27V).
-V Motor Power Output Connect to the negative terminal of the motor power supply or motor ground.
Motor A Motor Output Connect to one terminal of the DC motor.
Motor B Motor Output Connect to the other terminal of the DC motor.

Usage Instructions

Connecting the BTS7960 to an Arduino UNO

To use the BTS7960 with an Arduino UNO, follow these steps:

  1. Connect the VCC pin of the BTS7960 to the 5V pin on the Arduino.
  2. Connect the GND pin of the BTS7960 to the GND pin on the Arduino.
  3. Connect the RPWM and LPWM pins to two PWM-capable pins on the Arduino (e.g., pins 9 and 10).
  4. Connect the R_EN and L_EN pins to two digital pins on the Arduino (e.g., pins 7 and 8).
  5. Connect the motor terminals to the Motor A and Motor B outputs of the BTS7960.
  6. Connect the motor power supply to the +V Motor and -V Motor pins.

Example Arduino Code

Below is an example Arduino sketch to control a DC motor using the BTS7960:

// Define pins for BTS7960 connections
#define RPWM 9    // PWM pin for forward rotation
#define LPWM 10   // PWM pin for reverse rotation
#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 sides of the H-bridge
  digitalWrite(R_EN, HIGH);
  digitalWrite(L_EN, HIGH);
}

void loop() {
  // Rotate motor forward at 50% speed
  analogWrite(RPWM, 128); // 50% duty cycle
  analogWrite(LPWM, 0);   // No reverse rotation
  delay(2000);            // Run for 2 seconds

  // Stop the motor
  analogWrite(RPWM, 0);
  analogWrite(LPWM, 0);
  delay(1000);            // Pause for 1 second

  // Rotate motor backward at 75% speed
  analogWrite(RPWM, 0);   // No forward rotation
  analogWrite(LPWM, 192); // 75% duty cycle
  delay(2000);            // Run for 2 seconds

  // Stop the motor
  analogWrite(RPWM, 0);
  analogWrite(LPWM, 0);
  delay(1000);            // Pause for 1 second
}

Important Considerations

  • Ensure the motor power supply voltage is within the range of 6V–27V.
  • Use appropriate heat sinks or cooling mechanisms if operating at high currents for extended periods.
  • Avoid connecting the motor directly to the Arduino; always use the BTS7960 to handle high currents.
  • Double-check all connections before powering the circuit to prevent damage to the components.

Troubleshooting and FAQs

Common Issues and Solutions

  1. Motor does not rotate:

    • Verify that the R_EN and L_EN pins are set HIGH.
    • Check the PWM signals on the RPWM and LPWM pins.
    • Ensure the motor power supply is connected and within the specified voltage range.
  2. Motor rotates in the wrong direction:

    • Swap the connections of the motor terminals (Motor A and Motor B).
    • Verify the logic levels on the RPWM and LPWM pins.
  3. Overheating of the BTS7960 module:

    • Ensure proper ventilation or attach a heat sink to the module.
    • Reduce the motor load or operating current.
  4. Arduino resets when the motor starts:

    • Use a separate power supply for the motor and the Arduino.
    • Add a capacitor across the motor power supply to reduce voltage spikes.

FAQs

Q: Can the BTS7960 drive stepper motors?
A: No, the BTS7960 is designed for DC motors and other inductive loads. For stepper motors, use a dedicated stepper motor driver.

Q: What is the maximum PWM frequency supported?
A: The BTS7960 supports PWM frequencies up to 25 kHz.

Q: Can I use the BTS7960 with a 3.3V microcontroller?
A: Yes, the logic inputs are compatible with both 3.3V and 5V systems.

Q: How do I measure motor current using the IS pin?
A: The IS pin provides an analog voltage proportional to the motor current. Use an ADC pin on the Arduino to read this value and calculate the current.

By following this documentation, you can effectively integrate the BTS7960 into your motor control projects.