Steuerung mehrerer DC-Motoren mit einem BTS7960-Modul und Arduino
In diesem Tutorial werden wir untersuchen, wie man mehrere DC-Motoren mit dem BTS7960-Modul und einem Arduino steuern kann. Der BTS7960 ist ein leistungsstarker Motorantrieb, der hohe Ströme verarbeiten kann und eine präzise Steuerung der Motordrehrichtung und -geschwindigkeit über PWM (Pulsweitenmodulation) ermöglicht. Am Ende dieses Projekts werden Sie eine funktionierende Einrichtung haben, die zwei DC-Motoren steuern kann, die sich sowohl im Uhrzeigersinn als auch gegen den Uhrzeigersinn drehen. Dieses Tutorial führt Sie durch den Hardware-Aufbau, die Verdrahtungsanweisungen und den Code, der benötigt wird, um die Motoren zu betreiben. Für ein besseres Verständnis des gesamten Prozesses sollten Sie sich das begleitende Video (im Video bei 00:00) ansehen.
Hardware erklärt
Die Hauptkomponente dieses Projekts ist das BTS7960-Motortreiber-Modul. Dieses Modul umfasst zwei H-Brücken-Treiber, die die Richtung der Motoren steuern können, indem sie die Polarität der an den Motor angelegten Spannung umschalten. Jeder Treiber kann bis zu 43A Strom verarbeiten, was ihn für Hochleistungsanwendungen geeignet macht. Das Modul verfügt außerdem über einen integrierten Schutz vor Übertemperatur- und Überstromsituationen. Neben dem BTS7960 benötigen Sie ein Arduino-Board zur Steuerung der Motoren. Das Arduino sendet PWM-Signale an den Motortreiber, sodass Sie die Geschwindigkeit und Richtung der Motoren anpassen können. Die Verbindungen zwischen dem Arduino und dem BTS7960-Modul sind entscheidend, da sie bestimmen, wie die Motoren auf die Signale reagieren.
Datenblattdetails
| Hersteller | Infineon Technologies |
|---|---|
| Teilenummer | BTS7960 |
| Logik/IO-Spannung | 3,3 V bis 5 V |
| Versorgungsspannung | 5-40 V |
| Ausgangsstrom (pro Kanal) | 43 A max |
| Spitzenstrom (pro Kanal) | 60 A |
| PWM-Frequenzleitung | 5-25 kHz |
| Eingangslogik-Schwellenwerte | 0,8 V (hoch), 0,3 V (niedrig) |
| Spannungsabfall / RDS(on)/ Sättigung | 16 mΩ |
| Thermische Grenzen | 150 °C max |
| Paket | TO-263 |
| Hinweise / Varianten | Duale H-Brücken-Konfiguration |
- Stellen Sie eine ordnungsgemäße Wärmeableitung sicher, wenn Sie mit hohen Strömen arbeiten.
- Verwenden Sie den passenden Drahtquerschnitt für die Stromanschlüsse.
- Überprüfen Sie die Pinbelegungen zwischen dem Arduino und dem BTS7960.
- Implementieren Sie eine Strombegrenzung, um Schäden am Modul zu verhindern.
- Verwenden Sie Entkopplungskondensatoren in der Nähe der Stromversorgung für Stabilität.
Verdrahtungsanweisungen

