- Silnik krokowy
- Obracanie silnika krokowego z ARM7-LPC2148
- Wymagane składniki
- Silnik krokowy (28BYJ-48)
- Sterownik silnika krokowego ULN2003
- Schemat obwodu
- Programowanie ARM7-LPC2148 dla silnika krokowego
W dzisiejszym świecie automatyki silnik krokowy i silnik serwo to dwa najczęściej używane silniki w systemach wbudowanych. Oba są używane w różnych automatach, takich jak ramiona robotów, maszyny CNC, kamery itp. W tym samouczku zobaczymy, jak połączyć silnik krokowy z ARM7-LPC2148 i jak kontrolować jego prędkość. Jeśli jesteś nowy w ARM7, zacznij od poznania ARM7-LPC2148 i jego narzędzi programistycznych.
Silnik krokowy
Silnik krokowy to bezszczotkowy silnik prądu stałego, który można obracać pod małymi kątami, te kąty nazywane są krokami. Możemy obracać silnik krokowy krok po kroku, podając cyfrowe impulsy do jego pinów. Silniki krokowe są niedrogie i mają solidną konstrukcję. Prędkość silnika można regulować zmieniając częstotliwość impulsów cyfrowych.
Istnieją dwa typy silników krokowych dostępnych na podstawie rodzaju uzwojenia stojana: UNIPOLARNY i BIPOLAR. Tutaj używamy silnika krokowego UNIPOLAR, który jest najczęściej używanym silnikiem krokowym . Aby obrócić silnik krokowy, musimy kolejno zasilać cewki silnika krokowego. Na podstawie operacji obrotowej są podzielone na dwa tryby:
- Tryb pełnego kroku: (Sekwencja 4-etapowa)
- Jednofazowe na stepping (WAVE STEPPING)
- Dwufazowe wejście
- Tryb pół kroku (sekwencja 8-krokowa)
Aby dowiedzieć się więcej o silniku krokowym i jego działaniu, kliknij link.
Obracanie silnika krokowego z ARM7-LPC2148
Tutaj użyjemy trybu FULL STEP: ONE PHASE ON lub WAVE STEPPING, aby obrócić silnik krokowy z ARM7-LPC2148
W tej metodzie będziemy zasilać tylko jedną cewkę (jeden pin LPC2148) na raz. Oznacza to, że jeśli pierwsza cewka A jest zasilana przez krótki czas, wał zmieni swoje położenie, a następnie cewka B zostanie zasilona w tym samym czasie, a wał ponownie zmieni swoje położenie. Tak samo, cewka C, a następnie cewka D jest zasilana energią, aby przesunąć wał dalej. To sprawia, że wał silnika krokowego obraca się krok po kroku, zasilając jedną cewkę na raz.
Tą metodą obracamy wał krok po kroku, kolejno zasilając cewkę. Nazywa się to sekwencją czterech kroków, ponieważ składa się z czterech kroków.
Silnik krokowy można obracać metodą HALF STEP (metoda 8-sekwencyjna) zgodnie z wartościami podanymi poniżej.
Krok |
Cewka A |
Cewka B |
Cewka C |
Cewka 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 |
Wymagane składniki
Sprzęt komputerowy:
- ARM7-LPC2148
- Układ scalony sterownika silnika ULN2003
- LED - 4
- SILNIK KROKOWY (28BYJ-48)
- CHLEB
- PRZEWODY ŁĄCZĄCE
Oprogramowanie:
- Keil uVision5
- Flasic Magic Tool
Silnik krokowy (28BYJ-48)
Silnik krokowy 28BYJ-48 jest już pokazany na powyższym obrazku. Jest to jednobiegunowy silnik krokowy, który wymaga zasilania 5V. Silnik ma układ jednobiegunowy z 4 cewkami, a każda cewka jest przystosowana do napięcia + 5 V, dzięki czemu można go stosunkowo łatwo kontrolować za pomocą dowolnych mikrokontrolerów, takich jak Arduino, Raspberry Pi, STM32, ARM itp.
Ale potrzebujemy układu scalonego Motor Drive, takiego jak ULN2003, aby go napędzać, ponieważ silniki krokowe zużywają duży prąd i mogą uszkodzić mikrokontrolery.
Specyfikacje 28BYJ-48 podano w arkuszu danych poniżej:
Sprawdź również połączenie silnika krokowego z innymi mikrokontrolerami:
- Połączenie silnika krokowego z Arduino Uno
- Sterowanie silnikiem krokowym z Raspberry Pi
- Połączenie silnika krokowego z mikrokontrolerem 8051
- Połączenie silnika krokowego z mikrokontrolerem PIC
- Połączenie silnika krokowego z MSP430G2
Silnik krokowy może być również sterowany bez mikrokontrolera, patrz ten obwód sterownika silnika krokowego.
Sterownik silnika krokowego ULN2003
Większość silników krokowych będzie działać tylko z pomocą modułu sterownika. Dzieje się tak, ponieważ moduł kontrolera (w naszym przypadku LPC2148) nie będzie w stanie dostarczyć wystarczającej ilości prądu ze swoich pinów I / O do pracy silnika. Więc użyjemy zewnętrznego modułu, takiego jak moduł ULN2003, jako sterownika silnika krokowego.
W tym projekcie użyjemy układu scalonego sterownika silnika ULN2003. Schemat pinów układu scalonego podano poniżej:
Piny (IN1 do IN7) to piny wejściowe do podłączenia wyjścia mikrokontrolera, a OUT1 do OUT7 to odpowiednie piny wyjściowe do podłączenia wejścia silników krokowych. COM ma dodatnie napięcie źródła wymagane dla urządzeń wyjściowych i zewnętrznego źródła zasilania.
Schemat obwodu
Schemat obwodu dla połączenia silnika krokowego z ARM-7 LPC2148 jest podany poniżej
ARM7-LPC2148 z układem scalonym sterownika silnika ULN2003
Piny GPIO LPC2148 (P0.7 do P0.10) są uważane za piny wyjściowe, które są połączone ze stykami wejściowymi (IN1-IN4) układu ULN2003.
Piny LPC2148 |
STYKI UKŁADU ULN2003 |
P0.7 |
W 1 |
P0.8 |
W 2 |
P0.9 |
IN3 |
P.10 |
IN4 |
5V |
COM |
GND |
GND |
Połączenia układu ULN2003 z silnikiem krokowym (28BYJ-48)
Piny wyjściowe (OUT1-OUT4) układu ULN2003 są połączone z pinami silników krokowych (niebieski, różowy, żółty i pomarańczowy).
STYKI UKŁADU ULN2003 |
KOŁKI SILNIKA KROKOWEGO |
WYJ1 |
NIEBIESKI |
OUT2 |
RÓŻOWY |
OUT3 |
ŻÓŁTY |
OUT4 |
POMARAŃCZOWY |
COM |
CZERWONY (+ 5 V) |
Diody LED z IN1 do IN4 ULN2003
Cztery piny anodowe LED (LED1, LED2, LED4, LED 4) są połączone odpowiednio z pinami IN1, IN2, IN3 i IN4 ULN2003, a katoda diod jest podłączona do GND, który ma wskazywać impulsy z LPC2148. Możemy zauważyć wzór podanych impulsów. Wzór jest pokazany na filmie demonstracyjnym dołączonym na końcu.
Programowanie ARM7-LPC2148 dla silnika krokowego
Aby zaprogramować ARM7-LPC2148 potrzebujemy narzędzia keil uVision & Flash Magic. Używamy kabla USB do programowania ARM7 Stick przez port micro USB. Piszemy kod za pomocą Keila i tworzymy plik hex, a następnie plik HEX jest sflashowany do pendrive'a ARM7 przy użyciu Flash Magic. Aby dowiedzieć się więcej o instalacji keil uVision i Flash Magic oraz o tym, jak z nich korzystać, kliknij łącze Pierwsze kroki z mikrokontrolerem ARM7 LPC2148 i zaprogramuj go za pomocą Keil uVision.
Kompletny kod do sterowania silnikiem krokowym za pomocą ARM 7 znajduje się na końcu tego samouczka, tutaj wyjaśniamy kilka jego części.
1. Aby skorzystać z metody FULL STEP-ONE PHASE ON musimy dołączyć poniższe polecenie. Więc używamy następującego wiersza w programie
unsigned char clockwise = {0x1,0x2,0x4,0x8}; // Polecenia obracania w prawo unsigned char anticlockwise = {0x8,0x4,0x2,0x1}; // Polecenia do obracania w lewo
2. Następujące linie służą do inicjalizacji pinów PORT0 jako wyjścia i ustawiania ich na LOW
PINSEL0 = 0x00000000; // Ustawienie pinów PORT0 IO0DIR - = 0x00000780; // Ustawienie pinów P0.7, P0.8, P0.9, P0.10 jako OUTPUT IO0CLR = 0x00000780; // Ustawienie pinów P0.7, P0.8, P0.9, P0.10 OUTPUT jako LOW
3. Ustaw styki PORT (P0.7 do P0.10) HIGH zgodnie z poleceniami zgodnymi z ruchem wskazówek zegara, używając tego dla pętli z opóźnieniem
dla (int j = 0; j
To samo dotyczy funkcji Anti-clock Wise
for (int z = 0; z
4. Zmień czas opóźnienia, aby zmienić prędkość obrotową silnika krokowego
opóźnienie (0x10000); // Zmień tę wartość, aby zmienić prędkość obrotu (0x10000) -Pełna prędkość (0x50000) -Zostaje wolna (0x90000) -Zostaje wolna niż poprzednia. Zatem zwiększając opóźnienie zmniejszamy prędkość obrotową.
5. Liczbę kroków dla jednego pełnego obrotu można zmienić za pomocą poniższego kodu
int no_of_steps = 550; // Zmień tę wartość dla wymaganej liczby kroków obrotu (550 daje jeden pełny obrót)
Dla mojego silnika krokowego mam 550 kroków dla pełnego obrotu i 225 dla połowy obrotu. Więc zmień to zgodnie ze swoimi wymaganiami.
6. Ta funkcja służy do tworzenia czasu opóźnienia.
void delay (unsigned int value) // Funkcja generująca opóźnienie { unsigned int z; dla (z = 0; z
Pełny kod z filmem demonstracyjnym znajduje się poniżej.