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

Sterownik bipolarnego silnika krokowego do mikrokontrolera

MateuszW_ 21 Kwi 2015 01:05 1476 10
  • #1 21 Kwi 2015 01:05
    MateuszW_
    Poziom 7  

    Witajcie
    Postanowiłem się zarejestrować na waszym forum, ponieważ nie mogę znaleźć satysfakcjonującego rozwiązania mojego problemu.

    Buduję urządzenie, którego główną funkcją jest sterowanie silnikiem krokowym bipolarnym 12V max 1A na uzwojenie. Urządzenie będzie oparte na mikrokontrolerze z rodziny ATxmega, prawdopodobnie konkretnie na ATxmega128A4U. Silnik ma pracować w trybie mikrokrokowym, najlepiej z co najmniej 64 mikrokrokami.

    Do tej pory używałem układów PBL3717A, ale obecnie chyba nie są już dostępne, a do tego nie spełniały one idealnie moich założeń. Układy te wykorzystywałem wyłącznie jako mostki H, a mikrokroki uzyskiwałem dzięki podłączeniu ich wejść pomiarowych na PWMy mikrokontrolera. Dzięki temu mogłem uzyskać teoretycznie do 256 mikrokroków (rozdzielczość PWM), w praktyce stosowałem 64, które zapewniały już płynną pracę.

    Teraz zastanawiam się, jakie rozwiązanie wybrać:
    1)kupić układ typu podwójny mostek H i zrobić mikrokroki na PWMach uC, jak dotychczas.
    2)kupić wyspecjalizowany scalak sterujący mikrokrokowo, który używa się pinami step/dir i odciążyć uC od sterowania.

    Pierwsze wyjście jest tańsze. Mam już działający kod do uC sterujący mikrokrokowo, wiec to też nie problem. Jednak boję się, że nie będzie to tak dobre jak dedykowany sterownik. Np nie będzie tu choppera (jeśli dobrze rozumiem to takie sterowanie silnikiem, że przy załączeniu uzwojenia dajemy wyższe napięcie, żeby uzwojenie szybciej się naładowało).

    Drugie wyjście daje teoretycznie lepsze sterowanie silnika (zapewni nieco wyższe osiągi). Ale problem jest taki, że nie umiem znaleźć układu z więcej, niż 32 mikrokrokami, a chciałbym min 64 (no chyba, że nie będzie tu żadnej różnicy w płynności?).

    Moje założenia są takie, że sterownik ma być możliwe tani (max 20 - 30 zł, najlepiej kilkanaście zł), oraz zajmować mało miejsca (najlepiej jeden scalak bez dodatkowych elementów - czyli wbudowane diody zabezpieczające itp). Ma też współpracować ze standardem logicznym 3,3V.

    Do pierwszego rozwiązania znalazłem układ L298N, jednak nie ma on wbudowanych diod (i zastanawiam się, czy nie jest za prosty, np brak choppingu).
    Do drugiego znalazłem układ A3972. Wydaje się bardzo fajny, ma 64 mikrokroki. Jednak robi w zasadzie to, co mógłby robić procesor, czyli sterowanie PWM, więc nie wiem, czy nie lepiej jednak zastosować metodę 1. Układ ten ma też skomplikowane sterowanie(trzeba wysyłać sporo bitów i obawiam się o problemy z prędkością maksymalną), podczas gdy najlepiej byłoby mieć step/dir.

    Jakie jest wasze zdanie na ten temat? Jaki sterownik polecacie? Z góry dziękuję za pomoc!

    Dodano po 50 [minuty]:

    Hmm, znalazłem jeszcze układ DRV8825. Wydaje się praktycznie idealny. Kosztuje ok 25 zł, jest mały, ma sterowanie step/dir. Ma jednak tylko 32 mikrokroki. Ale może jednak nie ma za bardzo sensu stosowania ich więcej? Czy 32 zapewnią mi całkowicie płynną pracę, w sensie bez drgań itp? Dokładność 32 mikrokroków jest dla mnie z zapasem wystarczająca, jedynie chodzi mi o te drgania i ew zakłócenia.

    0 10
  • #2 21 Kwi 2015 18:39
    noel200
    Poziom 24  

    MateuszW_ napisał:
    2)kupić wyspecjalizowany scalak sterujący mikrokrokowo, który używa się pinami step/dir i odciążyć uC od sterowania.

    Znacznie lepsze rozwiązanie.
    MateuszW_ napisał:
    nie będzie tu choppera (jeśli dobrze rozumiem to takie sterowanie silnikiem, że przy załączeniu uzwojenia dajemy wyższe napięcie, żeby uzwojenie szybciej się naładowało).

    Dokładnie. To wiele zmienia.
    MateuszW_ napisał:
    Drugie wyjście daje teoretycznie lepsze sterowanie silnika (zapewni nieco wyższe osiągi)

    Znacznie wyższe osiągi. Dodatkowo niektóre układy automatycznie regulują sobie decay mode. To znacznie poprawia osiągi silnika.
    MateuszW_ napisał:
    problem jest taki, że nie umiem znaleźć układu z więcej, niż 32 mikrokrokami, a chciałbym min 64 (no chyba, że nie będzie tu żadnej różnicy w płynności?).

    Bawiłem się sterownikiem na TB6560 i A4988 i silnik dostatecznie płynnie pracuje przy 1/8 mikrokroku. Zwiększenie do 1/16 daje może lekką poprawę, a może nawet niezauważalną. A na zwiększenie rozdzielczości i tak nie ma co liczyć, bo zmiana momentu na wale silnika przy tak znikomej zmianie prądu w cewkach praktycznie nic nie daje.
    MateuszW_ napisał:
    znalazłem układ L298N

    To tylko mostek H.
    MateuszW_ napisał:
    Do drugiego znalazłem układ A3972

    Faktycznie przekombinowane sterowanie.

    Kup sobie najlepiej jakiś za 20zł z allegro stepstick taki jak do drukarek 3d. Od razu na płytce z otworami. Przylutujesz tylko swoje kabelki, puścisz i zobaczysz czy ci dynamika pracy i płynność wystarczą czy nie. Jak będzie ok, to możesz w swojej płytce tylko gniazdo zrobić i go tam wsadzić, albo wylutować scalak i wlutować w swoją płytkę.
    Aha, sterownik zasilaj możliwie wysokim napięciem, ale kilka V poniżej max napięcia zasilania części mocy, a silnik kup na jak najniższe napięcie.

    0
  • #3 22 Kwi 2015 12:25
    MateuszW_
    Poziom 7  

    Dziękuję za informacje. Czyli wychodzi na to, że jednak dedykowany układ jest wart zakupu. Mikrokroki przetestuję chyba najprościej na moim obecnym urządzeniu i kupię dopiero układ.

    Mógłbyś jeszcze wytłumaczyć, czym jest to decay mode? Spotkałem się z tym pojęciem w dokumentacji, ale nie do końca rozumie. To jest regulacja tempa opadania napięcia? Czemu nie najlepiej jest po prostu maksymalnie szybko to napięcie zmniejszać?

    Hmm, dlaczego lepiej mieć silnik na niskie napięcie, a zasilać układ wysokim? Mój sterownik jest zasilany z 12V i taki też silnik już kupiłem i używam.

    0
  • #4 22 Kwi 2015 15:18
    noel200
    Poziom 24  

    MateuszW_ napisał:
    czym jest to decay mode? Spotkałem się z tym pojęciem w dokumentacji, ale nie do końca rozumie.

    Ja też. To jest chyba szybkość gaszenia prądu zaindukowanego w uzwojeniu silnika, gdy sterownik musi zmienić kierunek prądu w uzwojeniu (masło maślane wyszło), ale nie jestem pewien.

    MateuszW_ napisał:
    Czemu nie najlepiej jest po prostu maksymalnie szybko to napięcie zmniejszać?

    W tb6560 decay się ręcznie ustawiało. Z małymi silnikami przy wysokim decay nie mógł się on rozkręcić bardziej niż 1000rmp i mocno drgał w trakcie pracy. Z dużym silnikiem i wysokim pradem, na niskim decay ten się nie chciał krecić szybciej jak 500rpm. Po zwiększenie decay osiągnąłem ponad 3000rpm.

    MateuszW_ napisał:
    Hmm, dlaczego lepiej mieć silnik na niskie napięcie, a zasilać układ wysokim? Mój sterownik jest zasilany z 12V i taki też silnik już kupiłem i używam.

    Bo nie masz choppera prądu. Gdybyś miał silnik na 3V, a zasilał go z 24V to oczywiście popłynąłby taki prąd, że uzwojenie by się przepaliło. Chopper prądowy to coś jak tryb CC w zasilaczu. Czuwa, żeby nie przekroczyć prądu nastawionego. Dzięki niemu w takiej konfiguracji nie spali się uzwojenie. No ale po co zasilać silnik wyższym napięciem niż znamionowe? Po to żeby przy przyłożeniu napięcia do końców uzwojenia charakterystyka narastania natężenia prądu była bardziej stroma. Czyli szybciej po podaniu napięcia prąd osiąga w uzwojeniu nastawioną wartość. Jeżeli szybko kręcisz silnikiem to przełączanie napięcia w cewkach jest szybkie i prąd nie zdąży narastać. Silnik traci szybko moment i wypada z synchronizmu. A gdy masz chopper i zasilasz silnik o wiele wyższym napięciem niż znamionowe to ma on wyższą dynamikę i o wiele wyższą prędkość maksymalną.
    Ja kiedyś na próbę napisałem program na atmege + uln i podłączyłem silniczek krokowy na 5V. Miał on 0,5A prąd więc wszystko pasowało. Aha i 24 kroki/obrót. Udało mi się go rozkręcić "na pusto" do prędkości 300rpm. Później kupiłem sterownik na TB6560 + silnik jakiś na allegro nema17 z drukarki (kompletnie brak parametrów, ale osiągał 60*C przy prądzie 0,9A i napięciu 4,5A, więc można przyjąć, że to jego parametry znamionoiwe), zasiliłem z zasilacza 36VDC i rozkręciłem go na 6000rpm. Byłem w szoku jakiego ma kopa silnik pod dobrym sterownikiem.

    0
  • #5 23 Kwi 2015 18:05
    MateuszW_
    Poziom 7  

    Ok, dzięki za wyjaśnienie. Czyli rozumiem, że to decay mode trzeba indywizualnie dobrać do swojego silnika?

    Z tym napięciem zasilania trochę mnie zmartwiłeś. Na pewno musi zostać 12V na wejściu, bo to popularny standard. Ale mógłbym w sumie zmienić silnik na jakiś np 5V. No, ale wtedy będzie on musiał mieć wyższy prąd na cewkach, żeby uzyskać ten sam moment i niekoniecznie sterownik wyrobi z tym prądem.

    0
  • #6 23 Kwi 2015 18:39
    noel200
    Poziom 24  

    MateuszW_ napisał:
    decay mode trzeba indywizualnie dobrać do swojego silnika?

    Właściwie tak. Sterownik albo ustawia to automatycznie, albo ustawia się ręcznie w zakresach na jakie sterownik pozwala. I wybiera się najlepsze ustawienie. Ale jak będziesz sam robił sterownik (co przy obecnym wyborze i cenach gotowych sterowników może być usprawiedliwione tylko chęcią nauki) to musisz dokładnie poznać mechanizmy tego zjawiska i dostroić się do silnika.

    Do tego co ma być kręcone dobiera się silnik. Znając oczywiście ograniczenia silników krokowych czyli spadek momentu wraz z obrotami, max obroty itd.
    Jak dobierzesz silnik to się dobiera sterownik. A do sterownika i wymagań odnośnie napędu dobiera się zasilacz. Wtedy wszystko "wyrabia".
    Taka jest normalna kolejność. Inna powoduje stosowanie półśrodków, kompromisy itd. A później działa albo nie. Czasami jest jeszcze działa trochę, albo działa czasami :P

    0
  • #7 24 Kwi 2015 02:53
    MateuszW_
    Poziom 7  

    To ma być urządzenie do ustawiania ostrości, ma komunikację z PC, pamiętanie pozycji, płynne rozpędzanie, wyświetlacz itp. Uniwersalny sterownik silnik nic by mi nie dał. A skoro robię swoją płytkę, to nic nie stoi na przeszkodzie, żeby użyć gołego samego układu, zamiast kompletnego modułu (bo te moduły są trochę droższe, niż goły układ). Obecnie mam już kompletne, działające urządzenie, jednak planuję wykonać nową, lepszą wersję.
    W moim zastosowaniu w zasadzie nie potrzebuję zbyt dużych prędkości, tu bardziej liczy się precyzja. silnik ma spory zapas mocy, więc z tym nie ma problemu. No ale z drugiej strony, to idealnie dobrane parametry sterownia pozwoliłyby pewnie na zastosowanie nieco mniejszej mocy do uzyskania tego samego momentu obrotowego. Tak więc spróbuję to dobrać jak najlepiej.

    0
  • #8 07 Paź 2015 20:54
    MateuszW_
    Poziom 7  

    Witam po małej przerwie. Zdecydowałem się ostatecznie na układ DRV8825 (Link), który ma 32 mikrokroki. Wszystko działa zgrabnie. Urządzenie jest zasilane z 12V i to jest niezmiennik. Jednak obecnie mam silnik również na 12V (taki: http://www.silniki.pl/index.php?site=products&type=250&details=1076) i niestety, aby uzyskać płynną pracę, muszę zmniejszyć ograniczenie prądowe o co najmniej połowę. Wtedy może już działać prawidłowo chopper i wszystko gra. Na pełnym, nominalnym prądzie silnik przeskakuje między pełnymi krokami i generalnie pracuje źle. Co ciekawe, gdy poprzednio sterowałem silnik softwerowo bez dedykowanego drivera, to nawet na pełnym prądzie zachowywał się on w porządku.

    Zastanawiam się nad zmianą tego silnika na taki, o właściwych parametrach, abym mógł wykorzystać jego pełne możliwości. Zgodnie z poradą powinien to być silnik o jak najmniejszym napięciu zasilania. Moim zdaniem rozsądny jest ten: http://www.silniki.pl/index.php?site=products&type=250&details=1072.. Ma 2,5V, a więc jest duży zapas w stosunku do 12V zasilania. Tak więc chopper powinien pracować wydajnie. Prąd 1,7A na cewkę jest dość duży, ale układ DRV8825 pozwala na prąd max 2,5A, a wiec wszystko się mieści.

    Mam więc pytanie, czy ten silnik jest dobrym wyborem, czy może polecacie jakiś inny? Może znacie też inny sklep z silnikami, gdzie dostałbym podobny produkt taniej? Od razu piszę, że nie interesuje mnie allegro itp, bo potrzebuję stałego i pewnego źródła silników, a nie jednorazówki.

    0
  • #9 07 Paź 2015 22:33
    tomek_602
    Poziom 21  

    Tak na moje wyczucie silnik 12V/1A może być niepodatny na poprawne dzielenie kroku.
    Podział kroku sprawdza się dobrze na silnikach zasilanych prądowo. Maja one bardzo małą indukcyjność uzwojeń, co minimalizuje zachodzące w nich efekty psujące liniowość podziału. Zasilanie 12V/1A sugeruje, że jest to raczej silnik do komutacji napięciowej i może mieć całkiem sporą indukcyjność.

    0
  • #10 08 Paź 2015 00:05
    MateuszW_
    Poziom 7  

    Hmm, nie wiem, czy poprawnie rozumiem pojęcie komutacji napięciowej i prądowej, ale wydaje mi się, że układ DRV8825 komutuje prądowo (ponieważ ustalam w nim ograniczenie prądu i sterownik sam reguluje napięcie tak, żeby uzyskać w miarę możliwości stały prąd).

    Używany przeze mnie dotychczas silnik (ten na 12V) ma faktycznie większą indukcyjność - 36 mH, natomiast ten, który chcę kupić (ten na 2,5V) ma tylko 3,2 mH. Z tego by wynikało, że ten drugi silnik powinien znacznie lepiej pracować na mikrokrokach?

    Oczywiście te napięcia silników, które podaję są to tylko napięcia znamionowe, a już sam układ DRV na podstawie ustalonego ograniczenia prądu sam sobie zmienia napięcie zasilania i zasadniczo 2,5V będzie się utrzymywać w czasie spoczynku, a w czasie ruchu będzie zapewne wyższe - aby uzyskać stały prąd przy przełączaniu uzwojeń.

    0
  • #11 08 Paź 2015 07:08
    noel200
    Poziom 24  

    No silnik 12V się słabo nadaje. Ten co pokazałeś będzie znacznie lepiej pracował.
    Ja ostatnio często zaopatruję się w EBMIA. Całkiem dobre ceny tam mają.
    A jak przylutowałeś thermal pad od tego drivera? Płytkę masz z płytkarni z przelotkami metalizowanymi?

    0