Trích:
Nguyên văn bởi falleaf
Hic, không có cái quả trị tuyệt đối đâu, nếu trị tuyệt đối thì nó mất ổn định ngay, vì lúc nào nó cũng tăng vù vù, càng tăng lố nó lại càng tăng PWM. Thế nào chạy một lúc rồi nó cũng chạy tới PWM = 100% mà không bao giờ giảm lại được. Thế là toi roài....
|
Hic hic, e biet là thế nào đại ca cũng sẽ có bài

. Đúng là ko có j qua mắt được đại ca, đặc biệt vấn đề liên quan đến điều khiển tự động. E tuy không đc học chính ngạch về dk nhưng khi tìm hiểu để làm thì thấy quả thật rất hay.
Quay lại với bài viết trước của e, đúng như a F nói,
không có cái trị tuyệt đối đâu. Nếu bạn nào có làm theo rùi mà báo error hay bị cháy cái j thì cho tại hạ một lời xin lỗi. Cụ thể của thuật toán đó là như sau:
1. if (setpoint > currentpoint)
{
error = setpoint - currentpoint;
new = old + error*Kp;
set_pwm_value(new);
old = new;
}
else
{
error = currentpoint - setpoint;
new = old - error*Kp;
set_pwm_value(new);
old = new;
}
Thuật toán trên chỉ là dạng đơn giản, đúng với một mức độ nào đó. Còn thực tế đk còn nhiều vấn đề ví như quá dòng, quá áp, quá tải ta cũng cần đưa ra xử lý phù hợp.
Với bài toán đk DC motor, mục tiêu là đạt đếm giá trị setpoint nhanh nhất có thể, do đó ta cần tính toán các tham số Kp,Kd,Ki để có đc giá trị phù hợp.
Mấy lời của dân nghiệp dư, có j sai các đại ca, a F và a Nam chỉ giáo, phương châm của e là học cái hay, cái giỏi từ mọi người.
