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 – „-„

 


Fritzing Skizze


 

 

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