Steuern Sie Gleichstrom- und Schrittmotoren mit L298N Dual Motor Controller Modules und Arduino

Sie müssen nicht viel Geld ausgeben, um Motoren mit einem Arduino oder einem kompatiblen Board zu steuern. Nach einigem Hin und Her haben wir ein ordentliches Motorsteuerungsmodul gefunden, das auf dem H-Brücken-IC L298N basiert und es Ihnen ermöglicht, die Drehzahl und Richtung von zwei Gleichstrommotoren oder einen bipolaren Schrittmotor mühelos zu steuern.

Das H-Brückenmodul L298N kann mit Motoren mit einer Spannung zwischen 5 und 35 V DC verwendet werden. Mit dem in diesem Tutorial verwendeten Modul gibt es auch einen integrierten 5-V-Regler. Wenn Ihre Versorgungsspannung also bis zu 12 V beträgt, können Sie auch 5 V von der Karte beziehen.

Also lasst uns anfangen!

Schritt 1: Grundlegendes zu den L298-Modulverbindungen

Zuerst werden wir die Anschlüsse durchgehen und dann erklären, wie Gleichstrommotoren und dann ein Schrittmotor gesteuert werden. Überprüfen Sie zu diesem Zeitpunkt die Anschlüsse am H-Brückenmodul L298N.

Betrachten Sie das Bild - stimmen Sie die Zahlen mit der Liste unter dem Bild ab:

  1. Gleichstrommotor 1 “+” oder Schrittmotor A +
  2. Gleichstrommotor 1 “-” oder Schrittmotor A-
  3. 12-V-Jumper - Entfernen Sie diesen, wenn Sie eine Versorgungsspannung von mehr als 12 V DC verwenden. Dies ermöglicht die Stromversorgung des integrierten 5-V-Reglers

  4. Schließen Sie hier Ihre Motorversorgungsspannung an, maximal 35V DC. Entfernen Sie den 12-V-Jumper, wenn> 12 V DC

  5. GND

  6. 5-V-Ausgang bei vorhandenem 12-V-Jumper, ideal für die Stromversorgung Ihres Arduino (usw.)

  7. Gleichstrommotor 1 Aktivierungsbrücke. Lassen Sie dies bei Verwendung eines Schrittmotors an Ort und Stelle. Zum Anschließen der Drehzahlregelung des Gleichstrommotors an den PWM-Ausgang anschließen.

  8. IN 1

  9. IN 2

  10. IN3

  11. IN4

  12. Gleichstrommotor 2 Aktivierungsbrücke. Lassen Sie dies bei Verwendung eines Schrittmotors an Ort und Stelle. Anschluss an den PWM-Ausgang zur Drehzahlregelung des Gleichstrommotors

  13. Gleichstrommotor 2 “+” oder Schrittmotor B +

  14. Gleichstrommotor 2 "-" oder Schrittmotor B-

Schritt 2: Steuerung von Gleichstrommotoren

Die Steuerung von ein oder zwei Gleichstrommotoren ist mit dem H-Brückenmodul L298N recht einfach. Schließen Sie zuerst jeden Motor an die A- und B-Anschlüsse des L298N-Moduls an.

Wenn Sie zwei Motoren für einen Roboter (usw.) verwenden, stellen Sie sicher, dass die Polarität der Motoren an beiden Eingängen gleich ist. Andernfalls müssen Sie sie möglicherweise austauschen, wenn Sie beide Motoren auf Vorwärts und einen auf Rückwärts stellen!

Schließen Sie als nächstes Ihr Netzteil an - das Plus an Pin 4 des Moduls und das Minus / GND an Pin 5. Wenn Sie bis zu 12 V liefern, können Sie den 12-V-Jumper (Punkt 3 im Bild oben) verwenden, und 5 V stehen zur Verfügung von Pin 6 am Modul.

Dies kann dem 5-V-Pin Ihres Arduino zugeführt werden, um ihn über die Stromversorgung der Motoren mit Strom zu versorgen. Vergessen Sie nicht, Arduino GND auch an Pin 5 des Moduls anzuschließen, um die Schaltung zu vervollständigen. Jetzt benötigen Sie sechs digitale Ausgangspins an Ihrem Arduino, von denen zwei PWM-Pins (Pulsweitenmodulation) sein müssen.

