Skocz do zawartości
paperfalse

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

Pomocna odpowiedź

(edytowany)
Dnia 7.02.2019 o 18:38, 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 😉

Cześć,

nie potrzebuję korepetycji z trygonometrii (tak się dziwnie składa, że w szkole średniej dostałem się do finału olimpiady matematycznej). Doskonale wiem co tu przedstawiłeś:

podałeś po prostu sekwencję stanów impulsów przesuniętych w fazie z taką modyfikacją, że w niektórych momentach jest wartość prądu kroku określona poprzez PWM.

Problem leży gdzie indziej: podajesz tą metodę użytkownikowi, który pyta o podstawowe sterowanie silników krokowych jako podstawową. efekt jest taki, że zadający pytanie nadal nie wie jak sterować swoim silnikiem.

Takie metody stosuje się dla bardzo "biednych" silników jak przedstawiony (32 kroki). Naprawdę można wybrać za nieduże pieniądze silnik krokowy (razem ze sterownikiem), gdzie takie "sztuczki" nie są potrzebne. Poza tym w dzisiejszych czasach większość silników krokowych ma zintegrowane sterowniki, które zapewniają bardzo wygodne sterowanie, bez potrzeby stosowania sztuczek, typu PWM.

Silniki których ostatnio używałem w projekcie mają, aż cztery tryby pracy:

1) "Pulse and Direction" - gdzie po prostu sterujemy liczbą impulsów prostokątnych na wejściu STEP

2) "Velocity" -gdzie definiujemy funkcję prędkości obrotowej w funkcji czasu (to o czym pisał Elvis mówiąc o obwiedni sygnału) a sterownik sam martwi się o zapewnienie odpowiedniego wysterowania

3) Tryb "SCL" - użycie specjalnego języka programowania silnika

4) Trub "Q programer" - alternatywna metoda programowania

Czy zgodziłbyś się z uogólnieniem, że wszystkie silniki krokowe są tak sterowane - jestem pewien, że nie. Dlatego napisałem wyrażnie, że bez sensu jest opisywanie gołego silnika krokowego bez sterownika (ponieważ silniki krokowe mogą bardzo się różnic w swojej budowie wewnętrznej). Natomiast  Ty podałeś sposób sterowania jednego modelu silnika (bardzo prymitywnego) z jeszcze prymitywnijszym sterownikiem (jesli można to tak nazwać) jako podstawową metodę sterowania wszystkich silników krokowych. Poza tym, wystawiłeś negatyw dla neutralnej wypowiedzi jako pierwszy. Potem dałeś komentarz, że nie udzielasz korepetycji z trygonometrii, a skąd wiesz, że ja nie znam trygonometrii.

Sygnału PWM używam często w swoich projektach, głównie do sterowania silnikami DC, ale zrobiłem też np. DAc'a do płytki FPGA dla wyjścia audio (o niezbyt dobrych parametrach - ograniczone pasmo i dynamika - lepszych parametrów po prostu nie potrzebowałem). Doskonale rozumiem jak za pomocą PWM wygenerować przebieg o zadanym kształcie: po prostu wartość PWM musi być proporcjonalna do wartości chwilowej sygnału który chcemy odwzorować.

Jeśli chodzi o trygonometrię to kilka razy używałem np. z projektami opartymi na FPGA algorytmu "CORDIC" i nie miałem najmniejszych problemów z obliczeniami i trygonometrią.

Nadal twierdzę, że opisana przez Ciebie metoda sterowania silników krokowych nie jest metodą podstawową (wręcz dla dzisiejszyh silników niszową). Po drugie opisywanie "gołego" silnika bez zintegrowanego sterownika jest bez sensu.

Często dzisiejsze bardziej zaawansowane silniki mają sterowniki wyposażone w procesor DPS - do np. zaawansowanego "wygładzania" ruchu, filtrowania sygnałów sterujących itp.

Ja w swoim poście wyraźnie zaznaczyłem, że podana przeze mnie metoda sterowania jest ograniczona do silników ze zintegrowanym sterownikiem. O ile można się dowiedzieć z postu użytkownik zadający pytanie nie pytał o realizację "micro-steps" w podanym modelu silnika, tylko obsługą za pomocą zwykłych kroków.

BTW: zobacz co za dziwna koincydencja czasowa? Zobacz post "Ploter laserowy 2.5W dwuosiowy sterowany Arduino" z ostatnich godzin:

https://forbot.pl/forum/topic/13369-ploter-laserowy-25w-dwuosiowy-sterowany-arduino/

W projekcie tym są użyte dwa silniki krokowe i tutaj użytkownik w dokumentacji projektu ma opisane sygnały sterujące dla silników krokowych:

Cytat

Wejściu DIR będzie odpowiadać CW+ / CW-

Wejściu STEP będzie odpowiadać CLK+ / CLK-

Wejściu ENABLE będzie odpowiadać EN+ /EN-

Widzisz tu gdzieś sterowanie za pomocą metody, którą opisałeś jako uniwersalną dla silników krokowych (z wykorzystaniem PWM). Bo ja widzę 100 procentową kalkę tego co napisałem w tym temacie.

Widać, że masz wiedzę, ale popełniasz wielki błąd uważając, że masz monopol na wiedzę - a w dzisiejszych czasach jest to po prostu niemożliwe.

Widać to było np. w dyskusji z markiem, który jeśli chodzi o elektronikę (i nie tylko) jest chyba najlepszym fachowcem na tym forum i gdzie zupełnie niepotrzebnie robiłeś jakieś "osobiste wycieczki" pod jego adresem.

Pozdrawiam

Cześć,

zobacz następny dzisiejszy post na Forbot.pl: "Zasilanie silnika krokowego":

https://forbot.pl/forum/topic/13372-zasilanie-silnika-krokowego/

Tutaj kolega chce użyć takiego silnika krokowego:

https://botland.com.pl/pl/silniki-krokowe/3607-silnik-krokowy-jk42hs34-0404-200-krokowobr-12v-04a-025nm.html

i takiego sterownika Pololu:

https://botland.com.pl/pl/sterowniki-silnikow-krokowych/148-pololu-a4988-sterownik-silnika-krokowego-reprap-35v2a.html?search_query=a4988&results=24

I znów sterowanie wygląda tak jak opisałem. Cena sterownika niecałe 22 PLN (a silnika 49 PLN). Nie są to chyba kwoty nieosiągalne dla amatora. Właściwie w temacie, którego dotyczyła dyskusja pierwszym co należał zrobić to polecić użycie podobnego silnika i sterownika: wtedy mamy bardzo proste sterowanie z którym poradzi sobie każdy użytkownik Arduino.

Pozdrawiam

Edytowano przez FlyingDutch

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

×