Chào các bạn đến với Maker Box – Projects

Hôm nay mình xin chia sẻ với các vạn về Bộ Điều Khiển PID!

*/ I – PID là gì? – /*

PID – bộ điều khiển vi tích phân tỉ lệ (PID – Proportional Integral Derivative) viết tắt của 3 từ Propotional (tỉ lệ), Integral (tích phân) và Derivative (đạo hàm). là một cơ chế phản hồi vòng điều khiển (bộ điều khiển) tổng quát được sử dụng rộng rãi trong các hệ thống điều khiển công nghiệp – bộ điều khiển PID là bộ điều khiển được sử dụng nhiều nhất trong các bộ điều khiển phản hồi. Bộ điều khiển PID sẽ tính toán giá trị “sai số” là hiệu số giữa giá trị đo thông số biến đổi và giá trị đặt mong muốn. Bộ điều khiển sẽ thực hiện giảm tối đa sai số bằng cách điều chỉnh giá trị điều khiển đầu vào.

/* II – Tại sao phải dùng PID? – /*

Để cụ thể hơn thì mình xin lấy ví dụ như sau:

Bài toán: Điều khiển chiếc xe ô tô từ vị trí A đến vị trí B với thời gian ngắn nhất, độ chính xác cao nhất! 

Trong hình ảnh dưới mình lấy Chất Điểm chuyển động là một hình tròn đỏ có dấu X làm tâm của xe.

Trong trường hợp này thì PID sẽ là công cụ đắc lực giúp chúng ta giải được bài toán tốt nhất.
Mình sẽ chia bài giải thành 3 khâu Propotional (tỉ lệ), Integral (tích phân) và Derivative (đạo hàm).

1 – Propotional (tỉ lệ)

Trong khâu này ta sẽ tính được tỉ lệ giữa lực F và độ dài S

Trên hình ta thấy khoảng cách S là độ dài quãng đường từ A đến B, F là lực để đưa xe từ vị trí A đến vị trí B, ta sẽ gọi S là sai số cần điều chỉnh, A tiến dần về B thì sai số S càng nhỏ, từ đó ta có công thức:

 

Theo công thức ta thấy: Khi sai số lớn nhất (quãng đường dài nhất) thì lực F tác động vào xe sẽ lớn nhất, vậy còn hệ số tỉ lệ Kp nó dùng để làm gì, tại sao nó lại có mặt ở trong công thức này? chẳng phải nếu công thức là F=S là đủ rồi sao???

Vậy ta thử đặt ra 2 trường hợp:

Trường hợp 1: Nếu F=S nhưng S lại là giá trị quá nhỏ để có thể tạo lực F đưa xe đi từ A đến B nhanh nhất có thể.

Kết Quả: Xe di chuyển quá chậm, tốn nhiều thời gian.

Trường hợp 2: Nếu F=S nhưng S lại là giá trị quá lớn nên lực F tác động vào xe cũng rất lớn và gia tốc của xe cũng lớn theo (Định luật II Newton F=ma – “F là lực tác dụng lên vật, m là khối lượng của vật và a là gia tốc của vật đó”).

Kết Quả: Xe di chuyển nhanh, tăng tốc nhanh (gia tốc lớn), nhưng khi gần đến điểm B S=0 và F=0 thì theo quán tính xe sẽ vượt quá B (Ta coi lực ma sát không đáng kể). xe tiến lùi liên tục quanh điểm B.

Lúc này Kp sẽ là hằng số tỉ lệ quan trọng giúp ta có thể tạo được lực F vừa đủ cho xe. Nhưng như vậy vẫn chưa thể đáp ứng được yêu cầu đầu bài ” Điều khiển chiếc xe ô tô từ vị trí A đến vị trí B với thời gian ngắn nhất ” @@’ vậy ta thử nghĩ …. nếu muốn xe này đi nhanh thì lực F phải lớn, lực F lớn khi Kp hoặc S lớn, nhưng vì S là biến số thay đổi theo vị trí xe nên ta không thể thay đổi nó theo một thứ gì khác được(nó chỉ thay đổi theo vị trí xe mà thôi) =)) . Vậy nên ta cần phải phụ thuộc vào hằng số Kp. nhưng nếu theo Trường hợp 2 thì ta lại có kết quả là chất điểm (Xe)  ở vị trí A sẽ bị vượt quá điểm B do quán tính. Lúc này ta lại cần Xe giảm nhanh tốc độ khi gần đến điểm B. Hehe, giờ là lúc khâu Derivative (đạo hàm) phát huy tác dụng.

2 – Derivative (đạo hàm)

Nghe đến đây chắc khối người sợ chữ Đạo Hàm :)) vậy Đạo Hàm là đạo gì mà dân chúng sợ vậy nhỉ??
– Như chúng ta đã biết, một vật chuyển động thẳng đều trên một quãng đường thì vị trí của vật đó thay đổi theo thời gian và ta gọi đó là Vận tốc (V), giải thích theo toán học ta sẽ nói là Vận tốc là Đạo hàm của quãng đường theo thời gian, Vậy nếu vận tốc của vật thay đổi theo thời gian thì ta gọi đó là Gia tốc, ta nói Gia tốc là Đạo hàm của Vận tốc theo thời gian. Đến đây chắc mọi người đã tưởng tượng ra Đạo Hàm là gì rồi nhỉ?? :))

Quay trở lại bài toán ban đầu, với khâu Đạo hàm này, ta sẽ lấy vi phân của (delta)S với (delta)t, Ví dụ :

Thời điểm bắt đầu: t1=0S và S1=5Km (thời gian = 0 và quãng đường = 5 Km)

Sau một khoảng thời gian: t2=2S và S2=1Km (Thời gian tăn lên đến 2 giây và quãng đường chỉ còn 1 Km)

Ta sẽ tính được đạo hàm của S theo t như sau:

Ta thấy khi thời gian tăng mà S2 càng nhỏ thì kết quả tính được càng nhỏ. Ta sẽ sử dụng thành phần này làm phanh khi xe gần đến điểm B và lùi lại khi vượt quá điểm B.

Ta lại đặt ra trường hợp – Xe chưa đến điểm B mà đã dừng lại ( do phanh ăn quá :)) ) do thành phần phanh quá nhỏ làm lực F giảm đến mức xe không thể đi đến B được nữa. Hehe, khâu Intgral (tích phân) sẽ giải quyết vấn đề này :))

3 – Integral (tích phân)

Lại một khái niệm toán học làm dân chúng hoảng sợ :)) vậy Tích phân là gì??

Ta có một hình chữ nhật có độ kích thước rộng 1cm và dài 6cm, chia ra làm các hình vuộng nhỏ hơn có kích thước  cạnh 1cm.

Lúc này ta tính diện tích hình chữ nhật: Shcn = 6.1 = 6(cm) hoặc Shcn = 1.1 + 1.1 + 1.1 + 1.1 + 1.1 + 1.1 = 6(cm)

Hoặc ta có thể biểu diễn theo hình dưới:

Dễ vãi chưởng phải không nào :))

Quay trở lại với bài toán ban đầu ta có công thức:

 

Thành phần cuối này chính là thành phần cộng dồn, trong khi xe gần đến điểm B mà thành phần Đạo hàm phanh ác quá làm thành phần tỉ lệ mất tác dụng thì thành phần Tích phân này sẽ cộng tất cả những giá trị độ dài quãng đường đo được theo thời gian t vào làm lực F tăng dần đưa xe về đúng vị trí B.

/* —————————————————————-  BONUS  ———————————————————————— */

  • Vậy là xong 3 Khâu rồi :)) tùy vào từng bài toán mà ta có thể rút gọn thuật toán chỉ còn PI hoặc PD, việc còn lại là điều chỉnh 3 hệ số Kd Kp Ki cho phù hợp nữa thôi :))
  • Mình xin chia sẻ chút kinh nghiệm đặt 3 hệ số đo mà mình tìm được trên mạng

