- Wymagane materiały
- Silnik krokowy (28BYJ-48)
- Układ scalony sterownika silnika ULN2003
- Schemat obwodu i połączenia
- Obrotowy silnik krokowy z STM32F103C8
- PROGRAMOWANIE STM32 dla silnika krokowego
Silnik krokowy to bezszczotkowy silnik prądu stałego, który można obracać pod małymi kątami, kąty te nazywane są krokami. Generalnie silnik krokowy wykorzystuje 200 kroków, aby wykonać obrót o 360 stopni, co oznacza, że obraca się o 1,8 stopnia na krok. Silnik krokowy jest używany w wielu urządzeniach wymagających precyzyjnego ruchu obrotowego, takich jak roboty, anteny, dyski twarde itp. Silnik krokowy możemy obracać pod dowolnym kątem, wydając mu odpowiednie instrukcje. Dostępne są głównie dwa typy silników krokowych, jednobiegunowy i bipolarny. Unipolar jest łatwiejszy w obsłudze, kontroli, a także łatwiejszy do zdobycia. W tym samouczku łączymy silnik krokowy z płytą STM32F103C8 (niebieska pigułka).
Wymagane materiały
- STM32F103C8 (niebieska pigułka)
- Silnik krokowy (28BYJ-48)
- ULN2003 IC
- Potencjometr 10k
- Płytka prototypowa
- Przewody połączeniowe
Silnik krokowy (28BYJ-48)
28BYJ-48 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, więc jest stosunkowo łatwa do sterowania za pomocą dowolnego mikrokontrolera, takiego jak Arduino, Raspberry Pi lub STM32, 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.
Kolejną ważną informacją, na którą należy zwrócić uwagę, jest kąt kroku: 5,625 ° / 64. Oznacza to, że silnik pracujący w 8-stopniowej sekwencji przesunie się o 5,625 stopnia na każdy krok i będzie wymagał 64 kroków (5,625 * 64 = 360), aby wykonać jeden pełny obrót. Inne specyfikacje są podane w poniższym arkuszu danych:
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
Silnik krokowy może być również sterowany bez mikrokontrolera, patrz ten obwód sterownika silnika krokowego.
Układ scalony sterownika silnika ULN2003
Służy do napędzania silnika zgodnie z impulsami otrzymywanymi z mikrokontrolera. Poniżej znajduje się schemat obrazkowy ULN2003:
Piny (IN1 do IN7) są pinami wejściowymi, a (OUT 1 do OUT 7) są odpowiednimi pinami wyjściowymi. COM ma dodatnie napięcie źródła wymagane dla urządzeń wyjściowych. Dalsze połączenia silnika krokowego są podane poniżej w sekcji schematu połączeń.
Schemat obwodu i połączenia
Poniżej znajduje się wyjaśnienie połączeń dla powyższego schematu połączeń.
STM32F103C8 (niebieska pigułka)
Jak widać na poniższym schemacie, piny PWM są oznaczone w formacie falowym (~), takich pinów jest 15, które można wykorzystać do wyjścia impulsowego do silnika krokowego. Potrzebujemy tylko czterech pinów, używamy (PA0 doPA3).
STM32F103C8 z układem scalonym sterownika silnika ULN2003
Piny (PA0 do PA3) są uważane za piny wyjściowe, które są połączone ze stykami wejściowymi (IN1-IN4) układu scalonego ULN2003.
STYKI STM32F103C8 |
STYKI UKŁADU ULN2003 |
PA0 |
W 1 |
PA1 |
W 2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
Układ scalony ULN2003 z silnikiem krokowym (28BYJ-48)
Piny wyjściowe (OUT1-OUT4) układu ULN2003 są połączone z pinami silników krokowych (pomarańczowy, żółty, różowy i niebieski).
STYKI UKŁADU ULN2003 |
KOŁKI SILNIKA KROKOWEGO |
WYJ1 |
POMARAŃCZOWY |
OUT2 |
ŻÓŁTY |
OUT3 |
RÓŻOWY |
OUT4 |
NIEBIESKI |
COM |
CZERWONY |
STM32F103C8 z potencjometrem
Potencjometr służy do ustawiania prędkości silnika krokowego.
POTENCJOMETR |
STM32F103C8 |
LEWO (WEJŚCIE) |
3.3 |
CENTRUM (WYJŚCIE) |
PA4 |
PRAWO (GND) |
GND |
Obrotowy silnik krokowy z STM32F103C8
Poniżej znajduje się kilka kroków do obsługi silnika krokowego:
- Ustaw prędkość silnika krokowego, zmieniając potencjometr.
- Następnie ręcznie wprowadź kroki obracania w kierunku zgodnym z ruchem wskazówek zegara (+ wartości) lub przeciwnie do ruchu wskazówek zegara (-wartości) za pomocą MONITORA SZEREGOWEGO dostępnego w ARDUINO IDE (Narzędzia-> Monitor szeregowy) lub CTRL + SHIFT + M.
- Zgodnie z wartością wejściową podaną w monitorze szeregowym określone kroki obrotów mają miejsce w silniku krokowym.
Na przykład
WARTOŚĆ PODANA W MONITORZE SZEREGOWYM |
OBRÓT |
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 |
PROGRAMOWANIE STM32 dla silnika krokowego
Podobnie jak w poprzednim samouczku, zaprogramowaliśmy STM32F103C8 z Arduino IDE przez port USB bez użycia programatora FTDI. Aby dowiedzieć się o programowaniu STM32 z Arduino IDE, kliknij link. Możemy kontynuować programowanie jak Arduino. Kompletny kod jest podany na końcu projektu.
Najpierw musimy dołączyć pliki biblioteki steppera #include
#zawierać
Wtedy definiujemy nie. kroków do wykonania przy obrocie, tutaj używamy 32, ponieważ używamy pełnego kroku (sekwencja 4 kroków), a więc (360/32 = 11,25 stopnia). Tak więc w jednym kroku wał porusza się o 11,25 stopnia, czyli o kąt kroku. W sekwencji 4-stopniowej wymagane są 4 kroki do jednego pełnego obrotu.
# zdefiniować KROKI 32
Możemy również użyć trybu pół kroku, w którym jest 8-stopniowa sekwencja (360/64 = 5,625) kąta kroku.
Liczba kroków na obrót = 360 / KĄT KROKU
Ponieważ ustawiamy prędkość, musimy wziąć wartość analogową z PA4, który jest podłączony do potencjometru. Więc musimy zadeklarować pin do tego
const int speedm = PA4
Następnie przekonwertowaliśmy wartość analogową na cyfrową, przechowując te wartości w zmiennej typu integer, po czym musimy zmapować wartości ADC do ustawienia prędkości, więc używamy poniższej instrukcji. Dowiedz się więcej o używaniu ADC z STM32 tutaj.
int adc = analogRead (speedm); int wynik = mapa (adc , 0, 4096, 1, 1023);
Aby ustawić prędkość, używamy stepper.setSpeed (wynik); Mamy zakres prędkości (1-1023).
Musimy utworzyć instancję jak poniżej, aby ustawić piny, które są podłączone do silnika. Uważaj na tych krokach, ponieważ większość z nich popełnia błąd w tym schemacie. Dają zły wzór iz tego powodu cewki nie mogą być zasilane energią.
Stepper stepper (STEPS, PA0, PA2, PA1, PA3);
Poniższe zestawienie służy do uzyskania wartości kroków z monitora szeregowego. Na przykład potrzebujemy 2048 wartości dla jednego pełnego obrotu (32 * 64 = 2048), czyli 64 będzie przełożeniem, a 32 będzie sekwencją pół kroku dla jednego obrotu.
rotate = Serial.parseInt ();
Poniższy kod służy do wywołania instancji i uruchomienia silnika. Jeśli wartość rotate wynosi 1, wywołuje funkcję stepper jeden raz i jeden ruch jest wykonywany.
stepper.step (obróć);
Pełny kod z filmem demonstracyjnym jest podany poniżej. Sprawdź również wszystkie projekty związane z silnikami krokowymi tutaj, z połączeniami z różnymi innymi mikrokontrolerami