Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

H-Brücke L298N am Arduino UNO

Posted on 5. November 20217. Juni 2024 by Stefan Draeger

In diesem Beitrag zeige ich dir wie du die H-Brücke vom Typ L298N am Arduino UNO betreibst und zwei DC Motoren unabhängig voneinander in beide Laufrichtungen beitreiben kannst.

L298N DC Motor Shield
L298N DC Motor Shield
L298N DC Motor Shield
L298N DC Motor Shield
L298N DC Motor Shield
L298N DC Motor Shield

Natürlich kannst du dieses Bauteil auch am Raspberry Pi betreiben, jedoch soll es in diesem Beitrag zunächst darum gehen wie du dieses am Arduino UNO machst.

  • Wozu dient eine H-Brücke?
  • Bezug der H-Brücke
  • Technische Daten des L298N Moduls
  • Aufbau der H-Brücke vom Typ L298N
    • Spannungsversorgung des Moduls
    • Stiftleisten zur Steuerung der Motoren
    • steuern der Drehrichtung der Motoren
      • Motor 1
      • Motor 2
    • Spannungsversorgung der DC-Motoren
  • Aufbau einer Schaltung am Arduino UNO mit 2 DC-Motoren
    • Benötigte Ressourcen für den Aufbau der Schaltung
    • Schaltung am Arduino UNO
  • Programmieren in der Arduino IDE
    • Geschwindigkeit des Motors per PWM Signal regeln

Wozu dient eine H-Brücke?

Mit einer H-Brücke kann man einen Motor vorwärts & rückwärts drehen lassen. Durch die Anordnung von MOSFETs kann ein DC Motor umgepolt werden und somit dreht der Motor vorwärts oder rückwärts.

Bezug der H-Brücke

Auf den gängigen Plattformen wie ebay.de, amazon.de, aliexpress.com usw. findest du diese H-Brücke zu recht günstigen Preisen, hier nun eine kleine Auflistung von einigen Shops (stand 04.11.2021):

ShopPreis
ebay.de*1 € – 7 €
amazon.de*5,49 €
reichelt.de5,70 €
aliexpress.com0,97 €
bastelshop24.de3,10 €
Shops für den Bezug einer H-Brücke vom Typ L298N

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Technische Daten des L298N Moduls

Hier nun die technischen Daten des Moduls:

  • Chip – L298N
  • Logische Spannung – 5V
  • Spannung für DC – Motoren 5V – 35V
  • Stromaufnahme des Modules 0mA bis 36mA
  • max. Stromaufnahme der DC Motoren 2A
  • max. Leistung – 25W
  • Abmaße (LxBxH) – 43 mm x43 mm x 26 mm
  • Gewicht – 26g

Aufbau der H-Brücke vom Typ L298N

Auf der H-Brücke vom Typ L298N sind verbaut:

  • zwei 2polige Schraubklemmen für DC-Motoren,
  • eine 3polige Schraubklemme für die Spannungsversorgung,
  • eine Pinleiste zum Steuern der Motoren,
  • an den Ecken sind jeweils Löcher im Durchmesser von 4 mm zur Montage vorhaben
Aufbau der H-Brücke vom Typ L298N
Aufbau der H-Brücke vom Typ L298N

Spannungsversorgung des Moduls

Das Modul selber kann mit einer Spannung von 5V bis maximal 35V versorgt werden. Wenn der Jumper gesetzt ist, wird auf der rechten Schraubklemme +5V ausgegeben und wir könnten theoretisch zusätzlich einen Mikrocontroller versorgen.

Stiftleisten zur Steuerung der Motoren

Die 8polige Stiftleiste ist wie folgt belegt:

ENA – Pin für den DC Motor 1, kann entweder mit einem Jumper gebrückt werden oder aber angeklemmt an einem PWM Pin des Mikrocontrollers kann eine genaue Geschwindigkeit gesetzt werden.

