@Forbot: albo tego nie widzę w kodzie albo jest błąd przy różniczkowaniu. Człon różniczkujący jest tak wyznaczony jako (pidparams.errlast - pid_params.err) * kd a powinien być (pidparams.errlast - pid_params.err) / T * kd, w końcu różniczkujemy po czasie :)
Nie wiem też, gdzie jest właściwie pidparams.errlast przypisywane ale przejrzałem tylko pid.c, więc się nie wypowiadam.
Nie podoba mi się też konkluzja. Brzmi to jakby regulator
@andzej74: dzięki za uwagi - przekażę do autora. Co do kwestii porównywania ze sterowaniem w pętli otwartej, jest to sporo uproszczenie w kierunku osób początkujących. Dla nich jedynym słusznym, w tym przypadku, sterowaniem jest własnie pętla otwarta. Dlatego artykuł ma pokazać, że to lepsza "alternatywa".
Czy T w różniczkowaniu jest faktycznie potrzebne? Zakładamy, że pomiary są w stałych odstępach czasu - więc teoretycznie T * kd jest stałe i tutaj uproszczone
Bez tego po pierwsze nie możemy mówić o różniczkowaniu a jedynie różnicy dwóch wartości a po drugie - w badanym przypadku, gdzie okres próbkowania to T = 0.005 - człon różniczkujący jest 200 razy mniejszy niż powinien być. Rzekłbym, że praktycznie go nie ma :)
@andzej74: racja, mój błąd - wychodzi, jakby T było przyjęte "1". Przekażę, do autora artykułu. Jednak tak czy inaczej działa, testowałem - można się bawić ( ͡°͜ʖ͡°)
@samotan: a czemu nie? Nie wiesz przecież gdzie pracuje, czym się zajmuje, więc czasami nie warto osądzać ( ͡°͜ʖ͡°) Po drugie artykuł głównie dla studentów, więc każdy może legalnie skorzystać z oprogramowania na uczelni. W innych artykułach używamy darmowych alternatyw, więc spokojnie ( ͡°͜ʖ͡°)
Jak zaimplementować regulator PID dla silnika z enkoderem? W praktyce na STM32 + FreeRTOS!
http://forbot.pl/blog/artykuly/teoria/jak-zaimplementowac-regulator-pid-dla-silnika-z-enkoderem-id6310
Moim zdaniem jeden z ciekawszych tekstów (na Forbocie) dla zainteresowanych podstawami teorii sterowania ( ͡° ͜ʖ ͡°)
#elektronika #automatyka #majsterkowanie #forbot #stm32 #zainteresowania #programowanie #matlab
Człon różniczkujący jest tak wyznaczony jako (pidparams.errlast - pid_params.err) * kd
a powinien być (pidparams.errlast - pid_params.err) / T * kd, w końcu różniczkujemy po czasie :)
Nie wiem też, gdzie jest właściwie pidparams.errlast przypisywane ale przejrzałem tylko pid.c, więc się nie wypowiadam.
Nie podoba mi się też konkluzja. Brzmi to jakby regulator
Czy T w różniczkowaniu jest faktycznie potrzebne? Zakładamy, że pomiary są w stałych odstępach czasu - więc teoretycznie T * kd jest stałe i tutaj uproszczone
Bez tego po pierwsze nie możemy mówić o różniczkowaniu a jedynie różnicy dwóch wartości a po drugie - w badanym przypadku, gdzie okres próbkowania to T = 0.005 - człon różniczkujący jest 200 razy mniejszy niż powinien być. Rzekłbym, że praktycznie go nie ma :)
Po drugie artykuł głównie dla studentów, więc każdy może legalnie skorzystać z oprogramowania na uczelni. W innych artykułach używamy darmowych alternatyw, więc spokojnie ( ͡° ͜ʖ ͡°)