Skocz do zawartości

Sterowanie silnikami krokowymi, jaki układ?


Pomocna odpowiedź

Napisano

Witam, chciałbym się zapytać ludzi, którzy dłużej w tym siedzą i można powiedzieć, że są specjalistami. Mianowicie potrzebuje sterować 2 silnikami krokowymi. Chcę sterować z arduino i zastanawiam się jak zrobić to sterowanie. Czytam o driverach, ale jest ich strasznie dużo i nie wiem co wybrać. Jakiś z mostkiem H byłby odpowiedni? Potrzebuję go w wersji SMD.

Parametry silników: 3.9V, 0.6 A/Phase, bipolarny

Właśnie z uwagi na to, że jest duży wybór, trudno coś poradzić. Nie wiemy jakie masz priorytety (cena, łatwość zakupu itp), z czego będziesz to zasilał i jakie parametry napędu chcesz uzyskać. Sterować chcesz z Arduino, to już wiemy ale to jest ta prostsza część. Czytałeś coś o sterowaniu takimi silnikami? Masz bipolarne, więc niezbędne będzie wymuszanie przepływu prądu w obu kierunkach - jakaś odmiana mostka H na pewno. Jaki zasilacz przewidujesz? Myślę, że 12V to minimum. Do jakich obrotów chcesz to kręcić? Czy pogodzisz się ze spadkiem momentu przy wyższych obrotach i jak bardzo? Czy potrzebujesz kroków mniejszych niż natywny krok silnika (praca mikrokrokowa)? Wystarczy 1/2, 1/4 czy może 1/256? A może jeszcze o tym nie wiesz? Czy będzie to obracało np. kamerką, gdzie płynność jest ważna przede wszystkim czy napędzało coś jeżdżącego? Czy będziesz chciał płynnie ruszać i zatrzymywać? Jakieś interpolatory? Algorytmy sterowania silników krokowych mogą spokojnie zjeść całkiem dużo mocy obliczeniowej biednego Arduino. Musisz napisać coś więcej.

  • Pomogłeś! 1

Fajny układzik to: ULN2803SMD

Nie musisz wtedy podłączać dodatkowych tranzystorów, rezystorów i itp.

Zasilanie możesz dać w zakresie od +5V do +24V.

Możesz obciążyć wyjśćia prądem max. do 500mA, lecz łączny prąd wszystkich wyjść nie może przekroczyć 500mA. Czyli jak byś chciał wykorzystać 4 wyjścia to max. ok. 100mA na jedno wyjście.

Lecz nie wiem czy ci to odpowiada. Zwykle tak duży prąd wystarcza do wysterowania większości niewielkich silników krokowych.

Mam nadzieje, że w jakimś stopniu pomogłem. 😉

ULN2803SMD

To ma napędzać coś jeżdżącego. W zupełności wystarczy 1/2, 1/4 korku. Silnik jest niby na 3.9V, Myślałem coś takiego uzyskać z liniowego stabilizatora LM350 lub podobnego.

Czytałem o sterowaniu takimi silnikami 😉 Jak wspomniałem czytałem o mostkach H.

Co do płynnego ruszania i zatrzymywania to fajnie by było, lecz na początek chcę to wprowadzić w faze testów.

Robocika potrzebuję rozpędzić i zatrzymać. A dlaczego powinienem używać zasilacza 12V? chciałbym to zrobić na pakiecie Li-Po 7,4V, jeśli wrzucę stabilizator na 3.9 to powinno być ok?

Patryku, wiem wiem, pomogłeś mi troszkę. Ale pobór prądu moich silników przekroczy dopuszczalny na tym układzie. 600mA na cewkę mam. Potrzebuję 1 układ, który poradzi sobie z takimi 2 silniczkami -> 4 cewkami.

A co myślicie o EasyDriver?

http://schmalzhaus.com/EasyDriver/

Projekt OpenHardware

Do kupienia gotowiec za ~27zł: http://www.ebay.com/itm/EasyDriver-Board-Stepper-Motor-Driver-/330908551899

Ewentualnie jeśli DIY, to http://www.tme.eu/pl/details/a3979slp-t/drivery-silnikowe-i-pwm/allegro-microsystems/

Mi by się przydał taki jeden/dwa i rozważam. Szkoda wg mnie zachodu na ręcznie pisanie kodu do przełączania faz - dlatego preferuję interfejs (kierunek, liczba kroków). Do tego nie trzeba układu czasu rzeczywistego, co ma swoje plusy (można np. podpiąć do Raspberry Pi etc).

  • Pomogłeś! 1

Generalnie ja chciałbym większość elementów tego robocika umieścić na płytce wykonanej przeze mnie. Dlatego też będę unikał takich gotowych sterowników.

Zastanawiam się nad wykorzystaniem jakiegoś ARM, w STM32F405xx - coś w takim rodzaju. Nie wiem czy się połapię w tym, ale będę próbował. 🙂 To jest taka opcja jeśli arduino sobie nie poradzi 🙂

O właśnie coś takiego mam na myśli, jeśli chodzi o tego DRIVERA ALLEGRO MICROSYSTEMS A3979SLP-T.