IN1 – zur Steuerung des DC Motors 1

IN2 – zur Steuerung des DC Motors 1

IN3 – zur Steuerung des DC Motors 2

IN4 – zur Steuerung des DC Motors 2

ENB – Pin für den DC Motor 2, kann entweder mit einem Jumper gebrückt werden oder aber angeklemmt an einem PWM Pin des Mikrocontrollers kann eine genaue Geschwindigkeit gesetzt werden.

steuern der Drehrichtung der Motoren

Motor 1

Vorwärts drehen

IN1HIGH
IN2LOW

Rückwärts drehen

IN1LOW
IN2HIGH

Motor 2

Vorwärts drehen

IN3HIGH
IN4LOW

Rückwärts drehen

IN3LOW
IN4HIGH

Spannungsversorgung der DC-Motoren

An der H-Brücke können DC-Motoren mit einer Spannungsversorgung von 5V bis max. 35V angeschlossen und betrieben werden. Man muss aber beachten das, dass Modul selber knapp 2V verbraucht und somit muss die Versorgungsspannung immer etwas über die eigentliche Spannung liegen.

D.h. möchte man einen 5V DC Motor mit seiner maximalen Drehzahl betreiben, somit muss eine Spannung von knapp 7V angelegt werden.

2V Spannungsabfall an der H-Brücke L298N
2V Spannungsabfall an der H-Brücke L298N

In meinem Fall nutze ich ein 4fach Batteriefach für Mignon Batterien für eine Spannung von 4x 1,5V = 6V (~ 6,47V gemessen mit dem Multimeter).

Batteriehalter 4xAA
Batteriehalter 4xAA

Aufbau einer Schaltung am Arduino UNO mit 2 DC-Motoren

Eine solche H-Brücke findest du Bsp. in einem 2 WD / 4 WD Set welches jeweils 2 oder 4 Räder hat.

Das oben gezeigt Set beinhaltet alles, was du benötigst, um ein kleines „Auto“ mit einem Arduino UNO aufzubauen. Und hier möchte ich dir nun gerne zeigen wie du die H-Brücke programmieren kannst, um die DC Motoren zu betreiben.

Benötigte Ressourcen für den Aufbau der Schaltung

Für den Aufbau benötigst du

  • eine H-Brücke vom Typ L298N,
  • zwei 5V DC-Motoren,
  • eine 7V Spannungsquelle zbsp. ein Batteriefach für 4 Stck. AA Batterien,
  • vier Stück AA , Mignon Batterien,
  • einen Arduino UNO,
  • diverse Breadboardkabel

Oder du nimmst ein wie bereits gezeigtes 2WD Set welches alle benötigten Bauteile enthält. Dieses Set bekommst du Bsp. über aliexpress.com sehr günstig.

Angebot - 4WD Arduino SmartCar
Angebot – 4WD Arduino SmartCar

Schaltung am Arduino UNO

Für den Aufbau verwende ich den Arduino UNO du kannst aber ebenso auch einen Arduino Nano, Leonardo oder auch den Mega 2560 R3 verwenden.

Aufbau der Schaltung - Arduino UNO, 2x DC Motor & L298N H-Brücke
Aufbau der Schaltung – Arduino UNO, 2x DC Motor & L298N H-Brücke
Aufbau der Schaltung - Arduino UNO mit H-Brücke L298N und 2 DC Motoren
Aufbau der Schaltung – Arduino UNO mit H-Brücke L298N und 2 DC Motoren

Programmieren in der Arduino IDE

Kommen wir zur Programmierung der H-Brücke in der Arduino IDE für den Arduino UNO.

// DC Motor 1
int ena = 10;
int in1 = 9;
int in2 = 8;

// DC Motor 2
int enb = 5;
int in3 = 7;
int in4 = 6;

