Skocz do zawartości
paperfalse

Rozważania na temat sterowania silników krokowych za pomocą PWM

Pomocna odpowiedź

Napisano (edytowany)

Mankamenty arduino. Najlepiej sterować silnikiem za pomocą maski wczytywanej do portu ale trzeba by zrezygnować z biblioteki do silnika. W tej konfiguracji spróbuj podać na wszystkie piny stan wysoki, powinien stanąć w miejscu w najbliższej połówce.

Z ciekawości zapytam jeszcze czego używasz do dekodowania rc5?

Dodam tylko celem sprostowania. Można zawsze po zatrzymaniu wyłączyć zasilanie silnika, najlepiej jednak było by zewrzeć cewki tylko to by wymagało dodatkowej ingerencji w układ. Spróbuj sobie pozwierać cewki ręcznie bez podłączania silnika do zasilania i poruszać osią to będziesz wiedział o co chodzi.

Edytowano przez paperfalse
uzupełnienie

Udostępnij ten post


Link to post
Share on other sites

Dlaczego mankamenty arduino? Po prostu trzeba użyć właściwej biblioteki (np. AccelStepper)...

Udostępnij ten post


Link to post
Share on other sites

Ta biblioteka nie obsługuje mikrokroków tylko połówki, ćwiartki by się przydały jeszcze ale to też zależy do czego to komu potrzebne. Ta biblioteka wykorzystuje PWM w ogóle?

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
8 minut temu, paperfalse napisał:

Ta biblioteka wykorzystuje PWM w ogóle?

Jestem zagubiony, i przyznaję, że nie robiłem [praktycznie] jeszcze tej lekcji. Więc się pytam, czy silniki krokowe uruchamia się PWM w ogóle, czy tylko "normalne" silniki i ewentualnie serwomechanizmy z takimi silnikami? No i oczywiście diody.

Edytowano przez narbej

Udostępnij ten post


Link to post
Share on other sites

Nie ma się co zastanawiać, silniki można sterować na różne sposoby. PWM pozwala na precyzyjne sterowanie mocą silnika, zamiast ciągłych sygnałów daje się PWM co pozwala uzyskać płynną pracę i precyzyjną pracę za pomocą mikrokroków połówek, ćwiartek i więcej w zależności od możliwości silnika. W praktyce na silnikach jakimi sterowałem nie udało się uzyskać więcej niż ćwiartki przy stabilnie utrzymywanych pozycjach. Tak więc komutacje swoją drogą a PWM swoją w tym samym czasie.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Cześć,

silników krokowych nie obsługuje się poprzez PWM. Przeważnie mają kilka trybów pracy. Najprostszy jest tryb "Pulse and Direction" - w takim trybie są przeważnie trzy sygnały sterujące (poziomy logiki 3,3 lub 5V).

I tak:

1) Pin "STEP" - tutaj podajemy przebieg prostokątny (o odpowiednio dobranej częstotliwości). Wystarczy przesłać odpowiednią liczbę impulsów (odmierzyć), aby silnik przesunął się o określoną liczbę kroków. Oczywiście trzeba uwzględnić przekładnię mechaniczną jeśli jest zamontowana na silniku. Jeśli odmierzymy odpowiednią liczbę impulsów (kroków) silnik zatrzyma się po przesunięciu o odpowiadający im kąt. Jeśli impulsy na wejściu STEP nie są generowane silnik się zatrzymuje. Oczywiście jeśli inercja (bezwładność) mechaniczna układu jest duża mogą wystąpić drgania o malejącej amplitudzie po zatrzymaniu silnika. Lepsze silniki pozwalają na uwzględnienie inercji układu (jako parametr silnika) co usuwa ten efekt.

2) Pin "Direction" - steruje kierunkiem obrotów silnika (wartość sygnału określa kierunek obrotów: wartości LOW i HIGH

3) Lepsze silniki mają Pin "Enable" - poziom logiczny na tym pinie pozwala na zatrzymanie/ruch silnika

