Articles

jak sterować silnikiem krokowym za pomocą sterownika A4988 i Arduino

Ten artykuł zawiera wszystko, co musisz wiedzieć o sterowaniu silnikiem krokowym za pomocą sterownika silnika krokowego A4988 i Arduino. Dołączyłem schemat połączeń, samouczek, Jak ustawić aktualny limit i wiele przykładowych kodów.

chociaż możesz używać tego sterownika bez biblioteki Arduino, Gorąco polecam również spojrzeć na przykładowy kod biblioteki AccelStepper na końcu tego samouczka. Ta Biblioteka jest dość łatwa w użyciu i może znacznie poprawić wydajność Twojego sprzętu.

Po każdym przykładzie rozkładam i wyjaśniam, jak działa kod, więc nie powinieneś mieć problemów z modyfikacją go do własnych potrzeb.

Jeśli chcesz dowiedzieć się więcej o innych sterownikach silników krokowych, przydatne mogą być poniższe artykuły:

  • How to control a stepper motor with DRV8825 driver and Arduino
  • 28BYJ-48 Stepper Motor with ULN2003 Driver and Arduino Tutorial
  • How to control a Stepper Motor with Arduino Motor Shield Rev3
  • TB6600 Stepper Motor Driver with Arduino Tutorial

Supplies

Hardware components

A4988 stepper motor driver × 1 Amazon
AliExpress
NEMA 17 stepper motor × 1 Amazon
Arduino Uno Rev3 × 1 Amazon
Power supply (8-35 V) × 1 Amazon
AliExpress
Breadboard × 1 Amazon
Capacitor (100 µF) × 1 Amazon
Jumper wires ~ 10 Amazon
AliExpress
USB cable type A/B × 1 Amazon

lubię używać tego sterownika w połączeniu z tarczą CNC lub płytą rozszerzającą. Taka tarcza zawiera już kondensatory i oferuje łatwy sposób wyboru rozdzielczości microstepping. Sprawia, że okablowanie jest znacznie łatwiejsze i jest świetnym rozwiązaniem, jeśli potrzebujesz bardziej trwałego rozwiązania niż deska do krojenia chleba.

Tools

Small screwdriver Amazon
Multimeter Amazon
Alligator test leads (optional) Amazon

Software

Arduino IDE

Makerguides.com jest uczestnikiem programu Amazon Services LLC Associates, programu reklamowego partnerskiego, którego celem jest zapewnienie witrynom środków do zarabiania opłat reklamowych poprzez reklamowanie i umieszczanie linków do produktów na Amazon.com.

o sterowniku

w sercu sterownika A4988 znajdziesz chip firmy Allegro MicroSystems: sterownik Microstepping A4988 DMOS z tłumaczem i zabezpieczeniem nadprądowym. Ten Zintegrowany Sterownik silnika sprawia, że współpraca z mikrokontrolerem jest bardzo łatwa, ponieważ potrzebujesz tylko dwóch pinów do sterowania zarówno prędkością, jak i kierunkiem silnika krokowego.

sterownik ma maksymalną moc wyjściową 35 V i ± 2 a, co doskonale nadaje się do napędzania małych i średnich silników krokowych, takich jak bipolarny silnik krokowy NEMA 17.

Jeśli chcesz kontrolować większe silniki krokowe, takie jak NEMA 23, spójrz na Sterownik Silnika Krokowego TB6600. Ten sterownik może być używany z tym samym kodem co A4988 i ma Prąd znamionowy 3,5 A.

  • Sterownik Silnika Krokowego TB6600 z samouczkiem Arduino

układ sterownika A4988 ma wbudowane kilka funkcji bezpieczeństwa, takich jak Przetężenie, zwarcie, blokada pod napięciem i Ochrona przed przegrzaniem. Więcej specyfikacji można znaleźć w poniższej tabeli.

A4988 Specifications