void setup() {
  pinMode(ena, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);

  pinMode(enb, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}

void loop() {
  //Motor 1 vorwärts drehen - volle Geschwindigkeit
  analogWrite(ena, 255);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);

  //eine Pause von 2,5 Sekunden
  delay(2500);

  //Motor 1 rückwärts drehen - volle Geschwindigkeit
  analogWrite(ena, 255);
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);

  //eine Pause von 2,5 Sekunden
  delay(2500);

  //Motor 1 STOPP
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);

  //Motor 2 vorwärts drehen - volle Geschwindigkeit
  analogWrite(enb, 255);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);

  //eine Pause von 2,5 Sekunden
  delay(2500);

  //Motor 2 rückwärts drehen - volle Geschwindigkeit
  analogWrite(enb, 255);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);

  //eine Pause von 2,5 Sekunden
  delay(2500);

  //Motor 2 vorwärts drehen - halbe Geschwindigkeit
  analogWrite(enb, 128);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);

  //eine Pause von 2,5 Sekunden
  delay(2500);
}

Hier nun das Video zum Sketch / Programm am Arduino UNO.

Geschwindigkeit des Motors per PWM Signal regeln

Die Geschwindigkeit der angeschlossenen Motoren können mit PWM Signalen von 0 bis 255 gesteuert werden.

Jedoch dreht sich bei mir erst der Motor ab einem Wert von 45.

// DC Motor 1
int ena = 10;
int in1 = 9;
int in2 = 8;

void setup() {
  Serial.begin(9600);
  pinMode(ena, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
}

void loop() {
  //Motor zunächst vorwärts drehen lassen
  analogWrite(ena, 255);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);

  //von ganz langsam bis max. Geschwindigkeit drehen
  for (int i = 0; i < 255; i++) {
    Serial.println(i);
    analogWrite(ena, i);
    delay(125);
  }

  //von max. Geschwindigkeit bis ganz langsam drehen
  for (int i = 255; i > 0; i--) {
    Serial.println(i);
    analogWrite(ena, i);
    delay(125);
  }
}

sdfgsdfgsdgf

