- Schrittmotor
- Drehen eines Schrittmotors MIT ARM7-LPC2148
- Erforderliche Komponenten
- Schrittmotor (28BYJ-48)
- ULN2003 Schrittmotortreiber
- Schaltplan
- Programmierung von ARM7-LPC2148 für Schrittmotor
In der heutigen Automatisierungswelt sind Schrittmotor und Servomotor zwei am häufigsten verwendete Motoren in eingebetteten Systemen. Beide werden in verschiedenen Automatisierungsmaschinen wie Roboterarmen, CNC-Maschinen, Kameras usw. verwendet. In diesem Tutorial erfahren Sie, wie Sie den Schrittmotor mit ARM7-LPC2148 verbinden und die Geschwindigkeit steuern. Wenn Sie mit ARM7 noch nicht vertraut sind, lernen Sie zunächst ARM7-LPC2148 und seine Programmiertools kennen.
Schrittmotor
Der Schrittmotor ist ein bürstenloser Gleichstrommotor, der in kleinen Winkeln gedreht werden kann. Diese Winkel werden als Stufen bezeichnet. Wir können den Schrittmotor Schritt für Schritt drehen, indem wir seinen Pins digitale Impulse geben. Schrittmotoren sind kostengünstig und robust. Die Drehzahl des Motors kann durch Ändern der Frequenz digitaler Impulse gesteuert werden.
Je nach Art der Statorwicklung stehen zwei Arten von Schrittmotoren zur Verfügung: UNIPOLAR und BIPOLAR. Hier verwenden wir den UNIPOLAR-Schrittmotor, der am häufigsten verwendete Schrittmotor . Um den Schrittmotor zu drehen, müssen die Spulen des Schrittmotors nacheinander erregt werden. Basierend auf dem Rotationsvorgang werden sie in zwei Modi eingeteilt:
- Vollschrittmodus: (4-Schritt-Sequenz)
- Einphasiges Treten (WAVE STEPPING)
- Zwei-Phasen-Schritt
- Halbschrittmodus (8-Schritt-Sequenz)
Um mehr über den Schrittmotor und seine Funktionsweise zu erfahren, folgen Sie dem Link.
Drehen eines Schrittmotors MIT ARM7-LPC2148
Hier verwenden wir den Modus FULL STEP: ONE PHASE ON oder WAVE STEPPING, um den Schrittmotor mit ARM7-LPC2148 zu drehen
Bei dieser Methode wird jeweils nur eine Spule (ein Pin von LPC2148) mit Strom versorgt. Das heißt, wenn die erste Spule A für eine kurze Zeit erregt wird, ändert die Welle ihre Position und dann wird die Spule B für dieselbe Zeit erregt und die Welle ändert erneut ihre Position. Ebenso wird die Spule C und dann die Spule D erregt, um die Welle weiter zu bewegen. Dadurch dreht sich die Welle des Schrittmotors Schritt für Schritt, indem jeweils eine Spule erregt wird.
Durch diese Methode drehen wir die Welle Schritt für Schritt, indem wir die Spule nacheinander erregen. Dies wird als vier Schrittsequenzen bezeichnet, da es vier Schritte dauert.
Sie können den Schrittmotor mit der HALF STEP-Methode (8-Sequenz-Methode) gemäß den unten angegebenen Werten drehen.
Schritt |
Spule A. |
Spule B. |
Spule C. |
Spule D. |
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 |
Erforderliche Komponenten
Hardware:
- ARM7-LPC2148
- ULN2003 Motortreiber-IC
- LED - 4
- SCHRITTMOTOR (28BYJ-48)
- BROT
- ANSCHLUSSKABEL
Software:
- Keil uVision5
- Flasic Magic Tool
Schrittmotor (28BYJ-48)
Der Schrittmotor 28BYJ-48 ist bereits im obigen Bild dargestellt. Es ist ein unipolarer Schrittmotor, der eine 5-V-Versorgung benötigt. Der Motor hat eine unipolare Anordnung mit 4 Spulen und jede Spule ist für +5 V ausgelegt, daher ist die Steuerung mit Mikrocontrollern wie Arduino, Raspberry Pi, STM32, ARM usw. relativ einfach.
Wir benötigen jedoch einen Motor Drive IC wie ULN2003, um ihn anzutreiben, da Schrittmotoren hohen Strom verbrauchen und Mikrocontroller beschädigen können.
Die technischen Daten des 28BYJ-48 sind im folgenden Datenblatt aufgeführt:
Überprüfen Sie auch die Schnittstelle zum Schrittmotor mit anderen Mikrocontrollern:
- Schrittmotor mit Arduino Uno verbinden
- Schrittmotorsteuerung mit Raspberry Pi
- Schrittmotor-Schnittstelle mit 8051-Mikrocontroller
- Schrittmotor mit PIC-Mikrocontroller verbinden
- Schrittmotor mit MSP430G2 verbinden
Der Schrittmotor kann auch ohne Mikrocontroller gesteuert werden, siehe diese Schrittmotortreiberschaltung.
ULN2003 Schrittmotortreiber
Die meisten Schrittmotoren arbeiten nur mit Hilfe eines Treibermoduls. Dies liegt daran, dass das Controller-Modul (in unserem Fall LPC2148) nicht genügend Strom von seinen E / A-Pins liefern kann, damit der Motor funktioniert. Wir werden also ein externes Modul wie das ULN2003- Modul als Schrittmotortreiber verwenden.
In diesem Projekt werden wir den Motortreiber-IC ULN2003 verwenden. Das Pin-Diagramm des IC ist unten angegeben:
Die Pins (IN1 bis IN7) sind Eingangspins zum Anschließen des Mikrocontrollerausgangs und OUT1 bis OUT7 sind entsprechende Ausgangspins zum Verbinden des Schrittmotoreingangs. COM erhält eine positive Quellenspannung, die für Ausgabegeräte und für externe Stromversorgungsquellen erforderlich ist.
Schaltplan
Das Schaltbild für die Verbindung des Schrittmotors mit dem ARM-7 LPC2148 ist unten angegeben
ARM7-LPC2148 mit Motortreiber-IC ULN2003
GPIO-Pins von LPC2148 (P0.7 bis P0.10) werden als Ausgangspins betrachtet, die mit Eingangspins (IN1-IN4) des ULN2003-IC verbunden sind.
LPC2148 Pins |
PINS VON ULN2003 IC |
P0.7 |
IN 1 |
P0.8 |
IN 2 |
P0.9 |
IN3 |
S.10 |
IN4 |
5V |
COM |
GND |
GND |
Anschlüsse des IC ULN2003 mit Schrittmotor (28BYJ-48)
Die Ausgangspins (OUT1-OUT4) des ULN2003 IC sind mit den Pins der Schrittmotoren (Blau, Pink, Gelb und Orange) verbunden.
ULN2003 IC PINS |
PINS DES SCHRITTMOTORS |
OUT1 |
BLAU |
OUT2 |
ROSA |
OUT3 |
GELB |
OUT4 |
ORANGE |
COM |
ROT (+ 5V) |
LEDs mit IN1 bis IN4 von ULN2003
Vier Anodenstifte der LED (LED1, LED2, LED4, LED4) sind mit den Stiften IN1, IN2, IN3 und IN4 von ULN2003 verbunden, und die Kathode der LEDs ist mit GND verbunden, um die Impulse vom LPC2148 anzuzeigen. Wir können das Muster der bereitgestellten Impulse notieren. Das Muster wird im Demonstrationsvideo am Ende gezeigt.
Programmierung von ARM7-LPC2148 für Schrittmotor
Um ARM7-LPC2148 zu programmieren, benötigen wir das keil uVision & Flash Magic Tool. Wir verwenden ein USB-Kabel, um den ARM7 Stick über einen Micro-USB-Anschluss zu programmieren. Wir schreiben Code mit Keil und erstellen eine Hex-Datei. Anschließend wird die HEX-Datei mit Flash Magic auf den ARM7-Stick geflasht. Um mehr über die Installation von keil uVision und Flash Magic und deren Verwendung zu erfahren, folgen Sie dem Link Erste Schritte mit dem ARM7 LPC2148-Mikrocontroller und programmieren Sie ihn mit Keil uVision.
Der vollständige Code zur Steuerung des Schrittmotors mit ARM 7 finden Sie am Ende dieses Tutorials. Hier werden einige Teile davon erläutert.
1. Um die Methode FULL STEP-ONE PHASE ON verwenden zu können, müssen Sie den folgenden Befehl einfügen. Wir verwenden also die folgende Zeile im Programm
vorzeichenloses Zeichen im Uhrzeigersinn = {0x1,0x2,0x4,0x8}; // Befehle für die Drehung im Uhrzeigersinn vorzeichenloses Zeichen gegen den Uhrzeigersinn = {0x8,0x4,0x2,0x1}; // Befehle für die Drehung gegen den Uhrzeigersinn
2. Die folgenden Zeilen werden verwendet, um die PORT0-Pins als Ausgang zu initialisieren und auf LOW zu setzen
PINSEL0 = 0x00000000; // PORT0 Pins setzen IO0DIR - = 0x00000780; // Setzen der Pins P0.7, P0.8, P0.9, P0.10 als OUTPUT IO0CLR = 0x00000780; // P0.7, P0.8, P0.9, P0.10 Pins OUTPUT auf LOW setzen
3. Setzen Sie die PORT-Pins (P0.7 bis P0.10) gemäß den Befehlen im Uhrzeigersinn auf HIGH, indem Sie diese for- Schleife mit Verzögerung verwenden
für (int j = 0; j
Gleiches gilt für Anti-Clock Wise
für (int z = 0; z
4. Ändern Sie die Verzögerungszeit, um die Drehzahl des Schrittmotors zu ändern
Verzögerung (0x10000); // Ändere diesen Wert, um die Drehzahl zu ändern (0x10000) -Full-Geschwindigkeit (0x50000) -Get Slow (0x90000) -Get langsam als zuvor. Durch Erhöhen der Verzögerung verringern wir die Drehzahl.
5. Die Anzahl der Schritte für eine vollständige Umdrehung kann mit dem folgenden Code geändert werden
int no_of_steps = 550; // Ändere diesen Wert für die erforderliche Anzahl von Umdrehungen (550 ergibt eine vollständige Umdrehung)
Für meinen Schrittmotor habe ich 550 Schritte für die vollständige Drehung und 225 für die halbe Drehung erhalten. Ändern Sie es also entsprechend Ihren Anforderungen.
6. Mit dieser Funktion wird eine Verzögerungszeit erstellt.
void delay (vorzeichenloser int-Wert) // Funktion zum Erzeugen einer Verzögerung { unsigned int z; für (z = 0; z
Der vollständige Code mit Demonstrationsvideo ist unten angegeben.