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

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

Material : Mikrocontroller, 2 Krokodilklemmen, 2 Gleichstrommotoren, Breadboardkabel W/M, Breadboardkabel M/M, 9V Netzteil (Materialbeschaffung: www.funduinoshop.com)

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.

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

1. Anschluss für den Gleichstrommotor 1 – „+“
2. Anschluss für den Gleichstrommotor 1 – „-„
3. 12V Jumper. Dieser kann entfernt werden, wenn Sie eine Versorgungsspannung von mehr als 12V Gleichstrom. 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 – „-„

 


Der Aufbau

Zuerst schließen wir die beiden Gleichstrommotoren an die L298N H-Brücke an. Dabei verwenden wir zwei „Krokodilklemmen“.
Der Gleichstrommotor 1 wird an der „+“-Seite mit dem Eingang Nr. 1 verbunden. Die „-„-Seite wird mit dem Eingang Nr. 2 verbunden.
Der Gleichstrommotor 2 wird an der „+„-Seite mit dem Eingang Nr. 13 verbunden. Die „-„-Seite wird mit dem Eingang Nr. 14 verbunden.

Anschließend stellen wir die Verbindung zwischen dem Mikrocontroller und der H-Brücke her.

Eingang Nr. 4 wird mit einem M/M Breadboardkabel mit dem 5V Pin des Mikrocontrollers verbunden.
Eingang Nr. 5 wird mit einem M/M Breadboardkabel mit dem GND Pin des Mikrocontrollers verbunden.
Eingang Nr. 6 wird mit einem M/M Breadboardkabel mit dem Vin Pin des Mikrocontrollers verbunden.

Der Pin 7 der L298N H-Brücke wird anschließend mit dem Pin D10 des Mikrocontrollers verbunden.
Der Pin 12 der L298N H-Brücke wird mit dem Pin D5 des Mikrocontrollers verbunden.

Der Pin IN1 der L298N H-Brücke wird mit dem Pin D9 des Mikrocontrollers verbunden.
Der Pin IN2 der L298N H-Brücke wird mit dem Pin D8 des Mikrocontrollers verbunden.
Der Pin IN3 der L298N H-Brücke wird mit dem Pin D7 des Mikrocontrollers verbunden.
Der Pin IN4 der L298N H-Brücke wird mit dem Pin D6 des Mikrocontrollers verbunden.

Sobald wir sämtliche Verbindungen zwischen der H-Brücke und den Gleichstrommotoren, sowie der H-Brücke und dem Mikrocontroller noch einmal überprüft haben, können wir den Mikrocontroller mit dem 9V-Netzteil (oder durch das USB-Kabel) in Betrieb nehmen.

 

// Gleichstrommotor 1

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

// Gleichstrommotor 1

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);
}