PWM-Pins werden durch die Tilde ("~") neben der Pin-Nummer gekennzeichnet, beispielsweise im Bild der digitalen Pins des Arduino Uno.

Schließen Sie zum Schluss die digitalen Arduino-Ausgangspins an das Treibermodul an. In unserem Beispiel haben wir zwei Gleichstrommotoren, sodass die digitalen Pins D9, D8, D7 und D6 mit den Pins IN1, IN2, IN3 bzw. IN4 verbunden werden. Verbinden Sie dann D10 mit Modulstift 7 (entfernen Sie zuerst den Jumper) und D5 mit Modulstift 12 (entfernen Sie erneut den Jumper).

Die Motorrichtung wird gesteuert, indem für jeden Motor (oder Kanal) ein HIGH- oder LOW-Signal an den Antrieb gesendet wird. Zum Beispiel bewirkt ein Motor HIGH nach IN1 und ein LOW nach IN2, dass er sich in eine Richtung dreht, und ein LOW und HIGH bewirkt, dass er sich in die andere Richtung dreht.

Die Motoren drehen sich jedoch erst, wenn ein HIGH auf den Freigabestift gesetzt ist (7 für Motor eins, 12 für Motor zwei). Und sie können mit einem LOW an denselben Pins ausgeschaltet werden. Wenn Sie jedoch die Drehzahl der Motoren steuern müssen, kann das PWM-Signal vom digitalen Pin, der mit dem Freigabepin verbunden ist, dafür sorgen.

Dies haben wir mit der Demonstrationsskizze für Gleichstrommotoren gemacht. Zwei Gleichstrommotoren und ein Arduino Uno werden wie oben beschrieben zusammen mit einer externen Stromversorgung angeschlossen. Geben Sie dann die folgende Skizze ein und laden Sie sie hoch:

 // Motorsteuerungsstifte mit Arduino Digitalstiften verbinden // Motor eins int enA = 10; int in1 = 9; int in2 = 8; // Motor zwei int enB = 5; int in3 = 7; int in4 = 6; void setup () {// setze alle Motorsteuerpins auf die Ausgänge pinMode (enA, OUTPUT); pinMode (enB, OUTPUT); pinMode (in1, OUTPUT); pinMode (in2, OUTPUT); pinMode (in3, OUTPUT); pinMode (in4, OUTPUT); } void demoOne () {// Diese Funktion lässt die Motoren in beide Richtungen mit einer festen Geschwindigkeit laufen. // Motor einschalten. A digitalWrite (in1, HIGH); digitalWrite (in2, LOW); // Geschwindigkeit auf 200 außerhalb des möglichen Bereichs einstellen 0 ~ 255 analogWrite (enA, 200); // Motor B einschalten digitalWrite (in3, HIGH); digitalWrite (in4, LOW); // Geschwindigkeit auf 200 außerhalb des möglichen Bereichs einstellen 0 ~ 255 analogWrite (enB, 200); Verzögerung (2000); // jetzt Motorrichtung ändern digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, HIGH); Verzögerung (2000); // jetzt Motoren ausschalten digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, LOW); } void demoTwo () {// Diese Funktion lässt die Motoren über den Bereich möglicher Drehzahlen laufen. // Beachten Sie, dass die maximale Drehzahl vom Motor selbst bestimmt wird und die Betriebsspannung // die von analogWrite () gesendeten PWM-Werte Bruchteile der sind maximal mögliche Geschwindigkeit // durch Ihre Hardware // Motoren einschalten digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, HIGH); // von null auf maximale Geschwindigkeit beschleunigen für (int i = 0; i <256; i ++) {analogWrite (enA, i); analogWrite (enB, i); Verzögerung (20); } // von der Höchstgeschwindigkeit auf Null abbremsen für (int i = 255; i> = 0; --i) {analogWrite (enA, i); analogWrite (enB, i); Verzögerung (20); } // schalte jetzt die Motoren aus digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, LOW); } void loop () {demoOne (); Verzögerung (1000); demoTwo (); Verzögerung (1000); }} 

Was passiert in dieser Skizze? In der Funktion demoOne () schalten wir die Motoren ein und lassen sie mit einem PWM-Wert von 200 laufen. Dies ist kein Drehzahlwert, stattdessen wird 200/255 Mal gleichzeitig Strom angelegt.