Lepsze silniki mają pamięć konfiguracji i możliwość zmiany dużej ilości parametrów (np. liczba kroków na pełen obrót: od kilkudziesięciu do np. 30 000). Możliwość ustalenia prądów na krok, idle, hamowanie itp. Ustawianie wielu parametrów mechanicznych silnika i podłączonego układu.  Itd. itp.

Takie silniki nie są sterowane sygnałem PWM. Nie wiem jak to jest z serwami opartymi na takich silnikach.

UWAGA: podane informacje dotyczą silników krokowych ze zintegrowanym sterownikiem. Nie dotyczy to "gołych" silników krokowych bez sterownika. Silniki ze sterownikami w większości sterowane w sposób jaki opisałem. Oczywiście w praktyce może występować więcej pinów sterujących np. związanych z obsługą sytuacji awaryjnych związanych z silnikiem itp.

Pozdrawiam

Edytowano przez FlyingDutch
  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Proponuje zainteresowanym lekturę dotyczącą mikrokroków w silnikach krokowych. Jest tego w necie masa informacji. Nie będzie wtedy żadnych niejasności. Oczywiście PWMem należy sterować w odpowiedni sposób. Na prośbę zainteresowanych mogę przedstawić ogólną zasadę mimo to zachęcam do zapoznania się z tematem bliżej we własnym zakresie.

@FlyingDutch mowa tu o samym silniku bez dodatkowych sterowników.

Udostępnij ten post


Link to post
Share on other sites

różnica jest tylko taka, że krok jest realizowany sprzętowo (typowe stepsticki) czy programowo (wspomniany w temacie silniczek).

gdzie tu miejsce na pwm?

no, ale ja się nie znam, z chęcią się dowiem.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
26 minut temu, paperfalse napisał:

Proponuje zainteresowanym lekturę dotyczącą mikrokroków w silnikach krokowych. Jest tego w necie masa informacji.

