Verwendung eines L298N-Motortreibers zur Steuerung eines 4-adrigen Schrittmotors
In diesem Tutorial werden wir zeigen, wie man einen 4-adrigen Schrittmotor mit dem L298N-Motortreiber in Verbindung mit einem Arduino steuert. Der L298N ist ein vielseitiger Treiber mit zwei H-Brücken, der es uns ermöglicht, die Drehrichtung und die Geschwindigkeit von Schrittmotoren effektiv zu steuern. Am Ende dieser Anleitung haben Sie einen funktionierenden Aufbau, der den Schrittmotor in beide Richtungen drehen und seine Geschwindigkeit mit einem Potentiometer regeln kann.


Um Ihnen den Ablauf besser zu veranschaulichen, empfehle ich, das zugehörige Video anzusehen, das eine visuelle Demonstration der Verkabelung und Programmierung bietet (im Video bei 01:30).
Hardware erklärt
Der L298N-Motortreiber ist dafür ausgelegt, Motoren zu steuern, indem er ermöglicht, sie sowohl vorwärts als auch rückwärts zu betreiben. Er verwendet eine H-Brücken-Konfiguration, was bedeutet, dass er die Polarität der an den Motor angelegten Spannung umschalten kann und damit die Drehrichtung umkehrt. Dieser Treiber kann eine Versorgungsspannung von bis zu 46 V und einen kontinuierlichen Strom von 2 A pro Kanal verarbeiten, wodurch er für viele Anwendungen geeignet ist.
In unserer Konfiguration verwenden wir vier Steuerpins, um den Schrittmotor zu steuern. Die wichtigsten Pins sindENAundENB, die auf HIGH (5V) gesetzt werden müssen, um den Treiber zu aktivieren. Die PinsIN1,IN2,IN3, undIN4wird die Wicklungszustände des Motors steuern, sodass er einen Schritt in die gewünschte Richtung ausführen kann.
Details zum Datenblatt
| Hersteller | STMicroelectronics |
|---|---|
| Teilenummer | L298N |
| Logik-/I/O-Spannung | 5 V |
| Versorgungsspannung | 5-46 V (VS) |
| Ausgangsstrom (pro Kanal) | 2 A max. pro Kanal (kontinuierlich) |
| Spitzenstrom (pro Kanal) | max. 3 A |
| Hinweise zur PWM-Frequenz | 1 kHz bis 20 kHz |
| Eingangslogik-Schwellenwerte | 0.8 V (niedrig), 2.0 V (hoch) |
| Spannungsabfall / RDS(on) / Sättigung | 1,5 V max |
| Thermische Grenzwerte | max. 150 °C |
| Paket | DIP-15 |
| Notizen / Varianten | Auch in Flachversionen (L298P) erhältlich. |
- Sicherstellen
ENAundENBsind für einen ordnungsgemäßen Betrieb an 5 V angeschlossen. - Verwenden Sie eine ausreichende Wärmeableitung für Hochstromanwendungen, um Überhitzung zu verhindern.
- Sorgen Sie für eine gemeinsame Masse zwischen dem Arduino und dem Motortreiber.
- Achten Sie auf die Polung der Verkabelung, um eine Beschädigung des Motors oder des Treibers zu vermeiden.
- Platzieren Sie Entkopplungskondensatoren in der Nähe der Versorgungspins, um Rauschen zu filtern.
- Passen Sie die PWM-Frequenz entsprechend den Motorspezifikationen an, um optimale Leistung zu erzielen.
Verdrahtungsanleitung

