Skocz do zawartości

Problem z członem D przy regulacji systemu Ball and Beam


adiiinek

Pomocna odpowiedź

Witam, jestem w trakcie rozwijania projektu Ball and Beam lecz utknąłem w martwym punkcie i potrzebuję pomocy. Używam czujnika HC-SR04 do pomiaru odległości i korzystam z kodu przedstawionego w kursie Arduino.  Mój regulator PD wygląda następująco  (jest wycinek funkcji którą wywołuję w loop co 0,2 sekundy):

error = setpoint - distance;
PID_p = kp * error;
PID_d = kp * kd * (error - lasterror);

PID_sum = PID_p + PID_d;
PID_sum = map(PID_sum, -120, 120, 58, 118);

if(PID_sum < 58) {PID_sum = 58;}
if(PID_sum > 118) {PID_sum = 118;}
lasterror = error;
  
serwo.write(PID_sum);

gdzie odległość pochodzi z czujnika odległości. Przy dobieraniu nastaw regulatora P nie było większych problemów (w moim przypadku dla wartości 3 jest dość dobra oscylacja) lecz przy próbie zaimplementowania członu D nie jestem w stanie dobrać parametru tak, aby piłeczka zatrzymała się w jakimkolwiek punkcie, serwomechanizm przy małych wartościach reaguje za słabo natomiast przy zbyt dużych za agresywnie. (używam serwo 360 stopni). Czy ktoś byłby mi w stanie pomóc gdyż od dwóch dni stoję w martwym punkcie.

Edytowano przez adiiinek
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.