– Chọn Kp trước: thử bộ điều khiển P với đối tượng thật (hoặc mô phỏng), điều chỉnh Kp sao cho thời gian đáp ứng đủ nhanh, chấp nhận overshot nhỏ. (overshot ở đây là độ vượt quá)
– Thêm thành phần D để loại overshot, tăng Kd từ từ, thử nghiệm và chọn giá trị thích hợp. Steady state error có thể sẽ xuất hiện. (Steady state error là trạng thái chưa đến B mà đã dừng)
– Thêm thành phần I để giảm steady state error. Nên tăng Ki từ bé đến lớn để giảm steady state error đồng thời không để cho overshot xuất hiện trở lại.
Có một phương pháp rất phổ biến dùng để chọn các hệ số cho bộ điều khiển PID gọi là Ziegler–Nichols, bạn quan tâm có thể tự tìm hiểu thêm.

 

/* ————————————————————————————————————————————————- */

Cảm ơn các bạn đã xem bài viết, mong các bạn sẽ tự tin sử dụng bộ điều khiển PID sau bài viết này :))

Bài viết có thể còn nhiều thiếu sót, mong các bạn góp ý sửa chữa để bài viết hoàn thiện hơn.

Mọi thắc mắc các bạn có thể bình luận ở dưới hoặc liên hệ:

FB: https://www.facebook.com/tieutuanbao

SĐT: 0979755670

/* ————————————————————————————————————————————————- */

Trả lời