- Betriebsarten im Schrittmotor
- Erstellen einer grafischen MATLAB-Benutzeroberfläche zur Steuerung des Schrittmotors
- MATLAB-Code zur Steuerung des Schrittmotors mit Arduino
- Erforderliches Material
- Schaltplan
- Schrittmotor mit MATLAB steuern
Schrittmotoren sind bürstenlose Gleichstrommotoren, die sich in diskreten Schritten drehen und die beste Wahl für viele Präzisionsanwendungen zur Bewegungssteuerung sind. Schrittmotoren eignen sich auch gut zum Positionieren, zur Drehzahlregelung und für Anwendungen, die ein hohes Drehmoment bei niedriger Drehzahl erfordern.
In früheren Tutorials von MATLAB haben wir erklärt, wie MATLAB zur Steuerung von Gleichstrommotoren, Servomotoren und Haushaltsgeräten verwendet wird. Heute lernen wir, wie man einen Schrittmotor mit MATALB und Arduino steuert. Wenn Sie MATLAB noch nicht kennen, wird empfohlen, mit MATLAB mit einem einfachen LED-Blinkprogramm zu beginnen.
Betriebsarten im Schrittmotor
Bevor Sie mit der Codierung für Schrittmotoren beginnen, sollten Sie das Arbeits- oder Drehkonzept eines Schrittmotors verstehen. Da der Stator des Schrittmodus aus verschiedenen Spulenpaaren aufgebaut ist, kann jedes Spulenpaar auf viele verschiedene Arten angeregt werden, wodurch die Moden in vielen verschiedenen Moden angesteuert werden können. Das Folgende sind die allgemeinen Klassifikationen
Vollschrittmodus
Im Vollschritt-Anregungsmodus können wir eine volle 360 ° -Drehung mit einer minimalen Anzahl von Windungen (Schritten) erreichen. Dies führt jedoch zu einer geringeren Trägheit und auch die Rotation wird nicht glatt sein. Bei der Vollschrittanregung gibt es zwei weitere Klassifizierungen: einen Phase-On-Wellenschritt und zwei Phase-On-Modi.
1. Ein Phase-On-Stepping oder Wave-Stepping: In diesem Modus wird jeweils nur ein Anschluss (Phase) des Motors mit Strom versorgt. Dies hat weniger Schritte und kann daher eine volle 360 ° -Drehung erreichen. Da die Anzahl der Schritte geringer ist, ist auch der von diesem Verfahren verbrauchte Strom sehr gering. Die folgende Tabelle zeigt die Wellenschrittfolge für einen 4-Phasen-Schrittmotor
Schritt | Phase 1 (blau) | Phase 2 (Pink) | Phase 3 (gelb) | Phase 4 (Orange) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Zwei Phasen-Ein-Schritte: Wie der Name bei dieser Methode angibt, sind zwei Phasen eine. Es hat die gleiche Anzahl von Schritten wie das Wave-Stepping, aber da zwei Spulen gleichzeitig erregt werden, kann es im Vergleich zum vorherigen Verfahren ein besseres Drehmoment und eine bessere Drehzahl liefern. Ein Nachteil ist jedoch, dass diese Methode auch mehr Strom verbraucht.
Schritt |
Phase 1 (blau) |
Phase 2 (Pink) |
Phase 3 (gelb) |
Phase 4 (Orange) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Halbschrittmodus
Der Halbschrittmodus ist die Kombination aus einem Ein-Phasen- und einem Zwei-Phasen-Ein-Modus. Diese Kombination hilft uns, den oben genannten Nachteil der beiden Modi zu überwinden.
Wie Sie vielleicht erraten haben, da wir beide Methoden kombinieren, müssen wir in dieser Methode 8 Schritte ausführen, um eine vollständige Rotation zu erhalten. Die unten gezeigte Schaltsequenz für einen 4-Phasen-Schrittmotor
Schritt |
Phase 1 (blau) |
Phase 2 (Pink) |
Phase 3 (gelb) |
Phase 4 (Orange) |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Daher haben Sie die Wahl, Ihren Schrittmotor in einem beliebigen Modus zu programmieren, aber ich bevorzuge den Zwei-Phasen-Schritt-Vollschritt-Modus. Da dieses Verfahren eine schnellere Geschwindigkeit liefert als das Einphasenverfahren und im Vergleich zum Halbmodus der Codierungsteil aufgrund der geringeren Anzahl von Schritten im Zweiphasenverfahren geringer ist.
Erfahren Sie hier mehr über Schrittmotoren und ihre Modi
Erstellen einer grafischen MATLAB-Benutzeroberfläche zur Steuerung des Schrittmotors
Dann müssen wir eine grafische Benutzeroberfläche (GUI) erstellen, um den Schrittmotor zu steuern. Geben Sie zum Starten der GUI den folgenden Befehl in das Befehlsfenster ein
leiten
Ein Popup-Fenster wird geöffnet. Wählen Sie dann eine neue leere Benutzeroberfläche aus (siehe Abbildung unten).
Nun wählt zwei Umschaltflächen zum Drehen des Schrittmotors im Uhrzeigersinn und gegen den Uhrzeigersinn, wie unten gezeigt,
Um die Größe der Schaltfläche zu ändern oder ihre Form zu ändern, klicken Sie einfach darauf und Sie können die Ecken der Schaltfläche ziehen. Durch Doppelklicken auf die Umschaltfläche können Sie die Farbe, die Zeichenfolge und das Tag dieser bestimmten Schaltfläche ändern. Wir haben zwei Schaltflächen angepasst, wie im folgenden Bild gezeigt.
Sie können die Schaltflächen nach Ihren Wünschen anpassen. Wenn Sie dies speichern, wird im Editorfenster von MATLAB ein Code generiert. Um Ihr Arduino für die Ausführung von Aufgaben im Zusammenhang mit Ihrem Projekt zu codieren, müssen Sie diesen generierten Code immer bearbeiten. Also haben wir unten den MATLAB-Code bearbeitet. Weitere Informationen zum Befehlsfenster, zum Editorfenster usw. finden Sie im Tutorial Erste Schritte mit MATLAB.
MATLAB-Code zur Steuerung des Schrittmotors mit Arduino
Der vollständige MATLAB-Code zur Steuerung des Schrittmotors finden Sie am Ende dieses Projekts. Außerdem stellen wir hier die GUI-Datei (.fig) und die Codedatei (.m) zum Download bereit (klicken Sie mit der rechten Maustaste auf den Link und wählen Sie dann 'Link speichern unter…')), mit der Sie die Schaltflächen gemäß Ihren Anforderungen anpassen können. Im Folgenden finden Sie einige Verbesserungen, die wir vorgenommen haben, um den Schrittmotor mit zwei Umschalttasten im Uhrzeigersinn und gegen den Uhrzeigersinn zu drehen.
Kopieren Sie den folgenden Code und fügen Sie ihn in Zeile Nr. 74, um sicherzustellen, dass der Arduino jedes Mal, wenn Sie die m-Datei ausführen, mit MATLAB spricht.
alles löschen; global a; a = Arduino ();
Wenn Sie nach unten scrollen, werden Sie feststellen, dass für beide Schaltflächen in der GUI zwei Funktionen erstellt wurden. Schreiben Sie nun den Code in beide Funktionen entsprechend der Aufgabe, die Sie beim Klicken ausführen möchten.
Kopieren Sie in der Funktion der Taste im Uhrzeigersinn den folgenden Code kurz vor dem Ende der Funktion und fügen Sie ihn ein, um den Motor im Uhrzeigersinn zu drehen. Um den Schrittmotor kontinuierlich im Uhrzeigersinn zu drehen, verwenden wir die while-Schleife , um die beiden Phase-On-Step-Full-Mode-Schritte im Uhrzeigersinn zu wiederholen.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); Pause (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); Pause (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); Pause (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); Pause (0,0002); Ende
Fügen Sie nun in der Funktion der Taste gegen den Uhrzeigersinn den folgenden Code an der Stelle der Funktion ein, um den Motor gegen den Uhrzeigersinn zu drehen. Um den Schrittmotor kontinuierlich gegen den Uhrzeigersinn zu drehen, verwenden wir die while-Schleife , um die beiden Vollmodusschritte beim Eintreten gegen den Uhrzeigersinn zu wiederholen.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); Pause (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); Pause (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); Pause (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); Pause (0,0002); Ende
Erforderliches Material
- MATLAB installierter Laptop (Voreinstellung: R2016a oder höhere Versionen)
- Arduino UNO
- Schrittmotor (28BYJ-48, 5VDC)
- ULN2003 - Schrittmotortreiber
Schaltplan
Schrittmotor mit MATLAB steuern
Nachdem Sie die Hardware gemäß Schaltplan eingerichtet haben, klicken Sie einfach auf die Schaltfläche Ausführen, um den bearbeiteten Code in der.m-Datei auszuführen
Es kann einige Sekunden dauern, bis MATLAB reagiert. Klicken Sie nicht auf eine der GUI-Schaltflächen, bis MATLAB eine Besetztmeldung in der unteren linken Ecke anzeigt, wie unten gezeigt.
Wenn alles fertig ist, klicken Sie auf die Schaltfläche im oder gegen den Uhrzeigersinn, um den Motor zu drehen. Während wir die Umschalttaste verwenden, bewegt sich der Schrittmotor kontinuierlich im Uhrzeigersinn, bis wir die Taste erneut drücken. In ähnlicher Weise beginnt der Motor durch Drücken der Umschalttaste gegen den Uhrzeigersinn, sich gegen den Uhrzeigersinn zu drehen, bis wir die Taste erneut drücken.