Witam, w oparciu o mikrokontroler atmega128 buduje sobie platformę latającą nazywaną często quadrocopterem
. Prace posuwają się naprzód i jestem z całości naprawdę zadowolony. Utknąłem jednak ostatnio na strojeniu regulatora PID i nie mogę przebrnąć przez ten temat. I o ile dobór parametrów P jest dla mnie jasny i zrozumiały to nie mogę sobie poradzić z współczynnikiem I. Parametru D nie używam. Na początek może funkcja pełniąca rolę regulatora:
Kd jeśli jest za małe to odpowiedzi silników są bardzo słabe a w skrajnych przypadkach nie wystarczają na kompensacje błędu. Za duże kd powoduje pojawienie się niegasnących oscylacji gdyż silniki reagują zbyt gwałtownie. Ustaliłem że w moim przypadku optymalna wartość kd wynosi 9. Nie mam teraz pojęcia jak dobrać do tego parametr Ki oraz Imax. Próbowałem robić to na tak zwane 'oko' ale nie mogę wychwycić żadnych istotnych zmian w zachowaniu quadrocoptera po zmianie tych parametrów. Testowałem wielkości z przedziału 1..20 i wydaje mi się że nic się nie zmienia ( i max ustawione na 50 ) . Dopiero kiedy eksperymentalnie Ki ustawiłem na 100 a imax na 500 to po przechyleniu platformy w jakimś kierunku ( ręcznie/ na siłę ) silniki które powinny zwalniać - zwalniały a wręcz potrafiły się zatrzymać ( czyli coś tam się działo, bo przy mniejszym ki nigdy się nie zatrzymały ). Znalazłem w sieci taki algorytm:
Ale jakoś nie przekonuje on mnie ponieważ Ki z tych obliczeń wyjdzie dla mnie jakieś bardzo duże.
Kod: C / C++
Kd jeśli jest za małe to odpowiedzi silników są bardzo słabe a w skrajnych przypadkach nie wystarczają na kompensacje błędu. Za duże kd powoduje pojawienie się niegasnących oscylacji gdyż silniki reagują zbyt gwałtownie. Ustaliłem że w moim przypadku optymalna wartość kd wynosi 9. Nie mam teraz pojęcia jak dobrać do tego parametr Ki oraz Imax. Próbowałem robić to na tak zwane 'oko' ale nie mogę wychwycić żadnych istotnych zmian w zachowaniu quadrocoptera po zmianie tych parametrów. Testowałem wielkości z przedziału 1..20 i wydaje mi się że nic się nie zmienia ( i max ustawione na 50 ) . Dopiero kiedy eksperymentalnie Ki ustawiłem na 100 a imax na 500 to po przechyleniu platformy w jakimś kierunku ( ręcznie/ na siłę ) silniki które powinny zwalniać - zwalniały a wręcz potrafiły się zatrzymać ( czyli coś tam się działo, bo przy mniejszym ki nigdy się nie zatrzymały ). Znalazłem w sieci taki algorytm:
Ale jakoś nie przekonuje on mnie ponieważ Ki z tych obliczeń wyjdzie dla mnie jakieś bardzo duże.