Language: EN


Control high-power motors with Arduino and BTS7960

What is a BTS7960?

BTS7960-based drivers are used to control high-power DC motors, capable of providing up to 43A of current at a supply voltage between 6 to 27V.

The driver’s logic operates at voltages from 3.3V to 5V, making it compatible with most microcontrollers. Additionally, they support motor speed control through PWM with a maximum frequency of 25 kHz.

The BTS7960 incorporates protection mechanisms against short-circuits, over/under-voltage, and over-temperature. It also has two pins that allow measuring the current delivered by the driver.

The BTS7960 is a good controller that can manage a large number of motors, including high-power ones. However, caution should be exercised when controlling high loads and electric currents.


BTS7960 drivers are inexpensive devices. Although not as cheap as the L298N or the TB6612FNG, these two are capable of managing much smaller motors.

A driver with BTS7960 can be found for €3.45 from international sellers on Ebay and Aliexpress.


How does a BTS7960 work?

These drivers use two BTS7960 integrated circuits, a H-bridge from the NovalithIC family. Both integrated circuits are configured to form a complete H-bridge.

The BTS7960 incorporates a p-channel MOSFET transistor for the high side of the H-bridge, and an n-channel MOSFET for the low side. In addition to the two MOSFETs, each BTS7960 incorporates an IC that performs logical functions, diagnosis, protection, and current sensing.


BTS7960-based drivers incorporate a 7HC244, an 8-channel tri-state buffer, as additional protection for the microcontroller.

Assembly scheme

Connecting a driver with BTS7690 is simple. On one side, we connect the driver’s logic power supply to 0 and 5V.

For control, we only need 3 digital outputs. One of them will control the activation of the bridges, and the other two the speed of rotation.

Finally, we connect the power supply that will provide current to the motor and the motor through the terminals on the driver.


The connection, seen from Arduino, would be as follows.


Code examples

Using the BTS7690 driver in the Arduino environment is very simple with the Arduino BTS7960 library.

The library’s example shows how to control the driver with a PWM signal.

#include "BTS7960.h"

const uint8_t EN = 8;
const uint8_t L_PWM = 9;
const uint8_t R_PWM = 10;

BTS7960 motorController(EN, L_PWM, R_PWM);

void setup() 

void loop() 

  for(int speed = 0 ; speed < 255; speed+=10)

  for(int speed = 255 ; speed > 0; speed-=10)

Download the code

All the code from this post is available for download on Github. github-full