Nach einem Moment arbeiten die Motoren dann in umgekehrter Richtung (siehe, wie wir die HIGHs und LOWs in den Funktionen von digitalWrite () geändert haben?). Um eine Vorstellung vom möglichen Geschwindigkeitsbereich Ihrer Hardware zu bekommen, durchlaufen wir den gesamten PWM-Bereich in der Funktion demoTwo (), die die Motoren einschaltet, und sie durchlaufen die PWM-Werte von Null bis 255 und zurück auf Null mit den beiden for-Schleifen .

Dies wird schließlich im Video auf dieser Seite demonstriert - unter Verwendung unseres abgenutzten Tankchassis mit zwei Gleichstrommotoren.

Schritt 3: Steuern eines Schrittmotors mit Arduino und L298N

Schrittmotoren mögen komplex erscheinen, aber nichts könnte weiter als die Wahrheit sein. In diesem Beispiel steuern wir einen typischen NEMA-17-Schrittmotor mit vier Drähten, wie in der Abbildung zu diesem Schritt gezeigt.

Es hat 200 Schritte pro Umdrehung und kann mit 60 U / min betrieben werden. Wenn Sie den Schritt- und Drehzahlwert für Ihren Motor noch nicht haben, finden Sie es jetzt heraus und Sie benötigen ihn für die Skizze.

Der Schlüssel zu einer erfolgreichen Schrittmotorsteuerung liegt in der Identifizierung der Drähte - das ist welches welches. Sie müssen die A + -, A-, B + - und B- -Drähte bestimmen. Bei unserem Beispielmotor sind dies rot, grün, gelb und blau. Lassen Sie uns jetzt die Verkabelung erledigen.

Verbinden Sie die A + -, A-, B + - und B- -Drähte vom Schrittmotor mit den Modulanschlüssen 1, 2, 13 bzw. 14. Platzieren Sie die im Lieferumfang des L298N-Moduls enthaltenen Jumper an den Modulpunkten 7 und 12 über den Paaren. Schließen Sie dann die Stromversorgung nach Bedarf an die Punkte 4 (positiv) und 5 (negativ / GND) an.

Wenn die Stromversorgung Ihres Schrittmotors weniger als 12 V beträgt, bringen Sie den Jumper erneut an Punkt 3 am Modul an, wodurch Sie eine saubere 5-V-Stromversorgung für Ihren Arduino erhalten. Verbinden Sie anschließend die L298N-Modulstifte IN1, IN2, IN3 und IN4 mit den digitalen Arduino-Stiften D8, D9, D10 bzw. D11.

Schließen Sie schließlich Arduino GND an Punkt 5 des Moduls und Arduino 5V an Punkt 6 an, wenn Sie 5V vom Modul beziehen. Die Steuerung des Schrittmotors anhand Ihrer Skizzen ist dank der standardmäßig in der Arduino IDE enthaltenen Stepper Arduino-Bibliothek sehr einfach.

Laden Sie zur Demonstration Ihres Motors einfach die skizze stepper_oneRevolution, die in der Stepper-Bibliothek enthalten ist. Um dies zu finden, klicken Sie in der Arduino IDE auf das Menü Datei> Beispiele> Stepper.

Überprüfen Sie abschließend den Wert für

 const int stepPerRevolution = 200; 
in der Skizze und ändern Sie die 200 in die Anzahl der Schritte pro Umdrehung für Ihren Schrittmotor und auch die Geschwindigkeit, die in der folgenden Zeile auf 60 U / min voreingestellt ist:
 myStepper.setSpeed ​​(60); 

Jetzt können Sie die Skizze speichern und hochladen, wodurch Ihr Schrittmotor um eine Umdrehung und dann wieder zurück gesendet wird. Dies wird mit der Funktion erreicht

myStepper.step (stepPerRevolution); // für im Uhrzeigersinn

myStepper.step (-stepsPerRevolution); // gegen den Uhrzeigersinn

Im Video zu diesem Schritt wird eine kurze Demonstration unserer Testhardware gezeigt.

Da haben Sie es also, eine einfache und kostengünstige Möglichkeit, Motoren mit Ihrem Arduino oder einem kompatiblen Board zu steuern. Und wenn Ihnen dieser Artikel gefallen hat oder Sie jemand anderem die interessante Welt von Arduino vorstellen möchten, lesen Sie mein Buch „Arduino Workshop“ (jetzt in einem vierten Druck!).

Ähnlicher Artikel