MENU

Jak podłączyć silnik krokowy do Arduino?

Jak podłączyć silnik krokowy do Arduino?

Jak podłączyć silnik krokowy do Arduino?

Jeśli jeszcze nie masz silnika krokowego kupisz go w naszym sklepie pod tym linkiem: Silnik krokowy Arduino

To proste, pokażemy jak podpiąć popularny silnik krokowy 28BYJ-48 5V z układem sterowania ULN2003 i sterować nim za pomocą 4 linijek kodu.

Zacznijmy od wpięcia białej wtyczki od silnika do modułu ULN2003. Kolejno wejścia sterownika IN1, IN2, IN3, IN4 podpinamy w wymienionej kolejności do portów Arduino o numerach 8, 9, 10, 11.

Silnik wraz ze sterownikiem może być zasilany napięciem 5V – takim samym jakim dysponuje Arduino – można tutaj na potrzeby uruchomienia zestawu podciągnąć zasilanie i masę z Arduino – tak jak pokazano na FIOLETOWO na schemacie. W takim wypadku niebieskie podpięcie do baterii nie będzie konieczne.

Tak podpięty zestaw powinien bez problemów działać. Przejdźmy do strony kodowej. Program będziemy pisali w środowisku ArduinoIDE i skorzystamy z wbudowanej biblioteki Stepper. Jest to prosta biblioteka ale zawiera wszystkie niezbędne nam funkcję i jest prosta w użyciu.

Funkcje i argumenty jakie należy przekazać znajdziemy na stronie bibliboteki: https://www.arduino.cc/en/Reference/Stepper

Poniżej kod programu z komentarzami:

#include <Stepper.h> //dodajemy do szkicu bibliotekę obsługującą silniki krokowe

#define ILOSC_KROKOW 32 //definiujemy stałą gdzie podajemy ilość kroków zależną od użytego silnika w naszym przypadku 32

Stepper mojSilnik(ILOSC_KROKOW, 8, 10, 9, 11); //tutaj podajemy piny w Arduino, którymi sterujemy silnikiem

void setup()

{

}

void loop ()

{

mojSilnik.setSpeed(500); //podajemy prędkość obrotu wyrażona w rpm 

mojSilnik.step(512); //linijka powoduje obrót ośki silnika o 90 stopni

delay(2000); // linijka powoduje odczekanie 2 sekund (wartosc w milisekundach 1000 = 1s)

mojSilnik.setSpeed(250);

mojSilnik.step(-1024);

delay(2000);

}

Prędkość obrotu silnika można zwiększać i zmniejszać w zależności od silnika – trzeba to samemu wyczuć. Przy zbyt dużej wartości silnik zacznie przeskakiwać lub dławić się a jego praca będzie nierówna. Górna granica w wypadku testowanego silnika to około 700.

Aby obrócić silnikiem o określony kąt należy przeliczyć ilość kroków potrzebnych na pełen obrót i podzielić przez 360°.

Nasz silnik ma 32 kroki oraz przekładnie 64 zębów wynika to z jego budowy. Więc na pełen obrót składa się 32*64 = 2048 małych kroczków.

Aby dowiedzieć się ile to jest 1° dzielimy 2048/360= 5,69 kroku.

Aby obrócić silnikiem o kąt 180 stopni mnożymy 180 * 5,69= 1024. I taką liczbę podajemy jako argument mojSilnik.step()

Jeżeli chcemy obracać ośką przeciwnie do ruchu wskazówek zegara podana liczba powinna być ujemna czyli -1024.

Tak w prosty sposób możemy tworzyć sekwencje ruchu naszego silniczka.

Przygotowaliśmy również filmik, na którym można zobaczyć jak krok po kroku wygląda cała akcja opisana w tym wpisie. Zachęcamy do subskrypcji naszego kanału na youtube oraz zapraszamy na zakupy w naszym sklepie.

Zestawi silnika krokowego 28BYJ-48 ze sterownikiem ULN2003 można nabyć w naszym sklepie pod linkiem:

#jak podpiąć silnik krokowy do arduino, #jak sterować silnikiem krokowym z arduino,

KOMENTARZE

guest
23 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments
wojtek

jak wyzwolić przyciskiem rfuch silnika krokowego o nastawioną liczbę kroków zatrzymanie go i ponowny ruch dopiero powciśnięciu przycisku

Eryk

Witam, mam już silnik podłączony- działa, ale nie wiem jak zrobić aby wykonał prace po wciśnięciu przycisku. Chodzi mi o to ze w skrócie: wciskam przycisk: silnik rusza w lewo w prawo, następnie staje i znów czeka aż włącze przycisk aby wykonał prace. Z góry dziękuje

Krzysztof

program OK.
Ale jak zrobić aby silnik przy zaniku napięcia i jego powrocie nie zaczynał od „0”

Mr Remmoz

Jakiś schemacik modułu sterownika i całości by się przydał. Jakis link do schematu chćby.

Ostreerc

Jaka jest wydajność prądowa wyjścia 5V z Arduino? Gdyby np. zahamować silniczek ręką, czy układ Arduino uległby przeciążeniu?

Ostreerc

Stepper mojSilnik(ILOSC_KROKOW, 8, 9, 10, 11); // moim zdaniem sekwencja powinna być 8,10,9,11 – u mnie tak dopiero zadziałało…chyba że napięcia podałem za duże i coś się zepsuło 🙂

Wojtek

jakim cudem 2048 jezeli na wyjsciu silnika jest 64 kroki na pelen obrot , tzn 360 / 64 , 1 stopien =5,625 kroku

Maciek

Czy taki zestaw da się zasilić podpinając powerbank? Zasilanie przez ładowarkę nie wchodzi w grę, gdyż chcę aby zestaw był mobilny. Docelowo myślę o użyciu go w astrofotografii.

radek

Witam
Siedzę od dłuższego czasu w tych szkicach i programach i za cholerę nie mogę napisać i znaleźć odpowiedniego programu do mojego projektu, którego nie mogę skończyć .A mianowicie robię roto mat na zegarek automatyczny, potrzebowałbym jakiś link do szkicu :po włączeniu urządzenia obrót silniczka przez 20 min w prawo stronę , przerwa 5 minut ,po przerwie ruch lewo stronę 20 minut, i znów przerwa i tak w koło aż do wyłączenia urządzenia. Znalazłem podobny szkic skopiowałem do biblioteki, ale nie wiem dlaczego kręci się zgodnie z ruchem zegara, mimo że po przerwie w programie jest obrót w przeciwną stronę.Pozdrawiam

Łukasz

Witam,

Czy ktoś orientuje się czy można zastosować dłuższy kabel pomiędzy silnikiem a sterownikiem? Czy będzie to miało jakiś wpływ na działanie silnika?

Sebastian

Witam mam następujący problem.
Silniczek zaczyna gubić kroki już przy prędkości około 100 rpm z czego może to wynikać uszkodzenie silniczka?

Meow

Autor żle podał Stepper mojSilnik(ILOSC_KROKOW, 8, 9, 10, 11);
prawidłowe działanie jest taka 8,10,9,11

Piotr

U mnie działa!

SZUKASZ PODZESPOŁÓW
DO NASTĘPNEGO PROJEKTU?

Wszystko co potrzebne znajdziesz w naszym sklepie z obsługą na 5 gwiazdek!

elektroweb.pl