W dniu 5.02.2026 o 08:38, J.F pisze:
Nie stuka, bo Kp jest niewielkie - przy Kd=0 musi być niewielkie dla stabilności. Ale przy takim niewielkim wystarczy wprowadzić niewielkie Kd i już słychać stukanie.
Przecież pisałem - dodaję stałą liczbę co cykl.
To bez znaczenia. błędy są czy się je printuje czy nie. Stuka tak czy siak.
Nic nie czeka. Pętla ma 1ms czy drukuję czy nie. Bufor drukowania chodzi osobno i fakt, nie nadąża jak za dużo drukuję na raz, ale to nadal nie zmienia czasu pętli.
Dobra, dziś spędziłem nad tym kilka godzin. Generalnie wygląda na to, że te błędy to są jakieś skumulowane (zbuforowane?) impulsy z enkodera. Czyli: W pierwszej kolumnie mamy licznik odczytów z fifo PIO, w drugiej odczytaną wartość, w trzeciej różnicę do poprzedniej - żeby było łatwo patrzeć. Teraz steruję PWM minimalnie żeby tylko się silnik kręcił (pid nie działa - daję stałą wartość do PWM) i mamy: (tylko interesujący fragment)
1922 1922 1 1923 1923 1 1924 1924 1 1925 1925 1 1926 1928 3 1927 1929 1kręcimy trochę szybciej i mamy:
1920 10714 7 1921 10722 8 1922 10730 8 1923 10738 8 1924 10746 8 1925 10753 7 1926 10919 166 1927 10926 7Dodatkowo - testowałem to trzy razy - wartość mimo tych błędów odpowiada położeniu enkodera. Enkoder daje 800 impulsów na obrót* - zadaję mu
800000 kroków, błędy sobie radośnie stukają a on po tych 100 obrotach staje dokładnie tam gdzie był w zerze. Czyli na mój gust są to kroki, które powinny się pojawić po jednym gdzieś we wcześniejszych odczytach ale się nie pojawiają. Czy są to kolejne cyfry złożone w liczbę, tak jak się wydawało? - nie, to tylko przypadek. Czy liczba 1926 odczytów ma tu jakieś znaczenie? - Tak jest tylko na początku, potem już różnie. Tutaj odczyty tylko błędów, czyli printuje jeśli różnica do poprzedniej większa od 10 (pokrywa się ze stukaniem), druga kolumna tym razem co ile odczytów: 17329 2515 18 19848 2519 18 22361 2513 17 24882 2521 18 27398 2516 17 29914 2516 18 32435 2521 18 34947 2512 17 37470 2523 18 39977 2507 17Czyli coś źle działa i nie wiemy dlaczego. Nawet nie mam teorii jak taki błąd mógłby powstać. Próbowałem wgrywać nowego MicroPythona, najnowsze jakieś nieoficjalne wydania, następnie najstarsze jakie tylko mam - dzieje się to samo.
Znalazłem jeszcze to:
Trudno mi to komentować, dlatego powstrzymam się.