H-Brücke L298N am Arduino UNO

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.

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?

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.de1 € – 7 €
amazon.de5,49 €
reichelt.de5,70 €
aliexpress.com0,97 €
bastelshop24.de3,10 €
Shops für den Bezug einer H-Brücke vom Typ L298N

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

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.

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

Ein Kommentar

Kommentar hinterlassen

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