RTV forum PL | NewsGroups PL

Optymalne strojenie PID dla silnika z enkoderem na Pi Pico zjawiska oscylacji?

PID - jeszcze raz

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Optymalne strojenie PID dla silnika z enkoderem na Pi Pico zjawiska oscylacji?

Goto page 1, 2  Next

Mirek
Guest

Thu Jan 22, 2026 9:53 pm   



Próbuję okiełznać po raz kolejny sterowanie nadążne PID silnika z
enkoderem. Enkoder jest podłączony do Pi Pico, odczytuje go program w
PIO, a wartość czytam w micropythonie i obliczam dane dla PWM. Działa mi
to tak, że wystrojenie do +- kilkadziesiąt podziałek enkodera zachowuje
się przewidywalnie.
Ale można to zrobić praktycznie do jednej działki, i pamiętam, że ktoś
tu na grupie się chwalił że to zrobił.

Zwiększam kP, układ zaczyna nadążać, ale powoli, zwiększam dalej... już
blisko, pojawia się przerzut, jeszcze trochę i pojawiają się oscylacje.
Te oscylacje można zniwelować kD. Zwiększam kD, oscylacje zaczynają
maleć... jeszcze bardziej maleć... już prawie... i zwiększenie dalej
powoduje, że pojawiają się nowe oscylacje, tylko szybsze (krótszy okres)
i dalsze zwiększanie kD zwiększa amplitudę jeszcze bardziej.
Co tu jest grane?
Mam swoją teorię, ale zanim napiszę - może ktoś puści parę - to na pewno
szkolny błąd i znane zjawisko.


--
Mirek

J.F
Guest

Fri Jan 23, 2026 12:44 am   



On Thu, 22 Jan 2026 20:53:47 +0100, Mirek wrote:
Quote:
Próbuję okiełznać po raz kolejny sterowanie nadążne PID silnika z
enkoderem. Enkoder jest podłączony do Pi Pico, odczytuje go program w
PIO, a wartość czytam w micropythonie i obliczam dane dla PWM. Działa mi
to tak, że wystrojenie do +- kilkadziesiąt podziałek enkodera zachowuje
się przewidywalnie.
Ale można to zrobić praktycznie do jednej działki, i pamiętam, że ktoś
tu na grupie się chwalił że to zrobił.

Zwiększam kP, układ zaczyna nadążać, ale powoli, zwiększam dalej... już
blisko, pojawia się przerzut, jeszcze trochę i pojawiają się oscylacje.
Te oscylacje można zniwelować kD. Zwiększam kD, oscylacje zaczynają
maleć... jeszcze bardziej maleć... już prawie... i zwiększenie dalej
powoduje, że pojawiają się nowe oscylacje, tylko szybsze (krótszy okres)
i dalsze zwiększanie kD zwiększa amplitudę jeszcze bardziej.
Co tu jest grane?
Mam swoją teorię, ale zanim napiszę - może ktoś puści parę - to na pewno
szkolny błąd i znane zjawisko.

Masz metodę Zieglera-Nicholsa:
https://www.podkontrola.pl/regulacja-w-oparciu-o-parametry-pid-cz-2/

Wyłaczasz człony D i I, podkręcasz powoli wzmocnienie, az wystąpią
oscylacje. Znalazłes wzmocnienie krytyczne Kc, i mierzysz okres
oscylacji Pc.

A następnie jak w tabelce:
Kp = 0.6*Kc
Ki = 2*Kp/Pc
Kd = Kp*Pc/8

IMO - w zależności od tego czym silnik kręci - może się okazać,
ze to krytyczne wzmocnienie jest inne, w zalezności od zadanych
obrotów.

Program jest wystarczająco szybki, nie gubi kroków z enkodera?
Enkoder bezpośrednio na osi silnika, czy po jakiejs przekładni ... bo
luzy mogą być tu wredne ...

J.

Mirek
Guest

Fri Jan 23, 2026 9:23 pm   



W dniu 22.01.2026 o 23:44, J.F pisze:

