DC-Motor mit L298N Treiber
AktuatorDer L298N ist ein Motortreiber-Board fuer bis zu 2 DC-Motoren. Er verstaerkt die schwachen Arduino-Signale zu kraeftigen Motorstroemen. Man kann Richtung und Geschwindigkeit steuern.
Tipps:
Den Motor NIEMALS direkt an den Arduino anschliessen — er braucht zu viel Strom und kann den Arduino zerstoeren! Immer den L298N oder einen aehnlichen Treiber dazwischenschalten. Externe Stromversorgung (Batterie/Netzteil) fuer die Motoren verwenden.
Technische Daten
| Kategorie | Bewegung/Motor |
|---|---|
| Schnittstelle | Digital + PWM |
| Pinbelegung | ENA, IN1, IN2, IN3, IN4, ENB, Motor A (+/-), Motor B (+/-), VCC, GND, 5V |
| Anzahl Pins | 11 |
| Messbereich | Drehzahl variabel (PWM-gesteuert) |
| Betriebsspannung | 5.0V – 35.0V |
| Stromverbrauch | 2000.0 mA |
| Datenblatt | PDF oeffnen |
Anschluss
Arduino Uno R3
Pins:
D5=ENA (PWM Geschwindigkeit), D6=IN1 (Richtung), D7=IN2 (Richtung), Extern=Motorspannung
Hinweise: Externe Stromversorgung (6-12V) fuer Motoren! GND von Arduino und Motorversorgung verbinden!
Codebeispiele
Motor steuern: Richtung und Geschwindigkeit Mittel
Der L298N steuert die Richtung ueber IN1/IN2 und die Geschwindigkeit ueber ENA (PWM). IN1=HIGH + IN2=LOW = vorwaerts, IN1=LOW + IN2=HIGH = rueckwaerts. Beide LOW = Stopp.
Benoetigte Bibliotheken: Keine (nur Arduino-Standardfunktionen)
// ============================================
// DC-Motor mit L298N: Richtung + Geschwindigkeit
// ============================================
// Anschluss Arduino -> L298N:
// D5 = ENA (Geschwindigkeit, PWM)
// D6 = IN1 (Richtung)
// D7 = IN2 (Richtung)
// Motor an OUT1/OUT2 des L298N
// Externe Stromversorgung (6-12V) am L298N!
// GND von Arduino und L298N verbinden!
#define ENA_PIN 5 // Geschwindigkeit (PWM)
#define IN1_PIN 6 // Richtung Kanal 1
#define IN2_PIN 7 // Richtung Kanal 2
void setup() {
pinMode(ENA_PIN, OUTPUT);
pinMode(IN1_PIN, OUTPUT);
pinMode(IN2_PIN, OUTPUT);
Serial.begin(9600);
Serial.println("Motor-Demo mit L298N");
}
// Hilfsfunktion: Motor vorwaerts
void motorVorwaerts(int geschwindigkeit) {
digitalWrite(IN1_PIN, HIGH);
digitalWrite(IN2_PIN, LOW);
analogWrite(ENA_PIN, geschwindigkeit); // 0-255
}
// Hilfsfunktion: Motor rueckwaerts
void motorRueckwaerts(int geschwindigkeit) {
digitalWrite(IN1_PIN, LOW);
digitalWrite(IN2_PIN, HIGH);
analogWrite(ENA_PIN, geschwindigkeit);
}
// Hilfsfunktion: Motor stoppen
void motorStopp() {
digitalWrite(IN1_PIN, LOW);
digitalWrite(IN2_PIN, LOW);
analogWrite(ENA_PIN, 0);
}
void loop() {
// Vorwaerts mit halber Geschwindigkeit
Serial.println("Vorwaerts (50%)");
motorVorwaerts(128);
delay(2000);
// Vorwaerts mit voller Geschwindigkeit
Serial.println("Vorwaerts (100%)");
motorVorwaerts(255);
delay(2000);
// Stopp
Serial.println("Stopp");
motorStopp();
delay(1000);
// Rueckwaerts
Serial.println("Rueckwaerts (75%)");
motorRueckwaerts(192);
delay(2000);
// Stopp
Serial.println("Stopp");
motorStopp();
delay(2000);
}
Probleme mit DC-Motor mit L298N Treiber?
KI-Lernhelfer fragen