Jak podłączyć silnik krokowy do 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.

schemat podpięcia silnika krokowego do Arduino

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, 9, 10, 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:

https://elektroweb.pl/silnikiserwa/61-silnik-krokowy-z-przekladnia-28byj-48-5v-z-ukladem-sterowania-uln2003.html

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

11 Comments

Zostaw komentarz

  1. wojtek
    Odpowiedz

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

    1. admin
      Odpowiedz

      Najprościej zrobić z powyższego kodu funkcję i wywoływać ją sprawdzając stan na wejściu do którego podłączyliśmy przycisk sterujący. Sprawdzenie można realizować za pomocą pętli

  2. Krzysztof
    Odpowiedz

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

    1. admin
      Odpowiedz

      Panie Krzysztofie, jeżeli zanika napięcie niestety bez obsługi pamięci nie uda się nie zaczynac od 0.
      Chyba najprościej było by wykorzystać kartę pamięci i tam jakoś zapisywać i odczytywać ostatnie położenie.

  3. Mr Remmoz
    Odpowiedz

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

  4. Ostreerc
    Odpowiedz

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

    1. admin
      Odpowiedz

      Tak naprawdę to nic prądożernego nie powinno się tam podpinać, wydajność przy zasilaniu z USB to około 500mA, na pinach wejść/wyjść 40mA.
      Szkoda mikrokontrolera, zawsze lepiej zasilać projekt przy pomocy zewnętrznego źródła. Wygodne są przystawki do płytek prototypowych MB-102 lub koszyki na baterie.

  5. Ostreerc
    Odpowiedz

    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 🙂

    1. admin
      Odpowiedz

      Tutaj napięcie nie powinno mieć znaczenia, a jedynie są to piny sygnałowe sterownika, być może to wina innej wersji bibliotek, w każdym razie cieszymy się, że działa!

  6. Wojtek
    Odpowiedz

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

    1. admin
      Odpowiedz

      Dzień dobry, tak jak napisaliśmy 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 mikrokroków. Chodzi oczywiście o mikro kroki wpisane w programie, które dadzą obrót o 1 stopień

Odpowiedz

Twój adres e-mail nie zostanie opublikowany