Quote:
Masz metodę Zieglera-Nicholsa:

Nie sprawdza się.
Nie udało mi się doprowadzić do stabilności z jakimkolwiek Ki.
Może to jest kwestia jednostek?
Uchyb jest liczony w działkach enkodera, przyrost uchybu w działkach na
mikrosekundę, okres oscylacji to jakieś 0,2-0,5sekundy, to ki jakoś
strasznie małe wyjdzie, kd ogromne.
Kp rozumiem że w tym wzorze 1 oznacza maksymalną moc?



Quote:
IMO - w zależności od tego czym silnik kręci - może się okazać,
ze to krytyczne wzmocnienie jest inne, w zalezności od zadanych
obrotów.


Program jest wystarczająco szybki, nie gubi kroków z enkodera?
Enkoder bezpośrednio na osi silnika, czy po jakiejs przekładni ... bo
luzy mogą być tu wredne ...

Silnik kręci bezpośrednio enkoderem. próbowałem też przez przekładnie
ale nic to nie zmienia - wolniej wszystko się odbywa, ale nadal nie da
się wystroić lepiej niż +- 50 - 100 podziałek.
Kroków nie gubi, bo kroki odczytuje PIO.
Program szybki... a jaki szybki ma być? Jaki powinien być krok pomiędzy
kolejnymi obliczeniami?


--
Mirek

J.F
Guest

Fri Jan 23, 2026 11:34 pm   



On Fri, 23 Jan 2026 20:23:06 +0100, Mirek wrote:
Quote:
W dniu 22.01.2026 o 23:44, J.F pisze:
Masz metodę Zieglera-Nicholsa:

Nie sprawdza się.
Nie udało mi się doprowadzić do stabilności z jakimkolwiek Ki.
Może to jest kwestia jednostek?

Być może - przy bardzo wolnym narastaniu powinno jakoś działać.
Nie mówię, że całkiem stabilnie, bo jakies tarcie i histereza silnika
dochodzi. Ale okres mógłbys wydłużać w nieskonconosc.

A z kolei szybkie procesory bardzo szybko całkują Smile
i kiepsko różniczkują :-)


Quote:
Uchyb jest liczony w działkach enkodera, przyrost uchybu w działkach na
mikrosekundę, okres oscylacji to jakieś 0,2-0,5sekundy, to ki jakoś
strasznie małe wyjdzie, kd ogromne.
Kp rozumiem że w tym wzorze 1 oznacza maksymalną moc?

Wzmocnienie częsci P

Quote:
IMO - w zależności od tego czym silnik kręci - może się okazać,
ze to krytyczne wzmocnienie jest inne, w zalezności od zadanych
obrotów.

Program jest wystarczająco szybki, nie gubi kroków z enkodera?
Enkoder bezpośrednio na osi silnika, czy po jakiejs przekładni ... bo
luzy mogą być tu wredne ...

Silnik kręci bezpośrednio enkoderem. próbowałem też przez przekładnie
ale nic to nie zmienia - wolniej wszystko się odbywa, ale nadal nie da
się wystroić lepiej niż +- 50 - 100 podziałek.
Kroków nie gubi, bo kroki odczytuje PIO.
Program szybki... a jaki szybki ma być? Jaki powinien być krok pomiędzy
kolejnymi obliczeniami?

Na tyle szybki, żeby nie gubił impulsów z enkodera. Chyba, że masz
jakiś absolutny.

A sam regulator niekoniecznie musi być szybki - sam widzisz, że
oscylacje maja 0.2-0.5s

J.

Mirek
Guest

Sat Jan 24, 2026 4:14 pm   



W dniu 23.01.2026 o 22:34, J.F pisze:

Quote:
Być może - przy bardzo wolnym narastaniu powinno jakoś działać.

Nie działa. Tak jak zauważyłeś silnik ma tarcie, zaskok magnetyczny -
jak sygnał narośnie na tyle że ruszy to przejedzie kilkadziesiąt -
kilkaset kroków i zaczyna się kołysanie.

