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:

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,

22 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

      1. Eryk
        Odpowiedz

        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

        1. admin
          Odpowiedz

          Dzień dobry, należało by wykrywać stan przycisku na jednym z wejść Arduino i dodać jakąś instrukcję warunkową.
          Zapraszamy do naszego kursu Arduino dla początkujących – pomoże on lepiej zrozumieć działanie mikrokontrolera i rozwiąże podstawowe problemy.

  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ń

  7. Maciek
    Odpowiedz

    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.

    1. admin
      Odpowiedz

      Jak najbardziej powerbank powinien sobie poradzić.

  8. radek
    Odpowiedz

    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

    1. admin
      Odpowiedz

      Najlepiej zamiast kopiować, spróbować napisać swój kod ze zrozumieniem na podstawie innych przykładów, często popełniamy przy kopiowaniu jakieś trywialne błędy ciężkie do znalezienia. Aby pomóc jeszcze trzeba widzieć kod i schemat połączenia, bez tego to wróżenie z fusów.

  9. Łukasz
    Odpowiedz

    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?

    1. admin
      Odpowiedz

      Spokojnie można wykorzystać dłuższe przewody.

  10. Sebastian
    Odpowiedz

    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?

  11. Meow
    Odpowiedz

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

    1. admin
      Odpowiedz

      Jest to zależne od tego jak wepniemy przewody od naszego silnika, gdyby coś nie działało można zamienić przewody, albo właśnie deklaracje pinów.

Odpowiedz

Twój adres e-mail nie zostanie opublikowany