- Nepieciešamie materiāli
- Stepper motors (28BYJ-48)
- ULN2003 Motora draivera IC
- Shēmas shēma un savienojumi
- Rotējošs soļu motors ar STM32F103C8
- STM32 PROGRAMMĒŠANA soļu motoram
Stepper motors ir DC-motors bez sukām, kuru var pagriezt mazos leņķos, šos leņķus sauc par pakāpieniem. Parasti soļu motors izmanto 200 pakāpes, lai pabeigtu 360 grādu rotāciju, tas nozīmē, ka tas pagriež 1,8 grādus vienā solī. Stepper motors tiek izmantots daudzās ierīcēs, kurām nepieciešama precīza rotācijas kustība, piemēram, roboti, antenas, cietie diski utt. Mēs varam pagriezt stepper motoru jebkurā noteiktā leņķī, dodot tam atbilstošas instrukcijas. Pieejami galvenokārt divu pakāpienu motoru veidi - Unipolar un Bipolar. Unipolar ir vieglāk darbināt, vadīt un arī vieglāk iegūt. Šeit šajā apmācībā mēs saskaramies ar Stepper Motor un STM32F103C8 (Blue pill) plāksni.
Nepieciešamie materiāli
- STM32F103C8 (zila tablete)
- Stepper motors (28BYJ-48)
- ULN2003 IC
- Potenciometrs 10k
- Maizes dēlis
- Džemperu vadi
Stepper motors (28BYJ-48)
28BYJ-48 ir Unipolar Stepper motors, kuram nepieciešama 5V barošana. Motors ir aprīkots ar 4 spoles vienpolāru izvietojumu, un katra spole ir novērtēta ar + 5 V, tāpēc to ir salīdzinoši viegli vadīt ar visiem mikrokontrolleriem, piemēram, Arduino, Raspberry Pi un STM32. Bet tā vadīšanai ir nepieciešams motora piedziņas IC, piemēram, ULN2003, jo soļu motori patērē lielu strāvu, un tas var sabojāt mikrokontrollerus.
Vēl viens svarīgs pamanāms dati ir soļa leņķis: 5,625 ° / 64. Tas nozīmē, ka motors, darbojoties 8 pakāpju secībā, katram solim pārvietosies par 5,625 grādiem, un, lai pabeigtu vienu pilnu rotāciju, būs nepieciešami 64 soļi (5,625 * 64 = 360). Citas specifikācijas ir norādītas zemāk esošajā datu lapā:
Pārbaudiet arī saskarni ar Stepper Motor ar citiem mikrokontrolleriem:
- Saskarne Stepper Motor ar Arduino Uno
- Stepper motora vadība ar Raspberry Pi
- Stepper motora mijiedarbība ar 8051 mikrokontrolleru
- Saskarne Stepper Motor ar PIC mikrokontrolleru
Stepper motoru var vadīt arī bez mikrokontrollera, skatiet šo Stepper Motor vadītāja shēmu.
ULN2003 Motora draivera IC
To lieto motora piedziņai pēc impulsiem, kas saņemti no mikrokontrollera. Zemāk ir ULN2003 attēla diagramma:
Piespraudes (IN1 līdz IN7) ir ievades tapas un (OUT 1 līdz OUT 7) ir atbilstošās izejas tapas. COM tiek dots pozitīva avota spriegums, kas nepieciešams izejas ierīcēm. Citi pakāpienu motora savienojumi ir norādīti zemāk ķēdes shēmas sadaļā.
Shēmas shēma un savienojumi
Zemāk ir savienojumu skaidrojums iepriekšējai shēmai.
STM32F103C8 (zilā tablete)
Kā redzam zemāk redzamajā diagrammā, PWM tapas ir norādītas viļņu formātā (~), ir 15 šādas tapas, kuras var izmantot impulsu izvadīšanai uz soļu motoru. Mums vajag tikai četras tapas, mēs izmantojam (PA0 toPA3).
STM32F103C8 ar ULN2003 motora draivera IC
Tapas (PA0 līdz PA3) uzskata par izejas tapām, kas savienotas ar ULN2003 IC ievades tapām (IN1-IN4).
STM32F103C8 PINI |
ULN2003 IC PINS |
PA0 |
IN1 |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
ULN2003 IC ar soļu motoru (28BYJ-48)
ULN2003 IC izejas tapas (OUT1-OUT4) ir savienotas ar soļu motoru tapām (oranža, dzeltena, rozā un zila).
ULN2003 IC PINS |
STIPRINĀTĀS MOTORA PINES |
OUT1 |
APELSĪNS |
OUT2 |
DZELTENS |
OUT3 |
ROZĀ |
OUT4 |
ZILA |
COM |
SARKANS |
STM32F103C8 ar potenciometru
Lai iestatītu soļu motora ātrumu, tiek izmantots potenciometrs.
POTENCIOMETRS |
STM32F103C8 |
KREISĀ (IEVADE) |
3.3 |
CENTRS (OUTPUT) |
PA4 |
PA labi (GND) |
GND |
Rotējošs soļu motors ar STM32F103C8
Tālāk ir sniegti daži soļi, lai darbinātu Stepper Motor:
- Iestatiet pakāpiena motora ātrumu, mainot potenciometru.
- Pēc tam manuāli ievadiet pagriešanas soļus pulksteņrādītāja kustības virzienā (+ vērtības) vai pretēji pulksteņrādītāja kustības virzienam (-vērtības), izmantojot SERIAL MONITER, kas atrodas ARDUINO IDE (Rīki-> Sērijas monitors) vai CTRL + SHIFT + M.
- Saskaņā ar sērijveida monitorā norādīto ieejas vērtību soļa motorā notiek noteiktas rotācijas pakāpes.
Piemēram
SĒRIJAS MONITORĀ DOTĀ Vērtība |
ROTĀCIJA |
2048. gads |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) ANTI CLK GUDRS |
-1024 |
(-180) ANTI CLK GUDRS |
-512 |
(-90) ANTI CLK GUDRS |
STM32 PROGRAMMĒŠANA soļu motoram
Tāpat kā iepriekšējā apmācība, mēs programmējām STM32F103C8 ar Arduino IDE, izmantojot USB portu, neizmantojot FTDI programmētāju. Lai uzzinātu vairāk par STM32 programmēšanu ar Arduino IDE, sekojiet saitei. Mēs varam turpināt to programmēt kā Arduino. Pilns kods ir norādīts projekta beigās.
Vispirms mums jāiekļauj stepper bibliotēkas faili #include
# iekļaut
Tad mēs definējam nē. soļu, lai pabeigtu rotācijā, šeit mēs izmantojam 32, jo mēs izmantojam Full-Step (4 Step-secības) so (360/32 = 11,25 grādi). Tātad vienu soli vārpsta pārvietojas par 11,25 grādiem, kas ir soļa leņķis. 4 soļu secībā vienai pilnīgai pagriešanai ir nepieciešami 4 soļi.
#define 32. SOLIS
Mēs varam izmantot arī Puse soļa režīmu, kur ir 8 soļu secības (360/64 = 5,625) soļa leņķis.
Soli vienā apgriezienā = 360 / STEP ANGLE
Kad mēs iestatām ātrumu, mums jāņem analogā vērtība no PA4, kas ir savienots ar potenciometru. Tāpēc mums par to jāpaziņo
const int ātrums = PA4
Pēc tam mēs esam pārveidojuši analogo vērtību digitālā formātā, saglabājot šīs vērtības vesela skaitļa mainīgajā, pēc tam mums ir jāattēlo ADC vērtības ātruma iestatīšanai, lai mēs izmantotu šo paziņojumu. Uzziniet vairāk par ADC izmantošanu ar STM32 šeit.
int ADC = analogRead (speedm); int rezultāts = karte (adc , 0, 4096, 1, 1023);
Lai iestatītu ātrumu, mēs izmantojam stepper.setSpeed (rezultāts); Mums ir ātruma diapazons (1-1023).
Mums ir jāizveido tāds gadījums kā zemāk, lai iestatītu tapas, kas ir savienotas ar motoru. Esiet piesardzīgs, veicot šīs darbības, jo lielākā daļa no viņiem šajā modelī kļūdās. Viņi piešķir nepareizu modeli, un tāpēc spoles nevar darboties.
Stepper stepper (STEPS, PA0, PA2, PA1, PA3);
Zemāk esošais paziņojums tiek izmantots, lai iegūtu sērijas monitora darbību vērtību. Piemēram, mums ir nepieciešamas 2048 vērtības vienai pilnai rotācijai (32 * 64 = 2048), proti, 64 būs pārnesuma attiecība un 32 būs puse pakāpienu secība vienai rotācijai.
pagriezt = Serial.parseInt ();
Zemāk esošais kods tiek izmantots, lai izsauktu instanci un palaistu motoru. Ja pagriešanas vērtība ir 1, tā vienu reizi izsauc funkciju Stepper un tiek veikta viena kustība.
stepper.step (pagriezt);
Pilns kods ar demonstrācijas video ir norādīts zemāk. Šeit pārbaudiet arī visus ar soļu motoru saistītos projektus ar saskarni ar dažādiem citiem mikrokontrolleriem