Um den L298N-Motortreiber mit dem Arduino und dem Schrittmotor zu verdrahten, beginnen Sie damit, die Stromversorgung anzuschließen. Schließen Sie dieVINVerbinden Sie den Pin am L298N mit Ihrer 12V-Stromquelle. Als Nächstes verbinden SieGNDSchließe den Pin am L298N sowohl an die Masse deiner Stromversorgung als auch an die Masse des Arduinos an.
Verbinden Sie nun die SteuerpinsENAan Pin 2 am Arduino undENBan Pin 3. Als Nächstes verbinden SieIN1an Pin 8,IN2an Pin 9,IN3an Pin 10, undIN4An den Pin 11 des Arduino anschließen. Schließen Sie schließlich die Drähte des Schrittmotors an die Ausgangsklemmen des L298N an. Stellen Sie sicher, dass die beiden Drahtpaare des Motors korrekt an die Ausgänge angeschlossen sind.
Codebeispiele & Schritt-für-Schritt-Anleitung
Im Code binden wir zuerst dieStepper.hBibliothek zur Vereinfachung der Steuerung des Schrittmotors. Wir definieren die Gesamtzahl der Schritte pro Umdrehung, die für eine genaue Bewegung entscheidend ist. Zu den wichtigsten Bezeichnern im Code gehörenstepsPerRevolution, welches die Anzahl der für eine vollständige Umdrehung benötigten Schritte festlegt, undmyStepper, welches das Stepper-Objekt mit den angegebenen Pins initialisiert.
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // initialize the stepper libraryDieser Ausschnitt initialisiert den Schrittmotor mit den entsprechenden Pins. Imsetup()In der Funktion setzen wir die Geschwindigkeit des Motors und aktivieren den Treiber, indem wir die Pins 2 und 3 auf HIGH setzen.
void setup() {
myStepper.setSpeed(300); // set the speed at 60 rpm
pinMode(2,OUTPUT); // for EN1
digitalWrite(2,HIGH); // enable EN1
pinMode(3,OUTPUT); // for EN2
digitalWrite(3,HIGH); // enable EN2
}Imloop()Bei dieser Funktion dreht der Motor jeweils eine Umdrehung im Uhrzeigersinn und gegen den Uhrzeigersinn, mit einer Verzögerung dazwischen. Dadurch können Sie den Betrieb des Motors beobachten.
void loop() {
myStepper.step(stepsPerRevolution); // step one revolution in one direction
delay(500); // wait half a second
myStepper.step(-stepsPerRevolution); // step one revolution in the other direction
delay(500); // wait half a second
}Dieser Ausschnitt zeigt, wie man den Motor so steuert, dass er sich in beide Richtungen dreht. Der vollständige Code ist weiter unten im Artikel als Referenz verfügbar.
Demonstration / Was Sie erwartet
Sobald alles richtig verkabelt und der Code hochgeladen ist, sollten Sie sehen, dass sich der Schrittmotor eine vollständige Umdrehung in eine Richtung dreht, gefolgt von einer vollständigen Umdrehung in die entgegengesetzte Richtung. Wenn Sie zusätzlich das Potentiometer zur Geschwindigkeitsregelung einbauen, wird dessen Einstellung die Drehgeschwindigkeit des Motors verändern. Achten Sie auf den Strom des Motors; wenn Sie die Geschwindigkeit erhöhen, kann der Motor mehr Strom ziehen, was bei nicht sachgemäßer Handhabung zu Überhitzung führen kann (im Video bei 09:45).
Wenn sich der Motor nicht wie erwartet dreht, prüfen Sie die Verkabelung, um sicherzustellen, dass alle Verbindungen fest sitzen und korrekt angeschlossen sind. Überprüfen Sie außerdem, ob die Versorgungsspannung für Ihren Schrittmotor geeignet ist.
Video-Zeitstempel
- 00:00- Einleitung
- 01:30- Erklärung der Verdrahtung
- 05:00- Code-Übersicht
- 09:45- Demonstration der Motorsteuerung
/*
Stepper Motor Control - one revolution
This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.
The motor should revolve one revolution in one direction, then
one revolution in the other direction.
Created 11 Mar. 2007
Modified 30 Nov. 2009
by Tom Igoe
Modified by Ahmad S. for Robojax.com
on May 19, 2018 at 19:31, in Ajax, Ontario, Canada
*/
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
// set the speed at 60 rpm:
myStepper.setSpeed(300);
// initialize the serial port:
Serial.begin(9600);
// L298N for Robojax.com
pinMode(2,OUTPUT);// for EN1
digitalWrite(2,HIGH);// enable EN1
pinMode(3,OUTPUT);// for EN1
digitalWrite(3,HIGH); // enable EN2
}
void loop() {
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// L298N for Robojax.com
// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}
/*
Stepper Motor Control - one step at a time
This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.
The motor will step one step at a time, very slowly. You can use this to
test that you've got the four wires of your stepper wired to the correct
pins. If wired correctly, all steps should be in the same direction.
Use this also to count the number of steps per revolution of your motor,
if you don't know it. Then plug that number into the oneRevolution
example to see if you got it right.
Created 30 Nov. 2009
by Tom Igoe
Modified by Ahmad S. for Robojax.com
on May 19, 2018 at 19:31, in Ajax, Ontario, Canada
*/
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
int stepCount = 0; // number of steps the motor has taken
void setup() {
// initialize the serial port:
Serial.begin(9600);
// L298N for Robojax.com
pinMode(2,OUTPUT);// for EN1
digitalWrite(2,HIGH);// enable EN1
pinMode(3,OUTPUT);// for EN1
digitalWrite(3,HIGH); // enable EN2
}
void loop() {
// step one step:
// L298N for Robojax.com
myStepper.step(-1);
Serial.print("steps:");
Serial.println(stepCount);
stepCount++;
delay(200);
}
Dinge, die Sie vielleicht brauchen
-
Amazon
-
Amazon
Ressourcen & Referenzen
Noch keine Ressourcen vorhanden.
Dateien📁
Keine Dateien verfügbar.