Nr. 34 – Motoren mit H-Brücke L298N ansteuern

Inhaltsverzeichnis

Motoren mit der H-Brücke L298N und einem Arduino Mikrocontroller ansteuern

Übersicht

In dieser Anleitung möchten wir zwei Gleichstrommotoren über die L298N H-Brücke ansteuern.

Eine H-Brücke besteht aus vier Schaltern (oft Transistoren), die in einer H-förmigen Anordnung verbunden sind. 

Diese vier Schalter können so gestellt werden, dass die sogenannte Last (z.B. Motor) in beiden möglichen Polaritäten betrieben werden kann. Zudem kann die Stromversorgung ganz getrennt werden.
Wir könnten einen Gleichstrommotor also in beide Richtungen rotieren lassen.

Pinbelegung

Da die L298N H-Brücke relativ viele Aus- und Eingänge besitzt, haben wir diese nummeriert.

H-Brücke L298 von oben
  • 1 = Anschluss für den Gleichstrommotor 1 – „+“
  • 2 = Anschluss für den Gleichstrommotor 1 – „-„
  • 3 = 12V Jumper. Dieser kann entfernt werden, wenn du eine Versorgungsspannung von mehr als 12V Gleichstrom verwendest. Das Entfernen des Jumpers aktiviert die 5V Regulator der H-Brücke.
  • 4 = Eingang für die Spannungsversorgung der H-Brücke (max. 35V Gleichstrom)
  • 5 = Eingang für den GND
  • 6 = 5V Ausgang, z.B. für die Stromversorgung des Mikrocontrollers
  • 7 = Pin, über den der Gleichstrommotor 1 angesteuert wird. Falls dieser Pin an einen PWM-Pin des Mikrocontrollers angeschlossen wurde, kann die Motorengeschwindigkeit ebenfalls genau bestimmt werden.
  • 8 = Pin IN1 – Steuert Gleichstrommotor 1
  • 9 = Pin IN2 – Steuert Gleichstrommotor 1
  • 10 = Pin IN3 – Steuert Gleichstrommotor 2
  • 11 = Pin IN4 – Steuert Gleichstrommotor 2
  • 12 = Pin, über den der Gleichstrommotor 2 angesteuert wird. Falls dieser Pin an einen PWM-Pin des Mikrocontrollers angeschlossen wurde, kann die Motorengeschwindigkeit ebenfalls genau bestimmt werden.
  • 13 = Anschluss für den Gleichstrommotor 2 – „+“
  • 14 = Anschluss für den Gleichstrommotor 2 – „-„

Schaltplan

Beispielsketch

// Gleichstrommotor 1

int GSM1 = 10;
int in1 = 9;
int in2 = 8;

// Gleichstrommotor 2

int GSM2 = 5;
int in3 = 7;
int in4 = 6;

void setup()
{
  pinMode(GSM1, OUTPUT);    
  pinMode(GSM2, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}
void loop()
{
  digitalWrite(in1, HIGH);  // Motor 1 beginnt zu rotieren
  digitalWrite(in2, LOW);

  analogWrite(GSM1, 200);   // Motor 1 soll mit der Geschwindigkeit "200" (max. 255) rotieren 

  digitalWrite(in3, HIGH);  // Motor 2 beginnt zu rotieren
  digitalWrite(in4, LOW);

  analogWrite(GSM2, 200);   // Motor 2 soll ebenfalls mit der Geschwindigkeit "200" (max. 255) rotieren
  delay(2000);

  digitalWrite(in1, LOW);   // Durch die Veränderung von HIGH auf LOW (bzw. LOW auf HIGH) wird die Richtung der Rotation verändert.
  digitalWrite(in2, HIGH);  
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH); 
  delay(2000);

  digitalWrite(in1, LOW);   // Anschließend sollen die Motoren 2 Sekunden ruhen.
  digitalWrite(in2, LOW);  
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);

  delay(2000);
}

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft 10% Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 3.500 Artikel sofort verfügbar!
  • Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE