[C][Atmega32] Opis serwonapędu + TWORZENIE v2.0

Dyskusje na temat silników krokowych i sterowników silników krokowych.
Awatar użytkownika

Zienek
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 3730
Rejestracja: 13 gru 2008, 19:32
Lokalizacja: Szczecin
Kontakt:

#21

Post napisał: Zienek » 15 mar 2013, 17:46

Silniki np w dremelach mają szczotki pod kątem, żeby zoptymalizować parametry dla narzędzia, które w domyśle pracuje zawsze w jednym kierunku obrotów. Serwa nie mają takich optymalizacji, bo muszą mieć symetryczne parametry obrotu dla obu kierunków.



Tagi:


Autor tematu
volkhen
Sympatyk forum poziom 1 (min. 40)
Sympatyk forum poziom 1 (min. 40)
Posty w temacie: 33
Posty: 45
Rejestracja: 03 mar 2007, 10:44
Lokalizacja: Bydgoszcz

#22

Post napisał: volkhen » 15 mar 2013, 18:12

Temat braku mocy w jedną stronę został rozwiązany. L298 był uszkodzony.
[youtube][/youtube]

dalej testuję napęd. W tej chwili przerabiam dekodowanie enkodera na czterokrotne aby zwiększyć dokładność. Nie jestem zadowolony z niej ponieważ wynosi ona około 10 imp. z enkodera i nie mogę jej zmiejszyć. Jeśli po zmianie dokładności odczytu enkodera spróbuję dodać pętlę prędkości (kaskadowy PID).

I tu się pojawia pytanie. Jak to zrobić ;)


Autor tematu
volkhen
Sympatyk forum poziom 1 (min. 40)
Sympatyk forum poziom 1 (min. 40)
Posty w temacie: 33
Posty: 45
Rejestracja: 03 mar 2007, 10:44
Lokalizacja: Bydgoszcz

#23

Post napisał: volkhen » 17 mar 2013, 14:56

Walczę z dokładnościami i wizualizacją przebiegów.
Udało mi się uzyskać coś takiego:

Obrazek

Przebieg symbolizujący wyjście PIDa.
Obrazek

Komentarz mile widziany.

Awatar użytkownika

ursus_arctos
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 25
Posty: 2083
Rejestracja: 11 cze 2011, 18:29
Lokalizacja: Warszawa / Lublin

#24

Post napisał: ursus_arctos » 17 mar 2013, 22:13

Nie wiem, co to kaskadowy PID, ale mówię: spróbuj pobawić się z feedforward. Na razie mam tylko prędkościowy FF i efekt jest naprawdę niezły - mogę miotać silnikiem z wymuszeniem sinusoidalnym o pełny obrót kilka razy na sekundę i mam uchyb na poziomie 0.01 obrotu. Przy 1Hz uchyb jest na poziomie 3 zliczeń (używam wszystkich zboczy, czyli mam 800 zliczeń na obrót).

U mnie wygląda to tak:
Mam max. prędkość silnika dla danego napięcia zasilającego (K) (docelowo będzie pełna charakterystyka) - prędkość idzie dość ładnie liniowo ze wsp. wypełnienia (przy prędkościach <5% max. jest to mocno zaburzone ze względu na tarcie statyczne szczotek i niedokładność czasu przewodzenia mostka).
Znam w danym momencie prędkość (V) i położenie (X). Znam również położenie z enkodera (x) i oszacowaną prędkość silnika (v).
Wyjście regulatora to po prostu v/K+PID(X, V, x, v).
Jak widać, regulator "zgaduje", że powinien dać wypełnienie v/K, bo mamy uzyskać prędkość v, PID zajmuje się tylko błędem tego oszacowania. Docelowo będzie jeszcze oszacowanie wyjścia dla określonego przyśpieszenia.

Zakładając, że przy pełnym wysterowaniu uzyskujemy prędkość K lub przyśpieszenie rozruchowe M, możemy oszacować wyjście regulatora jako:
v/K+ a/(M*(abs(v)-K))
dla zadanych v i a.
człon abs(v)-K wynika stąd, że moment zmniejsza się do zera w miarę zbliżania się do prędkości bez obciążenia.
Problem w tym, że o ile łatwo wyznaczyć K (po prostu puszczamy silnik wysterowany na 100% i patrzymy na prędkość) o tyle wyznaczenie M nie jest takie proste - najlepiej, jak sterownik zrobi to jakoś automatycznie, np. badając czas potrzebny do osiągnięcia połowy maksymalnej prędkości.

