- Stepper Motor
- Paikutin ang isang Stepper Motor NA MAY ARM7-LPC2148
- Kinakailangan ang Mga Bahagi
- Stepper Motor (28BYJ-48)
- ULN2003 Stepper Motor Driver
- Diagram ng Circuit
- Programming ARM7-LPC2148 para sa Stepper Motor
Sa automation ngayon na stepper motor at servo motor ng mundo ay dalawang karaniwang ginagamit na motor sa mga naka-embed na system. Parehong ginagamit ang iba't ibang mga machine ng automation tulad ng mga robotic arm, CNC machine, camera atbp. Sa tutorial na ito makikita natin kung paano i-interface ang Stepper Motor sa ARM7-LPC2148 at kung paano makontrol ang bilis nito. Kung bago ka sa ARM7 pagkatapos magsimula sa pamamagitan ng pag-aaral tungkol sa ARM7-LPC2148 at mga tool sa pag-program nito.
Stepper Motor
Ang stepper motor ay walang brushless DC motor, na maaaring paikutin sa maliliit na anggulo, ang mga anggulong ito ay tinatawag na mga hakbang. Maaari naming paikutin ang stepper motor na hakbang-hakbang sa pamamagitan ng pagbibigay ng mga digital na pulso sa mga pin nito. Ang mga stepper motor ay mura at may masungit na disenyo. Ang bilis ng motor ay maaaring makontrol sa pamamagitan ng pagbabago ng dalas ng mga digital na pulso.
Mayroong dalawang uri ng mga stepper motor na magagamit batay sa uri ng paikot-ikot na stator: UNIPOLAR at BIPOLAR. Narito ginagamit namin ang UNIPOLAR stepper motor na kung saan ay ang pinaka-karaniwang ginagamit na stepper motor . Upang paikutin ang stepper motor kailangan namin upang pasiglahin ang mga coil ng stepper motor sa isang pagkakasunud-sunod. Batay sa pagpapatakbo ng paikot na naiuri sila sa dalawang mga mode:
- Buong Mode ng Hakbang: (4-Step Sequence)
- One-Phase On Stepping (WAVE STEPPING)
- Dalawang-Yugto Sa Hakbang
- Half Step Mode (8-Step Sequence)
Upang malaman ang higit pa tungkol sa stepper motor at pagpapatakbo nito, sundin ang link.
Paikutin ang isang Stepper Motor NA MAY ARM7-LPC2148
Dito ay gagamitin namin ang BUONG HAKBANG: ONE PHASE ON o WAVE STEPPING mode upang paikutin ang Stepper Motor na may ARM7-LPC2148
Sa pamamaraang ito, papalakasin lamang natin ang isang coil (isang pin ng LPC2148) nang paisa-isa. Iyon ay kung ang unang coil A ay pinalakas sa loob ng isang maliit na oras, babaguhin ang baras nito at pagkatapos ay ang coil B ay pinalakas para sa parehong oras at ang baras ay muling magbabago ng posisyon nito. Kapareho nito, ang coil C at pagkatapos ang coil D ay pinalakas upang ilipat ang shaft nang higit pa. Ginagawa nitong poste ng stepper motor upang paikutin sa isang hakbang-hakbang na paraan sa pamamagitan ng pag-energize ng isang coil nang paisa-isa.
Sa pamamagitan ng pamamaraang ito, paikutin namin ang shaft nang sunud-sunod sa pamamagitan ng energizing coil sa isang pagkakasunod-sunod. Tinatawag itong apat na hakbang na pagkakasunud-sunod dahil tumatagal ito ng apat na hakbang.
Maaari mong paikutin ang stepper Motor gamit ang HALF STEP na pamamaraan (8-Sequence na pamamaraan) ayon sa mga halagang ibinigay sa ibaba.
Hakbang |
Coil A |
Coil B |
Coil C |
Coil 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 |
Kinakailangan ang Mga Bahagi
Hardware:
- ARM7-LPC2148
- ULN2003 Motor Driver IC
- LED - 4
- STEPPER MOTOR (28BYJ-48)
- BREADBOARD
- Kumokonekta sa mga WIRES
Software:
- Keil uVision5
- Flasic Magic Tool
Stepper Motor (28BYJ-48)
Ang 28BYJ-48 stepper motor ay ipinakita na sa larawan sa itaas. Ito ay isang motor na Unipolar Stepper na nangangailangan ng 5V supply. Ang motor ay may 4 coil unipolar na pag-aayos at ang bawat coil ay na-rate para sa + 5V samakatuwid madali itong kontrolin sa anumang mga microcontroller tulad ng Arduino, Raspberry Pi, STM32, ARM atbp.
Ngunit kailangan namin ng isang Motor Drive IC tulad ng ULN2003 upang himukin ito, dahil ang mga stepper motor ay kumakain ng mataas na kasalukuyang at maaaring makapinsala sa mga microcontroller.
Ang mga pagtutukoy ng 28BYJ-48 ay ibinibigay sa datasheet sa ibaba:
Suriin din ang pag-interfaced sa Stepper Motor sa iba pang mga Microcontroller:
- Ang Interfacing Stepper Motor na may Arduino Uno
- Control ng Stepper Motor na may Raspberry Pi
- Ang Stepper Motor Interfacing na may 8051 Microcontroller
- Pag-interfacing ng Stepper Motor na may PIC Microcontroller
- Pag-interfacing ng Stepper Motor na may MSP430G2
Ang stepper motor ay maaari ring kontrolin nang walang anumang Microcontroller, tingnan ang Stepper Motor Driver Circuit na ito.
ULN2003 Stepper Motor Driver
Karamihan sa mga stepper motor ay gagana lamang sa tulong ng isang module ng driver. Ito ay dahil ang module ng controller (Sa aming kaso na LPC2148) ay hindi maaaring magbigay ng sapat na kasalukuyang mula sa mga I / O na pin para sa motor na gumana. Sa gayon gagamitin namin ang isang panlabas na module tulad ng ULN2003 module bilang stepper motor driver.
Sa proyektong ito, gagamitin namin ang ULN2003 motor driver na IC. Ang diagram ng pin ng IC ay ibinibigay sa ibaba:
Ang mga pin (IN1 hanggang IN7) ay mga input pin para sa pagkonekta ng output ng microcontroller at ang OUT1 hanggang OUT7 ay kaukulang mga output pin para sa pagkonekta ng stepper motor input. Ang COM ay binibigyan ng Positibong mapagkukunan ng mapagkukunan na kinakailangan para sa mga output na aparato at para sa panlabas na mapagkukunan ng pag-input.
Diagram ng Circuit
Ang diagram ng circuit para sa interfacing ng Stepper Motor na may ARM-7 LPC2148 ay ibinibigay sa ibaba
ARM7-LPC2148 kasama ang ULN2003 Motor Driver IC
Ang GPIO Pins ng LPC2148 (P0.7 hanggang P0.10) ay isinasaalang-alang bilang mga output pin na konektado sa mga input pin (IN1-IN4) ng ULN2003 IC.
LPC2148 Mga Pin |
Mga PIN NG ULN2003 IC |
P0.7 |
IN1 |
P0.8 |
IN2 |
P0.9 |
IN3 |
P.10 |
IN4 |
5V |
COM |
GND |
GND |
Mga koneksyon ng ULN2003 IC na may Stepper Motor (28BYJ-48)
Ang mga output pin (OUT1-OUT4) ng ULN2003 IC ay konektado sa mga stepper motor pin (Blue, Pink, Yellow, at Orange).
ULN2003 IC PINS |
PIN ng STEPPER MOTOR |
OUT1 |
BUGHAW |
OUT2 |
PINK |
OUT3 |
DILAW |
OUT4 |
ORANGE |
COM |
PULA (+ 5V) |
Ang mga LED na may IN1 hanggang IN4 ng ULN2003
Ang apat na LED's (LED1, LED2, LED4, LED 4) na mga anode pin ay konektado sa mga pin na IN1, IN2, IN3, at IN4 ng ULN2003 ayon sa pagkakabanggit at ang cathode ng LEDs ay konektado sa GND na kung saan ay upang ipahiwatig ang mga pulso mula sa LPC2148. Maaari nating tandaan ang pattern ng mga ibinigay na pulso. Ipinapakita ang pattern sa demonstration na video na naka-attach sa dulo.
Programming ARM7-LPC2148 para sa Stepper Motor
Upang Program ARM7-LPC2148 kailangan namin ng keV uVision at Flash Magic tool. Gumagamit kami ng USB Cable upang mai-program ang ARM7 Stick sa pamamagitan ng micro USB port. Nagsusulat kami ng code gamit ang Keil at lumikha ng isang hex file at pagkatapos ang HEX file ay na-flash sa ARM7 stick gamit ang Flash Magic. Upang malaman ang higit pa tungkol sa pag-install ng keil uVision at Flash Magic at kung paano gamitin ang mga ito sundin ang link na Nagsisimula Sa ARM7 LPC2148 Microcontroller at Program ito gamit ang Keil uVision.
Ang kumpletong code para sa pagkontrol sa Stepper Motor na may ARM 7 ay ibinibigay sa pagtatapos ng tutorial na ito, narito ipinapaliwanag namin ang ilang bahagi nito.
1. Para sa paggamit ng BUONG STEP-ONE PHASE ON na pamamaraan kailangan naming isama sa ibaba ang utos. Kaya ginagamit namin ang sumusunod na linya sa programa
naka-unsigned na char na pakaliwa = {0x1,0x2,0x4,0x8}; // Nag-uutos para sa pag-ikot ng pag-ikot nang hindi naka- sign na char anticlockwise = {0x8,0x4,0x2,0x1}; // Nag-uutos para sa pag-ikot ng anticlocklock
2. Ang mga sumusunod na linya ay ginagamit upang simulan ang mga PORT0 na pin bilang output at itakda ang mga ito sa LOW
PINSEL0 = 0x00000000; // Setting PORT0 pins IO0DIR - = 0x00000780; // Setting pins P0.7, P0.8, P0.9, P0.10 as OUTPUT IO0CLR = 0x00000780; // Setting P0.7, P0.8, P0.9, P0.10 pins OUTPUT as LOW
3. Itakda ang mga PORT pin (P0.7 hanggang P0.10) MATAAS ayon sa mga utos ng Clockwise sa pamamagitan ng paggamit nito para sa loop nang may pagkaantala
para sa (int j = 0; j
Pareho para sa Anti-clock Wise
para sa (int z = 0; z
4. Baguhin ang oras ng pagkaantala upang mabago ang bilis ng pag-ikot ng stepper motor
pagkaantala (0x10000); // Baguhin ang halagang ito upang mabago ang bilis ng pag-ikot (0x10000) -Full speed (0x50000) -Gagawin ng mabagal (0x90000) -Gagawing mabagal kaysa sa nakaraang. Kaya sa pamamagitan ng pagtaas ng pagkaantala binabaan natin ang bilis ng pag-ikot.
5. Bilang ng mga hakbang para sa isang kumpletong pag-ikot ay maaaring mabago sa ibaba ng code
int no_of_steps = 550; // Baguhin ang halagang ito para sa kinakailangang bilang ng mga hakbang sa pag-ikot (550 ay nagbibigay sa isang kumpletong pag-ikot)
Para sa aking stepper motor, nakakuha ako ng 550 na mga hakbang para sa kumpletong pag-ikot at 225 para sa kalahating pag-ikot. Kaya baguhin ito alinsunod sa iyong mga kinakailangan.
6. Ang pagpapaandar na ito ay ginagamit upang lumikha ng oras ng pagkaantala.
walang bisa ang pagkaantala (unsigned int halaga) // Function upang makabuo ng pagkaantala { unsigned int z; para sa (z = 0; z
Kumpletong code na may demonstrasyon Ang video ay ibinibigay sa ibaba.