Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Arduino joystick silnik krokowy

MarcinMyski 24 Nov 2021 20:41 192 14
  • #1
    MarcinMyski
    Level 3  
    Cześć. Chcę sterować silnikiem krokowym 28byj-48, za pomocą josticka. Mam na myśli sam kierunek. Próbowałem sam coś wymyśleć lub znaleźć na internecie, ale bez przerwy kręci się w jedną stronę. Oto kod:
    #include <Stepper.h>
    #include <AxisJoystick.h>

    Stepper myStepper(8,9,10,11);

    void setup()
    {
    Serial.begin(9600)
    }
    void loop()
    {
    int xAxis=analogRead(A1);
    xAxis=map(xAxis,0,1023,-130,130);
    myStepper.setSpeed(50);
    myStepper.step(abs(xAxis/10));
    Kamery 3D Time of Flight - zastosowania w przemyśle. Darmowe szkolenie 16.12.2021r. g. 10.00 Zarejestruj się
  • #8
    Krzysztof Kamienski
    Level 43  
    Owszem. Stworzyć z potencjometru joysticka i dwóch rezystorów mostek Wheatsone'a i użyć dwa komparatory do wykrycia polaryzacji (przejścia przez zero), a ich sygnały sterują driverem silnika. Ja tak zrobiłem w pewnej maszynie tartacznej, by platforma z pniem drzewa do przecinania jeździła do przodu i do tyłu ,,za reką operatora", a nie chciałem wstawiać mikrowyłączników do joysticka.
  • #10
    starob
    Level 28  
    myStepper.step(xAxis/10) wymaga parametru typu int - bo nie da się ustawić ułamkowego kroku.
    Jak to nie będzie działać to sprawdź połączenia.

    xAxis=map(xAxis,0,1023,-13,13);
    myStepper.setSpeed(50);
    myStepper.step(xAxis);

    Na pewno wartość xAxis zmienia się od 0 do 1023?
  • #12
    starob
    Level 28  
    To zobacz co się stanie gdy w pętli wykonasz:

    myStepper.setSpeed(50);
    delay(2000)
    myStepper.step(200);
    delay(2000)
    myStepper.step(-200);

    Dodano po 13 [minuty]:

    Ok .. w/g dokumentacji, którą znalazłem powinna być definicja w sposób:
    Stepper myStepper(100,8,9,10,11); - 100 kroków na obrót;

    Sprawdź jak powinno być dla biblioteki, której używasz
  • #13
    emarcus
    Level 38  
    Krzysztof Kamienski wrote:
    Musi sie zmieniać sygnał ,,DIR" z 1 logicznej na (0). Jak ten joystick jest podłaczony?

    W tym układzie nie jest stosowany stepstick jako driver silnika.
    Jest tam tylko array tranzystorowy ULN , który nie ma wejścia kontrolującego kierunek obrotów sygnałem logicznym "DIR".
    Tu zmiana kierunek obrotów jest osiągana poprzez zmanę sekwencji pulsowanego zasilania cewek, czyli wejść IN1 do IN4.

    e marcus

    Dodano po 9 [minuty]:

    starob wrote:


    Ok .. w/g dokumentacji, którą znalazłem powinna być definicja w sposób:
    Stepper myStepper(100,8,9,10,11); - 100 kroków na obrót;


    Ten silnik nie ma 100 kroków na obrót.
    Przy wysterowaniu w trybie pełnego kroku należy przyjąć 32 kroki na obrót.

    e marcus
  • #14
    starob
    Level 28  
    emarcus wrote:
    Przy wysterowaniu w trybie pełnego kroku należy przyjąć 32 kroki na obrót.

    Na obrót czego.. wału czy silnika? Tam jest przekładnia więc być może wprowadzasz w błąd i jest 32x64=2048.
    100 czy 32 czy 500 - jakie to ma znaczenie dla samego sprawdzenia poprawności połączeń ?
  • #15
    emarcus
    Level 38  
    starob wrote:
    emarcus wrote:
    Przy wysterowaniu w trybie pełnego kroku należy przyjąć 32 kroki na obrót.

    Na obrót czego.. wału czy silnika?

    Tak, obydwóch; - wału silnika. Dokładnie, chodzi o ten sam element co u ciebie miał być 100 /obr.
    Nie bardzo wiadomo co chciałeś zasygnalizować resztą wypowiedzi, bo przedstawiony twój rachunek jest raczej poprawny i autentycznie wynosi 32 x 64 a nie 100 x64 na pelny obrót wałka wyjściowego, co byłoby istotne przy pozycjonowaniu.
    Nie martwiłbym się o połączenie przewodów, bo autor już na samym początku napisał że silnik 'kręci' a jedynie problem ma w kontroli dwukierunkowej pracy.
    Twoja wypowiedź poza zaczepnym charakterem nie wniosła NIC, aby autor zakręcił silnikiem w obie strony.

    Do autora tematu
    wytestuj ten poniżej przykład z zalecaną zmianą :
    Zamiast kiepskiego joysticka zastosuj liniowy 10k lub podobny potencjometr z względnie dużym poktętłem i zaznacz na nim środkowe położenie. Uzyskasz przez to większą rozdzielczość kątową, Będzie łatwiej obserwować zależność obrotów od 'wychylenia' potencjometru. Na joysticku masz około 30 stopni wychylenia/ stronę, natomiast przy próbie z potencjometrem masz około 130 stopni obrotu osi pot/stronę co tłumaczy się na kierunek obrotów steppera. Środkowa pozycja potencjometru jest neutralna.
    oto proponowany przykład programu:
    Code: c
    Log in, to see the code


    Jeżeli dalej są problemy, to kol. Starob poprawi.....

    e marcus