- Mga Materyal na Kinakailangan
- Stepper Motor (28BYJ-48)
- ULN2003 Motor Driver IC
- Circuit Diagram at Mga Koneksyon
- Umiikot na Stepper Motor na may STM32F103C8
- PROGRAMMING STM32 para sa 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. Karaniwan ang stepper motor ay gumagamit ng 200 mga hakbang upang makumpleto ang 360 degree na pag-ikot, nangangahulugang paikutin nito ang 1.8 degree bawat hakbang. Ang stepper motor ay ginagamit sa maraming mga aparato na nangangailangan ng tumpak na paggalaw ng pag-ikot tulad ng mga robot, antennas, hard drive atbp. Maaari nating paikutin ang stepper motor sa anumang partikular na anggulo sa pamamagitan ng pagbibigay nito ng wastong mga tagubilin. Pangunahin ang dalawang uri ng mga stepper motor ay magagamit, Unipolar at Bipolar. Ang Unipolar ay mas madaling patakbuhin, kontrolin at mas madaling makuha din. Dito sa tutorial na ito nakikipag-ugnay kami sa Stepper Motor na may board na STM32F103C8 (Blue pill).
Mga Materyal na Kinakailangan
- STM32F103C8 (Blue pill)
- Stepper Motor (28BYJ-48)
- ULN2003 IC
- Potensyomiter 10k
- Breadboard
- Jumper wires
Stepper Motor (28BYJ-48)
Ang 28BYJ-48 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 makontrol sa anumang mga microcontroller tulad ng Arduino, Raspberry Pi din STM32. Ngunit kailangan namin ng isang Motor Drive IC tulad ng ULN2003 upang himukin ito, dahil ang mga stepper motor ubusin ang mataas na kasalukuyang at maaaring makapinsala sa mga microcontroller.
Ang isa pang mahalagang data na mapapansin ay ang Stride Angle: 5.625 ° / 64. Nangangahulugan ito na ang motor kapag nagpapatakbo sa pagkakasunud-sunod ng 8-hakbang ay lilipat ng 5.625 degree para sa bawat hakbang at kukuha ng 64 na hakbang (5.625 * 64 = 360) upang makumpleto ang isang buong pag-ikot. Ang iba pang mga pagtutukoy 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
Ang stepper motor ay maaari ring kontrolin nang walang anumang Microcontroller, tingnan ang Stepper Motor Driver Circuit na ito.
ULN2003 Motor Driver IC
Ginagamit ito upang himukin ang motor ayon sa natanggap na pulso mula sa microcontroller. Nasa ibaba ang larawan diagram ng ULN2003:
Ang mga pin (IN1 hanggang IN7) ay mga input pin at (OUT 1 hanggang OUT 7) ay kaukulang mga output pin. Ibinibigay ang COM ng Positibong mapagkukunan ng mapagkukunan na kinakailangan para sa mga output device. Ang mga karagdagang koneksyon para sa stepper motor ay ibinibigay sa ibaba sa seksyon ng circuit diagram.
Circuit Diagram at Mga Koneksyon
Nasa ibaba ang paliwanag ng mga koneksyon para sa itaas na diagram ng circuit.
STM32F103C8 (Blue Pill)
Tulad ng nakikita natin sa diagram sa ibaba, ang mga PWM na pin ay ipinahiwatig sa format ng alon (~), mayroong 15 tulad na mga pin na maaaring magamit para sa pulse output sa stepper motor. Kailangan lang namin ng apat na pin, ginagamit namin (PA0 toPA3).
STM32F103C8 na may ULN2003 Motor Driver IC
Ang mga Pins (PA0 hanggang PA3) ay isinasaalang-alang bilang mga output pin na konektado sa mga input pin (IN1-IN4) ng ULN2003 IC.
PIN ng STM32F103C8 |
Mga PIN NG ULN2003 IC |
PA0 |
IN1 |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
ULN2003 IC na may Stepper Motor (28BYJ-48)
Ang mga output pin (OUT1-OUT4) ng ULN2003 IC ay konektado sa mga stepper motor pin (Orange, Yellow, Pink, at Blue).
Mga PIN NG ULN2003 IC |
PIN ng STEPPER MOTOR |
OUT1 |
ORANGE |
OUT2 |
DILAW |
OUT3 |
PINK |
OUT4 |
BUGHAW |
COM |
PULA |
STM32F103C8 na may Potentiometer
Ginagamit ang isang potensyomiter upang maitakda ang bilis ng stepper motor.
POTENTIOMETER |
STM32F103C8 |
KALIWA (INPUT) |
3.3 |
CENTER (OUTPUT) |
PA4 |
KANAN (GND) |
GND |
Umiikot na Stepper Motor na may STM32F103C8
Nasa ibaba ang ilang mga hakbang upang mapatakbo ang Stepper Motor:
- Itakda ang bilis ng stepper motor sa pamamagitan ng iba't ibang potensyomiter.
- Pagkatapos ay manu-manong ipasok ang mga hakbang para sa pag-ikot alinman sa pakanan (+ mga halaga) o direksyon na anticlocklock (-values) sa pamamagitan ng SERIAL MONITER na naroroon sa ARDUINO IDE (Mga Tool-> Serial monitor) o CTRL + SHIFT + M.
- Ayon sa halaga ng pag-input na ibinigay sa serial monitor ilang mga hakbang ng pag-ikot ay nagaganap sa stepper motor.
Halimbawa
HALAGA NA BINIGAY SA SERIAL MONITER |
ROTATION |
2048 |
(360) MATALINONG CLK |
1024 |
(180) MATALINONG CLK |
512 |
(90) MATALINONG CLK |
-2048 |
(-360) ANTI CLK WISE |
-1024 |
(-180) ANTI CLK WISE |
-512 |
(-90) ANTI CLK WISE |
PROGRAMMING STM32 para sa Stepper Motor
Tulad ng nakaraang tutorial, pinrograma namin ang STM32F103C8 kasama ang Arduino IDE sa pamamagitan ng USB port nang hindi ginagamit ang FTDI programmer. Upang malaman ang tungkol sa programa ng STM32 na may Arduino IDE sundin ang link. Maaari naming magpatuloy sa pag-program nito tulad ng isang Arduino. Ang kumpletong code ay ibinibigay sa pagtatapos ng proyekto.
Una kailangan naming isama ang mga file ng stepper library # isama
# isama
Pagkatapos tinutukoy namin ang hindi. ng mga hakbang upang makumpleto sa pag-ikot, dito ginagamit namin ang 32 dahil gumagamit kami ng Full-Step (4 Hakbang-pagkakasunud-sunod) kaya (360/32 = 11.25 degree). Kaya't para sa isang hakbang, ang baras ay gumagalaw ng 11.25 degree na mas mataas na anggulo. Sa pagkakasunud-sunod ng 4 na Hakbang, kinakailangan ang 4 na hakbang para sa isang kumpletong pag-ikot.
# tukuyin ang mga Hakbang 32
Maaari din naming gamitin ang Half step mode kung saan mayroong 8 hakbang na pagkakasunud-sunod (360/64 = 5.625) na anggulo ng hakbang.
Mga hakbang sa bawat rebolusyon = 360 / STEP ANGLE
Habang nagtatakda kami ng bilis dapat kaming kumuha ng analog na halaga mula sa PA4 na konektado sa potensyomiter. Kaya dapat nating ideklara ang pin para doon
Const int speedm = PA4
Pagkatapos ay nai-convert namin ang analog na halaga sa digital sa pamamagitan ng pag-iimbak ng mga halagang iyon sa variable ng uri ng integer, pagkatapos nito kailangan naming i-map ang mga halaga ng ADC para sa bilis ng setting kaya ginagamit namin ang pahayag sa ibaba. Matuto nang higit pa tungkol sa paggamit ng ADC sa STM32 dito.
int adc = analogRead (speedm); int resulta = mapa (adc , 0, 4096, 1, 1023);
Upang maitakda ang bilis, gumagamit kami ng stepper.setSpeed (resulta); Mayroon kaming saklaw ng bilis ng (1-1023).
Dapat kaming lumikha ng halimbawa tulad sa ibaba upang maitakda ang mga pin na konektado sa motor. Mag-ingat sa mga hakbang na ito dahil ang karamihan sa kanila ay nagkakamali dito sa pattern na ito. Nagbibigay sila ng maling pattern at dahil sa mga coil na iyon ay hindi nakapagpasigla.
Stepper stepper (STEPS, PA0, PA2, PA1, PA3);
Ginagamit ang pahayag sa ibaba upang makuha ang halaga ng mga hakbang mula sa serial monitor. Halimbawa kailangan namin ng 2048 na halaga para sa isang buong pag-ikot (32 * 64 = 2048) na 64 ay ang magiging ratio ng gear at 32 ang magiging kalahating hakbang na pagkakasunud-sunod para sa isang pag-ikot.
paikutin = Serial.parseInt ();
Ginagamit ang code sa ibaba upang tawagan ang halimbawa at patakbuhin ang motor. Kung ang paikutin na halaga ay 1 tawagan nito ang function na stepper nang isang beses at tapos na ang isang paglipat.
stepper.step (paikutin);
Ang kumpletong code na may Demonstration Video ay ibinibigay sa ibaba. Suriin din dito ang lahat ng mga proyekto na nauugnay sa stepper motor, na may interfacing sa iba't ibang mga microcontroller