- Potrebné materiály
- Krokový motor (28BYJ-48)
- Integrovaný obvod ovládača motora ULN2003
- Schéma zapojenia a zapojenia
- Rotačný krokový motor s STM32F103C8
- PROGRAMOVANIE STM32 pre krokový motor
Krokový motor je jednosmerný jednosmerný motor, ktorý sa dá otáčať v malých uhloch, tieto uhly sa nazývajú kroky. Krokový motor spravidla používa 200 krokov na dokončenie rotácie o 360 stupňov, čo znamená, že sa otáča o 1,8 stupňa na krok. Krokový motor sa používa v mnohých zariadeniach, ktoré vyžadujú presný rotačný pohyb, ako sú roboty, antény, pevné disky atď. Krokový motor môžeme otáčať do ľubovoľného konkrétneho uhla tak, že mu dáte príslušné pokyny. K dispozícii sú hlavne dva typy krokových motorov, Unipolárne a Bipolárne. Unipolar je ľahšie ovládateľný, ovládateľný a tiež ľahšie dostupný. Tu v tomto výučbe prepájame krokový motor s doskou STM32F103C8 (modrá pilulka).
Potrebné materiály
- STM32F103C8 (modrá pilulka)
- Krokový motor (28BYJ-48)
- ULN2003 IC
- Potenciometer 10k
- Nepál
- Prepojovacie vodiče
Krokový motor (28BYJ-48)
28BYJ-48 je unipolárny krokový motor, ktorý vyžaduje napájanie 5 V. Motor má 4-cievkové unipolárne usporiadanie a každá cievka je dimenzovaná na + 5 V, takže je pomerne ľahké ho ovládať pomocou akýchkoľvek mikrokontrolérov, ako je Arduino, Raspberry Pi, tiež STM32. Na jeho pohon však potrebujeme integrovaný obvod IC ako ULN2003, pretože krokové motory spotrebúvajú vysoký prúd a môžu poškodiť mikrokontroléry.
Ďalším dôležitým údajom, ktorý si treba všimnúť, je Stride Angle: 5,625 ° / 64. To znamená, že motor, ktorý pracuje v 8-krokovej sekvencii, sa bude pohybovať o 5 625 stupňov pre každý krok a na dokončenie jednej celej rotácie bude potrebných 64 krokov (5 625 * 64 = 360). Ďalšie technické údaje sú uvedené v údajovom liste nižšie:
Skontrolujte tiež prepojenie s krokovým motorom s inými mikrokontrolérmi:
- Prepojovací krokový motor s Arduino Uno
- Ovládanie krokového motora s Raspberry Pi
- Prepojenie krokových motorov s mikrokontrolérom 8051
- Prepojovací krokový motor s mikrokontrolérom PIC
Krokový motor je možné ovládať aj bez mikrokontroléra, viď tento obvod ovládača krokového motora.
Integrovaný obvod ovládača motora ULN2003
Používa sa na pohon motora podľa impulzov prijatých z mikrokontroléra. Nižšie je uvedený grafický diagram ULN2003:
Piny (IN1 až IN7) sú vstupné piny a (OUT 1 až OUT 7) zodpovedajúce výstupné piny. COM dostane kladné zdrojové napätie potrebné pre výstupné zariadenia. Ďalšie zapojenia pre krokový motor sú uvedené v časti schémy zapojenia.
Schéma zapojenia a zapojenia
Nižšie je uvedené vysvetlenie pripojení k vyššie uvedenej schéme zapojenia.
STM32F103C8 (modrá pilulka)
Ako vidíme na nasledujúcom diagrame, piny PWM sú indikované vo vlnovom formáte (~), existuje 15 takýchto pinov, ktoré možno použiť na impulzný výstup do krokového motora. Potrebujeme iba štyri kolíky, ktoré používame (PA0 až PA3).
STM32F103C8 s integrovaným obvodom budiča ULN2003
Kolíky (PA0 až PA3) sa považujú za výstupné kolíky, ktoré sú spojené so vstupnými kolíkmi (IN1-IN4) IC ULN2003.
PINY STM32F103C8 |
PINY ULN2003 IC |
PA0 |
IN1 |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
KOM |
GND |
GND |
ULN2003 IC s krokovým motorom (28BYJ-48)
Výstupné piny (OUT1-OUT4) ULN2003 IC sú pripojené k pinom krokových motorov (oranžová, žltá, ružová a modrá).
PINY ULN2003 IC |
PINY KROKOVÉHO MOTORA |
OUT1 |
ORANŽOVÁ |
OUT2 |
ŽLTÁ |
OUT3 |
RUŽOVÁ |
OUT4 |
MODRÁ |
KOM |
ČERVENÁ |
STM32F103C8 s potenciometrom
Na nastavenie rýchlosti krokového motora sa používa potenciometer.
POTENCIOMETER |
STM32F103C8 |
DOĽAVA (VSTUP) |
3.3 |
STRED (VÝSTUP) |
PA4 |
PRAVÉ (GND) |
GND |
Rotačný krokový motor s STM32F103C8
Nasleduje niekoľko krokov na obsluhu krokového motora:
- Nastavením otáčok potenciometra nastavte rýchlosť krokového motora.
- Potom ručne zadajte kroky pre rotáciu buď v smere hodinových ručičiek (+ hodnoty), alebo proti smeru hodinových ručičiek (-hodnoty) cez SERIAL MONITER prítomný v ARDUINO IDE (Tools-> Serial monitor) alebo CTRL + SHIFT + M.
- Podľa vstupnej hodnoty uvedenej v sériovom monitore prechádzajú určité kroky rotácie v krokovom motore.
Napríklad
HODNOTA DÁVANÁ V SÉRIOVOM MONITORE |
OTOČENIE |
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 |
PROGRAMOVANIE STM32 pre krokový motor
Rovnako ako predchádzajúci výukový program sme programovali STM32F103C8 s Arduino IDE cez USB port bez použitia programátora FTDI. Ak sa chcete dozvedieť viac o programovaní STM32 s Arduino IDE, kliknite na odkaz. Môžeme to programovať ako Arduino. Celý kód je uvedený na konci projektu.
Najskôr musíme zahrnúť súbory krokovej knižnice # zahrnúť
#include
Potom definujeme č. krokov, ktoré je potrebné dokončiť pri rotácii, tu používame 32, pretože používame Full-Step (4 kroková postupnosť), takže (360/32 = 11,25 stupňa). Takže v jednom kroku sa hriadeľ pohybuje o 11,25 stupňa, čo je uhol kroku. V postupnosti 4 krokov sú potrebné 4 kroky na jedno úplné otočenie.
#define KROKY 32
Môžeme tiež použiť polkrokový režim, kde je krokový uhol 8 krokov (360/64 = 5,625).
Kroky na otáčku = 360 / KROKOVÝ UHOL
Keď nastavujeme rýchlosť, musíme brať analógovú hodnotu z PA4, ktorá je pripojená k potenciometru. Takže za to musíme deklarovať pin
konštantná rýchlosť = PA4
Potom sme analógovú hodnotu previedli na digitálnu uložením týchto hodnôt do premennej celočíselného typu, potom musíme namapovať hodnoty ADC pre nastavenie rýchlosti, aby sme použili nasledujúci príkaz. Viac informácií o používaní ADC s STM32 sa dozviete tu.
int adc = analogRead (rýchlosť); int výsledok = mapa (adc , 0, 4096, 1, 1023);
Na nastavenie rýchlosti používame stepper.setSpeed (result); Máme rozsah rýchlostí (1-1023).
Musíme vytvoriť inštanciu, ako je uvedené nižšie, aby sme nastavili kolíky, ktoré sú pripojené k motoru. V týchto krokoch buďte opatrní, pretože väčšina z nich tu v tomto vzore robí chybu. Dávajú nesprávny vzor a kvôli tomu nemôžu byť cievky napájané.
Stepper stepper (STEPS, PA0, PA2, PA1, PA3);
Nasledujúci príkaz sa používa na získanie hodnoty krokov zo sériového monitora. Napríklad potrebujeme 2048 hodnôt pre jednu úplnú rotáciu (32 * 64 = 2048), čo je 64, čo bude prevodový pomer a 32 bude pol kroková sekvencia pre jednu rotáciu.
rotate = Serial.parseInt ();
Nižšie uvedený kód sa používa na volanie inštancie a na spustenie motora. Ak je hodnota otočenia 1, zavolá sa funkcia stepper raz a vykoná sa jeden pohyb.
stepper.step (rotácia);
Kompletný kód s demonštračným videom je uvedený nižšie. Skontrolujte tiež všetky projekty týkajúce sa krokových motorov, ktoré sú prepojené s rôznymi inými mikrokontrolérmi