- Krokový motor
- Otáčanie krokového motora S ARM7-LPC2148
- Súčasti sú povinné
- Krokový motor (28BYJ-48)
- Ovládač krokového motora ULN2003
- Schéma zapojenia
- Programovanie ARM7-LPC2148 pre krokový motor
V dnešnom automatizovanom svete sú krokový motor a servomotor dva najčastejšie používané motory v zabudovaných systémoch. Oba sa používajú v rôznych automatizačných strojoch, ako sú robotické ramená, CNC stroje, fotoaparáty atď. V tomto výučbe sa dozvieme, ako prepojiť krokový motor s ARM7-LPC2148 a ako riadiť jeho rýchlosť. Ak ste v ARM7 nováčikom, začnite tým, že sa dozviete viac o ARM7-LPC2148 a jeho programovacích nástrojoch.
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 môžeme otáčať krok za krokom tak, že do jeho kolíkov dávame digitálne impulzy. Krokové motory sú lacné a majú robustnú konštrukciu. Otáčky motora je možné regulovať zmenou frekvencie digitálnych impulzov.
Na základe typu vinutia statora sú k dispozícii dva typy krokových motorov: UNIPOLAR a BIPOLAR. Tu používame krokový motor UNIPOLAR, ktorý je najbežnejšie používaným krokovým motorom . Aby sme mohli otáčať krokový motor, musíme postupne napájať cievky krokového motora. Na základe rotačnej operácie sú rozdelené do dvoch režimov:
- Režim úplného kroku: (4-kroková sekvencia)
- Jednofázové šliapanie (KROK VLNKY)
- Dvojfázové pri šliapaní
- Polkrokový režim (8-kroková sekvencia)
Ak sa chcete dozvedieť viac informácií o krokovom motore a jeho prevádzke, kliknite na odkaz.
Otáčanie krokového motora S ARM7-LPC2148
Tu použijeme PLNÝ KROK: REŽIM JEDNEJ FÁZY ZAPNUTÝ alebo KROK WAVE na otáčanie krokového motora s ARM7-LPC2148
Pri tejto metóde budeme napájať naraz iba jednu cievku (jeden pin LPC2148). To znamená, že ak je prvá cievka A napájaná na malú dobu, hriadeľ zmení svoju polohu a potom bude cievka B napájaná na rovnaký čas a hriadeľ opäť zmení svoju polohu. Rovnako ako v tomto prípade je cievka C a potom cievka D napájané, aby sa hriadeľ posunul ďalej. Vďaka tomu sa hriadeľ krokového motora otáča krok za krokom tak, že napája jednu cievku súčasne.
Touto metódou otáčame hriadeľ krok za krokom energiou cievky v poradí. Toto sa nazýva štvorkrokové sekvencie, pretože to trvá štyri kroky.
Krokový motor môžete otáčať pomocou metódy POLOVÝ KROK (metóda 8-sekvencie) podľa nižšie uvedených hodnôt.
Krok |
Cievka A |
Cievka B |
Cievka C. |
Cievka D |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Súčasti sú povinné
Hardvér:
- ARM7-LPC2148
- Integrovaný obvod ovládača motora ULN2003
- LED - 4
- STEPPER MOTOR (28BYJ-48)
- CHLADIČKA
- SPOJOVACIE DRÔTY
Softvér:
- Keil uVision5
- Nástroj Flasic Magic
Krokový motor (28BYJ-48)
Krokový motor 28BYJ-48 je už znázornený na obrázku vyššie. Jedná sa o Unipolárny krokový motor, ktorý vyžaduje napájanie 5V. 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 sú Arduino, Raspberry Pi, STM32, ARM atď.
Na jeho napájanie však potrebujeme integrovaný obvod motora, napríklad ULN2003, pretože krokové motory spotrebúvajú vysoký prúd a môže poškodiť mikrokontroléry.
Špecifikácie 28BYJ-48 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
- Prepojovací krokový motor s MSP430G2
Krokový motor je možné ovládať aj bez mikrokontroléra, viď tento obvod ovládača krokového motora.
Ovládač krokového motora ULN2003
Väčšina krokových motorov bude pracovať iba pomocou modulu budiča. Je to preto, že riadiaci modul (v našom prípade LPC2148) nebude schopný poskytnúť dostatok prúdu zo svojich I / O pinov na to, aby motor fungoval. Ako ovládač krokového motora teda použijeme externý modul ako modul ULN2003.
V tomto projekte použijeme IC budiča motora ULN2003. Pinový diagram IC je uvedený nižšie:
Kolíky (IN1 až IN7) sú vstupné kolíky na pripojenie výstupu mikrokontroléra a OUT1 až OUT7 sú zodpovedajúce výstupné kolíky na pripojenie vstupu krokových motorov. COM dostane kladné zdrojové napätie potrebné pre výstupné zariadenia a pre externý zdroj napájania.
Schéma zapojenia
Schéma zapojenia prepojenia krokového motora s ARM-7 LPC2148 je uvedená nižšie
ARM7-LPC2148 s integrovaným obvodom budiča ULN2003
GPIO piny LPC2148 (P0,7 až P0,10) sa považujú za výstupné piny, ktoré sú spojené so vstupnými pinmi (IN1-IN4) IC ULN2003.
LPC2148 kolíky |
PINY ULN2003 IC |
P0.7 |
IN1 |
P0.8 |
IN2 |
P0,9 |
IN3 |
P.10 |
IN4 |
5V |
KOM |
GND |
GND |
Pripojenie IC ULN2003 s krokovým motorom (28BYJ-48)
Výstupné piny (OUT1-OUT4) ULN2003 IC sú pripojené k pinom krokových motorov (modrá, ružová, žltá a oranžová).
ULN2003 IC PINY |
PINY KROKOVÉHO MOTORA |
OUT1 |
MODRÁ |
OUT2 |
RUŽOVÁ |
OUT3 |
ŽLTÁ |
OUT4 |
ORANŽOVÁ |
KOM |
ČERVENÁ (+ 5 V) |
LED diódy s IN1 až IN4 ULN2003
Štyri LED (LED1, LED2, LED4, LED4) anódové kolíky sú spojené s kolíkmi IN1, IN2, IN3 a IN4 ULN2003 a katóda LED je pripojená k GND, čo znamená impulzy z LPC2148. Môžeme si všimnúť vzor poskytnutých impulzov. Vzor je uvedený na ukážkovom videu priloženom na konci.
Programovanie ARM7-LPC2148 pre krokový motor
Na programovanie ARM7-LPC2148 potrebujeme keil uVision & Flash Magic nástroj. Na programovanie karty ARM7 Stick cez port micro USB používame kábel USB. Napíšeme kód pomocou Keila a vytvoríme hexadecimálny súbor. Potom sa HEX súbor nahrá na flash disk ARM7 pomocou Flash Magic. Ak sa chcete dozvedieť viac o inštalácii keil uVision a Flash Magic a o tom, ako ich používať, kliknite na odkaz Začíname s mikrokontrolérom ARM7 LPC2148 a naprogramujte ho pomocou Keil uVision.
Celý kód na riadenie krokového motora s ARM 7 je uvedený na konci tohto tutoriálu, tu vysvetľujeme niekoľko jeho častí.
1. Pre použitie metódy FULL STEP-ONE PHASE ON musíme zahrnúť nasledujúci príkaz. V programe teda používame nasledujúci riadok
nepodpísaný znak v smere hodinových ručičiek = {0x1,0x2,0x4,0x8}; // Príkazy pre otáčanie v smere hodinových ručičiek unsigned char proti smeru hodinových ručičiek = {0x8,0x4,0x2,0x1}; // Príkazy na otáčanie proti smeru hodinových ručičiek
2. Nasledujúce riadky sa používajú na inicializáciu pinov PORT0 ako výstupu a ich nastavenie na LOW
PINSEL0 = 0x00000000; // Nastavenie pinov PORT0 IO0DIR - = 0x00000780; // Nastavenie pinov P0.7, P0.8, P0.9, P0.10 ako VÝSTUP IO0CLR = 0x00000780; // Nastavenie P0.7, P0.8, P0.9, P0.10 pinov VÝSTUP ako NÍZKY
3. Nastavte piny PORT (P0,7 na P0,10) VYSOKÉ podľa príkazov v smere hodinových ručičiek pomocou tohto pre slučku so oneskorením
pre (int j = 0; j
To isté pre Anti-clock Wise
pre (int z = 0; z
4. Zmeňte čas oneskorenia, aby ste zmenili rýchlosť otáčania krokového motora
oneskorenie (0x10000); // Zmenou tejto hodnoty zmeníte rýchlosť otáčania (0x10000) -Full speed (0x50000) -Gets slow (0x90000) -Gets slow than previous. Takže zvyšovaním oneskorenia znižujeme rýchlosť otáčania.
5. Počet krokov pre jednu úplnú rotáciu je možné zmeniť pomocou nižšie uvedeného kódu
int no_of_steps = 550; // Zmeňte túto hodnotu na požadovaný počet otáčok krokov (550 umožňuje jedno úplné otočenie)
Za môj krokový motor som dostal 550 krokov za úplné otočenie a 225 za polovičné otočenie. Zmeňte to teda podľa svojich požiadaviek.
6. Táto funkcia sa používa na vytvorenie času oneskorenia.
void delay (unsigned int value) // Funkcia na vygenerovanie oneskorenia { unsigned int z; pre (z = 0; z
Kompletný kód s ukážkovým videom je uvedený nižšie.