Tak to powinno działać:
https://youtu.be/PU6tgQ84CEA
No chyba że to jest ściema i enkoder jest w rzeczywistości 100-1000 razy
dokładniejszy.


--
Mirek

Waldek Hebisch
Guest

Sat Jan 24, 2026 9:04 pm   



Mirek <mirek@null.dev> wrote:
Quote:
W dniu 22.01.2026 o 23:44, J.F pisze:

Masz metodę Zieglera-Nicholsa:

Nie sprawdza się.
Nie udało mi się doprowadzić do stabilności z jakimkolwiek Ki.
Może to jest kwestia jednostek?
Uchyb jest liczony w działkach enkodera, przyrost uchybu w działkach na
mikrosekundę, okres oscylacji to jakieś 0,2-0,5sekundy, to ki jakoś
strasznie małe wyjdzie, kd ogromne.

Bez członu "całkowego" prawie niemożliwe jest uzyskanie naprawdę
małego błedu. W praktyce liczy się sumy i odwrotność okresu sterownika
PID daje współczynnik skalujący sumę do całki. Oczywiście musisz
użyć zgodne jednoski inaczej wyjdą błędne wartości współczynników.
Działki enkdera wyglądają OK, ale musisz poprawnie uwzględnić czas.

--
Waldek Hebisch

Mirek
Guest

Sun Jan 25, 2026 1:34 pm   



W dniu 24.01.2026 o 15:14, Mirek pisze:

Quote:
Tak to powinno działać:
https://youtu.be/PU6tgQ84CEA
No chyba że to jest ściema i enkoder jest w rzeczywistości 100-1000 razy
dokładniejszy.

Tak mnie jeszcze nachodzi:
Przecież taki układ jest w drukarkach atramentowych. Nie przyszło mi do
głowy sprawdzić jaka tam jest rozdzielczość tego enkodera, nie mam
żadnej drukarki rozwalonej w tej chwili, bo bym sprawdził.
A może silnik musi być specjalny - w sensie nie może mieć zaskoków i
symetryczny moment w obie strony?

--
Mirek

alojzy nieborak
Guest

Sun Jan 25, 2026 3:03 pm   



W dniu 2026-01-25 o 12:34, Mirek pisze:
Quote:
W dniu 24.01.2026 o 15:14, Mirek pisze:

Tak to powinno działać:
https://youtu.be/PU6tgQ84CEA
No chyba że to jest ściema i enkoder jest w rzeczywistości 100-1000
razy dokładniejszy.

Tak mnie jeszcze nachodzi:
Przecież taki układ jest w drukarkach atramentowych. Nie przyszło mi do
głowy sprawdzić jaka tam jest rozdzielczość tego enkodera, nie mam
żadnej drukarki rozwalonej w tej chwili, bo bym sprawdził.


W osi Y 200 linii na cal.
W osi X (karetka z tuszami) 200 lub 400 linii na cal.
I to to z układem optyki (rozdzielczość x4) na wyjściu układu daje
odpowiednio rozdzielczość 800-1600 pikseli na cal. Tyle co do prostych
enkoderów bez jakiejś specjalnej ochrony pyłoszczelnej.

Quote:
A może silnik musi być specjalny - w sensie nie może mieć zaskoków i
symetryczny moment w obie strony?


W drukarkach masz zwykły DC tyko wolnoobrotowy z ciut większym momentem
obrotowym.

OT
https://elm-chan.org/works/smc/report_e.html

alojzy nieborak
Guest

Sun Jan 25, 2026 3:12 pm   



W dniu 2026-01-25 o 14:03, alojzy nieborak pisze:
Quote:
W dniu 2026-01-25 o 12:34, Mirek pisze:
W dniu 24.01.2026 o 15:14, Mirek pisze:

Tak to powinno działać:
https://youtu.be/PU6tgQ84CEA
No chyba że to jest ściema i enkoder jest w rzeczywistości 100-1000
razy dokładniejszy.

Tak mnie jeszcze nachodzi:
Przecież taki układ jest w drukarkach atramentowych. Nie przyszło mi
do głowy sprawdzić jaka tam jest rozdzielczość tego enkodera, nie mam
żadnej drukarki rozwalonej w tej chwili, bo bym sprawdził.


W osi Y 200 linii na cal.
W osi X (karetka z tuszami) 200 lub 400 linii na cal.
I to to z układem optyki (rozdzielczość x4) na wyjściu układu daje
odpowiednio rozdzielczość 800-1600 pikseli na cal. Tyle co do prostych
enkoderów bez jakiejś specjalnej ochrony pyłoszczelnej.

A może silnik musi być specjalny - w sensie nie może mieć zaskoków i
symetryczny moment w obie strony?


W drukarkach masz zwykły DC tyko wolnoobrotowy z ciut większym momentem
obrotowym.

OT
https://elm-chan.org/works/smc/report_e.html


Drugi raz OT
https://www.youtube.com/watch?v=qYJpl7SNoww
+
https://www.pmdcorp.com/resources/type/articles/get/mathematics-of-motion-control-profiles-article

Mirek
Guest

Sun Jan 25, 2026 3:36 pm   



W dniu 25.01.2026 o 14:12, alojzy nieborak pisze:

Quote:
W osi Y 200 linii na cal.
W osi X (karetka z tuszami) 200 lub 400 linii na cal.
I to to z układem optyki (rozdzielczość x4) na wyjściu układu daje
odpowiednio rozdzielczość 800-1600 pikseli na cal. Tyle co do prostych
enkoderów bez jakiejś specjalnej ochrony pyłoszczelnej.


No i kluczowe pytanie: ile wynosi błąd sterowania - ustawia do jednej
działki?

Quote:

Krzywymi sterowania będę się bawił jak PID będzie chodził tak jak powinien.




--
Mirek

J.F
Guest

Sun Jan 25, 2026 8:07 pm   



On Sun, 25 Jan 2026 14:36:45 +0100, Mirek wrote:
Quote:
W dniu 25.01.2026 o 14:12, alojzy nieborak pisze:
W osi Y 200 linii na cal.
W osi X (karetka z tuszami) 200 lub 400 linii na cal.
I to to z układem optyki (rozdzielczość x4) na wyjściu układu daje
odpowiednio rozdzielczość 800-1600 pikseli na cal. Tyle co do prostych
enkoderów bez jakiejś specjalnej ochrony pyłoszczelnej.

No i kluczowe pytanie: ile wynosi błąd sterowania - ustawia do jednej
działki?

Wcale nie musi - wystarczy, że się porusza w miarę równomiernie, potem
wystarczy wypluc kropelkę we własciwym momencie.

I ta rozdzielczość może być myląca - ona jest, bo kropelki można gęsto
pluc, pytanie na ile jest to dokładne/powtarzalne.

Quote:
Drugi raz OT
https://www.youtube.com/watch?v=qYJpl7SNoww
+
https://www.pmdcorp.com/resources/type/articles/get/mathematics-of-
motion-control-profiles-article

Krzywymi sterowania będę się bawił jak PID będzie chodził tak jak powinien.

J.

Mirek
Guest

Sun Jan 25, 2026 8:16 pm   



W dniu 25.01.2026 o 19:07, J.F pisze:

Quote:
Wcale nie musi - wystarczy, że się porusza w miarę równomiernie, potem
wystarczy wypluc kropelkę we własciwym momencie.


Na jedno wychodzi.
Z resztą w Y musi dokładnie ustawić inaczej wyjdą smugi na wydruku.



--
Mirek

Janusz
Guest

Sun Jan 25, 2026 11:28 pm   



W dniu 24.01.2026 o 15:14, Mirek pisze:
Quote:
W dniu 23.01.2026 o 22:34, J.F pisze:

Być może - przy bardzo wolnym narastaniu powinno jakoś działać.

Nie działa. Tak jak zauważyłeś silnik ma tarcie, zaskok magnetyczny -
jak sygnał narośnie na tyle że ruszy to przejedzie kilkadziesiąt -
kilkaset kroków i zaczyna się kołysanie.

Tak to powinno działać:
https://youtu.be/PU6tgQ84CEA
No chyba że to jest ściema i enkoder jest w rzeczywistości 100-1000 razy
dokładniejszy.

Nie, tam nie ma pid-a, tam sterowanie silnika musi mieć odpowiednią
rampę startową i zatrzymania
która zwalnia silnik i pozycjonuje.
Rampa to np kroki enkodera opadająco czyli np 32,16,8,4,2,1 odejmuje sie
ją od skoku i robi skok a potem kolejne małe kroczki wg ramy opadająco
aż do zera.
Oczywiście kroki mogą być mniejsze albo większe np 32,8,1, ważne żeby
wychamować silnik dokładnie na punkt.
To na filmie trudno zauważyć ale silnik zwalania przed zatrzymaniem, co
jest oczywiste bo ma swój moment i musi mieć czas aby wyhamować, właśnie
po to jest ta rampa.
A pid-a stosuje się do ciągłego sterowania np termostat czy obroty silnika.

--
Janusz

J.F
Guest

Mon Jan 26, 2026 7:22 am   



On Sun, 25 Jan 2026 22:28:26 +0100, Janusz wrote:
Quote:
W dniu 24.01.2026 o 15:14, Mirek pisze:
W dniu 23.01.2026 o 22:34, J.F pisze:

Być może - przy bardzo wolnym narastaniu powinno jakoś działać.

Nie działa. Tak jak zauważyłeś silnik ma tarcie, zaskok magnetyczny -
jak sygnał narośnie na tyle że ruszy to przejedzie kilkadziesiąt -
kilkaset kroków i zaczyna się kołysanie.

Tak to powinno działać:
https://youtu.be/PU6tgQ84CEA
No chyba że to jest ściema i enkoder jest w rzeczywistości 100-1000 razy
dokładniejszy.

Nie, tam nie ma pid-a, tam sterowanie silnika musi mieć odpowiednią

Napisane, że ma.
Silnik też wygląda na DC, a nie krokowy.

Quote:
rampę startową i zatrzymania która zwalnia silnik i pozycjonuje.

A nie widać :-)

Quote:
Rampa to np kroki enkodera opadająco czyli np 32,16,8,4,2,1 odejmuje sie
ją od skoku i robi skok a potem kolejne małe kroczki wg ramy opadająco
aż do zera.
Oczywiście kroki mogą być mniejsze albo większe np 32,8,1, ważne żeby
wychamować silnik dokładnie na punkt.
To na filmie trudno zauważyć ale silnik zwalania przed zatrzymaniem, co
jest oczywiste bo ma swój moment i musi mieć czas aby wyhamować, właśnie
po to jest ta rampa.

Musi mieć czas, ale ten robi to w jedną klatkę na YT - czyli chyba w
mniej niż 1/30 s.

Quote:
A pid-a stosuje się do ciągłego sterowania np termostat czy obroty silnika.

Tu cos o większej bezwładności
https://www.youtube.com/watch?v=fusr9eTceEo

Widać, że dopiero "anti windup" uzdrawia sytuację, ale to może być
częściowo fałszywe wrażenie.

J.

J.F
Guest

Mon Jan 26, 2026 10:06 am   



On Sun, 25 Jan 2026 19:16:49 +0100, Mirek wrote:
Quote:
W dniu 25.01.2026 o 19:07, J.F pisze:
Wcale nie musi - wystarczy, że się porusza w miarę równomiernie, potem
wystarczy wypluc kropelkę we własciwym momencie.

Na jedno wychodzi.

No nie, bo kropelka ma bardzo małą bezwładność :-)

Quote:
Z resztą w Y musi dokładnie ustawić inaczej wyjdą smugi na wydruku.

I ma tam enkoder czy zwykły krokowiec?

J.

Goto page 1, 2  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Optymalne strojenie PID dla silnika z enkoderem na Pi Pico zjawiska oscylacji?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map