- Koračni motor
- Vrtenje koračnega motorja z ARM7-LPC2148
- Potrebne komponente
- Koračni motor (28BYJ-48)
- Voznik koračnega motorja ULN2003
- Shema vezja
- Programiranje ARM7-LPC2148 za koračni motor
V današnjem svetu avtomatizacije sta koračni motor in servo motor dva najpogosteje uporabljena motorja v vgrajenih sistemih. Oba se uporabljata v različnih avtomatiziranih strojih, kot so robotske roke, CNC stroji, kamere itd. V tej vadnici bomo videli, kako povezati koračni motor z ARM7-LPC2148 in kako nadzirati njegovo hitrost. Če ste nov v ARM7, najprej začnite z učenjem o ARM7-LPC2148 in njegovih programskih orodjih.
Koračni motor
Koračni motor je brezkrtačni enosmerni motor, ki ga je mogoče vrteti v majhnih kotih, ti koti se imenujejo koraki. Koračni motor lahko vrtimo korak za korakom tako, da na njegove nožice oddajamo digitalne impulze. Koračni motorji so poceni in imajo robustno zasnovo. Hitrost motorja lahko nadzirate s spreminjanjem frekvence digitalnih impulzov.
Na voljo sta dve vrsti koračnih motorjev glede na vrsto navitja statorja: UNIPOLAR in BIPOLAR. Tu uporabljamo koračni motor UNIPOLAR, ki je najpogosteje uporabljen koračni motor . Za vrtenje koračnega motorja moramo zaporedoma napajati tuljave koračnega motorja. Glede na rotacijsko delovanje so razvrščeni v dva načina:
- Način polnega koraka: (zaporedje v 4 korakih)
- Enofazno pri korakih (STOPANJE VALEN)
- Dvofazni korak
- Način v pol koraka (zaporedje v 8 korakih)
Če želite izvedeti več o koračnem motorju in njegovem delovanju, sledite povezavi.
Vrtenje koračnega motorja z ARM7-LPC2148
Tu bomo uporabili FULL STEP: ONE PHASE ON ali WAVE STEPPING način za zasuk koračnega motorja z ARM7-LPC2148
Pri tej metodi bomo naenkrat napajali samo eno tuljavo (en zatič LPC2148). To pomeni, da je prva tuljava A za kratek čas pod napetostjo, gred bo spremenila svoj položaj, nato pa bo tuljava B istočasno pod napetostjo, gred pa bo spet spremenila svoj položaj. Tako kot tuljava C in nato tuljava D sta pod napetostjo, da se gred premakne naprej. Zaradi tega se gred koračnega motorja vrti postopoma z napajanjem ene tuljave naenkrat.
Po tej metodi gred korak za korakom zasučemo tako, da zaporedno napajamo tuljavo. To se imenuje štirje koraki, saj traja štiri korake.
Koračni motor lahko zasukate z uporabo metode HALF STEP (metoda 8 zaporedja) v skladu s spodaj navedenimi vrednostmi.
Korak |
Tuljava A |
Tuljava B |
Tuljava C |
Tuljava 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 |
Potrebne komponente
Strojna oprema:
- ARM7-LPC2148
- ULN2003 IC voznik motorja
- LED - 4
- KRMILNI MOTOR (28BYJ-48)
- ZNAMENITEV
- POVEZOVALNE ŽICE
Programska oprema:
- Keil uVision5
- Flasic Magic Tool
Koračni motor (28BYJ-48)
Koračni motor 28BYJ-48 je že prikazan na zgornji sliki. Je unipolarni koračni motor, ki potrebuje napajanje 5V. Motor ima enojno razporeditev s 4 tuljavami in vsaka tuljava je ocenjena na + 5V, zato jo je sorazmerno enostavno krmiliti z mikrokrmilniki, kot so Arduino, Raspberry Pi, STM32, ARM itd.
Toda za pogon potrebujemo IC za motorni pogon, kot je ULN2003, ker koračni motorji porabijo velik tok in lahko poškodujejo mikrokrmilnike.
Specifikacije 28BYJ-48 so navedene v spodnjem obrazcu:
Preverite tudi povezavo s koračnim motorjem z drugimi mikrokrmilniki:
- Povezava koračnega motorja z Arduino Uno
- Nadzor koračnega motorja z Raspberry Pi
- Povezava koračnega motorja z mikrokrmilnikom 8051
- Povezava koračnega motorja z mikrokrmilnikom PIC
- Povezava koračnega motorja z MSP430G2
Koračni motor je mogoče upravljati tudi brez mikrokrmilnika, glejte to vezje gonilnika koračnega motorja.
Voznik koračnega motorja ULN2003
Večina koračnih motorjev bo delovala le s pomočjo gonilniškega modula. To je zato, ker krmilni modul (v našem primeru LPC2148) ne bo mogel zagotoviti dovolj toka iz svojih I / O zatičev za delovanje motorja. Kot gonilnik koračnega motorja bomo uporabili zunanji modul, kot je ULN2003.
V tem projektu bomo uporabili IC IC voznika motorja ULN2003. Pin-diagram IC je podan spodaj:
Zatiči (IN1 do IN7) so vhodni zatiči za priključitev izhoda mikrokrmilnika, OUT1 do OUT7 pa ustrezni izhodni zatiči za priključitev vhodnih koračnih motorjev. COM dobi pozitivno napetost vira, potrebno za izhodne naprave in za zunanji vhodni vir energije.
Shema vezja
Shema vezja za povezovanje koračnega motorja z ARM-7 LPC2148 je podana spodaj
ARM7-LPC2148 z ULN2003 IC gonilnikom motorja
GPIO zatiči LPC2148 (P0.7 do P0.10) se štejejo za izhodne zatiče, ki so povezani z vhodnimi zatiči (IN1-IN4) IC ULN2003.
LPC2148 Zatiči |
PINI ULN2003 IC |
P0.7 |
IN1 |
P0.8 |
IN2 |
P0.9 |
IN3 |
Str.10 |
IN4 |
5V |
COM |
GND |
GND |
Povezave ULN2003 IC s koračnim motorjem (28BYJ-48)
Izhodni zatiči (OUT1-OUT4) ULN2003 IC so povezani z zatiči koračnih motorjev (modri, roza, rumeni in oranžni).
ULN2003 IC PINS |
PINI KORAKEGA MOTORJA |
IZHOD1 |
MODRA |
IZHOD2 |
ROZA |
IZHOD3 |
RUMENA |
IZHOD4 |
ORANŽNA |
COM |
RDEČA (+ 5V) |
LED z IN1 do IN4 ULN2003
Štirje anodni zatiči LED (LED1, LED2, LED4, LED 4) so povezani z zatiči IN1, IN2, IN3 in IN4 ULN2003, katoda LED pa je priključena na GND, ki označuje impulze iz LPC2148. Opazimo lahko vzorec danih impulzov. Vzorec je prikazan v predstavitvenem videu, ki je priložen na koncu.
Programiranje ARM7-LPC2148 za koračni motor
Za programiranje ARM7-LPC2148 potrebujemo orodje keil uVision & Flash Magic. Za programiranje ARM7 Stick preko mikro USB vrat uporabljamo kabel USB. Kodo napišemo s pomočjo Keila in ustvarimo šestnajstiško datoteko, nato pa datoteko HEX z Flash Magic utripnemo na ARM7. Če želite izvedeti več o namestitvi keil uVision in Flash Magic ter kako jih uporabljati, sledite povezavi Uvod v mikrokrmilnik ARM7 LPC2148 in ga programirajte s pomočjo Keil uVision.
Popolna koda za upravljanje koračnega motorja z ARM 7 je podana na koncu te vadnice, tukaj vam razlagamo nekaj delov.
1. Za uporabo metode FULL STEP-ONE PHASE ON moramo vključiti spodnji ukaz. V programu uporabljamo naslednjo vrstico
nepodpisani znak v smeri urnega kazalca = {0x1,0x2,0x4,0x8}; // ukazi za vrtenje v smeri urnega kazalca unsigned char v nasprotni smeri urnega kazalca = {0x8,0x4,0x2,0x1}; // Ukazi za vrtenje v levo
2. Naslednje vrstice se uporabljajo za inicializiranje zatičev PORT0 kot izhoda in njihovo nastavitev na LOW
PINSEL0 = 0x00000000; // Nastavitev PORT0 nožic IO0DIR - = 0x00000780; // Nastavitev zatičev P0.7, P0.8, P0.9, P0.10 kot IZHOD IO0CLR = 0x00000780; // Nastavitev P0.7, P0.8, P0.9, P0.10 nožic IZHOD kot LOW
3. Nastavite priključke PORT (P0.7 do P0.10) HIGH v skladu z ukazi v smeri urnega kazalca, tako da to uporabite za zanko z zamikom
za (int j = 0; j
Enako kot Anti-clock Wise
za (int z = 0; z
4. Spremenite čas zakasnitve, da spremenite hitrost vrtenja koračnega motorja
zamuda (0x10000); // Spremenimo to vrednost, da spremenimo hitrost vrtenja (0x10000) -Polna hitrost (0x50000) -Počasi (0x90000) -Počasi kot prejšnja. S povečanjem zakasnitve zmanjšamo hitrost vrtenja.
5. Število korakov za eno popolno rotacijo lahko spremenite s spodnjo kodo
int no_of_steps = 550; // Spremenimo to vrednost za potrebno število korakov vrtenja (550 daje eno popolno rotacijo)
Za svoj koračni motor sem dobil 550 stopnic za popolno vrtenje in 225 za polovično vrtenje. Torej ga spremenite glede na vaše zahteve.
6. Ta funkcija se uporablja za ustvarjanje časa zakasnitve.
void delay (unsigned int value) // Funkcija za generiranje zamude { unsigned int z; za (z = 0; z
Celotna koda z demonstracijskim videom je navedena spodaj.