- Potrebni materiali
- Koračni motor (28BYJ-48)
- ULN2003 IC voznik motorja
- Shema vezja in povezave
- Vrtljivi koračni motor s STM32F103C8
- PROGRAMIRANJE STM32 za koračni motor
Koračni motor je brezkrtačni enosmerni motor, ki ga je mogoče vrteti v majhnih kotih, ti koti se imenujejo koraki. Na splošno koračni motor za dokončanje rotacije za 360 stopinj uporablja 200 korakov, kar pomeni, da se vrti za 1,8 stopinje na korak. Koračni motor se uporablja v mnogih napravah, ki potrebujejo natančno rotacijsko gibanje, kot so roboti, antene, trdi diski itd. Koračni motor lahko zasučemo pod poljuben kot, tako da mu damo ustrezna navodila. Na voljo sta predvsem dve vrsti koračnih motorjev, Unipolarni in Bipolarni. Unipolar je lažje upravljati, nadzorovati in tudi lažje dobiti. Tu v tej vadnici povezujemo koračni motor s ploščo STM32F103C8 (modra tableta).
Potrebni materiali
- STM32F103C8 (modra tabletka)
- Koračni motor (28BYJ-48)
- ULN2003 IC
- Potenciometer 10k
- Breadboard
- Jumper žice
Koračni motor (28BYJ-48)
28BYJ-48 je unipolarni koračni motor, ki potrebuje napajanje 5V. Motor ima 4 tuljave enopolarne razporeditve in vsaka tuljava je ocenjena na + 5V, zato jo je sorazmerno enostavno krmiliti s katerim koli mikrokrmilnikom, kot sta Arduino in Raspberry Pi tudi STM32, vendar za pogon potrebujemo motorni IC, kot je ULN2003, ker koračni motorji porabite močan tok in lahko poškoduje mikrokrmilnike.
Drug pomemben podatek, ki ga je treba opaziti, je kot koraka: 5,625 ° / 64. To pomeni, da se bo motor, če deluje v 8-stopenjskem zaporedju, premaknil za 5,625 stopinj za vsak korak in bo potreboval 64 korakov (5,625 * 64 = 360), da bo dokončal eno popolno rotacijo. Druge specifikacije so na voljo v spodnjem obrazcu:
Preverite tudi povezavo s koračnim motorjem z drugimi mikrokrmilniki:
- Povezava koračnega motorja z Arduino Uno
- Nadzor koračnega motorja z Raspberry Pi
- Povezava koračnega motorja z mikrokrmilnikom 8051
- Povezava koračnega motorja z mikrokrmilnikom PIC
Koračni motor je mogoče upravljati tudi brez mikrokrmilnika, glejte to vezje gonilnika koračnega motorja.
ULN2003 IC voznik motorja
Uporablja se za pogon motorja glede na impulze, ki jih prejme mikrokrmilnik. Spodaj je slikovni diagram ULN2003:
Zatiči (IN1 do IN7) so vhodni zatiči, (OUT 1 do OUT 7) pa ustrezni izhodni zatiči. COM dobi pozitivno napetost vira, potrebno za izhodne naprave. Nadaljnje povezave koračnega motorja so podane spodaj v odseku vezja.
Shema vezja in povezave
Spodaj je razlaga povezav za zgornji diagram.
STM32F103C8 (modra tabletka)
Kot lahko vidimo na spodnjem diagramu, so zatiči PWM označeni v valovnem formatu (~), obstaja 15 takih zatičev, ki jih lahko uporabimo za impulzni izhod na koračni motor. Potrebujemo le štiri zatiče, ki jih uporabljamo (PA0 do PA3).
STM32F103C8 z IC voznikom motorja ULN2003
Zatiči (PA0 do PA3) se štejejo za izhodne zatiče, ki so povezani z vhodnimi zatiči (IN1-IN4) IC ULN2003.
PINI STM32F103C8 |
PINI ULN2003 IC |
PA0 |
IN1 |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
ULN2003 IC s koračnim motorjem (28BYJ-48)
Izhodni zatiči (OUT1-OUT4) ULN2003 IC so povezani z zatiči koračnih motorjev (oranžna, rumena, roza in modra).
PINI ULN2003 IC |
PINI KORAKEGA MOTORJA |
IZHOD1 |
ORANŽNA |
IZHOD2 |
RUMENA |
IZHOD3 |
ROZA |
IZHOD4 |
MODRA |
COM |
RDEČA |
STM32F103C8 s potenciometrom
Za nastavitev hitrosti koračnega motorja se uporablja potenciometer.
POTENTIOMETER |
STM32F103C8 |
LEVO (VHOD) |
3.3 |
CENTER (IZHOD) |
PA4 |
DESNO (GND) |
GND |
Vrtljivi koračni motor s STM32F103C8
Spodaj je nekaj korakov za upravljanje koračnega motorja:
- Hitrost koračnega motorja nastavite s spreminjanjem potenciometra.
- Nato ročno vnesite korake za vrtenje v smeri urnega kazalca (+ vrednosti) ali v nasprotni smeri urnega kazalca (-vrednosti) prek SERIJSKEGA MONITERJA, ki je prisoten v ARDUINO IDE (Orodja-> Serijski monitor) ali CTRL + SHIFT + M.
- Glede na vhodno vrednost, navedeno v serijskem monitorju, se v koračnem motorju odvijajo določeni koraki vrtenja.
Na primer
VREDNOST, DAJENA V SERIJSKEM MONITORU |
ROTACIJA |
2048 |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) ANTI CLK WISE |
-1024 |
(-180) ANTI CLK WISE |
-512 |
(-90) ANTI CLK WISE |
PROGRAMIRANJE STM32 za koračni motor
Tako kot prejšnja vadnica smo tudi STM32F103C8 z Arduino IDE programirali prek vrat USB brez uporabe programerja FTDI. Če želite izvedeti več o programiranju STM32 z Arduino IDE, sledite povezavi. Lahko ga nadaljujemo s programiranjem kot Arduino. Popolna koda je podana na koncu projekta.
Najprej moramo vključiti datoteke knjižnice korakov #include
#include
Potem določimo št. korakov, ki jih je treba dokončati pri rotaciji, tu uporabljamo 32, ker uporabljamo Full-Step (zaporedje s 4 koraki) tako (360/32 = 11,25 stopinje). V enem koraku se gred premakne za 11,25 stopinje, kar je kot koraka. V zaporedju s 4 koraki so za eno popolno rotacijo potrebni 4 koraki.
#define STEPS 32
Uporabljamo lahko tudi način pol koraka, kjer je kot koraka 8 korakov (360/64 = 5,625).
Koraki na vrtljaj = 360 / KOT KOT
Ko nastavljamo hitrost, moramo iz PA4 vzeti analogno vrednost, ki je priključena na potenciometer. Zato moramo razglasiti pin za to
const int speedm = PA4
Nato smo analogno vrednost pretvorili v digitalno, tako da smo te vrednosti shranili v spremenljivko celoštevilčnega tipa, nato pa moramo preslikati vrednosti ADC za nastavitev hitrosti, tako da uporabimo spodnjo izjavo. Več o uporabi ADC s STM32 lahko preberete tukaj.
int adc = analogRead (speedm); int rezultat = zemljevid (adc , 0, 4096, 1, 1023);
Za nastavitev hitrosti uporabimo stepper.setSpeed (rezultat); Imamo območje hitrosti (1-1023).
Ustvariti moramo primer, kot spodaj, da nastavimo nožice, ki so povezane z motorjem. V teh korakih bodite previdni, saj se večina pri tem vzorcu zmoti. Dajo napačen vzorec in zaradi tega tuljave ne morejo biti pod napetostjo.
Koračni koračni korak (KORAKI, PA0, PA2, PA1, PA3);
Spodnji stavek se uporablja za pridobitev vrednosti korakov iz serijskega monitorja. Na primer, potrebujemo 2048 vrednosti za eno polno vrtenje (32 * 64 = 2048), to je 64 bo prestavno razmerje in 32 bo polovično zaporedje za eno vrtenje.
zasukaj = Serial.parseInt ();
Spodnja koda se uporablja za klic primerka in zagon motorja. Če je vrednost zasuka 1, enkrat pokliče funkcijski koračni korak in konča se en premik.
stepper.step (zasukaj);
Popolna koda z demonstracijskim videom je navedena spodaj. Tukaj preverite tudi vse projekte koračnega motorja z vmesniki z različnimi drugimi mikrokrmilniki