Um das BTS7960-Modul mit dem Arduino zu verbinden, folgen Sie diesen Verbindungen sorgfältig: 1. **Stromanschlüsse**: Verbinden Sie den positiven Pol Ihrer Stromquelle mit dem B+-Anschluss des BTS7960-Moduls und den negativen Pol mit dem B--Anschluss. Stellen Sie sicher, dass die Stromquelle den Spannungsanforderungen Ihrer Motoren entspricht. 2. **Motoranschlüsse**: Verbinden Sie die Motorleitungen mit den M+- und M--Anschlüssen des Moduls. Dadurch kann das Modul den Motor steuern. 3. **Arduino-Pins**: Verbinden Sie die folgenden Pins am Arduino mit dem BTS7960-Modul: - Pin 3 (RPWM) mit dem RPWM-Pin am Modul. - Pin 4 (R_EN) mit dem R_EN-Pin am Modul. - Pin 5 (R_IS) mit dem R_IS-Pin am Modul. - Pin 6 (LPWM) mit dem LPWM-Pin am Modul. - Pin 7 (L_EN) mit dem L_EN-Pin am Modul. - Pin 8 (L_IS) mit dem L_IS-Pin am Modul. 4. **Masseanschlüsse**: Verbinden Sie den Massepin des Arduino mit dem Massepin am BTS7960-Modul, um einen gemeinsamen Bezug für die Signale zu gewährleisten. Stellen Sie sicher, dass alle Verbindungen sicher sind, um unerwartetes Verhalten während des Betriebs zu verhindern.
Installiere die erforderliche Bibliothek
Um dierobojax_BTS7960_motor_driver_libraryIm Arduino IDE laden Sie zuerst die ZIP-Datei der Bibliothek von dem bereitgestellten Link herunter. Nachdem Sie die Datei gespeichert haben, öffnen Sie Ihr Arduino IDE und navigieren zuSkizze > Bibliothek einfügen > ZIP-Bibliothek hinzufügen...Im Datei-Auswahl-Dialog navigieren Sie zu der heruntergeladenen ZIP-Datei, wählen Sie diese aus und klicken Sie auf "Öffnen". Die IDE wird dann die Bibliothek installieren. Sie können eine erfolgreiche Installation bestätigen, indem Sie dieDatei > BeispieleMenü, wo eine neue Kategorie mit dem Namen "Robojax BTS7960 Motor Driver Library" erscheinen sollte. Sie können nun die Bibliotheksüberschrift in Ihren Code einfügen mit#include <RobojaxBTS7960.h>.
Codebeispiele und Schritt-für-Schritt-Anleitungen
Die folgenden Code-Snippets zeigen, wie man die Motoren mit dem BTS7960-Modul einrichtet und steuert. Die erste Einrichtung definiert die mit den Motoren verbundenen Pins und initialisiert die Motorobjekte:
// pins for motor 1
#define RPWM_1 3
#define R_EN_1 4
#define R_IS_1 5
#define LPWM_1 6
#define L_EN_1 7
#define L_IS_1 8
// pins for motor 2
#define RPWM_2 9
#define R_EN_2 10
#define R_IS_2 12
#define LPWM_2 11
#define L_EN_2 A0
#define L_IS_2 A1
#include
RobojaxBTS7960 motor1(R_EN_1, RPWM_1, R_IS_1, L_EN_1, LPWM_1, L_IS_1, debug);
RobojaxBTS7960 motor2(R_EN_2, RPWM_2, R_IS_2, L_EN_2, LPWM_2, L_IS_2, debug);
Dieser Abschnitt des Codes legt die Pin-Definitionen fest und erstellt Instanzen der Klasse `RobojaxBTS7960` für beide Motoren. Die Funktion `setup()` initialisiert die Motoren und den seriellen Monitor:
void setup() {
Serial.begin(9600); // setup Serial Monitor
motor1.begin();
motor2.begin();
}
Hier bereitet die Methode `motor.begin()` jeden Motor für den Betrieb vor, sodass du sie in der Funktion `loop()` steuern kannst. In der Funktion `loop()` kannst du die Motoren mit Befehlen wie diesen steuern:
void loop() {
motor1.rotate(100, CW); // run motor 1 at 100% speed CW
delay(5000); // run for 5 seconds
motor1.stop(); // stop motor 1
delay(3000); // stop for 3 seconds
motor2.rotate(100, CCW); // run motor 2 at 100% speed CCW
delay(5000); // run for 5 seconds
motor2.stop(); // stop motor 2
delay(3000); // stop for 3 seconds
}
Dieser Abschnitt zeigt, wie man die Motoren in beide Richtungen drehen und ihre Geschwindigkeit steuern kann. Der vollständige Code ist unter dem Artikel zu Ihrer Referenz geladen.
Demonstration / Was zu erwarten ist
Nach Abschluss der Verkabelung und dem Hochladen des Codes sollten Sie beobachten, wie sich die Motoren sowohl im Uhrzeigersinn als auch gegen den Uhrzeigersinn drehen. Der Code lässt jeden Motor fünf Sekunden lang mit voller Geschwindigkeit laufen, stoppt dann für drei Sekunden und wiederholt den Vorgang. Achten Sie auf mögliche Probleme wie vertauschte Verbindungen oder eine unzureichende Stromversorgung. Wenn Sie auf Probleme stoßen, überprüfen Sie Ihre Verkabelung noch einmal und stellen Sie sicher, dass die Stromquelle ausreichend ist (im Video bei 00:00).
Video-Zeitmarken
- 00:00 Start
- 00:48 Hardware erklärt
- 04:06 Datenblatt angesehen
- 07:07 Verkabelung Erklärt
- 09:00 Code erklärt
- 14:33 Demonstration
- 16:47 Maximale Stromprüfung
- 19:25 Wärmebild
- 19:27 Unterschiedlicher Code-Test
++
/*
* This is the Arduino code for the BTS7960 DC motor driver.
Using this code, you can control more than one motor to rotate in both directions: clockwise (CW)
and counter-clockwise (CCW).
📚⬇️ Download and resource page for this video https://robojax.com/RJT169
📚⬇️ Download and resource page https://robojax.com/RJT170
Written by Ahmad Shamshiri for Robojax.com on
July 16, 2020 in Ajax, Ontario, Canada.
Watch video instructions for this code: https://youtu.be/PUL5DZ9TA2o
BTS7960B
If you found this tutorial helpful, please support me so I can continue creating
content like this. You can support me on Patreon: http://robojax.com/L/?id=63
or make a donation using PayPal: http://robojax.com/L/?id=64
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// pins for motor 1
#define RPWM_1 3 // define pin 3 for RPWM pin (output)
#define R_EN_1 4 // define pin 2 for R_EN pin (input)
#define R_IS_1 5 // define pin 5 for R_IS pin (output)
#define LPWM_1 6 // define pin 6 for LPWM pin (output)
#define L_EN_1 7 // define pin 7 for L_EN pin (input)
#define L_IS_1 8 // define pin 8 for L_IS pin (output)
// motor 1 pins end here
// pins for motor 2
#define RPWM_2 9 // define pin 9 for RPWM pin (output)
#define R_EN_2 10 // define pin 10 for R_EN pin (input)
#define R_IS_2 12 // define pin 12 for R_IS pin (output)
#define LPWM_2 11 // define pin 11 for LPWM pin (output)
#define L_EN_2 A0 // define pin 7 for L_EN pin (input)
#define L_IS_2 A1 // define pin 8 for L_IS pin (output)
// motor 2 pins end here
#define CW 1 //
#define CCW 0 //
#define debug 1 //
#include <RobojaxBTS7960.h>
RobojaxBTS7960 motor1(R_EN_1,RPWM_1,R_IS_1, L_EN_1,LPWM_1,L_IS_1,debug);//define motor 1 object
RobojaxBTS7960 motor2(R_EN_2,RPWM_2,R_IS_2, L_EN_2,LPWM_2,L_IS_2,debug);//define motor 2 object and the same way for other motors
void setup() {
// BTS7960 Motor Control Code by Robojax.com 20190622
Serial.begin(9600);// setup Serial Monitor to display information
motor1.begin();
motor2.begin();
// BTS7960 Motor Control Code by Robojax.com 20190622
}
void loop() {
// BTS7960 Motor Control Code by Robojax.com 20190622
motor1.rotate(100,CW);// run motor 1 with 100% speed in CW direction
delay(5000);//run for 5 seconds
motor1.stop();// stop the motor 1
delay(3000);// stop for 3 seconds
motor1.rotate(100,CCW);// run motor 1 at 100% speed in CCW direction
delay(5000);// run for 5 seconds
motor1.stop();// stop the motor 1
delay(3000); // stop for 3 seconds
motor2.rotate(100,CW);// run motor 2 with 100% speed in CW direction
delay(5000);//run for 5 seconds
motor2.stop();// stop the motor 2
delay(3000);// stop for 3 seconds
motor2.rotate(100,CCW);// run motor 2 at 100% speed in CCW direction
delay(5000);// run for 5 seconds
motor2.stop();// stop the motor 2
delay(3000); // stop for 3 seconds
// slowly speed up the motor 1 from 0 to 100% speed
for(int i=0; i<=100; i++){
motor1.rotate(i,CCW);
delay(50);
}
// slow down the motor 2 from 100% to 0
for(int i=100; i>0; i--){
motor2.rotate(i,CCW);
delay(50);
}
motor2.stop();// stop motor 2
delay(3000); // stop for 3 seconds
// BTS7960 more than 1 Motor Control Code by Robojax.com 20190622
}// loop ends
Ressourcen & Referenzen
-
ExternBTS7960 Amazon Japanamzn.to
-
ExternBTS7960 auf Amazon Frankreichamzn.to
-
ExternBTS7960 auf Amazon Italienamzn.to
-
ExternBTS7960 auf Amazon Spanienamzn.to
-
ExternBTS7960 Modul-Datenblatt (PDF)handsontec.com
-
ExternBTS7960, Amazon Deutschlandamzn.to
-
ExternKaufe BTS7960 bei Amazonamzn.to
-
ExternKaufe BTS7960 von Amazon Kanadaamzn.to
-
ExternKaufe BTS7960, Amazon UKamzn.to
Dateien📁
Arduino-Bibliotheken (zip)
-
robojax_BTS7960_Motorsteuerungsbibliothek
robojax_BTS7960_motor_driver_library.zip0.10 MB
Datenblatt (pdf)
-
BTS7960_Datenblatt
BTS7960_datasheet.pdf0.45 MB
Fritzing-Datei
-
BTS7960_Treiber
BTS7960_driver.fzpz0.01 MB