{"product_id":"bts7960-ibt-2-h-bridge-dc-motor-driver-module","title":"BTS7960 43A Peak H-Bridge DC Motor Driver Module (IBT-2)","description":"\u003cdiv class=\"nznpd\"\u003e\n\u003cdiv class=\"nznpd__lead\"\u003e\n\u003cp class=\"nznpd__intro\"\u003eAn H-bridge motor driver lets a microcontroller run a brushed DC motor in either direction and set its speed. This is the IBT-2 board, built around two BTS7960B driver chips, and it is the one to choose for bigger 12V and 24V motors such as a 775 motor or a windscreen wiper motor. The chips allow up to 43A peak before they limit the current, and they brake the motor as well as drive it. A finned heatsink comes fitted to the underside.\u003c\/p\u003e\n\u003cp class=\"nznpd__intro\"\u003eYou can use it to drive the wheels of a robot, to move a linear actuator, or to run a 12V pump at a set speed. The motor supply can be anywhere from 6 to 27V and connects to screw terminals, along with the motor. You control it with two PWM pins and two enable pins on a standard 2.54mm header. It is made for 5V logic, so it wires straight to an Arduino Uno, Nano or Mega with jumper wires. A 3.3V board such as an ESP32 needs a \u003ca href=\"\/products\/4-channel-logic-level-converter-bss138\"\u003elogic level converter\u003c\/a\u003e between its pins and the driver. One driver runs one motor, so a robot with two drive motors needs two.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003ch3 class=\"nznpd__h\"\u003eSpecifications\u003c\/h3\u003e\n\u003cdiv class=\"nznpd__specs\"\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eDriver chips\u003c\/span\u003e\u003cstrong\u003e2 x BTS7960B, making one full H-bridge for one brushed DC motor\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eMotor supply\u003c\/span\u003e\u003cstrong\u003e6 to 27V DC\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003ePeak current\u003c\/span\u003e\u003cstrong\u003e43A, the level where the BTS7960B chips limit the current. It is a peak figure, not a continuous rating\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eLogic\u003c\/span\u003e\u003cstrong\u003e5V on VCC and 5V control signals. 3.3V boards need a level converter\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eControl\u003c\/span\u003e\u003cstrong\u003eRPWM and LPWM for speed and direction, R_EN and L_EN to switch it on, PWM up to 25kHz\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eProtection\u003c\/span\u003e\u003cstrong\u003eCurrent limiting, over-temperature and low-voltage shut-off. No reverse-polarity protection\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eConnections\u003c\/span\u003e\u003cstrong\u003e4 screw terminals for the motor and supply, 2 x 4 pin header at 2.54mm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eSize\u003c\/span\u003e\u003cstrong\u003eAbout 50 x 50 x 32mm with the heatsink, four M3 mounting holes about 40mm apart\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eIn the box\u003c\/span\u003e\u003cstrong\u003e1 driver with the heatsink fitted. Wires and fuse not included\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003ch3 class=\"nznpd__h\"\u003eDatasheets\u003c\/h3\u003e\n\u003cdiv class=\"nznpd__ds\"\u003e\n\u003ca class=\"nznpd__dsbar\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/MOD-BTS7960-IBT2-Datasheet-Rev1.pdf\" target=\"_blank\" rel=\"noopener\" aria-label=\"Download the BTS7960 motor driver module technical datasheet PDF\"\u003e\n\u003csvg width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\u003e\u003c\/path\u003e\u003cpolyline points=\"14 2 14 8 20 8\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e\n\u003cspan\u003eFull technical datasheet\u003c\/span\u003e\n\u003cspan class=\"nznpd__dsmeta\"\u003ePDF\u003csvg width=\"17\" height=\"17\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\u003e\u003c\/path\u003e\u003cpolyline points=\"7 10 12 15 17 10\"\u003e\u003c\/polyline\u003e\u003cline x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/span\u003e\n\u003c\/a\u003e\n\u003ca id=\"quick-start-guide\" class=\"nznpd__dsbar\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/MOD-BTS7960-IBT2-QuickStart-Rev1.pdf?v=1794354465\" target=\"_blank\" rel=\"noopener\" aria-label=\"Download the BTS7960 motor driver Quick Start PDF\"\u003e\n\u003csvg width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\u003e\u003c\/path\u003e\u003cpolyline points=\"14 2 14 8 20 8\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e\n\u003cspan\u003eQuick Start: wiring and test sketch\u003c\/span\u003e\n\u003cspan class=\"nznpd__dsmeta\"\u003ePDF\u003csvg width=\"17\" height=\"17\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\u003e\u003c\/path\u003e\u003cpolyline points=\"7 10 12 15 17 10\"\u003e\u003c\/polyline\u003e\u003cline x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/span\u003e\n\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003cdiv class=\"nznpd__qs\"\u003e\n\u003ch3\u003eWiring \u0026amp; getting started\u003c\/h3\u003e\n\u003cdetails class=\"nznpd__figbox\" open\u003e\u003csummary\u003eWiring diagram\u003cspan class=\"nznpd__codelang\"\u003eArduino Nano\u003c\/span\u003e\u003c\/summary\u003e\u003cfigure class=\"nznpd__fig\"\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/MOD-BTS7960-IBT2-wiring-nano-wide.png?v=1794353748\" target=\"_blank\" rel=\"noopener\"\u003e\u003cpicture\u003e\u003csource media=\"(min-width: 600px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/MOD-BTS7960-IBT2-wiring-nano-wide.png?v=1794353748\" width=\"920\" height=\"880\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/MOD-BTS7960-IBT2-wiring-nano.png?v=1794353748\" alt=\"Wiring drawing: BTS7960 driver LPWM to Arduino Nano D5, RPWM to D6, L_EN to D7, R_EN to D8, VCC to 5V and GND to GND, the motor on M+ and M-, supply plus through a fuse to B+ and supply minus to B-, with R_IS and L_IS left unconnected\" width=\"690\" height=\"1300\" loading=\"lazy\"\u003e\u003c\/picture\u003e\u003c\/a\u003e\u003cfigcaption\u003eTap the drawing to open it full size.\u003c\/figcaption\u003e\u003c\/figure\u003e\u003c\/details\u003e\n\u003col class=\"nznpd__steps\"\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eGet the parts together\u003c\/strong\u003e\u003cp\u003eYou need an Arduino Uno, Nano or Mega, six jumper wires, your motor, a 6 to 27V battery or power supply that can deliver the current your motor draws, an inline fuse holder and a small screwdriver.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eMount the driver\u003c\/strong\u003e\u003cp\u003eFix it on standoffs through the four M3 holes, with room for air to move through the fins. Treat the heatsink as live. It is clamped against copper that carries the motor outputs, so keep it off a metal chassis and away from loose wires.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eWire the control pins\u003c\/strong\u003e\u003cp\u003eConnect VCC to the Arduino's 5V and GND to the Arduino's GND. The driver has no 5V supply of its own, so nothing works until VCC is connected. Then connect LPWM to D5, RPWM to D6, L_EN to D7 and R_EN to D8. Leave R_IS and L_IS unconnected. The pin names are printed beside the header.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eWire the motor and supply\u003c\/strong\u003e\u003cp\u003eThe terminal names are printed on the underside of the board. From the top, with the terminals facing you, they read M-, M+, B+, B- from left to right, and B- is the one beside the capacitor. Connect the motor to M+ and M-. Connect supply minus to B-, and supply plus through the fuse to B+. Check plus and minus before you switch on. The driver has no reverse-polarity protection, and a swapped supply destroys it.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eRun the test code\u003c\/strong\u003e\u003cp\u003eUpload this sketch to a Nano or Uno. No library is needed.\u003c\/p\u003e\n\u003cdetails class=\"nznpd__codebox\"\u003e\u003csummary\u003eExample Arduino code\u003cspan class=\"nznpd__codelang\"\u003eArduino C++\u003c\/span\u003e\u003c\/summary\u003e\u003cpre\u003e\u003ccode\u003e\u003cspan class=\"t-c\"\u003e\/\/ BTS7960 (IBT-2) test: forward, brake, reverse, brake\u003c\/span\u003e\n\u003cspan class=\"t-c\"\u003e\/\/ LPWM to D5, RPWM to D6, L_EN to D7, R_EN to D8\u003c\/span\u003e\n\u003cspan class=\"t-c\"\u003e\/\/ VCC to 5V, GND to GND\u003c\/span\u003e\n\n\u003cspan class=\"t-t\"\u003econst\u003c\/span\u003e \u003cspan class=\"t-t\"\u003eint\u003c\/span\u003e \u003cspan class=\"t-v\"\u003eLPWM_PIN\u003c\/span\u003e = \u003cspan class=\"t-n\"\u003e5\u003c\/span\u003e;\n\u003cspan class=\"t-t\"\u003econst\u003c\/span\u003e \u003cspan class=\"t-t\"\u003eint\u003c\/span\u003e \u003cspan class=\"t-v\"\u003eRPWM_PIN\u003c\/span\u003e = \u003cspan class=\"t-n\"\u003e6\u003c\/span\u003e;\n\u003cspan class=\"t-t\"\u003econst\u003c\/span\u003e \u003cspan class=\"t-t\"\u003eint\u003c\/span\u003e \u003cspan class=\"t-v\"\u003eL_EN_PIN\u003c\/span\u003e = \u003cspan class=\"t-n\"\u003e7\u003c\/span\u003e;\n\u003cspan class=\"t-t\"\u003econst\u003c\/span\u003e \u003cspan class=\"t-t\"\u003eint\u003c\/span\u003e \u003cspan class=\"t-v\"\u003eR_EN_PIN\u003c\/span\u003e = \u003cspan class=\"t-n\"\u003e8\u003c\/span\u003e;\n\n\u003cspan class=\"t-t\"\u003evoid\u003c\/span\u003e \u003cspan class=\"t-f\"\u003edrive\u003c\/span\u003e(\u003cspan class=\"t-t\"\u003eint\u003c\/span\u003e \u003cspan class=\"t-v\"\u003erightPwm\u003c\/span\u003e, \u003cspan class=\"t-t\"\u003eint\u003c\/span\u003e \u003cspan class=\"t-v\"\u003eleftPwm\u003c\/span\u003e) {\n  \u003cspan class=\"t-f\"\u003eanalogWrite\u003c\/span\u003e(\u003cspan class=\"t-v\"\u003eRPWM_PIN\u003c\/span\u003e, \u003cspan class=\"t-v\"\u003erightPwm\u003c\/span\u003e);\n  \u003cspan class=\"t-f\"\u003eanalogWrite\u003c\/span\u003e(\u003cspan class=\"t-v\"\u003eLPWM_PIN\u003c\/span\u003e, \u003cspan class=\"t-v\"\u003eleftPwm\u003c\/span\u003e);\n}\n\n\u003cspan class=\"t-t\"\u003evoid\u003c\/span\u003e \u003cspan class=\"t-f\"\u003esetup\u003c\/span\u003e() {\n  \u003cspan class=\"t-f\"\u003epinMode\u003c\/span\u003e(\u003cspan class=\"t-v\"\u003eRPWM_PIN\u003c\/span\u003e, \u003cspan class=\"t-t\"\u003eOUTPUT\u003c\/span\u003e);\n  \u003cspan class=\"t-f\"\u003epinMode\u003c\/span\u003e(\u003cspan class=\"t-v\"\u003eLPWM_PIN\u003c\/span\u003e, \u003cspan class=\"t-t\"\u003eOUTPUT\u003c\/span\u003e);\n  \u003cspan class=\"t-f\"\u003epinMode\u003c\/span\u003e(\u003cspan class=\"t-v\"\u003eR_EN_PIN\u003c\/span\u003e, \u003cspan class=\"t-t\"\u003eOUTPUT\u003c\/span\u003e);\n  \u003cspan class=\"t-f\"\u003epinMode\u003c\/span\u003e(\u003cspan class=\"t-v\"\u003eL_EN_PIN\u003c\/span\u003e, \u003cspan class=\"t-t\"\u003eOUTPUT\u003c\/span\u003e);\n  \u003cspan class=\"t-f\"\u003edrive\u003c\/span\u003e(\u003cspan class=\"t-n\"\u003e0\u003c\/span\u003e, \u003cspan class=\"t-n\"\u003e0\u003c\/span\u003e);\n  \u003cspan class=\"t-f\"\u003edigitalWrite\u003c\/span\u003e(\u003cspan class=\"t-v\"\u003eR_EN_PIN\u003c\/span\u003e, \u003cspan class=\"t-t\"\u003eHIGH\u003c\/span\u003e);  \u003cspan class=\"t-c\"\u003e\/\/ both enables high, or nothing moves\u003c\/span\u003e\n  \u003cspan class=\"t-f\"\u003edigitalWrite\u003c\/span\u003e(\u003cspan class=\"t-v\"\u003eL_EN_PIN\u003c\/span\u003e, \u003cspan class=\"t-t\"\u003eHIGH\u003c\/span\u003e);\n}\n\n\u003cspan class=\"t-t\"\u003evoid\u003c\/span\u003e \u003cspan class=\"t-f\"\u003eloop\u003c\/span\u003e() {\n  \u003cspan class=\"t-f\"\u003edrive\u003c\/span\u003e(\u003cspan class=\"t-n\"\u003e100\u003c\/span\u003e, \u003cspan class=\"t-n\"\u003e0\u003c\/span\u003e);  \u003cspan class=\"t-c\"\u003e\/\/ one way, about 40% speed\u003c\/span\u003e\n  \u003cspan class=\"t-f\"\u003edelay\u003c\/span\u003e(\u003cspan class=\"t-n\"\u003e2000\u003c\/span\u003e);\n  \u003cspan class=\"t-f\"\u003edrive\u003c\/span\u003e(\u003cspan class=\"t-n\"\u003e0\u003c\/span\u003e, \u003cspan class=\"t-n\"\u003e0\u003c\/span\u003e);    \u003cspan class=\"t-c\"\u003e\/\/ brake before changing direction\u003c\/span\u003e\n  \u003cspan class=\"t-f\"\u003edelay\u003c\/span\u003e(\u003cspan class=\"t-n\"\u003e1000\u003c\/span\u003e);\n  \u003cspan class=\"t-f\"\u003edrive\u003c\/span\u003e(\u003cspan class=\"t-n\"\u003e0\u003c\/span\u003e, \u003cspan class=\"t-n\"\u003e100\u003c\/span\u003e);  \u003cspan class=\"t-c\"\u003e\/\/ the other way\u003c\/span\u003e\n  \u003cspan class=\"t-f\"\u003edelay\u003c\/span\u003e(\u003cspan class=\"t-n\"\u003e2000\u003c\/span\u003e);\n  \u003cspan class=\"t-f\"\u003edrive\u003c\/span\u003e(\u003cspan class=\"t-n\"\u003e0\u003c\/span\u003e, \u003cspan class=\"t-n\"\u003e0\u003c\/span\u003e);\n  \u003cspan class=\"t-f\"\u003edelay\u003c\/span\u003e(\u003cspan class=\"t-n\"\u003e1000\u003c\/span\u003e);\n}\u003c\/code\u003e\u003c\/pre\u003e\u003c\/details\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eCheck it works\u003c\/strong\u003e\u003cp\u003eThe motor runs one way for 2 seconds, stops for a second, runs the other way for 2 seconds, stops, and repeats. If nothing moves, check that VCC has 5V and that R_EN and L_EN are both connected, because the driver stays off until both are high. If forward and reverse are the wrong way round for your build, swap the M+ and M- wires.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eIf it stops under load\u003c\/strong\u003e\u003cp\u003eThe chips switch off when they overheat, and they stay off until both enable pins go low and then high again, or the power is switched off and on. Add a fan blowing through the fins, or run a lower PWM frequency, which makes less heat. Brake to a stop before you reverse a spinning motor, because going straight into reverse draws close to the motor's stall current.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"Default Title","offer_id":67765346205792,"sku":"MOD-BTS7960-IBT2","price":15.99,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/MOD-BTS7960-IBT2_01_hero.png?v=1794353868","url":"https:\/\/www.nznelectronics.co.nz\/products\/bts7960-ibt-2-h-bridge-dc-motor-driver-module","provider":"NZN Electronics","version":"1.0","type":"link"}