Professional Documents
Culture Documents
Điều khiển động cơ theo phương pháp PID
Điều khiển động cơ theo phương pháp PID
(băm xung)
Điều khiển động cơ theo Phương pháp PID
–Để hiểu được bài viết này cần nắm rõ cách băm xung điều khiển động cơ –
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ố.
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.
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 động cơ đang chạy quá nhanh thì ta giảm độ rộng xung xuống.
Vậy thì ứng với mỗi e ta thay đổi độ rộng xung bao nhiêu ?
Ta có độ rộng xung gần như tỉ lệ thuận với sai số e. Vậy ta có thể viết ra công thức X
= Kp*e.
Công thức X = Kp*e là công thức thể hiện thành phần “tỉ lệ” P trong phương pháp
PID. Vì X tỉ lệ với e theo Kp.
Vậy ta đã xong việc giải thíc thành phần tỉ lệ P
Công việc tiếp theo là tìm hiểu về thành phần tích phân I trong phương pháp
PID.
Về lý thuyết ta thấy gần như chỉ cần điều khiển độ rộng xung X = Kp*e là chuẩn
không cần chỉnh. Nhưng thực tế không như mơ. Có thể do sai số trả về quá nhỏ làm
giá trị của X cũng quá nhỏ không thể thay đổi được tộc độ động cơ. nên động cơ cứ
chạy ở một tốc độ gần sát với tốc độ thực tế.
Ví dụ: tốc độ mong muốn là 100 vòng / phút.Nhưng tốc độ thực tế lại là 99 vòng /
phút.
Giá trị X = Kp*e lại quá nhỏ không thể tăng tốc độ động cơ lên được nữa.
X = K*e + K1*tích_phân_của_e_theo_thời_gian_t
Chưa ăn thua đâu. Ta còn chưa tính đến quán tính của trục động cơ và các cơ cấu kèm
theo đó, Giả sử động cơ đang tăng tốc và đến điểm sai số e = 0. Lúc này X = 0. Ta
ngừng băm xung. Có vẻ tốc độ động cơ sẽ giữ nguyên hoặc giảm đi. Nhưng không, do
quán tính, tốc độ động cơ vẫn tăng thêm. Bây giờ thì e < 0. Ta chọn được X nhỏ đi,
làm tốc độ động cơ quay chậm lại, đến vị trí e = 0. X = 0. Ta dừng việc băm xung vào
động cơ. Động cơ vẫn không giữ ở tốc độ chuẩn mà theo quán tính sẽ giảm nữa. Việc
tốc độ động cơ cứ vượt quá điểm chuẩn 1 chút so với thực tế được gọi là đáp ứng có
dao động.
Nguyên lý để ngăn chặn dao động này diễn ra là ta sẽ giảm dần sự thay đổi tốc độ
động cơ (tức là giảm gia tốc của động cơ ) khi mà tốc độ động cơ ngày càng tiếm đến
điểm yêu cầu.
Cũng đồng nghĩa với việc giảm sự thay đổi sai số khi mà tốc độ động cơ càng tiến gần
đến tốc độ mình yêu câu.
Sự thay đổi sai số được tính theo công thức: Delta_e = e- et.
Với e: sai số ở thời điểm hiện tại
Vậy thì nếu : Delta_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
If (X < 0 ) X = 0;
Cách 3: cách của chính bạn