Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ARDUINO - Sterowanie silnikiem krokowym z CD

06 Lut 2014 19:52 4347 4
  • Poziom 10  
    witam.

    Mam pytanie odnośnie sterowania krokowcem ze starego napędu CD.
    Silnik (bipolarny) ma oś w postaci śruby trapezowej o skoku 4mm i długości ok 40mm, czyli 10 skoków. Na jeden obrót przypada 20 kroków, czyli 1 krok to 18 stopni. Poniżej fotka:

    ARDUINO - Sterowanie silnikiem krokowym z CD

    Chcę nim sterować tak, aby "wózek" poruszał się w tą i z powrotem, zaczynając od środkowego położenia na śrubie, ruchem sinusoidalnym. Ponadto chcę mieć możliwość zadania na początku amplitudy tej sinusoidy oraz częstotliwości. Ma to być taki sterowany "oscylator harmoniczny"

    To żeby zaczynał od środka to będzie dalszy etap jak zamontuję włącznik krańcowy, chyba, że można to rozwiązać inaczej?

    Jestem na etapie ruchu jednostajnego w lewo i w prawo. Korzystam z najprostszej biblioteki Stepper.h

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Znalazłem jeszcze bibliotekę Accelspepper.h, ale ma ona tyle możliwości, że całkowicie sobie z nią nie radzę.

    Nie wiem od której strony to ugryźć, aby ruch wózka był sinusoidalny. Czy zająć się krokami w czasie, czy prędkością w czasie. Czy w ogóle prędkość da się zmieniać, czy ustawia się ją na konkretną wartość?

    Proszę o sugestie
  • PCBway
  • Moderator Projektowanie
    Musiałbyś stworzyć tablicę z poszczególnymi wartościami sinusa z danego zakresu, następnie silnikiem "skakać" między tymi wyznaczonymi punktami. Jeśli np. masz 10, 18, 40 - to z pozycji początkowej 10 zadajesz 8 kroków i jesteś na 18, następnie 22 kroki i jesteś na 40 itd. Kumasz ? :)
  • PCBway
  • Poziom 10  
    Kumam, tylko że skakanie między tymi punktami powinno się odbywać z różnymi prędkościami, a nie wiem, czy da się tą prędkość zmieniać korzystając z funkcji setSpeed() biblioteki Stepper.h

    ... widzę, że się da... wywaliłem tą funkcję z bloku setup i wstawiłem do loop i działa

    W takim razie powinienem zacząć od sinusoidy narysowanej na kartce, wyskalowaniu jej w rzeczywistych jednostkach (mm), a to przeliczyć na kroki...
  • Poziom 10  
    Minęło trochę czasu. Zawiesiłem temat, znalazłem inne rozwiązanie...