Minimum operating voltage 8 V
Maximum operating voltage 35 V
Continuous current per phase 1 A
Maximum current per phase 2 A
Minimum logic voltage 3 V
Maximum logic voltage 5.5 V
Microstep resolution full, 1/2, 1/4, 1/8 and 1/16
Reverse voltage protection? Nie
Wymiary 15,5 × 20,5 mm (0,6″ × 0,8″)
koszt Sprawdź cenę

aby uzyskać więcej informacji, możesz sprawdzić arkusz danych tutaj.

różnice między A4988 i DRV8825

DRV8825 jest dość podobny do A4988, ale istnieją pewne kluczowe różnice:

  • DRV8825 oferuje 1/32 microstepping, podczas gdy A4988 schodzi tylko do 1/16-step. Wyższe mikroprostkowanie powoduje płynniejszą i cichszą pracę, ale nie zawsze jest potrzebne.
  • potencjometr granicy prądu znajduje się w innym miejscu
  • zależność między napięciem odniesienia a granicą prądu jest inna.
  • DRV8825 wymaga minimalnego czasu trwania impulsu krokowego 1,9 µs; A4988 wymaga minimum 1µs.
  • DRV8825 może być używany z zasilaczem silnikowym o wyższym napięciu (45 V vs 35 V). Oznacza to, że jest mniej podatny na uszkodzenia spowodowane skokami napięcia LC.
  • DRV8825 może dostarczyć nieco więcej prądu niż A4988 bez dodatkowego chłodzenia.

zauważ, że pinout DRV8825 jest dokładnie taki sam jak dla A4988, więc może być używany jako zamiennik drop-in!

A4899 (left) vs DRV8825 (right)

Ustawienia Mikrostep

silniki krokowe zwykle mają rozmiar kroku 1,8° lub 200 kroków na obrót, odnosi się to do pełnych kroków. Sterownik microstepping, taki jak A4988, pozwala na wyższe rozdzielczości, umożliwiając pośrednie lokalizacje kroków. Osiąga się to poprzez zasilenie cewek prądem pośrednim.

na przykład, jazda silnikiem w trybie quarter-step da 200-step-per-revolution silnika 800 mikrostepów na obrót przy użyciu czterech różnych poziomów prądu.

A4988 pinout

piny selektora rozdzielczości (rozmiar kroku) (MS1, MS2 i MS3) pozwalają na Wybierz jedną z pięciu rozdzielczości krokowych zgodnie z poniższą tabelą.

MS1 MS2 MS3 Microstep resolution
Low Low Low Full step
High Low Low 1/2 step
Low High Low 1/4 step
High High Low 1/8 step
High High High 1/16 step

wszystkie trzy wejścia mają wewnętrzne Rezystory pull-down 100 kΩ, więc pozostawienie trzech pinów wyboru microstep odłączonych powoduje tryb pełnoetapowy.

