Phiên bản này tốt hơn. Viết rõ ràng, và cẩn thận hơn. Đổi lại extension *.m để chạy trong Matlab.
các bạn có thể thay đổi thông số của DCMotor vào các parameter phía trên.
Xem trong Attach là S-Curve thực sự của motor tracking theo S-Curve tạo tuần tự.
Phương pháp của tôi rất đơn giản, tất nhiên không thể là best được vì tôi chỉ dùng duy nhất một vòng hồi tiếp vị trí:
Code:
error = ref_pos - enc_pos;
PWM = Kp*error + Kd*(error - prev_error);
tải đoạn chỉnh cuối cùng Tail Zone:
có thêm thêm Iterm
Code:
if (error<prev_error){
Intergrate_error -= prev_error; //Anti windup
} else {
Intergrate_error += prev_error;
}
if (Intergrate_error>threshold){ //threshold chọn từ 0.1~0.5 maximum của //PWM
Intergrate_error = threshold;
}
PWM = Kp*error + Kd*(error - prev_error) + Ki