
Hallo an alle.
Ich denke, wenn Sie mit Arduino + Nema 17 gearbeitet haben, wissen Sie, dass es sehr schwierig sein kann, mehrere Motoren gleichzeitig zu starten.
Es gibt verschiedene Möglichkeiten, um dieses Problem zu lösen. Am einfachsten ist es möglicherweise, die NemaStepper-Bibliothek zu verwenden. Die Bibliothek vereinfacht diese Aufgabe um ein Vielfaches. Der Hauptvorteil besteht darin, dass das Programm nicht gestoppt wird. Es ist ebenso installiert wie alle anderen Bibliotheken. Unter MIT-Lizenz vertrieben.
Nun, fangen wir an. Und wir beginnen mit der Verbindung.
Wir werden Simple Nema 17 mit Aliexpress für 500 Rubel, den L298N-Treiber und Arduino Uno verwenden. Hier sind sie:



- Im Beispiel werde ich vier mit dem Arduino verbundene Treiber zeigen, obwohl ich nur einen verwenden werde.
- Es gibt viele Tutorials zum Verbinden von Nema 17 im Internet, daher werde ich es hier nicht im Detail beschreiben.
Also verbinden wir den Motor mit dem Fahrer:


Die Bibliothek ist objektorientiert. Schauen wir uns ein Beispiel für das Einschalten eines Motors an:
NemaStepper Stepper1(2, 3, 4, 5, 200, 10, false); void Setup(){ Stepper1.SetStepCount(100);
Alle Bibliotheksmethoden finden Sie in den Quellcodedateien der Bibliothek (im Bibliotheksheader befindet sich eine Beschreibung).
* Mehr zum Code im Beispiel.
Und jetzt zum Beispiel.
Die Bibliothek verfügt über ein eingebautes Beispiel (im Moment ist es nur dort), mit dem Sie nur drei Motoren mit Serial steuern können.
In diesem Beispiel werden die folgenden Befehle für den Port akzeptiert.
Nehmen wir es auseinander.
Beginnen wir mit dem Header - Verbinden von Bibliotheken:
Als nächstes werden drei Motoren mit den folgenden Parametern deklariert:
1. Erster Stift
2. Zweiter Stift
3. Dritter Stift
4. Vierter Stift
5. Die Anzahl der Schritte pro Umdrehung - die meisten Nema 17-Motoren haben 200.
6. Startgeschwindigkeit
7. Ein Wert, der angibt, ob die Welle nach dem Anhalten gehalten werden soll (falls dies zutrifft, verwandeln sich die Fahrer in einen Grill).
NemaStepper Stepper1(2, 3, 4, 5, 200, 10, false); NemaStepper Stepper2(6, 7, 8, 9, 200, 10, false); NemaStepper Stepper3(10, 11, 12, 13, 200, 10, false);
Nächste Portinitialisierung:
void setup() { Serial.begin(9600); }
Dann WICHTIG! In der Hauptschleife müssen Sie die Position der Engines mit dem Befehl Step () aktualisieren.
void loop() { if (IsStepperEnabled == true){ Stepper1.Step(); Stepper2.Step(); Stepper3.Step(); } GetCommandFromSerial(); }
Das Folgende ist eine Unterroutine, die Daten vom Port empfängt, Motoren ein- und ausschaltet, Geschwindigkeit, Bremsen und Drehung einstellt.
void GetCommandFromSerial() { if (Serial.available() > 0) {
Versuchen wir also, es auf das Board herunterzuladen.
Hochgeladen?
Dann gehen wir in den Port-Monitor und geben die Befehle aus dem Code ein.
Jeder Befehl endet mit einem /.
Die ersten drei Zeichen sind der Name des Teams.
Das zwischen dem Namen und / - Parametern.
Schalten wir die Motoren mit dem Befehl „EMS /“ (Enable MotorS) ein.
Dann zeigen wir die Geschwindigkeit 60 von Motor 1 mit dem Befehl „SS160 /“ (Geschwindigkeit einstellen) an, wobei 60 die Geschwindigkeit ist.
Schalten Sie schließlich den ersten Motor mit dem Befehl „MV1100 /“ (MoVe) ein, wobei 100 die Anzahl der Umdrehungen ist.
Alles arbeitet. Hurra.
Das gleiche gilt für den Rest der Motoren.
Nun, wo bekommt man die Bibliothek?
Die Bibliothek kann heruntergeladen werden, indem Sie dem Ersteller über den Link danken und den tatsächlichen Preis angeben:
Holen Sie sich NemaStepperDanke fürs Lesen, ich hoffe mein Artikel hat dir geholfen.
Als ich nach einer Lösung für mein Problem suchte, stellte sich heraus, dass dies die einzig geeignete Bibliothek war.