22 thoughts on “H-Brücke L298N am Arduino UNO”

  1. Jens Messtorff sagt:
    3. März 2022 um 14:20 Uhr

    Erklärung bestens. Möchte Motor mit mehreren definierten Schritten vorwärts und ggf. rückwärts steuern, wie ist hierzu die Programmierung.

    Besten Dank und
    mfG
    Jens MEsstorff

    Antworten
    1. Stefan Draeger sagt:
      3. März 2022 um 17:27 Uhr

      Hallo Jens,

      vielen Dank für deinen Kommentar.
      Schreibe mir doch einmal per E-Mail, was du genau vorhast, ggf. kann ich dich da unterstützen.

      Gruß

      Stefan Draeger

      Antworten
  2. Ralph sagt:
    1. April 2022 um 11:44 Uhr

    Tolle Seite ohne viel Schnickschack…

    Antworten
  3. Jack Lion sagt:
    26. Mai 2022 um 17:49 Uhr

    Hallo Stefan,
    super erklärt!
    Kann man damit auch 2 kleine Vibrations-Motoren, die in der linken und rechten Hand gehalten werden sollen und dort abwechselnd vibrieren (Wechsel-Impuls-Geschwindigkeit über Poti regelbar!?) steuern?
    Und falls ja, wie?

    Mit einem netten Gruß von Jack

    Antworten
  4. Jack Lion sagt:
    26. Mai 2022 um 18:13 Uhr

    Hallo Stefan,
    als Vibrationsmotoren würde ich gerne DC3Volt mit ca. 4000 RPM nehmen, wie es sie via Ebay gibt
    (falls das als Zusatzinfo wichtig ist).

    Nette Grüße von Jack

    Antworten
    1. Tamer tanrikulu sagt:
      4. September 2022 um 14:59 Uhr

      İch mochte steurung 1kw ac motoren mit arduino.bitte hilfe

      Antworten
      1. Stefan Draeger sagt:
        5. September 2022 um 07:59 Uhr

        Hi,

        einen 1KVA Motor wirst du am Arduino nicht steuern können. Hier benötigst du zusätzliche Technik wie Schütze oder Relais.

        Gruß,

        Stefan Draeger

        Antworten
  5. Jack Lion sagt:
    31. Mai 2022 um 08:20 Uhr

    OK, keine Antworten – vielleicht war die Frage doch zu komplex / offen …

    Zum obigen Beispiel konkret:
    „… es können DC-Motoren von 5 Volt bis … angeschlossen werden. …“
    Da das Board offensichtlich selbst ca. 2 Volt benötigt, also nur 3 Volt ankommen, – bedeutet das, dass ich auch 3 Volt DC-Motoren damit steuern könnte? (Bei 5 Volt Stromversorgung)?
    Ich brauche nämlich eine Steuerung für zwei 3 Volt-Motoren.
    Oder ist das völlig abwegig?

    Antworten
    1. Stefan Draeger sagt:
      31. Mai 2022 um 11:35 Uhr

      Hi,

      danke für deinen Kommentar, deine Frage habe ich wahrgenommen und wollte mich heute mal an einen kleinen Aufbau machen.
      Bitte schaue doch mal in ein paar Tagen vorbei dann denke ich habe ich eine Lösung für dich.

      Gruß,

      Stefan

      Antworten
    2. Stefan Draeger sagt:
      2. Juni 2022 um 19:37 Uhr

      Hi Jack,

      du kannst 3V Motoren damit steuern, jedoch empfehle ich dir eine Konstante Stromquelle (also keine Batterie) du solltest aber trotzdem noch messen wieviel Volt verlust sind damit du den Rest mit einem Widerstand reduzieren kannst.

      Gruß, Stefan

      Antworten
  6. Jack Lion sagt:
    31. Mai 2022 um 11:43 Uhr

    Lieber Stefan,
    thanks in advance! *vorfreu*
    Jack

    Antworten
  7. Davor sagt:
    2. Juni 2022 um 08:01 Uhr

    Hallo Stefan,

    ich möchte 1 DC12V Motor und einen Stepper (Nema17) Motor steuern. Beide Motoren sollen je zwei Microendschalter haben. Zusätzlich soll ein Hall Sensor am DC12V Motor die Drehezahl messen können (Es soll ein Spulenwicker werden der messen kann wie viel meter aufgewickelt worden ist).
    Hast Du dafür zuverlig eine Lösung.

    Vielen Dank.

    Mfg
    D. Horvat

    Antworten
    1. Stefan Draeger sagt:
      2. Juni 2022 um 19:42 Uhr

      Hi,

      also die Drehzahl könnte man ermitteln, aber eine korrekte Spulenwicklung wird schwierig, denn die Spule wird ja mit zunehmender Zeit dicker und somit ändert sich der Durchmesser.
      Du müsstest dieses „irgendwie“ herausrechnen.

      Ich würde dir statt einem Hall Sensor eine Lochplatte auf der Welle des Motors mit einer Gabellichtschranke empfehlen, diese lässt sich zuverlässiger auswerten.

      Gruß,

      Stefan

      Antworten
      1. Davor sagt:
        2. Juni 2022 um 21:35 Uhr

        Hallo Stefan,

        ich gehe stark davon aus dass Du nicht so viel Zeit hast aber könntest Du mir das irgendwie auf ein Stückchen Papier alles bringen? Ich würde dir sehr dankbar sein da ich deine Arbeit die Du hier mach sehr schätze.

        Grüße
        Davor

        Antworten
        1. Stefan Draeger sagt:
          3. Juni 2022 um 09:20 Uhr

          Hi,

          schreibe mir doch einmal per E-Mail was du genau vorhast und was die Endschalter der Motoren bezwecken sollen.
          Motor-Stopp, Motor-Richtung ändern, etc.

          Gruß,

          Stefan

          Antworten
  8. Jack Lion sagt:
    4. Juni 2022 um 16:57 Uhr

    Hallo Stefan,
    ich habe versucht, anhand deines Spannungsabfall-Schaubildes an meinem Mini-Motorschield, nach Anlegen der Eingangsspannung via Netzteil an den 2 Motoranschlüssen per Multimeter zu messen, was ankommt.
    Im Display gab es nur 0.000 zu sehen.
    Kann es sein, dass – ohne dass die Steuerimpulse des Arduino bereits anliegen – die Messung an den Motorklemmen nichts ergibt?

    LG Jack

    Antworten
    1. Stefan Draeger sagt:
      6. Juni 2022 um 10:19 Uhr

      Hi

      du musst natürlich einen digitalen Wert anlegen. Der Motor kann sich vorwärts und Rückwärts bewegen und soll auch stehenbleiben können.

      Gruß,

      Stefan Draeger

      Antworten
  9. Jan Siebrecht sagt:
    6. August 2023 um 14:12 Uhr

    Hallo Stefan,

    die Stromversorgung des Arduino erfolgt aber bei dir separat oder?
    Oder kommt das auch aus dem 7V Batteriepack?

    Danke für die Klarstellung.
    Viele Grüße
    Jan

    Antworten
    1. Stefan Draeger sagt:
      7. August 2023 um 10:00 Uhr

      Hi,

      ja der Arduino UNO bekommt seinen Strom über dem USB Port vom Computer.

      Gruß, Stefan

      Antworten
  10. Armin M. sagt:
    17. Oktober 2023 um 11:55 Uhr

    Hi, sehr gute Beschreibung.
    Hätte aber noch eine Frage… bin leider eher in der mechanischen Anwendung drinnen 🙁

    Wollte den Treiber für den folgenden Anwendungsfall nehmen:
    – über einen magnetischen Reedkontakt soll der Motor (12V mit Planetengetriebe – 20 U/min an der eine Exenderscheibe befestigt ist) eine Umdrehung machen und über einen zweiten Kontakt nach der einen Umdrehung die Bewegung in der definierten Position stoppen.
    Der Kontakt für das Starten der Bewegung sollte ja kein Problem sein (in die +12 rein nehmen). Aber wie verdrahte ich den zweiten Kontakt nach der einen Umdrehung der Exenderscheibe?
    Geht das überhaupt mit dem Gleichströmer oder müsste das über einen Schrittmotor gelöst werden?

    Danke und viele Grüße
    Armin

    Antworten
  11. Konstantin sagt:
    10. Januar 2024 um 20:50 Uhr

    Sehr gute Seite Stefan.
    Finde gut was du machst und kann immer nur wieder staunen was man mit arduino alles machen kann.
    Nun zu meinem Projekt. Habe einen Roboter per 3d druck entworfen und nema08 an 3achsen. Hab mir zwar fest vorgenommen C/C+ zu lernen aber das fuhrt mich nicht schnell genug ans Ziel. Möchte als erstes einmal diese drei Achsen auch per steps laufen lassen können bzw die mit fernbedienung gemachten Bewegungen zu speichern und dann autonom abfahren zu können. Naja…ich lerne auf das Ziel hin. Zum ersten Schritt brauchte ich nur einmal Hilfe was ich brauche um wenigstens ersteinmal die Motoren mit joystick zu steuern.
    MFG

    Antworten
    1. Stefan Draeger sagt:
      11. Januar 2024 um 14:56 Uhr

      Hi,

      für die Schrittmotoren gibt es spezielle Treiber und auch Shields welche du simple auf den Arduino UNO stecken kannst.
      Um diese dann mit einem Joystick zu steuern musst du dann das analoge Signal des Joysticks auswerten und dann jeweils den Motor in die Richtung bewegen. Die Beschreibung ist nun sehr abstrakt, aber kein hexenwerk.

      Gruß, Stefan

      Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}