- Stepper Motor
- Drejning af en trinmotor MED ARM7-LPC2148
- Komponenter, der kræves
- Trinmotor (28BYJ-48)
- ULN2003 trinmotordriver
- Kredsløbsdiagram
- Programmering ARM7-LPC2148 til trinmotor
I dagens automatiseringsverden er trinmotor og servomotor to mest almindeligt anvendte motorer i indlejrede systemer. Begge bruges i forskellige automatiseringsmaskiner som robotarme, CNC-maskiner, kameraer osv. I denne vejledning vil vi se, hvordan man interagerer trinmotor med ARM7-LPC2148, og hvordan man styrer hastigheden på den. Hvis du er ny på ARM7, skal du starte med at lære om ARM7-LPC2148 og dets programmeringsværktøjer.
Stepper Motor
Trinmotor er børsteløs DC-motor, som kan drejes i små vinkler, disse vinkler kaldes trin. Vi kan rotere trinmotor trin for trin ved at give digitale impulser til dens ben. Trinmotorer er billige og har robust design. Motorens hastighed kan styres ved at ændre frekvensen af digitale impulser.
Der findes to typer trinmotorer baseret på typen af statorvikling: UNIPOLAR og BIPOLAR. Her bruger vi UNIPOLAR stepmotor, som er den mest almindelige stepmotor . For at rotere stepmotoren er vi nødt til at aktivere stepmotorens spoler i en sekvens. Baseret på rotationsoperationen er de klassificeret i to tilstande:
- Fuld trin-tilstand: (4-trins sekvens)
- En-fase på trin (WAVE TRINNING)
- To-fase på trin
- Half Step Mode (8-trins sekvens)
Hvis du vil vide mere om trinmotor og dens funktion, skal du følge linket.
Drejning af en trinmotor MED ARM7-LPC2148
Her vil vi bruge FULDT TRIN: ÉN FASE TIL eller Bølgetrin til at rotere trinmotoren med ARM7-LPC2148
I denne metode vil vi kun aktivere en spole (en stift af LPC2148) ad gangen. Det vil sige, at hvis den første spole A får strøm i en lille periode, vil akslen ændre sin position, og derefter spole B får strøm til samme tid, og akslen vil igen ændre sin position. Samme som dette, er spole C og derefter spole D aktiveret for at bevæge akslen yderligere. Dette får trinmotorens aksel til at rotere trin for trin ved at aktivere en spole ad gangen.
Ved denne metode roterer vi akslen trin for trin ved at aktivere spolen i en sekvens. Dette kaldes fire trin sekvenser, da det tager fire trin.
Du kan dreje trinmotor ved hjælp af HALF STEP-metoden (8-sekvensmetode) i henhold til nedenstående værdier.
Trin |
Spole A |
Spole B |
Spole C |
Spole 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 |
Komponenter, der kræves
Hardware:
- ARM7-LPC2148
- ULN2003 Motor Driver IC
- LED - 4
- STEPPER MOTOR (28BYJ-48)
- BREADBOARD
- TILSLUTNING AF KABLER
Software:
- Keil uVision5
- Flasic Magic Tool
Trinmotor (28BYJ-48)
28BYJ-48 trinmotor er allerede vist på billedet ovenfor. Det er en unipolar trinmotor, der kræver 5V forsyning. Motoren har et 4-spols unipolært arrangement, og hver spole er klassificeret til + 5V, og det er derfor relativt let at kontrollere med alle mikrocontrollere som Arduino, Raspberry Pi, STM32, ARM osv.
Men vi har brug for et motordrev IC som ULN2003 til at drive det, fordi trinmotorer bruger høj strøm, og det kan beskadige mikrokontroller.
Specifikationerne for 28BYJ-48 findes i databladet nedenfor:
Kontroller også grænsefladen til trinmotor med andre mikrocontrollere:
- Interfacing trinmotor med Arduino Uno
- Stepper Motor Control med Raspberry Pi
- Stepper Motor Interfacing med 8051 Microcontroller
- Interfacing trinmotor med PIC Microcontroller
- Interfacing trinmotor med MSP430G2
Trinmotor kan også styres uden mikrokontroller, se dette trinmotorkørerkredsløb.
ULN2003 trinmotordriver
De fleste trinmotorer fungerer kun ved hjælp af et drivermodul. Dette skyldes, at kontrolmodulet (i vores tilfælde LPC2148) ikke er i stand til at levere tilstrækkelig strøm fra sine I / O-ben til, at motoren kan fungere. Så vi bruger et eksternt modul som ULN2003- modul som trinmotordriver.
I dette projekt vil vi bruge ULN2003 motor driver IC. Pin diagram over IC er angivet nedenfor:
Stifter (IN1 til IN7) er indgangsstifter til tilslutning af mikrocontrollerudgang, og OUT1 til OUT7 er tilsvarende udgangsstifter til tilslutning af trinmotors indgang. COM gives Positiv kildespænding krævet til outputenheder og til ekstern strømindgangskilde.
Kredsløbsdiagram
Kredsløbsdiagram til sammenkobling af trinmotor med ARM-7 LPC2148 er angivet nedenfor
ARM7-LPC2148 med ULN2003 Motor Driver IC
GPIO-stifter fra LPC2148 (P0.7 til P0.10) betragtes som udgangsstifter, der er forbundet med indgangsstifter (IN1-IN4) på ULN2003 IC.
LPC2148 Pins |
PIN-KODER FOR ULN2003 IC |
P0.7 |
IN1 |
P0.8 |
IN2 |
P0.9 |
IN3 |
S.10 |
IN4 |
5V |
COM |
GND |
GND |
Forbindelser af ULN2003 IC med trinmotor (28BYJ-48)
Udgangsstifterne (OUT1-OUT4) på ULN2003 IC er forbundet til trinmotorens ben (blå, lyserød, gul og orange).
ULN2003 IC PIN-KODER |
STIFTMOTORS STIFT |
UD1 |
BLÅ |
OUT2 |
LYSERØD |
UD3 |
GUL |
OUT4 |
ORANGE |
COM |
RØD (+ 5V) |
LED'er med IN1 til IN4 fra ULN2003
Fire LED'er (LED1, LED2, LED4, LED 4) anodestifter er forbundet med henholdsvis stifterne IN1, IN2, IN3 og IN4 på ULN2003, og lysdiodernes katode er forbundet til GND, som skal indikere impulser fra LPC2148. Vi kan notere mønstret for de leverede impulser. Mønster vises i demonstrationsvideoen, der er vedhæftet i slutningen.
Programmering ARM7-LPC2148 til trinmotor
For at programmere ARM7-LPC2148 har vi brug for keil uVision & Flash Magic værktøj. Vi bruger USB-kabel til at programmere ARM7 Stick via mikro-USB-port. Vi skriver kode ved hjælp af Keil og opretter en hex-fil, og derefter blinkes HEX-filen til ARM7-stick ved hjælp af Flash Magic. Hvis du vil vide mere om installation af keil uVision og Flash Magic, og hvordan du bruger dem, skal du følge linket Kom godt i gang med ARM7 LPC2148 Microcontroller og programmer det ved hjælp af Keil uVision.
Den komplette kode til styring af trinmotor med ARM 7 er givet i slutningen af denne vejledning, her forklarer vi få dele af det.
1. For at bruge FULL STEP-ONE PHASE ON- metoden skal vi medtage nedenstående kommando. Så vi bruger følgende linje i programmet
usigneret char med uret = {0x1,0x2,0x4,0x8}; // Kommandoer til rotation med uret usigneret tegn mod uret = {0x8,0x4,0x2,0x1}; // Kommandoer til rotation mod uret
2. Følgende linjer bruges til at initialisere PORT0-benene som output og indstille dem til LAV
PINSEL0 = 0x00000000; // Indstilling af PORT0-ben IO0DIR - = 0x00000780; // Indstilling af ben P0.7, P0.8, P0.9, P0.10 som OUTPUT IO0CLR = 0x00000780; // Indstilling af P0.7, P0.8, P0.9, P0.10 ben OUTPUT som LAV
3. Indstil PORT-benene (P0.7 til P0.10) HIGH i henhold til kommandoerne med uret ved at bruge dette til loop med forsinkelse
for (int j = 0; j
Samme for Anti-Clock Wise
for (int z = 0; z
4. Skift forsinkelsestid for at ændre trinmotorens rotationshastighed
forsinkelse (0x10000); // Skift denne værdi for at ændre rotationshastigheden (0x10000) -Fuld hastighed (0x50000) -Går langsom (0x90000) -Går langsom end tidligere. Så ved at øge forsinkelsen sænker vi rotationshastigheden.
5. Antal trin for en komplet rotation kan ændres med nedenstående kode
int no_of_steps = 550; // Skift denne værdi for det krævede antal trin rotation (550 giver en komplet rotation)
For min trinmotor fik jeg 550 trin til komplet rotation og 225 til halv rotation. Så skift det efter dine krav.
6. Denne funktion bruges til at skabe forsinkelsestid.
ugyldig forsinkelse (usigneret int-værdi) // Funktion til at generere forsinkelse { usigneret int z; for (z = 0; z
Komplet kode med demonstrationsvideo er angivet nedenfor.