- Krokový motor
- Otáčení krokového motoru s ARM7-LPC2148
- Požadované komponenty
- Krokový motor (28BYJ-48)
- Ovladač krokového motoru ULN2003
- Kruhový diagram
- Programování ARM7-LPC2148 pro krokový motor
V dnešním automatizovaném světě jsou krokový motor a servomotor dva nejčastěji používané motory ve vestavěných systémech. Oba se používají v různých automatizačních strojích, jako jsou robotická ramena, CNC stroje, kamery atd. V tomto tutoriálu uvidíme, jak propojit krokový motor s ARM7-LPC2148 a jak řídit jeho rychlost. Pokud jste v ARM7 nováčkem, začněte tím, že se seznámíte s ARM7-LPC2148 a jeho programovacími nástroji.
Krokový motor
Krokový motor je střídavý stejnosměrný motor, který lze otáčet v malých úhlech, tyto úhly se nazývají kroky. Krokový motor můžeme otáčet krok za krokem tím, že do jeho kolíků dáváme digitální pulsy. Krokové motory jsou levné a mají robustní konstrukci. Rychlost motoru lze regulovat změnou frekvence digitálních pulzů.
Na základě typu vinutí statoru jsou k dispozici dva typy krokových motorů: UNIPOLAR a BIPOLAR. Zde používáme krokový motor UNIPOLAR, který je nejčastěji používaným krokovým motorem . K otáčení krokového motoru potřebujeme postupně aktivovat cívky krokového motoru. Na základě rotačního provozu jsou rozděleny do dvou režimů:
- Full Step Mode: (4-Step Sequence)
- Jednofázové šlápnutí (KROK VLNY)
- Dvoufázové při šlapání
- Půlkrokový režim (8kroková sekvence)
Chcete-li se dozvědět více o krokovém motoru a jeho provozu, klikněte na odkaz.
Otáčení krokového motoru s ARM7-LPC2148
Zde použijeme režim FULL STEP: ONE PHASE ON nebo WAVE STEPPING k otáčení krokového motoru s ARM7-LPC2148
V této metodě budeme napájet pouze jednu cívku (jeden pin LPC2148) najednou. To znamená, že pokud je první cívka A napájena na malou dobu, hřídel změní svou polohu a poté bude cívka B napájena na stejnou dobu a hřídel opět změní svou polohu. Stejně jako v tomto případě je cívka C a poté cívka D pod napětím, aby se hřídel posunula dále. Díky tomu se hřídel krokového motoru otáčí krok za krokem napájením jedné cívky po druhé.
Touto metodou otáčíme hřídel krok za krokem napájením cívky v pořadí. Tomu se říká čtyři krokové sekvence, protože to trvá čtyři kroky.
Krokový motor můžete otáčet pomocí metody POLOVÝ KROK (metoda 8 sekvencí) podle níže uvedených hodnot.
Krok |
Cívka A |
Cívka B |
Cívka C. |
Cívka 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 |
Požadované komponenty
Hardware:
- ARM7-LPC2148
- Integrovaný obvod ovladače motoru ULN2003
- LED - 4
- STEPPER MOTOR (28BYJ-48)
- BREADBOARD
- PŘIPOJOVACÍ DRÁTY
Software:
- Keil uVision5
- Flasic Magic Tool
Krokový motor (28BYJ-48)
Krokový motor 28BYJ-48 je již zobrazen na obrázku výše. Jedná se o Unipolární krokový motor, který vyžaduje napájení 5 V. Motor má unipolární uspořádání se 4 cívkami a každá cívka je dimenzována na + 5 V, proto je jeho ovládání relativně snadné pomocí jakýchkoli mikrokontrolérů, jako jsou Arduino, Raspberry Pi, STM32, ARM atd.
K řízení však potřebujeme integrovaný obvod motoru, jako je ULN2003, protože krokové motory spotřebovávají vysoký proud a mohou poškodit mikrokontroléry.
Specifikace 28BYJ-48 jsou uvedeny v datovém listu níže:
Zkontrolujte také propojení s krokovým motorem s jinými mikrokontroléry:
- Propojovací krokový motor s Arduino Uno
- Ovládání krokového motoru s Raspberry Pi
- Rozhraní krokového motoru s mikrokontrolérem 8051
- Propojovací krokový motor s mikrokontrolérem PIC
- Propojovací krokový motor s MSP430G2
Krokový motor lze ovládat také bez mikrokontroléru, viz tento obvod ovladače krokového motoru.
Ovladač krokového motoru ULN2003
Většina krokových motorů bude fungovat pouze pomocí modulu ovladače. Je to proto, že řídicí modul (v našem případě LPC2148) nebude schopen poskytnout dostatek proudu ze svých I / O pinů pro provoz motoru. Jako ovladač krokového motoru tedy použijeme externí modul, jako je modul ULN2003.
V tomto projektu použijeme IC ovladač motoru ULN2003. Pinový diagram IC je uveden níže:
Piny (IN1 až IN7) jsou vstupní piny pro připojení výstupu mikrokontroléru a OUT1 až OUT7 jsou odpovídající výstupní piny pro připojení vstupu krokových motorů. COM je dáno Kladné napětí zdroje požadované pro výstupní zařízení a pro externí zdroj napájení.
Kruhový diagram
Obvodové schéma pro propojení krokového motoru s ARM-7 LPC2148 je uvedeno níže
ARM7-LPC2148 s integrovaným obvodem ovladače motoru ULN2003
GPIO piny LPC2148 (P0.7 až P0.10) jsou považovány za výstupní piny, které jsou spojeny se vstupními piny (IN1-IN4) IC ULN2003.
LPC2148 kolíky |
PINY ULN2003 IC |
P0.7 |
V 1 |
P0.8 |
IN2 |
P0.9 |
IN3 |
P.10 |
IN4 |
5V |
KOM |
GND |
GND |
Připojení IC ULN2003 s krokovým motorem (28BYJ-48)
Výstupní piny (OUT1-OUT4) ULN2003 IC jsou připojeny k pinům krokových motorů (modrá, růžová, žlutá a oranžová).
ULN2003 IC PINY |
PINY STEPPER MOTORU |
OUT1 |
MODRÝ |
OUT2 |
RŮŽOVÝ |
OUT3 |
ŽLUTÁ |
OUT4 |
ORANŽOVÝ |
KOM |
ČERVENÁ (+ 5 V) |
LED diody s IN1 až IN4 ULN2003
Čtyři LED diody (LED1, LED2, LED4, LED 4) jsou připojeny k pinům IN1, IN2, IN3 a IN4 ULN2003 a katoda LED je připojena k GND, což znamená pulsy z LPC2148. Můžeme si všimnout vzoru poskytovaných impulzů. Vzor je uveden na ukázkovém videu připojeném na konci.
Programování ARM7-LPC2148 pro krokový motor
K programování ARM7-LPC2148 potřebujeme nástroj Keil uVision & Flash Magic. Používáme USB kabel k programování ARM7 Stick přes micro USB port. Napíšeme kód pomocí Keila a vytvoříme hexadecimální soubor a poté se soubor HEX přenese na flash disk ARM7 pomocí Flash Magic. Chcete-li se dozvědět více o instalaci keil uVision a Flash Magic a o tom, jak je používat, přejděte na odkaz Začínáme s mikrokontrolérem ARM7 LPC2148 a naprogramujte jej pomocí Keil uVision.
Kompletní kód pro ovládání krokového motoru s ARM 7 je uveden na konci tohoto tutoriálu, zde vysvětlujeme několik jeho částí.
1. Pro použití metody FULL STEP-ONE PHASE ON musíme zahrnout níže uvedený příkaz. V programu tedy použijeme následující řádek
nepodepsaný znak ve směru hodinových ručiček = {0x1,0x2,0x4,0x8}; // Příkazy pro otáčení ve směru hodinových ručiček unsigned char proti směru hodinových ručiček = {0x8,0x4,0x2,0x1}; // Příkazy pro otáčení proti směru hodinových ručiček
2. Následující řádky slouží k inicializaci pinů PORT0 jako výstupu a jejich nastavení na LOW
PINSEL0 = 0x00000000; // Nastavení PORT0 pinů IO0DIR - = 0x00000780; // Nastavení pinů P0.7, P0.8, P0.9, P0.10 jako VÝSTUP IO0CLR = 0x00000780; // Nastavení P0.7, P0.8, P0.9, P0.10 pinů OUTPUT jako LOW
3. Nastavte PORT piny (P0,7 na P0,10) VYSOKÉ podle příkazů ve směru hodinových ručiček pomocí tohoto pro smyčku se zpožděním
pro (int j = 0; j
Totéž pro Anti-Clock Wise
pro (int z = 0; z
4. Změňte dobu zpoždění, abyste změnili rychlost otáčení krokového motoru
zpoždění (0x10000); // Změňte tuto hodnotu a změňte rychlost otáčení (0x10000) -Full speed (0x50000) -Gets slow (0x90000) -Gets slow than previous. Zvyšováním zpoždění tedy snižujeme rychlost otáčení.
5. Počet kroků pro jedno úplné otočení lze změnit pomocí níže uvedeného kódu
int no_of_steps = 550; // Změňte tuto hodnotu pro požadovaný počet kroků rotace (550 dává jedno úplné otočení)
U svého krokového motoru jsem dostal 550 kroků pro úplné otočení a 225 pro poloviční otáčení. Změňte to tedy podle svých požadavků.
6. Tato funkce se používá k vytvoření doby zpoždění.
void delay (unsigned int value) // Funkce pro generování delay { unsigned int z; pro (z = 0; z
Kompletní kód s ukázkovým videem je uveden níže.