często używam tarczy CNC lub płyty rozszerzeń w połączeniu z tymi sterownikami. Płyta rozszerzeń ma 3 przełączniki dip do Ustawienia MS1-MS3 wysoki lub niski, a na osłonie CNC można zainstalować zworki. Jeśli używasz sterownika z deską do krojenia chleba, możesz po prostu użyć przewodów zworki, aby podłączyć kołki selektora do 5 V (tj.

okablowanie – łączenie A4988 z Arduino i silnikiem krokowym

schemat/schemat okablowania dla sterownika silnika krokowego A4988 z silnikiem krokowym Arduino i silnikiem krokowym.

schemat / schemat powyżej pokazuje, jak podłączyć sterownik a4899 do silnika krokowego i Arduino.

połączenia podane są również w poniższej tabeli:

A4988 Connections

A4988 Connection
VMOT 8-35V
GND Motor ground
SLP RESET
RST SLP
VDD 5V
GND Logic ground
STP Pin 3
DIR Pin 2
1A, 1B, 2A, 2B Stepper motor
  • zasilacz silnika jest podłączony do GND i VMOT (w prawym górnym rogu).
  • dwie cewki silnika krokowego są podłączone do 1A, 1B i 2a, 2b (patrz poniżej).
  • pin GND (prawy dolny) jest podłączony do Pina uziemienia mikrokontrolera, a VDD jest podłączony do 5V.
  • pin STP (krok) i DIR (kierunek) są podłączone odpowiednio do cyfrowego Pina 3 i 2. Możesz wybrać inny cyfrowy pin, jeśli chcesz, ale są to te, których użyłem do tego samouczka i przykładowego kodu.
  • pin SLP jest aktywnym niskim wejściem. Oznacza to, że pociągnięcie tego kołka nisko powoduje przełączenie Sterownika w tryb uśpienia, minimalizując zużycie energii. RST jest również aktywnym niskim wejściem. Po wyciągnięciu nisko wszystkie wejścia krokowe są ignorowane, dopóki nie pociągniesz ich wysoko. Jeśli nie używasz pinu, możesz podłączyć go do sąsiedniego pinu SLP/SLEEP, aby go podnieść i włączyć sterownik.
  • pin EN (enable) można pozostawić rozłączony, domyślnie jest ściągany nisko. Gdy ten pin jest ustawiony wysoko, Sterownik jest wyłączony.

w dalszej części tego tutoriala pozostawiłem odłączone MS1, MS2 i MS3, więc sterownik działa w trybie pełnoetapowym. To sprawia, że Wyjaśnienie kodu jest nieco łatwiejsze. Normalnie użyłbym 1/8 lub 1/16 microstepping i podłączyłem odpowiednie piny do 5V (patrz tabela we wstępie).

Ostrzeżenie

płytka nośna A4988 wykorzystuje kondensatory ceramiczne o niskiej ESR, co sprawia, że jest podatna na destrukcyjne skoki napięcia LC, szczególnie przy użyciu przewodów zasilających dłuższych niż kilka cali.

aby chronić sterownik, można podłączyć Kondensator elektrolityczny między VMOT i GND. Pololu proponuje Kondensator 47 µF lub więcej (ja użyłem kondensatora 100 µF). Lubię te pudełka asortymentowe od Amazona, w ten sposób zawsze mam pod ręką Kondensatory odpowiedniej wielkości.

Jak określić prawidłowe okablowanie silnika krokowego?

Jeśli nie możesz znaleźć arkusza danych silnika krokowego, może być trudno dowiedzieć się, jak prawidłowo podłączyć silnik. Używam następującej sztuczki, aby określić, jak podłączyć 4-przewodowe dwubiegunowe silniki krokowe:

jedyną rzeczą, którą musisz zidentyfikować, są dwie pary przewodów, które są połączone z dwiema cewkami silnika. Przewody z jednej cewki są podłączone do 1A i 1B, a inne do 2A i 2b, polaryzacja nie ma znaczenia.

aby znaleźć dwa przewody z jednej cewki, wykonaj następujące czynności przy odłączonym silniku:

  1. spróbuj ręcznie obrócić wał silnika krokowego i zauważ, jak trudno jest się obrócić.
  2. teraz wybierz losową parę przewodów z silnika i dotknij nagich końców razem.
  3. następnie spróbuj ponownie obrócić wał silnika krokowego.

Jeśli odczuwasz duży opór, znalazłeś parę przewodów z tej samej cewki. Jeśli możesz swobodnie obracać wałem, spróbuj innej pary przewodów. Teraz podłącz dwie cewki do kołków pokazanych na powyższym schemacie okablowania.

(Jeśli nadal jest niejasna, proszę zostawić komentarz poniżej, więcej informacji można również znaleźć na RepRap.org wiki)

jak ustawić aktualny limit?

zanim zaczniesz programować Arduino i zaczniesz używać sterownika, musisz zrobić jedną bardzo ważną rzecz, o której wiele osób zapomina: ustaw aktualny limit!

ten krok nie jest bardzo skomplikowany, ale absolutnie niezbędny do ochrony silnika krokowego i kierowcy. Jeśli nie ustawisz odpowiedniego limitu prądu, Twój silnik może pobierać więcej prądu niż on lub kierowca może obsłużyć, może to spowodować uszkodzenie jednego lub obu z nich.

aby ustawić limit prądu, należy zmierzyć napięcie odniesienia i odpowiednio wyregulować wbudowany potencjometr. Potrzebny będzie mały śrubokręt, multimetr do pomiaru napięcia odniesienia i przewody testowe aligatora (opcjonalnie, ale bardzo poręczny).

schemat okablowania limitu prądu dla sterownika A4988.

aby zmierzyć napięcie odniesienia, sterownik musi być zasilany. A4988 potrzebuje tylko zasilania przez VDD (5V) i musisz połączyć RST i SLP razem, w przeciwnym razie sterownik nie włączy się. Najlepiej jest odłączyć silnik krokowy podczas robienia tego.

Jeśli masz już podłączony sterownik, możesz zostawić wszystko oprócz silnika krokowego podłączonego. Możesz zastosować zasilanie przez port USB Arduino.

A4988 Connection
VDD 5V
RST SLP
SLP RESET
GND Ground
Required connections to set the current limit

Current limit formula

The next step is to calculate the current limit with the following wzór:

granica Prądu = VREF ÷ (8 × Rcs)

Rcs jest bieżącą rezystancją czujnika. Jeśli kupiłeś Sterownik A4988 od Pololu przed styczniem 2017 r., Rcs wyniesie 0,050 Ω. Sprzedawane później przetworniki mają Rezystory prądowe 0,068 Ω.

oznacza to więc, że dla granicy prądu 1A dla płytki z rezystorami prądowymi 0,068 Ω, Vref powinien wynosić 540 mV.

aktualne lokalizacje rezystorów czujnikowych. Zdjęcie: www.pololu.com

aby wybrać odpowiedni aktualny limit, spójrz na arkusz danych silnika krokowego. Jeśli nie możesz znaleźć aktualnej oceny silnika, zalecam rozpoczęcie od aktualnego limitu 1A. zawsze możesz go później zwiększyć, jeśli twój silnik/sterownik nie ma kroków.

Bonus info: podczas korzystania ze sterownika w trybie pełnoetapowym prąd przechodzący przez każdą cewkę jest ograniczony do około 70% ustawionego limitu prądu. Oznacza to, że należy ustawić aktualny limit o 40% wyższy lub 1.4 a w trybie pełnoetapowym. W przypadku stosowania microstepping stosuje się powyższy wzór.

zauważ, że musisz ponownie skalibrować aktualny limit, jeśli zmienisz napięcie zasilania silnika. Jeśli twój silnik hałasuje, spróbuj obniżyć obecny limit. Najlepiej ustawić aktualny limit na tyle wysoki, aby silnik nie przegapił kroków.

pomiar Vref

teraz musisz zmierzyć napięcie odniesienia (Vref) między dwoma punktami zaznaczonymi na rysunku poniżej (GND i potencjometr) i dostosować je do obliczonej wartości.

punkty sondy Vref (GND i potencjometr).

zalecam użycie przewodów testowych aligatora zaciśniętych do śrubokręta, aby ustawić aktualny limit. Pozwala to na regulację potencjometru i pomiar napięcia odniesienia w tym samym czasie.

Uwaga: Istnieje inny sposób pomiaru aktualnej granicy, a mianowicie bezpośredni pomiar prądu ciągnięcia silnika krokowego. Osobiście uważam powyższą metodę za dużo łatwiejszą.

Pololu wymienia na swojej stronie:

Uwaga: prąd cewki może się bardzo różnić od prądu zasilacza, dlatego nie należy używać prądu mierzonego przy zasilaczu do ustawiania limitu prądu. Odpowiednie miejsce do umieszczenia bieżącego miernika jest szeregowo z jedną z cewek silnika krokowego.

Pololu

aktualny limit FAQ

Czy muszę mieć podłączony silnik krokowy, czy nie?
Nie, Nie musisz podłączać silnika krokowego do sterownika podczas ustawiania aktualnego limitu. Aby być po bezpiecznej stronie, odłącz silnik, czasami zakłóca pomiar napięcia Vref.

Czy muszę włączyć silnik, uruchamiając szkic silnika Arduino?
nie, patrz pytanie powyżej.

Czy muszę przekręcić zegar potencjometru – czy przeciwnie do Ruchu Wskazówek Zegara, aby podnieść Vref?
To zależy od producenta sterownika. Jeśli masz prawdziwą płytkę polulu breakout DRV8825 lub A4988, obracasz potencjometr zgodnie z ruchem wskazówek zegara, aby podnieść Vref, a przeciwnie do ruchu wskazówek zegara, aby go obniżyć.

chłodzenie sterownika

układ sterownika A4988 ma maksymalny Prąd znamionowy 2 A na cewkę, ale bez radiatora może dostarczyć tylko około 1 a na cewkę, zanim zacznie się przegrzewać.

sterownik zwykle jest wyposażony w mały radiator z klejem, który polecam zainstalować od razu. Możesz również kupić kilka małych radiatorów z Amazon za naprawdę tanie.

podstawowy przykładowy kod Arduino do sterowania silnikiem krokowym

teraz, gdy podłączyłeś sterownik i ustawiłeś bieżący limit, nadszedł czas, aby podłączyć Arduino do komputera i przesłać kod. Możesz przesłać następujący przykładowy kod do Arduino za pomocą Arduino IDE. W tym konkretnym przykładzie nie trzeba instalować żadnych bibliotek.

ten szkic kontroluje zarówno prędkość, liczbę obrotów, jak i kierunek wirowania silnika krokowego.

możesz skopiować kod, klikając przycisk w prawym górnym rogu pola Kod.

Jak działa kod:

szkic zaczyna się od zdefiniowania pinów kroku i kierunku. Podłączyłem je do Arduino pin 3 i 2.

polecenie #define służy do nadania nazwy stałej wartości. Kompilator zastąpi wszelkie odniesienia do tej stałej wartością zdefiniowaną podczas kompilacji programu. Tak więc wszędzie, gdzie wspomnisz dirPin, kompilator zastąpi go wartością 2 podczas kompilacji programu.

zdefiniowałem również stepsPerRevolution stałą. Ponieważ ustawiłem sterownik na tryb pełnego kroku, ustawiłem go na 200 kroków na obrót. Zmień tę wartość, jeśli Twoja konfiguracja jest inna.

// Define stepper motor connections and steps per revolution:#define dirPin 2#define stepPin 3#define stepsPerRevolution 200

w sekcjisetup() wszystkie piny sterujące silnika są zadeklarowane jako wyjście cyfrowe z funkcjąpinMode().

void setup() { // Declare pins as output: pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT);}

w sekcji koduloop() pozwalamy, aby silnik obracał się powoli w kierunku CW, a jeden obrót szybko w kierunku CCW. Następnie pozwalamy silnikowi obrócić 5 obrotów w każdym kierunku z dużą prędkością. Jak więc kontrolować prędkość, kierunek wirowania i liczbę obrotów?

Kontroluj kierunek wirowania:

aby kontrolować kierunek wirowania silnika krokowego, ustawiamy sworzeń DIR (direction) wysoki lub niski. W tym celu używamy funkcji digitalWrite(). W zależności od tego, w jaki sposób podłączyłeś silnik krokowy, ustawienie Szpilki DIR wysoko pozwoli silnikowi włączyć CW lub CCW.

kontrola liczby kroków lub obrotów:

w tym przykładzie pętle for kontrolują liczbę kroków, które zrobi silnik krokowy. Kod w pętli for powoduje 1 krok silnika krokowego. Ponieważ kod w pętli jest wykonywany 200 razy (stepsPerRevolution), skutkuje to 1 obrotem. W dwóch ostatnich pętlach kod w pętli for jest wykonywany 1000 razy, co daje 1000 kroków lub 5 obrotów.

zauważ, że możesz zmienić drugi termin w pętli for na dowolną liczbę kroków. for(int i = 0; i < 100; i++) spowoduje 100 kroków, czyli pół rewolucji.

Regulacja prędkości:

prędkość silnika krokowego jest określona przez częstotliwość impulsów, które wysyłamy do sworznia krokowego. Im wyższa częstotliwość, tym szybciej silnik pracuje. Możesz kontrolować częstotliwość impulsów, zmieniając delayMicroseconds() w kodzie. Im krótsze opóźnienie, tym wyższa częstotliwość, tym szybciej silnik pracuje.

biblioteka AccelStepper tutorial

biblioteka accelstepper napisana przez Mike 'a McCauley’ a jest niesamowitą biblioteką do wykorzystania w Twoim projekcie. Jedną z zalet jest to, że obsługuje przyspieszanie i zwalnianie, ale ma również wiele innych przyjemnych funkcji.

możesz pobrać najnowszą wersję tej biblioteki tutaj lub kliknąć przycisk poniżej.

możesz zainstalować bibliotekę, przechodząc do Sketch> Dołącz bibliotekę> Dodaj .Biblioteka ZIP … w Arduino IDE.

inną opcją jest przejście do Narzędzia> zarządzanie bibliotekami… lub wpisz Ctrl + Shift + I w systemie Windows. Menedżer bibliotek otworzy i zaktualizuje listę zainstalowanych bibliotek.

możesz wyszukać 'accelstepper’ i poszukać biblioteki Mike 'a McCauley’ a. Wybierz najnowszą wersję, a następnie kliknij przycisk Zainstaluj.

przykładowy kod ciągłego obrotu

poniższy szkic może być użyty do ciągłego uruchamiania jednego lub więcej silników krokowych ze stałą prędkością. (Nie stosuje się przyspieszenia ani opóźnienia).

Jak działa kod:

pierwszym krokiem jest dołączenie biblioteki o numerze#include <AccelStepper.h>.

// Include the AccelStepper library:#include <AccelStepper.h>

następnym krokiem jest zdefiniowanie A4988 do połączeń Arduino i typu interfejsu silnika. Typ interfejsu silnika musi być ustawiony na 1 Podczas Korzystania ze sterownika krokowego i kierunkowego. Inne typy interfejsów można znaleźć tutaj.

polecenie #define służy do nadania nazwy stałej wartości. Kompilator zastąpi wszelkie odniesienia do tej stałej wartością zdefiniowaną podczas kompilacji programu. Tak więc wszędzie, gdzie wspomnisz dirPin, kompilator zastąpi go wartością 2 podczas kompilacji programu.

// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver:#define dirPin 2#define stepPin 3#define motorInterfaceType 1

następnie musisz utworzyć nową instancję klasy AccelStepper z odpowiednim typem interfejsu silnika i połączeniami.

w tym przypadku nazwałem silnik krokowy „stepper”, ale możesz również użyć innych nazw, takich jak „z_motor” lub „liftmotor” itp. AccelStepper liftmotor = AccelStepper(motorInterfaceType, stepPin, dirPin);. Nazwa nadana silnikowi krokowemu zostanie użyta później do Ustawienia prędkości, pozycji i przyspieszenia dla tego konkretnego silnika. Możesz utworzyć wiele instancji klasy AccelStepper o różnych nazwach i pinach. Pozwala to na łatwe sterowanie 2 lub więcej silnikami krokowymi w tym samym czasie.

// Create a new instance of the AccelStepper class:AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

w sekcjisetup() kodu definiujemy maksymalną prędkość w krokach / sekundę. Prędkości powyżej 1000 kroków na sekundę mogą być zawodne, więc ustawiłem to jako maksimum. Zauważ, że podaję nazwę silnika krokowego („stepper”), dla którego chcę zdefiniować maksymalną prędkość. Jeśli masz podłączonych wiele silników krokowych, możesz określić inną prędkość dla każdego silnika:

void setup() { // Set the maximum speed in steps per second: stepper.setMaxSpeed(1000); stepper2.setMaxSpeed(500);}

wloop() najpierw ustawiamy prędkość, z którą chcemy, aby silnik działał. W tym celu używamy funkcji setSpeed(). (możesz również umieścić to w sekcji konfiguracji kodu).

stepper.runSpeed() sprawdza silnik i gdy jest wykonywany krok, wykonuje 1 krok. Zależy to od ustawionej prędkości i czasu od ostatniego kroku. Jeśli chcesz zmienić kierunek silnika, możesz ustawić ujemną prędkość: stepper.setSpeed(-400); obraca silnik w drugą stronę.

przykładowy kod do sterowania liczbą kroków lub obrotów

aby silnik mógł obrócić określoną liczbę kroków, wolę użyć pętli while W połączeniu zstepper.currentPosition(). Możesz użyć poniższego przykładowego kodu, aby silnik działał tam iz powrotem.

Wyjaśnienie kodu:

pierwsza część kodu aż do sekcji loop() jest dokładnie taka sama jak w poprzednim przykładzie.

w pętli używam pętli while W połączeniu z funkcją currentPosition(). Najpierw ustawiłem bieżącą pozycję silnika krokowego na zero za pomocą stepper.setCurrentPosition(0).

 // Set the current position to 0: stepper.setCurrentPosition(0);

następnie wykorzystujemy pętlę while. Pętla while będzie zapętlać się w sposób ciągły i nieskończony, aż wyrażenie wewnątrz nawiasu, () stanie się fałszywe. Tak więc w tym przypadku sprawdzam, czy obecna pozycja silnika krokowego nie jest równa 400 krokom (!= oznacza: nie jest równe). Chociaż tak nie jest, uruchamiamy silnik krokowy ze stałą prędkością ustawioną przez setSpeed().

w pozostałej części pętli robimy dokładnie to samo, tylko z inną prędkością i pozycją docelową.

przykładowy kod przyspieszania i zwalniania

poniższy szkic umożliwia dodanie przyspieszania i zwalniania do ruchów silnika krokowego, bez skomplikowanego kodowania. W poniższym przykładzie silnik będzie poruszał się tam i z powrotem z prędkością 200 kroków na sekundę i przyspieszeniem 30 kroków na sekundę.

Wyjaśnienie kodu:

w setup(), oprócz maksymalnej prędkości, musimy zdefiniować przyspieszenie / opóźnienie. W tym celu używamy funkcji setAcceleration().

void setup() { // Set the maximum speed and acceleration: stepper.setMaxSpeed(200); stepper.setAcceleration(30);}

w sekcji pętli kodu użyłem innego sposobu, aby silnik obrócił predefiniowaną liczbę kroków. Funkcja stepper.moveTo() służy do Ustawienia pozycji docelowej. Funkcja stepper.runToPostion() przesuwa silnik (z przyspieszeniem/zwalnianiem) do pozycji docelowej i blokuje, aż znajdzie się w pozycji docelowej. Ponieważ ta funkcja blokuje, nie należy jej używać, gdy trzeba kontrolować inne rzeczy w tym samym czasie.

wniosek

w tym artykule pokazałem, jak sterować silnikiem krokowym za pomocą sterownika silnika krokowego A4988 i Arduino. Mam nadzieję, że to przydatne i pouczające. Jeśli tak, podziel się nim z przyjacielem, który również lubi elektronikę i tworzenie rzeczy!

osobiście często używałem tego sterownika do kilku drukarek 3D i innych projektów związanych z CNC, ale chciałbym wiedzieć, jakie projekty planujesz zbudować (lub już zbudowałeś) za pomocą tego sterownika. Jeśli masz jakieś pytania, sugestie lub uważasz, że brakuje czegoś w tym samouczku, zostaw komentarz poniżej.