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.

Silnik krokowy 800 rpm - sterowanie

mac310 14 Lis 2015 10:33 1086 5
  • #1 14 Lis 2015 10:33
    mac310
    Poziom 11  

    Witam,

    Muszę zrobić napęd do urządzenia, które wymaga precyzyjnego sterowania obrotami w zakresie 0-800 rpm. Chciałbym użyć silnika krokowego i sterować nim z ATmegi np. poprzez L293D. Problem w tym, że nigdzie nie mogę znaleźć podpowiedzi jakie parametry powinien mieć taki silnik aby był w stanie stabilnie (bez zatykania) kręcić się w podanym zakresie.

    0 5
  • #2 14 Lis 2015 10:45
    excray
    Poziom 39  

    Parametry znajdziesz w nocie katalogowej silnika a zamiast muzealnego 30-letniego L293 zastosuj np. A4988 do kupienia jako gotowy moduł za około dolara od naszych chińskich przyjaciół.

    0
  • #3 14 Lis 2015 10:48
    mac310
    Poziom 11  

    Promlem w tym, że w opisach silników są takie rzeczy jak liczba kroków na obrót, napięcie, rezystancja cewek itp a jakoś o prędkości obrotowej milczą zwykle.
    Do L293D się nie upieram. Z takim miałem tylko do czynienia i mam kilka sztuk więc dlatego wspomniałem o nim.

    0
  • #4 14 Lis 2015 10:54
    excray
    Poziom 39  

    Bo to silnik krokowy. To Ty sterujesz z jaką prędkością ma się obracać. Napięcia i ilość kroków na obrót masz podaną a prąd i tak zależy od obciążenia silnika. Zagwarantuj żeby nie przekraczał on dopuszczalnego w nocie katalogowej i to chyba tyle.

    0
  • #5 14 Lis 2015 11:31
    mac310
    Poziom 11  

    Ale z tego co czytam w różnych wątkach okazuje się, że po przekroczeniu pewnych obrotów dochodzi do zatykania i silnik zaczyna pracować niestabilnie.
    Robiłem testy z małym silnikiem podłączonym do sterownika i Arduino. Chodził płynnie do ok 200 rpm, a powyżej zaczynał się przycinać i drgać. Czyżby to wina sterowania czy po prostu on nie może więcej?

    Podłączyłem zewnętrzne źródło napięcia 12V i zaczął pracować płynniej. Może to była właśnie kwestia zasilania.
    Mam jednak teraz wątpliwość czy zadając parametr
    motor.setSpeed(800);
    rzeczywiście silnik kręci się na 800 rpm.
    Pewnie bez zastosowania enkodera i analizowania obrotów w ten sposób nie będę wiedział jak szybko się kręci.

    0
  • #6 16 Lis 2015 05:18
    emarcus
    Poziom 35  

    mac310 napisał:

    Mam jednak teraz wątpliwość czy zadając parametr
    motor.setSpeed(800);
    rzeczywiście silnik kręci się na 800 rpm.
    Pewnie bez zastosowania enkodera i analizowania obrotów w ten sposób nie będę wiedział jak szybko się kręci.


    To zaley jaką prędkośc miał w momencie zmiany parametru.
    Jeżeli zaczynasz od zera to silnik najprawdopodobniej będzie drgał i buczał.
    Podobnie jak auto, zechcesz z miejsca ruszyc z prędkościa 80 km/h, to albo silnik ‘zdechnie’, a jeżeli jest dostatecznej mocy, to będziesz w miejscu palił opony...
    Musisz go stopniowo rozpędzac (ramp). ‘Stromośc Ramp’ będzie zależała od wrodzonych cech samego silnika, bezwładności i obciążenia całego napędu oraz napięcia pracy silnika – nie ma na to reguły.
    Wyższe napięcia pozwalają osiągnąc większą kontrolę pracy i z reguły wyższe obroty. Z drugiej zaś strony, ze wzrostem obrotów tracisz moment silnika.
    Wyższe napięcie pracy powoduje większy pobór prądu, co pociąga za sobą koniecznośc stosowania odpowiednich driverów ograniczających maxymalny prąd.
    Zazwyczaj na silniku lub w jego datasheet, podawane jest jego napięcie. Nie kieruj się że to jest jego nominalne napięcie pracy (!!!). Tak nie jest.
    To napięcie może byc przekroczone wielokrotnie (nawet 20 razy!), pod warunkiem stosowania ograniczenia prądowego.
    Stosując odpowiedni driver, (proponowany w poprzednich postach), potrzebujesz tylko regulowac częstotliwośc pulsowania sygnału w zakresie od 0 do około 2.7kHz i ten sygnał dostarczyc do wejścia drivera. Processor może zając się odpowiednim formowaniem ramp (płynnym narastaniem lub obniżaniem częstotliwości) wg jakiegoś algorytmu, oraz liczeniem impulsów. Resztę wykona driver.
    Poprawna analiza rachunków i kodu, który w tym wariancie jest w miarę prosty powinna rozwiac twoje wątpliwości: ”czy rzeczywiście silnik kręci się na 800 rpm”.

    Możesz też oczywiście stosowac encoder dla stwierdzenia poprawności algorytmu dla processów "Ramp".

    e marcus

    0