Cách áp dụng thuật toán pid trong việc điều khiển năm 2024

PID là 1 phương pháp điều khiển kinh điển nhưng rất hiệu quả. Và nó không hề khó chút nào khi điều khiển với bộ điều khiển số.

Ý nghĩa của các thành phần như sau:

P: tỉ lệ

I: tích phân

D: đạo hàm

Tạm thời các bạn chưa cần hiểu 3 khái niệm trên. Mình sẽ đi vào ví dụ, chỉ có ví dụ mới đem lại hạnh phúc cho mình và các bạn. 😀

Chú ý: phương pháp điều khiển PID là phương pháp điều khiển với SAI SỐ

Giả sử ta băm xung để điều khiển động cơ một chiều.

Giới thiệu qua băm xung 1 chút:

Ta băm xung với chu kỳ T[đơn vị thời gian] và độ rộng xung X [đơn vị thời gian].

Ta Cấp điện áp nguồn vào động cơ là V- Nguồn.

Vậy điện áp cấp vào động cơ sẽ là [x*V-Nguồn]/T [volt]

Ví dụ: V- Nguồn là 25 V. Băm xung với chu kỳ T = 100 s, x = 50s

Vậy điện áp cấp vào động cơ là 50*25/100 = 12.5 [volt]

Như trên tôi đã viết PID là phương pháp điều khiển với SAI SỐ. Vậy ta sẽ cùng tìm hiểu về sai số trong bài toán thực tế như sau:

Tôi muốn động cơ của tôi chạy 100 vòng/phút. Nhưng nó lại đang chạy 50 vòng / phút. Vậy sai số [ký hiệu là e ] e= 100 – 50 = 50 vòng/phút. Vậy sai số ở đây là 50 vòng /phút.

Dựa trên sai số này ta sẽ biết cách điều khiển động cơ. ở đây sai số = 50 tức là động cơ còn chạy chậm. Vậy thì ta sẽ tăng tốc động cơ lên bằng cách tăng độ rộng xung lên. Và Nếu e 0 tức [e – et > 0] có nghĩa là thời điểm hiện tại sai số lớn hơn sai số thời điểm trước, thể hiện rằng tốc độ động cơ đang rời xa khỏi tốc độ yêu cầu. Dấu của Delta_e thể hiện tốc độ động cơ đang tiến về điểm yêu cầu hay rời xa khỏi điểm yêu cầu.

Như trong trường hợp này:Delta_e < 0 tức là tốc độ động cơ đang rời khỏi điểm yêu cầu [có thể giảm hoặc tăng]. Delta_e > 0. Tức tốc độ động cơ đang tiến về điểm yêu cầu.

Thành phần Delta_e chính là thành phần đạo hàm trong PID.

Công thức tính độ rộng xung sẽ tính như sau: X = Kp*e + Ki*TP[e,t] + Kd*[e – et].

Thành phần D gần như luôn luôn khác dấu với thành phần P và I. nó có chức năng giảm thành phần P và I. nhờ đó mà giảm sự vượt quá điểm chuẩn dẫn đến giao động.

Trong 1 bài toán thực tế: bạn đo tốc độ động cơ bằng encoder, băm xung ra động cơ theo công thức trên, nhưng do X là độ rộng xung nên không thể là số âm. Có nhiêu cách để xử lý trường hợp này

Cách 1: thay đổi lại công thức như sau:

X = X0 + Kp*e + Ki*TP[e,t] + Kd*[e- et].

X0 là 1 hằng số để khi Kết quả Kp*e+Ki*TP[e,t]+Kd*[e-et] âm thì X cũng chỉ đạt đến giá trị nhỏ nhất là 0.

Cách 2: xử lý bằng thuật toán như sau:

X = Kp*e+Ki*TP[e,t] + Kd*[e-et]

If [X < 0 ] X = 0;

Cách 3: cách của chính bạn 😀

Lưu ý: 3 hệ số Kp,Ki,Kd là 3 hệ số do bạn tự chọn, ban đầu bạn cứ chọn bừa. Sau đó chạy thử rồi chọn đi chọn lại cho đến khi kết quả ưng ý.

Chủ Đề