W ogóle, to dostrzegam pewien problem z serwami i enkoderami jako takimi: estymowanie prędkości na podstawie skwantowanego położenia powoduje nieuniknioną odpowiedź oscylacyjną członu różniczkującego przy małych prędkościach. Czytałem o tym papierek, gdzie goście to po matematycznie udowodnili. Można próbować minimalizować ten efekt, ale nie da się go wyeliminować. U mnie jest on dość boleśnie obecny - człon D mam naprawdę bardzo słabo wysterowany :(


Autor tematu
volkhen
Sympatyk forum poziom 1 (min. 40)
Sympatyk forum poziom 1 (min. 40)
Posty w temacie: 33
Posty: 45
Rejestracja: 03 mar 2007, 10:44
Lokalizacja: Bydgoszcz

#25

Post napisał: volkhen » 16 kwie 2013, 09:00

Dzięki za merytoryczny post.

Co do członu D mam w planie zrobić na nim mały filtr dolnoprzepustowy. Jestem ciekaw czy wyeliminuje to problem szumu. Może jednak popsuć prędkość odpowiedzi a więc pasmo... Zobaczymy.

Drugie moje pytanie jest takie.
Mam problemy z mostkiem L298. Zaczął mi pobierać 2A w czasie spoczynku silnika, prawdopodobnie są otwarte 3 tranzystory zamiast 2... Praca układu stała się narowista i trzeszcząca, wcześniej tego nie było gdy L298 był zmostkowany na 4A.
W planach mam zmianę mostka na L6203. Jakie są wasze doświadczenia i co polecanie zamiast tych dwóch wymienionych?

Jakość jest zła z uwagi na uszkodzony mostek...
[youtube][/youtube]
Drugie moje pytanie to jak zwiększyć prędkość pracy? W konfiguracji osi podałem 500mm/s i 2000mm/s^2 a mimo to maszyna pracuje bardzo wolno. Czy prędkość jest też ustalona w G-kodzie?

Oprogramowanie LinuxCNC

Awatar użytkownika

ursus_arctos
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 25
Posty: 2083
Rejestracja: 11 cze 2011, 18:29
Lokalizacja: Warszawa / Lublin

#26

Post napisał: ursus_arctos » 16 kwie 2013, 15:00

Errata do wcześniejszego postu:
ff = v/K+ a/M
Pochrzaniło mi się, z tym spadkiem napięcia - przecież już bierzemy go pod uwagę w pierwszym składniku sumy.

Co do mostków - ja polecam HIP4081A i 4 mosfety. Zimno, szybko, cicho. Jedyny radiator w moim sterowniku, opartym o powyższy układ, zamontowany jest na regulatorze 7805.
Koszt: HIP4081A 17.50, mosfety 4x3, pozostały osprzęt jakieś 6zł.
Jedyny mankament jest taki, że potrzebne są 2 napięcia - zasilanie silnika oraz +12V do bramek (chyba, że użyjesz mosfetów z napięciem bramki 5V, wtedy możesz zasilać bramki ze źródła napięcia dla logiki).


Autor tematu
volkhen
Sympatyk forum poziom 1 (min. 40)
Sympatyk forum poziom 1 (min. 40)
Posty w temacie: 33
Posty: 45
Rejestracja: 03 mar 2007, 10:44
Lokalizacja: Bydgoszcz

#27

Post napisał: volkhen » 16 kwie 2013, 18:53

W takiej konfiguracji z mosfetami potrzebne są diody Schottky'iego? Tak jak w innych układach?

Awatar użytkownika

ursus_arctos
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 25
Posty: 2083
Rejestracja: 11 cze 2011, 18:29
Lokalizacja: Warszawa / Lublin

#28

Post napisał: ursus_arctos » 16 kwie 2013, 23:44

U mnie nie ma, ale ja jadę na trybie slow decay (silnik jak nie jest zasilany, jest zwierany przez 2 górne MOSFETy). Przy trybie fast decay diody by się przydały pewnie, jeżeli nie będzie pomiaru prądu i wykrywania przejścia przez 0.


Autor tematu
volkhen
Sympatyk forum poziom 1 (min. 40)
Sympatyk forum poziom 1 (min. 40)
Posty w temacie: 33
Posty: 45
Rejestracja: 03 mar 2007, 10:44
Lokalizacja: Bydgoszcz

#29

Post napisał: volkhen » 17 kwie 2013, 00:11

[youtube][/youtube] filmik z testowania. Muszę naprawić końcówkę mocy gdyż wcześniej nawet na prędkościach rzędu 1 metr na sekundę napęd zachowywał się płynnie. Nie było efektu szarpania i mrowienia podczas ruchu. Wcześniej miałem zmostkowany układ L298 na 4A. Na dwa ampery sobie nie radzi i szybko sie uszkadza.

Awatar użytkownika

ursus_arctos
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 25
Posty: 2083
Rejestracja: 11 cze 2011, 18:29
Lokalizacja: Warszawa / Lublin

#30

Post napisał: ursus_arctos » 17 kwie 2013, 09:54

Olbrzymie te prędkości masz. Jaki masz enkoder i ile mm/obrót robisz?

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Silniki Krokowe / Sterowniki Silników Krokowych”