- Žingsninis variklis
- Žingsninio variklio sukimas SU ARM7-LPC2148
- Būtini komponentai
- Žingsninis variklis (28BYJ-48)
- ULN2003 žingsninio variklio tvarkyklė
- Grandinės schema
- ARM7-LPC2148 programavimas žingsniniam varikliui
Šiandieniniame automatikos pasaulyje žingsniniai varikliai ir servovarikliai yra du dažniausiai naudojami įterptųjų sistemų varikliai. Abu jie naudojami įvairiose automatinėse mašinose, tokiose kaip robotų rankos, CNC staklės, fotoaparatai ir kt. Šioje pamokoje pamatysime, kaip sąveikauti „Stepper“ variklį su ARM7-LPC2148 ir kaip valdyti jo greitį. Jei dar nesinaudojote ARM7, pradėkite nuo mokymosi apie ARM7-LPC2148 ir jo programavimo įrankius.
Žingsninis variklis
Žingsninis variklis yra nuolatinės srovės variklis be šepetėlių, kurį galima pasukti mažais kampais. Šie kampai vadinami pakopomis. Mes galime žingsnis po žingsnio pasukti žingsninį variklį, suteikdami jo kaiščiams skaitmeninius impulsus. Žingsniniai varikliai yra nebrangūs ir tvirtos konstrukcijos. Variklio greitį galima reguliuoti keičiant skaitmeninių impulsų dažnį.
Pagal statoriaus apvijos tipą yra dviejų tipų žingsniniai varikliai: UNIPOLAR ir BIPOLAR. Čia mes naudojame UNIPOLAR žingsninį variklį, kuris yra dažniausiai naudojamas žingsninis variklis . Norėdami pasukti žingsninį variklį, turime įjungti pakopos variklio ritinius iš eilės. Pagal sukimosi režimą jie skirstomi į du režimus:
- „Full Step“ režimas: (4 žingsnių seka)
- Vienfazis žingsnis (WAVE STEPPING)
- Dviejų etapų žingsnis
- Pusės žingsnio režimas (8 žingsnių seka)
Norėdami sužinoti daugiau apie žingsninį variklį ir jo veikimą, spustelėkite nuorodą.
Žingsninio variklio sukimas SU ARM7-LPC2148
Čia mes naudosime PILNĄ ŽINGSNĮ: VIENO FASE ĮJUNGIMO arba BANGOS ŽINGSNIŲ režimą, kad suktume žingsninį variklį su ARM7-LPC2148
Šiuo metodu vienu metu įjungsime tik vieną ritę (vieną kaištį LPC2148). Tai yra, jei pirmoji ritė A įjungiama trumpam, velenas pakeis savo padėtį, o ritė B tą patį laiką bus įjungta, o velenas vėl pakeis savo padėtį. Tokia pati kaip ši, ritė C ir ritė D įjungiama, kad velenas judėtų toliau. Tai priverčia žingsninio variklio veleną sukti palaipsniui įjungiant vieną ritę vienu metu.
Šiuo metodu mes sukame veleną žingsnis po žingsnio įjungdami ritę iš eilės. Tai vadinama keturių žingsnių sekomis, nes reikia keturių žingsnių.
Jūs galite pasukti žingsninį variklį naudodami HALF STEP metodą (8 sekos metodas) pagal toliau pateiktas vertes.
Žingsnis |
A ritė |
B ritė |
C ritė |
D ritė |
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 |
Būtini komponentai
Techninė įranga:
- ARM7-LPC2148
- ULN2003 variklio vairuotojo IC
- LED - 4
- VARIKLIS (28BYJ-48)
- BANDOMOJI LENTA
- LAIDŲ JUNGIMAS
Programinė įranga:
- „Keil uVision“
- „Flasic Magic“ įrankis
Žingsninis variklis (28BYJ-48)
28BYJ-48 žingsninis variklis jau parodytas aukščiau esančiame paveikslėlyje. Tai yra „ Unipolar Stepper“ variklis, kuriam reikia 5 V maitinimo šaltinio. Variklis turi 4 ritių vienpolį išdėstymą, o kiekviena ritė įvertinta kaip + 5 V, todėl ją palyginti lengva valdyti bet kokiais mikrovaldikliais, tokiais kaip „Arduino“, „Raspberry Pi“, STM32, ARM ir kt.
Bet mums reikia variklio IC, tokio kaip ULN2003, kad juo važiuotume, nes pakopiniai varikliai sunaudoja didelę srovę ir tai gali pakenkti mikrovaldikliams.
28BYJ-48 specifikacijos pateikiamos toliau pateiktame duomenų lape:
Taip pat patikrinkite sąsają su žingsniniu varikliu su kitais mikrovaldikliais:
- „Stepper“ variklio sąsaja su „Arduino Uno“
- Žingsninio variklio valdymas su „Raspberry Pi“
- Žingsninio variklio sąsaja su 8051 mikrovaldikliu
- Sąveikaujantis žingsninis variklis su PIC mikrovaldikliu
- Sąveikaujantis žingsninis variklis su MSP430G2
Žingsninį variklį taip pat galima valdyti be jokio mikrovaldiklio, žiūrėkite šią „Stepper“ variklio tvarkyklę.
ULN2003 žingsninio variklio tvarkyklė
Dauguma žingsninių variklių veiks tik su vairuotojo modulio pagalba. Taip yra todėl, kad valdiklio modulis (mūsų atveju LPC2148) negalės tiekti pakankamai srovės iš jo įvesties / išvesties kaiščių, kad variklis galėtų veikti. Taigi kaip žingsninio variklio tvarkyklę naudosime išorinį modulį, pvz., ULN2003 modulį.
Šiame projekte naudosime ULN2003 variklio tvarkyklę IC. IC kontaktinė schema pateikta žemiau:
Kaiščiai (nuo IN1 iki IN7) yra įvesties kaiščiai, skirti prijungti mikrovaldiklio išvestį, o OUT1 - OUT7 yra atitinkami išėjimo kaiščiai, skirti prijungti žingsninių variklių įvestį. Pateikiama COM teigiama šaltinio įtampa, reikalinga išvesties įrenginiams ir išoriniam maitinimo šaltiniui.
Grandinės schema
Žemiau pateikiama žingsninio variklio ir ARM-7 LPC2148 sąsajos schema
ARM7-LPC2148 su ULN2003 variklio tvarkyklės IC
LPC2148 GPIO kaiščiai (nuo P0,7 iki P0,10) laikomi išvesties kaiščiais, sujungtais su ULN2003 IC įvesties kaiščiais (IN1-IN4).
LPC2148 kaiščiai |
ULN2003 IC PIN kodai |
P0.7 |
IN1 |
P0.8 |
IN2 |
P0.9 |
IN3 |
10 psl |
IN4 |
5V |
KOM |
BND |
BND |
ULN2003 IC su žingsniniu varikliu (28BYJ-48) jungtys
ULN2003 IC išvesties kaiščiai (OUT1-OUT4) yra prijungti prie žingsninių variklių kaiščių (mėlynos, rožinės, geltonos ir oranžinės).
ULN2003 IC PINS |
ŽIEDINIO VARIKLIO PINIAI |
OUT1 |
MĖLYNA |
OUT2 |
ROŽINIS |
OUT3 |
GELTONA |
OUT4 |
APELSINAS |
KOM |
RAUDONA (+ 5 V) |
Šviesos diodai su IN1– IN4 iš ULN2003
Keturi LED (LED1, LED2, LED4, LED 4) anodo kaiščiai yra sujungti su ULN2003 kaiščiais IN1, IN2, IN3 ir IN4, o šviesos diodų katodas yra prijungtas prie GND, kuris reiškia impulsus iš LPC2148. Galime atkreipti dėmesį į pateiktų impulsų modelį. Raštas parodytas demonstraciniame vaizdo įraše, pridėtame pabaigoje.
ARM7-LPC2148 programavimas žingsniniam varikliui
Norėdami programuoti ARM7-LPC2148, mums reikia „Keil uVision“ ir „Flash Magic“ įrankio. „ARM7 Stick“ programavimui per „micro USB“ prievadą naudojame USB kabelį. Mes rašome kodą naudodami „Keil“ ir sukuriame hex failą, tada HEX failas perduodamas į „ARM7“ lazdelę naudojant „Flash Magic“. Norėdami sužinoti daugiau apie „Keil uVision“ ir „Flash Magic“ diegimą ir kaip juos naudoti, spustelėkite nuorodą „Darbo pradžia su„ ARM7 LPC2148 “mikrovaldikliu ir užprogramuokite naudodami„ Keil uVision “.
Pilnas žingsninio variklio valdymo su ARM 7 kodas pateiktas šios pamokos pabaigoje, čia mes paaiškiname keletą jo dalių.
1. Norėdami naudoti FULL-ONE PHASE ON metodą, turime įtraukti žemiau esančią komandą. Taigi programoje naudojame šią eilutę
nepasirašytas simbolis pagal laikrodžio rodyklę = {0x1,0x2,0x4,0x8}; // Komandos pasukti pagal laikrodžio rodyklę nepasirašytą simbolį prieš laikrodžio rodyklę = {0x8,0x4,0x2,0x1}; // Komandos sukimui prieš laikrodžio rodyklę
2. Šios eilutės naudojamos norint inicializuoti PORT0 kaiščius kaip išvestį ir nustatyti juos į LOW
PINSEL0 = 0x00000000; // PORT0 kaiščių nustatymas IO0DIR - = 0x00000780; // kaiščių P0.7, P0.8, P0.9, P0.10 nustatymas kaip OUTPUT IO0CLR = 0x00000780; // P0.7, P0.8, P0.9, P0.10 kaiščių OUTPUT nustatymas kaip LOW
3. Nustatykite PORT kaiščius (nuo P0,7 iki P0,10) HIGH pagal laikrodžio rodyklės komandas, naudodami tai, kad kilpa būtų atidėta
už (int j = 0; j
Tas pats „ Anti-clock Wise“
už (int z = 0; z
4. Pakeiskite uždelsimo laiką, kad pakeistumėte žingsninio variklio sukimosi greitį
vėlavimas (0x10000); // Pakeiskite šią vertę, kad pakeistumėte sukimosi greitį (0x10000) -Visas greitis (0x50000) -Lėtėja (0x90000) -Lėtėja nei ankstesnis. Taigi didindami vėlavimą mes mažiname sukimosi greitį.
5. Vieno sukimosi žingsnių skaičių galima pakeisti naudojant žemiau pateiktą kodą
int no_of_steps = 550; // Pakeiskite šią vertę, kad suktųsi reikiamas žingsnių skaičius (550 suteikia vieną pilną pasukimą)
Savo žingsniniam varikliui gavau 550 pakopų, kad sukčiau visiškai, o 225 - per pusę. Taigi pakeiskite jį pagal savo reikalavimus.
6. Ši funkcija naudojama uždelsimo laikui sukurti.
void delay (nepasirašyta int reikšmė) // Funkcija generuoti vėlavimą { unsigned int z; už (z = 0; z
Visas kodas su demonstraciniu vaizdo įrašu pateikiamas žemiau.