Giới thiệu thuật toán điều khiển PID | Tài liệu Môn Công nghệ Kĩ thuật ô to Trường đại học sư phạm kỹ thuật TP. Hồ Chí Minh
PID được viết tắt bởi cụm từ Proportional Integral Derivative có nghĩa là 1 cơ chế phản hồi các vòng điều khiển, chúng được ứng dụng rộng rãi trong hệ thống điều khiển công nghiệp hiện đại.
Bộ điều khiển này sử dụng nhiều trong những hệ thống điều khiển vòng kín có tín hiệu phản hồi. Nhiệm vụ của PID giúp tính toán giá trị sai số là hiệu số giữa giá trị đo thông số biến đổi với giá trị đặt mong muốn. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!
Môn: Công nghệ kĩ thuật oto (OTO21)
Trường: Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh
Thông tin:
Tác giả:
Preview text:
2.3.3.2: Giới thiệu thuật toán điều khiển PID:
PID được viết tắt bởi cụm từ Proportional Integral Derivative, có nghĩa là 1 cơ chế
phản hồi các vòng điều khiển, chúng được ứng dụng rộng rãi trong hệ thống điều khiển công nghiệp hiện đại.
Bộ điều khiển này sử dụng nhiều trong những hệ thống điều khiển vòng kín có tín hiệu
phản hồi. Nhiệm vụ của PID giúp tính toán giá trị sai số là hiệu số giữa giá trị đo thông số
biến đổi với giá trị đặt mong muốn.
Thuật ngữ "PID" phản ánh ba thành phần chính của thuật toán:
Proportional(P): Khoảng cách giữa giá trị hiện tại của biến điều khiển (process variable)
và giá trị đặt (setpoint) được nhân với một hằng số tỷ lệ (gain). Thành phần này tạo ra
một tín hiệu điều khiển tỷ lệ với sự sai lệch giữa giá trị đặt và giá trị hiện tại.
Integral(I): Thành phần này tính toán tổng tích phân của sự sai lệch giữa giá trị đặt và
giá trị hiện tại trong thời gian. Điều này giúp loại bỏ sai số cân bằng dài hạn và giảm
thiểu sai số dài hạn trong hệ thống.
Derivative(D): Thành phần này đo lường tốc độ thay đổi của sự sai lệch giữa giá trị đặt
và giá trị hiện tại. Bằng cách này, nó giúp dự đoán xu hướng của sự thay đổi và giảm
thiểu độ phản ứng quá mức.
Công thức tổng quát của điều khiển PID là: t de (t) u(t) = K ∫ pe(t) + Ki
e (t )dt + Kd dt 0 Trong đó:
u(t) là tín hiệu điều khiển đầu ra.
e(t) là sự sai lệch giữa giá trị đặt và giá trị tại thời điểm t.
Kp. Ki, K lần lượt là các hằng số tỷ lệ, tỷ lệ tích phân và tỷ lệ đạo hàm. d
Các hằng số này được điều chỉnh để đảm bảo hệ thống điều khiển hoạt động một cách ổn
định và hiệu quả. Quá trình điều chỉnh hằng số này thường được thực hiện thông qua các
phương pháp thử và sai hoặc các phương pháp tự động hóa.
Nguyên lý hoạt động của PID:
2.3.3.3: Lựa chọn thông số PID:
Nếu các tham số PID (tỉ lệ, tích phân, vi phân) không được lựa chọn thích hợp, tiến trình
cần điều khiển có thể bị mất ổn định, đầu ra bị phân kì và có thể kèm theo dao động, và
chỉ bị giới hạn bởi sự bão hòa hoặc nứt gãy cơ khí. Điều chỉnh hệ điều khiển là công việc
đặt các thông số tỉ lệ, tích phân, vi phân về các giá trị tối ưu để có đáp ứng đầu ra theo mong muốn.
Có nhiều phương pháp để điều chỉnh hệ PID. Phương pháp hiệu quả nhất thường yêu cầu
tìm ra một mô hình toán học cho tiến trình, sau đó tìm P,I,D dựa trên thông số trên mô
hình đó. Tuy nhiên không phải lúc nào cũng có thể xây dựng được mô hình phù hợp cho
tiến trình một cách nhanh chóng hoặc không tốn kém nên các phương pháp điều chỉnh
bằng tay được sử dụng phổ biến trong thực tế. Các phương pháp thường được sử dụng là:
điều chỉnh bằng tay, phương pháp Ziegler – Nichols, sử dụng công cụ phần mềm và phương pháp Cohen – Coon.
Phương pháp điều chỉnh bằng tay thường bắt đầu bằng việc đặt các tham số Ki và Kd
bằng 0. Sau đó tăng Kp đến khi hệ thống bắt đầu dao động. Tại đó, Kp sẽ được đặt lại
bằng khoảng ½ giá trị này, tiếp tục tăng Ki đến khi bù hết được độ sai số khi ở trạng thái
cân bằng và hệt thống đạt được điểm đặt với tốc độ hợp lý. Tiếp đó là điều chỉnh Kd nếu
cần đến khi hệ thống đạt được điểm đặt với thời gian đủ ngắn khi tải bị thay đổi hoặc có
nhiễu loạn trong hệ thống. Tuy nhiên nếu đặt Kd quá cao có thể dẫn đến phản ứng quá
lớn và bị vượt mức đặt hoặc dẫn đến hệ thống mất ổn định. Một hệ PID có tốc độ đáp
ứng nhanh thường được điều chinh đề hơi vượt mức một chút để có thể đạt được mức đặt
nhanh hơn. Tuy nhiên một số tiền trình không cho phép bị vượt mức, yêu cầu phải điều
khiển "bù quá mức", với hệ số Kp được đặt thấp hơn nhiều giá trị làm hệ thống bắt đầu
dao động. Lợi thế của phương pháp là có thể đạt được một hệ thống có đáp ứng đầu ra
như ý muốn, và không nhất thiết phải có mô hình toán học chi tiết của hệ thống. Tuy
nhiên nhược điểm của phương pháp này là mất nhiều thời gian và cần có chuyên gia có nhiều kinh nghiệm.
Một phương pháp điều chỉnh khác thường được biết đến với tên phương pháp
Ziegler - Nichols. Trong phương pháp này, đầu tiên Ki và Kd được đặt bằng 0. Kp sẽ
được tăng đến một giá trị tới hạn Kc, ở đó đầu ra của hệ thống bắt đầu dao động.
KC và chu kỳ dao động PC sẽ được sử dụng để đặt các tham số còn lại như sau: • КР = 0.6 KC • Ki = 2Kp / PC • Kd = KpPc/ 8
Phương pháp này cho kết quả tương đối tốt cho một hệ PID đa năng, và không yêu cầu
mô hình toán học tốt cũng như nhân lực có kinh nghiệm, tuy nhiên với các yêu cầu cụ thể
thì thường nó không đạt được kết quả tối ưu.
Yêu cầu của hệ thống khi hoạt động là phải đảm bảo đạt được vị trí đặt trước. Trong quá
trình thử nghiệm, khi đ t đợc vị trí động cơ dùng chuyển động và tải trọng của vật thử
nghiệm sẽ làm các cơ cấu trượt xuống dẫn đến không đạt được yêu cầu. Đồng thời khi đạt
được vị trí, hệ không được phép dao động nên phương pháp Ziegler - Nichols không đáp
ứng được nhu cầu, đồng thời mô hình toán học của hệ thống không đủ chi tiết để có thể
tính toán các hệ số theo mô hình toán, do vậy phương pháp được sử dụng là phương pháp
điều chỉnh bằng tay. Để thuận tiện cho việc quan sát và thu thập số liệu đáp ứng xung của
hệ thống, ứng dụng có sẵn của Arduino IDE là Serial Monitor và Serial Plotter giúp cho
việc điều chỉnh được đơn giản và chính xác hơn.
2.3.4 Giới thiệu về Arduino IDE:
Arduino IDE là một phần mềm với một mã nguồn mở, được sử dụng chủ yếu để viết và
biên dịch mã vào module Arduino. Nó bao gồm phần cứng và phần mềm. Phần cứng
chứa đến 300,000 board mạch được thiết kế sẵn với các cảm biến, linh kiện. Phần mềm
giúp bạn có thể sử dụng các cảm biến, linh kiện ấy của Arduino một cách linh hoạt phù
hợp với mục đích sử dụng.
Arduino IDE là một trình biên dịch dành cho tất cả các board Arduino cũng như các vi
điều khiển ATmega328P, ATmega2560.... và ngôn ngữ C là ngôn ngữ chính được dùng
trong trình biên dịch này.
Đây là một phần mềm Arduino chính thống, giúp cho việc biên dịch mã trở nên dễ dàng,
ngay cả một người bình thường không có kiến thức kỹ thuật cũng có thể làm được.
Khi người dùng viết mã và biên dịch, IDE sẽ tạo file Hex cho mã. File Hex là các file
thập phân Hexa được Arduino hiểu và gửi đến bo mạch bằng cáp USB. Mỗi bo Arduino
đều được tích hợp một bộ vi điều khiển, bộ vi điều khiển sẽ nhận file Hex và chạy theo mã được viết.
Khi bắt đầu lập trình chúng ta phải khởi động giao diện lập trình trên Arduino, giao diện
lập trình có các chức năng chính được mô tả như hình dưới đây:
Trong giao diện lập trình thì chúng ta cần chú ý các bước căn bản sau đây:
Bước 1: Tạo file biên dịch mới. Bước 2: Lưu file code.
Bước 3: Lập trình code điều khiển.
Bước 4: Biên dịch file để kiểm tra lỗi.
Bước 5: Nạp chương trình vào vi điều khiển.
2.3.5. Cấu trúc một chương trình trong Arduino IDE:
Chương trình trong phần mềm Arduino IDE có thể được chia ra làm ba phần là:
Khai báo biến, cấu trúc và vòng lặp.
Phần 1: Khai báo biến:
Đây là phần khai báo kiểu biến trong Arduino IDE, tên các biến, định nghĩa các
chân trên board một số kiểu khai báo biến thông dụng: * #define
Nghĩa của từ define là định nghĩa, hàm #define có tác dụng định nghĩa, hay còn
gọi là gán, tức là gán một chân, một ngõ ra nào đó với 1 cái tên.
Phần 2: Thiết lập (void setup()):
Phần này dùng để thiết lập cho một chương trình Arduino IDE, cần nhớ rõ cấu trúc của nó void setup() { ….. }
Cấu trúc của nó có dấu ngoặc nhọn ở đầu và ở cuối, nếu thiếu phần này khi kiểm tra
chương trình thì chương trình sẽ báo lỗi
Phần này dùng để thiết lập các tốc độ truyền dữ liệu, kiểu chân là chân ra hay chân vào. Phần 3: Vòng lặp
Dùng để viết các lệnh trong chương trình để mạch Arduino thực hiện các nhiệm vụ mà chúng ta mong muốn
Các chương trình được viết bằng phần mềm Arduino IDE thường sẽ xoay quanh 2 hàm
chính đó là hàm setup0 - void setup() và hàm loop0 - void loop0. Hàm void setup dùng
để khai báo các cài đặt ban đầu của chương trình như khai báo các chân ngõ vào, chân
ngõ ra hay thiết đặt tốc độ baud khi giao tiếp nối tiếp và chi chạy chương trình một lần
duy nhất. Còn hàm void loop( thì được hiểu như là một chương trình chính, thực hiện các
chức năng, thao tác, hoặc công việc mà người sử dụng đã lập trình và được lặp đi lặp lại liên tục.