- Reikalingos medžiagos
- Žingsninis variklis (28BYJ-48)
- ULN2003 variklio vairuotojo IC
- Grandinės schema ir jungtys
- Besisukantis žingsninis variklis su STM32F103C8
- STM32 programavimas stepper varikliui
Žingsninis variklis yra nuolatinės srovės variklis be šepetėlių, kurį galima pasukti mažais kampais. Šie kampai vadinami pakopomis. Paprastai žingsninis variklis 360 laipsnių sukimui naudoja 200 žingsnių, o tai reiškia, kad žingsnis pasisuka 1,8 laipsnio. Žingsninis variklis naudojamas daugelyje prietaisų, kuriems reikia tikslaus sukimosi, pvz., Robotams, antenoms, standiesiems diskams ir kt. Mes galime pasukti žingsninį variklį bet kuriuo konkrečiu kampu, pateikdami jam tinkamas instrukcijas. Daugiausia yra dviejų tipų žingsninių variklių - „ Unipolar“ ir „ Bipolar“. „Unipolar“ yra lengviau valdyti, valdyti ir lengviau gauti. Čia, šioje pamokoje, susiejame žingsninį variklį su STM32F103C8 („Blue pill“) plokšte.
Reikalingos medžiagos
- STM32F103C8 (mėlyna piliulė)
- Žingsninis variklis (28BYJ-48)
- ULN2003 IC
- Potenciometras 10k
- Bandomoji Lenta
- Džemperių laidai
Žingsninis variklis (28BYJ-48)
28BYJ-48 yra „ Unipolar Stepper“ variklis, kuriam reikalingas 5 V maitinimas. 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“ ir STM32. Tačiau norint jį vairuoti, reikia variklio IC, pvz., ULN2003, nes žingsniniai varikliai sunaudoja didelę srovę ir tai gali sugadinti mikrovaldiklius.
Kiti svarbūs pastebimi duomenys yra žingsnio kampas: 5,625 ° / 64. Tai reiškia, kad variklis, dirbdamas 8 pakopų seka, judės po 5,625 laipsnius kiekvienam žingsniui, o norint atlikti vieną pilną sukimąsi reikės 64 žingsnių (5,625 * 64 = 360). Kitos 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
Žingsninį variklį taip pat galima valdyti be jokio mikrovaldiklio, žiūrėkite šią „Stepper“ variklio tvarkyklę.
ULN2003 variklio vairuotojo IC
Jis naudojamas varikliui valdyti pagal impulsus, gaunamus iš mikrovaldiklio. Žemiau yra paveikslėlio schema ULN2003:
Kaiščiai (nuo IN1 iki IN7) yra įvesties kaiščiai, o (nuo OUT 1 iki OUT 7) yra atitinkami išvesties kaiščiai. COM suteikiama teigiamo šaltinio įtampa, reikalinga išvesties įrenginiams. Kiti žingsninio variklio sujungimai pateikti žemiau grandinės schemos skyriuje.
Grandinės schema ir jungtys
Žemiau pateikiamas pirmiau pateiktos schemos jungčių paaiškinimas.
STM32F103C8 (mėlyna piliulė)
Kaip matome žemiau esančioje diagramoje, PWM kaiščiai yra nurodyti bangos formatu (~), yra 15 tokių kaiščių, kurie gali būti naudojami impulsų išėjimui į žingsninį variklį. Mums reikia tik keturių kaiščių, mes naudojame (PA0 toPA3).
STM32F103C8 su ULN2003 variklio tvarkyklės IC
Smeigtukai (nuo PA0 iki PA3) laikomi išvesties kaiščiais, sujungtais su ULN2003 IC įvesties kaiščiais (IN1-IN4).
STM32F103C8 PINIGAI |
ULN2003 IC PIN kodai |
PA0 |
IN1 |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
KOM |
BND |
BND |
ULN2003 IC su žingsniniu varikliu (28BYJ-48)
ULN2003 IC išvesties kaiščiai (OUT1-OUT4) yra prijungti prie laiptelių variklių kaiščių (oranžinės, geltonos, rožinės ir mėlynos).
ULN2003 IC PIN kodai |
ŽIEDINIO VARIKLIO PINIAI |
OUT1 |
APELSINAS |
OUT2 |
GELTONA |
OUT3 |
ROŽINIS |
OUT4 |
MĖLYNA |
KOM |
RAUDONA |
STM32F103C8 su potenciometru
Norint nustatyti žingsninio variklio greitį, naudojamas potenciometras.
POTENCIOMETRAS |
STM32F103C8 |
Kairė (įvestis) |
3.3 |
CENTRAS (IŠĖJIMAS) |
PA4 |
Dešinė (BND) |
BND |
Besisukantis žingsninis variklis su STM32F103C8
Toliau pateikiami keli žingsniai varikliui valdyti:
- Nustatykite žingsninio variklio greitį keisdami potenciometrą.
- Tada rankiniu būdu įveskite sukimo žingsnius pagal laikrodžio rodyklę (+ reikšmės) arba prieš laikrodžio rodyklę (-reikšmės) per SERIALĄ MONITORĄ, esantį ARDUINO IDE (Įrankiai-> Serijinis monitorius) arba CTRL + SHIFT + M.
- Pagal nuosekliajame monitoriuje pateiktą įvesties vertę žingsniniame variklyje vyksta tam tikri sukimosi žingsniai.
Pavyzdžiui
SERIJOS MONITORIUI SUTEIKTA VERTĖ |
SUKIMAS |
2048 m |
(360) CLK WISE |
1024 m |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 m |
(-360) ANTI CLK WISE |
-1024 |
(-180) ANTI CLK WISE |
-512 |
(-90) ANTI CLK WISE |
STM32 programavimas stepper varikliui
Kaip ir ankstesnę mokymo programą, per USB prievadą, nenaudodami FTDI programuotojo, užprogramavome STM32F103C8 su „Arduino IDE“. Norėdami sužinoti apie STM32 programavimą su „Arduino IDE“, spustelėkite nuorodą. Mes galime tęsti jo programavimą kaip „Arduino“. Pilnas kodas pateikiamas projekto pabaigoje.
Pirmiausia turime įtraukti „stepper“ bibliotekos failus #include
# įtraukti
Tada mes apibrėžiame ne. žingsnių, kuriuos reikia atlikti sukant, čia mes naudojame 32, nes mes naudojame „ Full-Step“ (4 žingsnių seka), taigi (360/32 = 11,25 laipsniai). Taigi vienu žingsniu velenas juda 11,25 laipsnio, ty žingsnio kampu. 4 žingsnių seka reikalauja 4 žingsnių, kad būtų galima sukti vieną kartą.
#define 32 VEIKSMAI
Taip pat galime naudoti pusės žingsnio režimą, kai yra 8 žingsnių seka (360/64 = 5,625) žingsnio kampas.
Žingsniai per apsisukimą = 360 / ŽINGSNIO KAMPAS
Nustatydami greitį turime paimti analoginę vertę iš PA4, prijungto prie potenciometro. Taigi mes turime deklaruoti PIN kodą
const int greitis = PA4
Tada konvertuojome analoginę vertę į skaitmeninę, išsaugodami tas vertes sveikojo skaičiaus kintamajame, po to turime susieti ADC reikšmes nustatydami greitį, kad mes naudotume toliau pateiktą teiginį. Sužinokite daugiau apie ADC naudojimą su STM32 čia.
INT ADC = analogRead (speedm); int rezultatas = žemėlapis (adc , 0, 4096, 1, 1023);
Norėdami nustatyti greitį, naudojame stepper.setSpeed (rezultatas); Mes turime greičio diapazoną (1-1023).
Turime sukurti tokį pavyzdį kaip žemiau, kad nustatytume kaiščius, sujungtus su varikliu. Būkite atsargūs atlikdami šiuos veiksmus, nes dauguma jų daro klaidą čia. Jie pateikia neteisingą modelį ir dėl to ritės negali būti įjungtos.
Žingsnis steperis (STEPS, PA0, PA2, PA1, PA3);
Žemiau pateiktas sakinys naudojamas norint gauti serijinio monitoriaus žingsnių vertę. Pvz., Mums reikia 2048 verčių vienam pilnam apsisukimui (32 * 64 = 2048), tai yra 64 bus pavaros santykis ir 32 bus pusės žingsnio seka vienam sukimui.
pasukti = Serial.parseInt ();
Žemiau pateiktas kodas naudojamas norint iškviesti egzempliorių ir paleisti variklį. Jei sukimosi vertė yra 1, ji vieną kartą iškviečia funkciją „Stepper“ ir atliekamas vienas judesys.
stepper.step (pasukti);
Visas kodas su demonstraciniu vaizdo įrašu pateiktas žemiau. Čia taip pat patikrinkite visus su varikliais susijusius projektus su sąsaja su įvairiais kitais mikrovaldikliais