W necie jest faktycznie masa, ale trudno czasami znaleźć w tej masie prawdziwe, rzetelne informacje. Zgodnie z twoją sugestią zerknąłem [do netu]  i w dwu pierwszych [linkach http://silniki-krokowe.com.pl/informacje-techniczne/sterowanie-silnikami-krokowymi/, http://www.heilig.up.krakow.pl/mikrokontrolery/Pomoc/Sterowanie silnikami krokowymi.pdf] nic nie ma o pwm. Jest natomiast o Poglądowy przebieg chopper techniqueg do sterowania tranzystorami: ale to nie ma nic wspólnego z pwm. W drugim jest mowa między innymi o sterowaniu mikrokrokami i ... i też nie znalazłem nic o pwm. Bo z opisu mikrokroków wynika, moim zdaniem, że to nie pwm. Dalej już mi się nie chciało czytać. Może ty masz lepsze, swoje własne źródła?

"Najbardziej efektywną metoda jest zastosowanie tzw. pracy siekanej (metoda chopper technique). Która polega na podaniu nie jak wyżej wspomnianych pojedynczych impulsów na cewkę silnika, ale w danej chwili serii impulsów, która kształtem przypomina sygnał PWM. W pierwszej chwili impulsu z generatora jest podawane napięcie wyższe co przyspiesza narastanie prądu, później zostaje one ograniczone po przez pracę cykliczną tranzystora."

Powyżej cytat, z pierwszego linku.

Edytowano przez narbej

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Faktycznie niewiele to rozjaśnia. Ta praca "siekana"  pełni tu tę samą funkcję jak pwm w arduino tylko inaczej. Nie korzystając z procesora łatwiej jest sterować analogowo napięciem i częstotliwością niż wypełnieniem. Na szczęście arduino ma pwm i to od 2 do kilku kanałów i nie widzę przeszkód aby używać go dowolnie skoro się za niego zapłaciło. Proponuję poszukać dokładniej. Ogólnie tylko dodam, że przy każdej komutacji należy dostarczać do cewek tyle mocy aby oś przyjęła pożądane położenie i robić to w taki sposób aby w każdym położeniu moc oddawana przez silnik była taka sama. Drgania silnika podczas stanów stabilnych, trzeszczenie podczas pracy i inne wibracje to wynik błędnego wysterowania. 

#######################

przykładowe sterowanie

                            półkrokowe                                                       ćwierćkrokowe

                            bez kompensacji mocy                                  skompensowane  (wyliczone wartości PWM 8bit)

cewki                1     2     3     4                                                       1      2     3     4

                           H     L     L    L                                                         H  |  L     |   L     |   L

                           H    H     L     L                                                      235| 98   |    L    |   L

                           L    H     L      L                                                      180|180 |    L    |   L

                           L    H     H     L                                                       98  | 235|    L    |   L

                           L     L     H     L                                                         L  |   H   |    L    |   L

                           L     L     H    H                                                         L  | 235 |   98  |   L

                           L     L     L     H                                                        L   |180  | 180 |   L

                                                                                                              L  |   98  | 235 |  L

                                                                                                              L  |    L    |  H    |   L

                                                                                                                     itd.

Mam nadzieję, że to zrozumiałe 🙂

Edytowano przez paperfalse
uzupełnienie

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
Dnia 7.02.2019 o 15:55, paperfalse napisał:

Proponuje zainteresowanym lekturę dotyczącą mikrokroków w silnikach krokowych. Jest tego w necie masa informacji. Nie będzie wtedy żadnych niejasności. Oczywiście PWMem należy sterować w odpowiedni sposób. Na prośbę zainteresowanych mogę przedstawić ogólną zasadę mimo to zachęcam do zapoznania się z tematem bliżej we własnym zakresie.

@FlyingDutch mowa tu o samym silniku bez dodatkowych sterowników.

Cześć,

piszesz bzdury z kilku powodów. Po pierwsze sterowanie "gołym" silnikiem krokowym odbywa się poprzez podanie na (przeważnie cztery wejścia) impulsów prostokątnych przesuniętych w fazie o stałym kształcie i wypełnieniu wygenerowanych na podstawie przebiegu prostokątnego z generatora. Nie ma tu żadnego PWM ! Kształt impulsów sterujących każdym uzwojeniem jest stały - nie ma tu zmiany wypełnienia.

Po drugie silniki krokowe mogą dość znacznie różnić się konstrukcją i kształtem impulsów sterujących, dlatego bez sensu są stosowane przez Ciebie uogólnienia.

Silnik krokowy powinien być traktowany jako "całość" wraz ze swoim sterownikiem , co znajduje potwierdzenie w fachowej literaturze. Niezależnie od budowy "gołego" silnika sterowanie zawsze polega na podaniu sekwencji kilku sygnałów przesuniętych w fazie - nigdy nie słyszałem o sterowaniu silnikami krokowymi za pomocą sygnału PWM.

No chyba, że mówisz o jakimś bardzo nietypowym silniku połączonym właśnie ze sterownikiem w jedność i sterowanym przez PWM, ale ja nigdy o takim silniku nie słyszałem.

Większość silników krokowych do zastosowań przemysłowych ma dzisiaj zintegrowany sterownik. Podajesz na wejście "STEP" sterownika przebieg prostokątny (o wypełnieniu 50 % i odpowiednio dobranej częstotliwości) a on na jego podstawie sam generuje tą odpowiednią do sterowania danego silnika liczbę sygnałów o odpowiednim kształcie przesuniętych w fazie.

Pozdrawiam

 

 

Edytowano przez FlyingDutch

Udostępnij ten post


Link to post
Share on other sites
3 minuty temu, FlyingDutch napisał:

No chyba, że mówisz o jakimś bardzo nietypowym silniku połączonym właśnie ze sterownikiem w jedność i sterowanym przez PWM, ale ja nigdy o takim silniku nie słyszałem.

Mówię o bardzo typowym silniku krokowym, najtypowszym z możliwych z czterema wyprowadzeniami cewek. Nie obraź się ale mimo fragmentarycznych prawdziwych informacji to takie wypowiedzi jak powyższa wprowadzają tylko niepotrzebny zamęt w głowach niedoświadczonych entuzjastów. Sposób jaki zaprezentowałem to najprostsza realizacja micro-steps w silniku sterowanym przez uC za pomocą półmostków jak ULN2... To nie jest żadna czarna magia czy "magic numbers" tylko trygonometria w najprostszej postaci. Uściślając dodam tylko, że moment obrotowy nieco zmaleje na rzecz płynnej pracy i wyższej precyzji. Często nie jest konieczne stosowanie specjalizowanych sterowników aby osiągać równie dobre efekty. Proponuję zamiast się spierać zaimplementować sobie tą sekwencję i sprawdzić w praktyce.

Ps. nie prowadzę korepetycji z trygonometrii 😉

Udostępnij ten post


Link to post
Share on other sites
14 minut temu, paperfalse napisał:

Mówię o bardzo typowym silniku krokowym, najtypowszym z możliwych z czterema wyprowadzeniami cewek. Nie obraź się ale mimo fragmentarycznych prawdziwych informacji to takie wypowiedzi jak powyższa wprowadzają tylko niepotrzebny zamęt w głowach niedoświadczonych entuzjastów. Sposób jaki zaprezentowałem to najprostsza realizacja micro-steps w silniku sterowanym przez uC za pomocą półmostków jak ULN2... To nie jest żadna czarna magia czy "magic numbers" tylko trygonometria w najprostszej postaci. Uściślając dodam tylko, że moment obrotowy nieco zmaleje na rzecz płynnej pracy i wyższej precyzji. Często nie jest konieczne stosowanie specjalizowanych sterowników aby osiągać równie dobre efekty. Proponuję zamiast się spierać zaimplementować sobie tą sekwencję i sprawdzić w praktyce.

Ps. nie prowadzę korepetycji z trygonometrii 😉

To może najpierw napisz jak się realizuję obsługę podstawowych "steps" - tam nigdy nie stosuje się PWM . Jak kupisz silniczek który ma 32 kroki to musisz się bawić w takie 'wynalazki'.

Najpierw napisz niedoświadczonym adeptom jak się zapewnia podstawowe sposoby obsługi takiego silnika w zakresie "normalnych" króków. A jak wyłożysz podstawy to wtedy możesz opisać jak sztucznie zwiększać rozdzielczość takich silników za pomocą PWM realizują połówki, ćwiartki, szestnaski itd. Tak to mieszasz tylko ludziom w głowach. Po co mi reqalizacja "micro-steps" w silniku w którym liczsba kroków wynosi np. 25 000?

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

Wydaje mi się, że macie panowie trochę racji oraz stanowczo za dużo nerwów - ale ponieważ czasem sam się za bardzo wciągnę w temat, proponuję na spokojnie wrócić do dyskusji.

Po pierwsze właściwie każdy silnik wymaga sterownika. Podłączanie nawet małego silniczka bezpośrednio do wyprowadzeń mikrokontrolera to kiepski pomysł - a nawet jeśli użyjemy prostego tranzystora, to budujemy sterownik, prosty ale zawsze. Więc ULNxxxx jest też sterownikiem, tylko prostym.

Natomiast sterowniki są różne, różniste, zaczynając od prostych jak wspomniane, a kończąc na "inteligentnych", gdzie przez SPI, czy inny UART podajemy obwiednię ruchu i wszystko robi sterownik. Wydaje mi się, że cale nieporozumienie wynika z tego, że piszecie o różnych typach sterowników.

Warto za to zrozumieć różnicę między sterowaniem napięciowym, a prądowym. PWM daje nam wyjście napięciowe, które możemy uśrednić i dostać w ten sposób prymitywny DAC. Natomiast silniki steruje się prądem, a nie napięciem i dlatego bezpośrednie sterowanie PWM to raczej kiepski pomysł.

Niektóre sterowniki, jak np. wiekowa para L297 + L298 potrafią generować przebieg prądu proporcjonalny do napięcia i tutaj faktycznie można zastosować PWM z odpowiednim filtrem.

Natomiast bezpośrednie sterowanie PWM cewkami silnika raczej pasuje tylko do Arduino...

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Posty wydzielone z:

 

Udostępnij ten post


Link to post
Share on other sites

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ę »

×