Skocz do zawartości

Jednoczesne sterowanie 5 silników krokowych przez Arduino


BartekS1

Pomocna odpowiedź

@BartekS1, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

2 godziny temu, BartekS1 napisał:

Poniżej jest kod

Potrzebne na szybko!!!

Jeśli zależy Ci na szybkiej odpowiedzi to stosuj się do zasad panujących na forum i umieść kod w poście (formatując go za pomocą narzędzia kod) - informacja na ten temat znajduje się na dole edytora, więc raczej ciężko ją przeoczyć. Nie każdy chce pobierać i rozpakowywać archiwa nieznanego pochodzenia. Po drugie napisałeś jakie masz "życzenie" co do działania programu, ale nie napisałeś jaki jest problem. Co dokładnie Ci nie działa? Jak masz wszystko podłączone? Czym zasilasz układ? Raczej w ciemno nie uzyskasz żadnego "szybkiego" rozwiązania bez szczegółowego opisu swojego problemu.

Link do komentarza
Share on other sites

#include <Stepper.h>

#define STEPS 2048 //definicja ilości kroków na pełen obrót
 // 64 kroków na silniku (po 5.625 stopnia) razy 32 -
 // 1:32 (przekładnia, choć niestety w dokumentacja mówi o 1:64)

// inicjalizacja obiektu do kontroli silnika
Stepper Silnik1 (STEPS, 13,11,12,10);
Stepper Silnik2 (STEPS, 9,7,8,6);
Stepper Silnik3 (STEPS, 5,3,4,2);
Stepper Silnik4 (STEPS, 25,23,24,22);
Stepper Silnik5 (STEPS, 26,28,27,29);

void setup() {
//1//
Silnik1.setSpeed(8);// max prętkość 14.99
Silnik1.step(2048); 
//2//
Silnik2.setSpeed(10);// max prętkość 14.99
Silnik2.step(120); 
Silnik2.step(-200); 
//3//
Silnik3.setSpeed(10);// max prętkość 14.99
Silnik3.step(120); 
Silnik3.step(-200); 
//4//
Silnik4.setSpeed(4);// max prętkość 14.99
Silnik4.step(2048);
//5//
Silnik5.setSpeed(10);// max prętkość 14.99
Silnik5.step(-6144);
delay(5000); 
Silnik5.step(6144);
delay(5000);  
}

void loop() {
  
//1//
Silnik1.setSpeed(8);// max prętkość 14.99
Silnik1.step(2048); 
//2//
Silnik2.setSpeed(10);// max prętkość 14.99
Silnik2.step(120); 
Silnik2.step(-200); 
//3//
Silnik3.setSpeed(10);// max prętkość 14.99
Silnik3.step(120); 
Silnik3.step(-200); 
//4//
Silnik4.setSpeed(4);// max prętkość 14.99
Silnik4.step(2048);
//5//
Silnik5.setSpeed(10);// max prętkość 14.99
Silnik5.step(-6144);
delay(5000); 
Silnik5.step(6144);
delay(5000);  
}
 

A więc tak problem polega na tym że silniki obracają się jeden po drugim, a nie tak jak powinny czyli wszystkie na raz. Silniki są podłączone tak jak w kodzie, zasilane są za pomocą zasilacza atx. Próbowałem stworzyć program w Visuino i nawet się to prawie udało tzn. Silniki obracały się wszystkie w tym samym czasie, tylko jest problem z ustawieniem aby obracały się tak jak chce.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

1 godzinę temu, BartekS1 napisał:

A więc tak problem polega na tym że silniki obracają się jeden po drugim, a nie tak jak powinny czyli wszystkie na raz. Silniki są podłączone tak jak w kodzie, zasilane są za pomocą zasilacza atx. Próbowałem stworzyć program w Visuino i nawet się to prawie udało tzn. Silniki obracały się wszystkie w tym samym czasie, tylko jest problem z ustawieniem aby obracały się tak jak chce.

Teraz lepiej, ale jeszcze mógłbyś podać jakieś namiary na bibliotekę, z której korzystasz. Pod nazwą Stepper.h może kryć się wiele zupełnie różnych bibliotek, a Twój problem generuje właśnie ta biblioteka (bo albo ona nie pozwala na sterowanie kilku silników, albo źle jej użyłeś).

Link do komentarza
Share on other sites

15 godzin temu, Treker napisał:

Pod nazwą Stepper.h może kryć się wiele zupełnie różnych bibliotek, a Twój problem generuje właśnie ta biblioteka (bo albo ona nie pozwala na sterowanie kilku silników, albo źle jej użyłeś).

@Treker Jest to podstawowa biblioteka Stepper https://www.arduino.cc/en/Reference/Stepper

Jakiej innej mógłbym użyć?

@kaczakat Wszystko ok tylko tylko nie wiem jak przerobić kod z biblioteki Stepper na AcceSteper 

Może ma ktoś czas i chęci i napisze ten kod za mnie ? 😕

 

Link do komentarza
Share on other sites

Nie przerabiaj kodu tylko otwórz sobie przykład z MultiStepper (a wcześniej pojedyncze i poczytaj źródła/keywords , wszystko jest opisane co do czego użyć) wykorzystując go zrealizuj to co chciałeś pierwotnie na tej wbudowanej bibliotece. Generalnie nie możesz użyć takich funkcji jak we wbudowanej, bo ona ustala gdzie po wywołaniu ma dokręcić się silnik i  program nie robi nic innego dopóki ta funkcja nie osiągnie celu. W accelstepper ustalasz gdzie ma się znaleźć silnik i funkcjami xxx.run() po prostu sprawdzasz czy już pora znowu ruszyć silnikiem xxx i czy jeszcze gdzieś ma się ruszyć, jak tak to rusza. 5 silników to może być za dużo na programowe sterowanie, może będziesz musiał pomyśleć o shieldzie i dedykowanych sterownikach https://botland.com.pl/pl/90-sterowniki-silnikow-krokowych. Wtedy nie sterujesz każdą fazą silnika (pinem) tylko wskazujesz kierunek obrotów i wybijasz rytm kroków/półkroków.  Kodu Ci nie napiszę bo nie jestem programistą ani nawet nie powinienem pisać na forach - lepiej wrócę do swojej pracy w sumie, cześć...

Link do komentarza
Share on other sites

Dnia 2.12.2018 o 13:40, BartekS1 napisał:

Jakiej innej mógłbym użyć?

@BartekS1, nazwa funkcji to tylko nazwa - mogłeś mieć zupełnie inną bibliotekę, lepiej wyjaśnić taką kwestię na samym początku. Udało Ci się ruszyć dalej z tematem np. tak jak radzi @kaczakat?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.