Co to są silniki krokowe?
Silniki krokowe to bezszczotkowe i synchroniczne silniki, które mogą podzielić swój pełny cykl obrotu na wiele dyskretnych kroków. W przeciwieństwie do innych bezszczotkowych silników prądu stałego, które działają w sposób ciągły, gdy na nich nakładane jest stałe napięcie prądu stałego Puls cyfrowy.
Rodzaje silników krokowych
Zwykle stosuje się dwa rodzaje silników krokowych:
Przez większość czasu możemy rozróżnić te dwa silniki, patrząc na liczbę przewodów. Silnik krokowy z 6 przewodów można sklasyfikować jako Jednobiegunowy i a 4 przewody Silnik można sklasyfikować jako Dwubiegunowy. Główną różnicą między nimi jest środkowy drut kranowy, który dzieli pełną wiatę cewki na pół.
Kontrolowanie tych silników stepowych wymaga sterowników silnika. Najczęściej używane sterowniki obejmują ULN2003, L298N i A4988. W tym artykule będziemy kontynuować dwubiegunowy sterownik sterowany silnikiem znany jako A4988 Kierowca motocyklu.
Wymagane komponenty
Następujące elementy są wymagane do kontrolowania silnika krokowego z Arduino:
Dlaczego warto korzystać z sterownika silnika
Zasadniczo silniki krokowe są trudne do kontrolowania za pomocą szpilki Arduino. Przyciągają prąd 20ma Z powodu zachowania elektromagnetycznego silników, które przekracza aktualne granice pinów Arduino. Kolejnym problemem jest napięcie odrzutowe, ze względu na naturę elektromagnetyczną, silniki nadal wytwarzają energię elektryczną, nawet po cięciu zasilania stworzy wystarczające napięcie ujemne, niż może usmażyć Arduino.
Rozwiązanie to jest użycie chipsów lub tarczy kierowcy silnika. Sterowniki silnikowe mają diody, które zapobiegają Arduino przed napięciami ujemnymi i obwodami tranzystorowymi, które zapewniają wystarczającą moc, aby uruchomić silnik.
Moduł sterownika A4988
A4988 jest jednym z najlepszych dostępnych kontrolerów silników. Ten zintegrowany sterownik silnika sprawia, że bardzo łatwo jest połączyć się z mikrokontrolerem, ponieważ tylko dwa piny są wystarczające do kontrolowania prędkości i kierunku silnika krokowego. Korzystanie z dedykowanego kontrolera silnika ma wiele zalet:
A4988 Pinout
Łącznie 16 pinów znajduje się w sterowniku A4988 w następujący sposób:
Schemat okablowania: Podłączenie A4988 z Arduino UNO i silnikiem krokowym
Podłącz silnik krokowy z Arduino, śledząc poniżej obwód poniżej:
Notatka: Silnik A4988 jest wyposażony w kondensator ceramiczny o niskim ESR, który nie może obsługiwać skoków napięcia LC. Lepiej jest użyć kondensator elektrolityczny Pomiędzy szpilkami VMOT i GND, tutaj użyliśmy kondensatora 100Uf po zasilaczu.
Połączenia A4988
A4988 | Połączenie |
---|---|
Vmot | 8-35v |
GND | Motor GND |
SLP | RESETOWANIE |
RST | SLP |
Vdd | 5v |
GND | Logic GND |
STP | Pin 3 |
Reż | Pin 2 |
1a, 1b, 2a, 2b | Silnik krokowy |
Jak ustawić prądowy limit silnika krokowego
Przed podłączeniem Arduino z silnikiem krokowym ważne jest ustawienie obecny limit sterownika silnika niższego niż ocena prądu silnika krokowego, w przeciwnym razie silnik się rozgrzewa.
Mały potencjometr obecny na sterowniku A4988 może ustawić prądowy limit, jak pokazano na obrazie. Na zwolenniczce obrotu granica prądu wzrasta i na przeciwnie do ruchu wskazówek obrotowych limit prądu.
Jak kodować silnik stepowy za pomocą Arduino
Teraz, gdy ukończyliśmy nasz obwód i ustaliliśmy prądowy limit sterowników silnikowych, czas kontrolować silniki krokowe za pomocą Arduino. Prześlij następujący kod na płytę Arduino za pomocą IDE, ponieważ ten kod nie wymaga uruchomienia żadnej standardowej biblioteki.
// zadeklarowane kołki silnika i stopnie na rewolucję
#określić kierunek 2
#definicja kroku 3
#definicja StepsInonerevolution 200
void setup ()
// deklaruj szpilki jako wyjście:
pinmode (krok, wyjście);
pinmode (kierunek, wyjście);
void Loop ()
DigitalWrite (kierunek, wysoki); // silnik będzie obrócił się zgodnie z ruchem wskazówek zegara
// silnik powoli ukończy jedną rewolucję
dla (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (krok, wysoki);
opóźniające się (2000);
DigitalWrite (krok, niski);
opóźniające się (2000);
opóźnienie (1000);
DigitalWrite (kierunek, niski); // silnik będzie obrócił się przeciwnie
// silnik szybko ukończy jedną rewolucję
dla (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (krok, wysoki);
opóźniające się (1000);
DigitalWrite (krok, niski);
opóźniające się (1000);
opóźnienie (1000);
Wyjaśnienie kodu
Zaczniemy nasz szkic od definiowania krok I kierunek szpilki. Tutaj użyłem ich z pinami Arduino 2 i 3. Stała Stepinonerevolution jest zdefiniowany wraz z jego wartością 200, ustawiłem sterownik silnika w jego pełnym trybie krokowym 200 kroków na rewolucję.
#określić kierunek 2
#definicja kroku 3
#definicja StepsInonerevolution 200
w organizować coś() sekcja za pomocą pinmode () Funkcja Pins sterowania silnikiem są ustawione jako wyjście cyfrowe.
void setup ()
pinmode (krok, wyjście);
pinmode (kierunek, wyjście);
w pętla() Sekcja, silnik ukończy jedną rewolucję powoli w kierunku zgodnie z ruchem wskazówek zegara i jedna rewolucja szybko w kierunku przeciwnym. To dlatego, że ustawiliśmy DigitalWrite () jako wysoki i niski alternatywnie i malejący opóźniający się () od 2 milisekund do 1 milisekund.
Spójrz na kod pokazany poniżej, DigitalWrite (kierunek, wysoki); jest ustawione na WYSOKI wartość, silnik będzie obrócił się zgodnie z ruchem wskazówek zegara.
opóźniający się () jest ustawiony na 2 milisekundy, silnik będzie powoli obracać się.
\
void Loop ()
DigitalWrite (kierunek, wysoki); // silnik będzie obrócił się zgodnie z ruchem wskazówek zegara
// silnik powoli ukończy jedną rewolucję
dla (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (krok, wysoki);
opóźniające się (2000);
DigitalWrite (krok, niski);
opóźniające się (2000);
Podobnie w tym rozdziale silnik będzie szybciej obrócić z powodu mniejszych opóźnień w milisekundach, ale w przeciwnym kierunku (w kierunku przeciwnym do ruchu wskazówek zegara) ze względu na niską wartość DigitalWrite (kierunek, niski):
DigitalWrite (kierunek, niski); // silnik będzie obrócił się przeciwnie
// silnik szybko ukończy jedną rewolucję
dla (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (krok, wysoki);
opóźniające się (1000);
DigitalWrite (krok, niski);
opóźniające się (1000);
Kontroluj prędkość silnika
Prędkość jest określana przez częstotliwość impulsu generowanego na krok szpilka; Możemy kontrolować częstotliwość impulsu, zmieniając:
opóźnieniemicroseconds ();
Krótsze opóźnienie oznacza wyższą częstotliwość i szybciej silnik działa.
Kontrola kierunku wirowania
Kierunek wirowania silnika jest kontrolowany przez ustawienie styku kierunku wysokiego lub niskiego, używamy do tego następującej funkcji:
DigitalWrite (kierunek, wysoki); //Zgodnie ze wskazówkami zegara
DigitalWrite (kierunek, niski); //Odwrotnie
Jak w powyższym przykładzie, nie użyliśmy żadnej biblioteki Arduino, ale możesz użyć biblioteki silnika Stepper w Arduino IDE. Kolejna bardzo znana biblioteka dostępna w IDE, najczęściej używana do silników krokowych Accelstepper.H. Możesz dołączyć tę bibliotekę, podążając tą ścieżką:
Przejdź do Sketch> Uwzględnij bibliotekę> Zarządzaj bibliotekami> Wyszukiwanie> Accelstepper> Instaluj:
Wniosek
Ten samouczek pokazał, że Steppers Motors nie są tak ciężko pracować. Omówiliśmy główne aspekty kontrolowania silnika krokowego za pomocą Arduino i silnika sterownika. Tak więc, jeśli planujesz projekt, który wymaga dokładnego ustawienia czegoś silnik krokowy będzie idealnym wyborem.