Tylko, czy nim wysteruję 2 silniki bipolarne?

It is designed to operate bipolar stepper motors in full-, half-, quarter-, and sixteenth-step modes, with an output drive capacity of up to 35 V and ±2.5
Obawiam się, że tylko jeden mimo, że jest "motors". Na schemacie widać 4 wyjścia.

To będę zmuszony zamontować takie 2 układziki 🙂

Macie jakieś jeszcze porady odnośnie poruszania się robota za pomocą silników krokowych? Płynny start, zatrzymanie, jakieś wskazówki dla początkującego? 😉

Zanim wybierzesz je na serio do napędu robota poczytaj jeszcze trochę o silnikach krokowych, ich charakterystykach i przemyśl to jeszcze raz. To nie jest tak, że jeśli masz silnik na 3V to dajesz zasilanie 3V i jest OK. Takie prymitywne sterowanie sprawdza się w sytuacjach, gdy silnik porusza się bardzo wolno a najlepiej gdy stoi i coś trzyma 🙂 Gdy prędkość zaczyna przekraczać kilkaset kroków/s moment takiego silnika gwałtownie maleje a jest to spowodowane ograniczeniem szybkości narastania prądu w uzwojeniu. Jeśli chcesz kręcić kilka obrotów/s (a w napędzie robota to nie jest żaden wyczyn) to dla silnika krokowego jest to naprawdę szybko i prawie na pewno będziesz zmuszony zasilać drivery z napięcia 10-30V. Jeśli planowałeś akumulatror 2S to zajmij się teraz układami podwyższającymi napięcie, bo będzie to obowiązkowy fragment Twojego robota. Każdy nietrywialny driver silnika krokowego jest wyposażony w mechanizm impulsowej stabilizacji prądu uzwojenia i czasem są to dość skomplikowane algorytmy, więc nie ma co tego robić samemu. W takim układzie prąd uzwojenia jest dokładnie taki, jaki ustawisz w projekcie i jest niezależny choćby od napięcia zasilania. Korzystając wtedy z dużo wyższego (niż potrzebne do pracy przy DC) napięcia, driver może wymusić dużo większą szybkość narastania prądu i tym samym poważnie podkręcić prędkość obrotową, przy której moment silnika zaczyna znacząco maleć.

Układy typu 2803 nie sprawdzają sie w takich zastosowaniach zupełnie - to głupie (w sensie nie-inteligentne) tranzystory upakowane po kilka w jednej obudowe. Tym można sterować diodki LED albo cewki przekaźników ale nie taki silnik.

Już teraz zastanów się jak zrobiłbyś np. liniowe przyśpieszanie i hamowanie. Pomyśl jak musiałby zmieniać się czas między kolejnymi krokami by przyśpieszenie było stałe - to ważne w napędzie. Coś takiego za chwilę będzie musiało liczyć Twoje Arduino a w tym algorytmie (jest kilka odmian) liczenie pierwiastka kwadratowego spędza sen z powiek niejednymu AVR-kowi. Choćby tylko z tego powodu warto przemyśleć użycie szybszego procesora lub sterownika z zaszytą pewną inteligencją. Możesz zacząć od tego:

http://www.atmel.com/Images/doc8017.pdf

Jest tam trochę podstaw i sposób na liczenie przyśpieszeń liniowych bez pierwiastków 🙂

A3979 może sterować jednym silnikiem bipolarnym i ma wbudowaną stabilizację prądu uzwojeń - z resztą bez tego nie byłaby możliwa praca mikrokrokowa. Jego maksymalne zasilanie to 35V i w jakieś 24V bym celował robiąc coś na silnikach które opisałeś. Moim zdaniem warto poszukać (choćby z ciekawości) co ludzie wymyślili w zakresie inteligentnego sterowania takich silników. Proponuję zacząć od strony firmy Trinamic.

  • Lubię! 1

Czasem będę zatrzymywał się w miejscu i dokładnie obracał się o jakiś kąt, np. 45stopni. Dlatego stwierdziłem, że lepsze będą silniki krokowe do tego celu 🙂

To z arduino będzie chyba przesiadka na STM z ARM Cortex-M4. Bo nic lepszego nie wymyślę, a to będzie dla mnie też coś nowego 🙂

Jakie wasze osobiste odczucia, jestem w stanie to ogarnąć w rok czasu? 😃

Czasem będę zatrzymywał się w miejscu i dokładnie obracał się o jakiś kąt, np. 45stopni.
Micromouse?

Pytane czy dany pakiet będzie dobry nie ma większego sensu. Tu trzeba przemyśleć całość, a nie dumać nad pojedynczymi elementami. Poczytaj i upewnij się, że krokowce będą Ci rzeczywiście pasowały. Potem zgodnie z tym, co napisał marek1707, będziesz miał określone wymagane napięcie.

Micromouse to za duży projekt, jak na mnie. Myślałem potem przesiąść się i robić micromouse. Ale chyba do sterowania micromousem nie potrzebne mi będą silniki krokowe?

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...