Thực Hiện Bộ Điều Khiển PID Trên Vi Điều Khiển AVR

Trong ví dụ này chúng ta thử nghiệm 1 bộ điều khiển PID trên vi điều khiển. Theo hướng dẫn AVR221 của Atmel. Như đã biết, những ứng dụng mà cần duy trì trạng thái ổn định như điều khiển tốc độ động cơ, nhiệt độ, áp suất hay tương đương thì cần thuật toán điều khiển. Điều khiển PID có thể được sử dụng để kiểm soát các thông số mà nó chịu sự tác động bởi các thông số khác trong qúa trình.

Có khá nhiều giải pháp điều khiển khác nhưng PID dần trở thành tiêu chuẩn vì sự đơn giản và hiệu qủa. Tại đây, chúng ta không đi vào phân tích PID mà chỉ nhắc lại nó cùng việc triển khai bộ điều khiển PID trên vi điều khiển.

Bộ điều khiển PID

Nó so sánh giá trị đo được y với giá trị tham chiếu yo. Sai lệch là e sẽ được xử lý để tính toán đầu vào cho quá trình mới u. Và u sẽ điều chỉnh để giá trị của quá trình tiến về giá trị mong muốn. Điều khiển PID là vòng kín vì nó có phản hồi.

Không giống như các thuật toán điều khiển đơn giản, bộ điều khiển PID có khả năng điều khiển các đầu vào của quá trình dựa trên lịch sử và tốc độ thay đổi của tín hiệu. Điều này mang lại một phương pháp điều khiển chính xác và ổn định hơn.

Ý tưởng cơ bản là bộ điều khiển đọc trạng thái hệ thống bằng một cảm biến. Sau đó, nó trừ đi tham chiếu mong muốn để tạo ra giá trị sai lệch. Sai lệch sẽ được quản lý trong ba cách; để xử lý hiện tại thông qua khối tỷ lệ, phục hồi từ quá khứ bằng cách sử dụng khối tích phân, và dự đoán tương lai thông qua khối đạo hàm.

Khối tỷ lệ

Tỷ lệ (P) khiến đầu vào điều khiển hệ thống thay đổi tương ứng với sai số. Chỉ sử dụng điều khiển P đưa ra lỗi cố định trong mọi trường hợp ngoại trừ khi đầu vào điều khiển hệ thống bằng 0 và hệ thống xử lý giá trị bằng với giá trị mong muốn. Trong hình bên dưới, lỗi cố định trong giá trị quy trình hệ thống xuất hiện sau khi thay đổi giá trị mong muốn (ref). Sử dụng số hạng P quá lớn sẽ tạo ra một hệ thống không ổn định.

Khối tích phân

Khối tích phân (I) cung cấp phép cộng từ tổng các lỗi trước đó cho đầu vào điều khiển hệ thống. Các tổng lỗi sẽ tiếp tục cho đến khi giá trị xử lý hệ thống bằng với giá trị mong muốn và điều này dẫn đến không có lỗi cố định khi tham chiếu ổn định. Việc sử dụng phổ biến nhất của I là thường cùng với P, được gọi là bộ điều khiển PI. Chỉ sử dụng I cho phản hồi chậm và thường làm hệ dao động. Hình dưới đây cho thấy các bước phản hồi đối với bộ điều khiển I và PI. Như đã thấy PI đáp ứng của bộ điều khiển không có lỗi cố định và I rất chậm.

Khối đạo hàm

Thuật ngữ đạo hàm (D) đưa ra một bổ sung từ tốc độ thay đổi sai lệch vào điều khiển hệ thống. Sự thay đổi nhanh chóng của sai lệch sẽ bổ sung cho đầu vào điều khiển hệ thống. Điều này cải thiện đáp ứng với một sự thay đổi đột ngột trong trạng thái hệ thống hoặc giá trị tham chiếu. D thường được sử dụng với P hoặc PI như một bộ điều khiển PD hoặc PID. Số hạng D quá lớn thường cho hệ thống không ổn định. Hình dưới đây cho thấy D và đáp ứng của bộ điều khiển PD. Đáp ứng của bộ điều khiển PD cho giá trị xử lý hệ thống tăng nhanh hơn so với bộ điều khiển P. Lưu ý rằng khối D về cơ bản hoạt động như một bộ lọc thông cao trên tín hiệu lỗi và do đó dễ dàng tạo ra sự mất ổn định trong hệ thống và làm cho nó nhạy cảm hơn với nhiễu.

PID

Sử dụng tất cả các khối cùng nhau như là 1 bộ điều khiển PID thường mang lại hiệu suất tốt nhất. Hình bên dưới so sánh các bộ điều khiển P, PI và PID. PI cải thiện P bằng cách loại bỏ lỗi tĩnh và PID cải thiện PI bằng phản ứng nhanh hơn và không vượt quá.

Điều chỉnh tham số

Cách tốt nhất để tìm các tham số PID cần thiết là từ một mô hình toán học của hệ thống, các tham số sau đó có thể được tính toán để có được phản hồi mong muốn. Thường là một mô tả toán học chi tiết của hệ thống không khả dụng, việc điều chỉnh thử nghiệm các tham số PID phải được thực hiện. Tìm các tham số đối với bộ điều khiển PID là một nhiệm vụ đầy thách thức. Kiến thức về các thuộc tính của hệ thống và cách thức hoạt động của các khối khác nhau là điều cần thiết.

Một số quy trình không được cho phép vượt quá biến quy trình từ điểm đặt. Các quy trình khác phải giảm thiểu mức tiêu thụ năng lượng khi đạt đến điểm đặt. Nói chung, sự ổn định là yêu cầu mạnh nhất. Quá trình không được dao động đối với bất kỳ sự kết hợp hoặc các điểm thiết lập. Hơn nữa, hiệu ứng ổn định phải xuất hiện trong những giới hạn thời gian nhất định.

Có một số phương pháp để điều chỉnh vòng lặp PID. Việc lựa chọn phương pháp nào sẽ phụ thuộc phần lớn vào việc liệu quá trình có thể được thực hiện ngoại tuyến để điều chỉnh hay không. Phương pháp Ziegler-Nichols là một phương pháp điều chỉnh trực tuyến nổi tiếng chiến lược. Bước đầu tiên trong phương pháp này là thiết lập hệ số I và D bằng 0, tăng P cho đến khi dao động duy trì và ổn định (càng gần càng tốt) thu được ở đầu ra. Sau đó, hệ số Kc và chu kỳ dao động Pc được ghi lại và các giá trị P, I và D được điều chỉnh tương ứng bằng cách sử dụng bảng dưới.

Việc điều chỉnh thêm các tham số thường là cần thiết để tối ưu hóa hiệu suất của bộ điều khiển PID.

Cần lưu ý rằng có những hệ thống mà bộ điều khiển PID hoạt động không tốt lắm, hoặc sẽ chỉ làm việc trên một khu vực nhỏ xung quanh một trạng thái hệ thống nhất định. Các hệ thống phi tuyến tính có thể như vậy, nhưng nói chung các vấn đề thường phát sinh với điều khiển PID khi hệ thống không ổn định và ảnh hưởng của đầu vào phụ thuộc vào trạng thái hệ thống.

Bộ điều khiển PID rời rạc

Một bộ điều khiển PID rời sẽ đọc sai lệch, tính toán và xuất tín hiệu điều khiển vào một khoảng thời gian nhất định, tại khoảng thời gian lấy mẫu T. Thời gian lấy mẫu phải nhỏ hơn hằng số thời gian ngắn nhất trong hệ thống.

Chúng ta không xét nền tảng toán học tại đây.

Thực hiện

Trong hình một sơ đồ khối đơn giản hóa của ứng dụng được hiển thị. Bộ điều khiển PID sử dụng struct để lưu trạng thái và các tham số của nó. Struct này được khởi tạo trong hàm chính và một con trỏ tới nó được chuyển đến các hàm Init_PID() và PID().

Hàm PID() phải được gọi cho mỗi khoảng thời gian T. Điều này được thực hiện bởi một bộ đếm thời gian, đặt cờ PID_timer khi khoảng thời gian đã trôi qua. Khi cờ PID_timer được đặt, quy trình chính sẽ đọc giá trị mong muốn (setPoint) và giá trị quy trình hệ thống, gọi PID() và xuất kết quả tới kiểm soát đầu vào.

Để tăng độ chính xác, p_factor, i_factor và d_factor được chia tỷ lệ với hệ số 1/128. Kết quả của thuật toán PID sau đó được thu lại bằng cách chia cho 128.

Cộng dồn tích phân

Khi đầu vào của quá trình, u, đạt đến một giá trị đủ cao, nó sẽ bị giới hạn theo một cách nào đó. Hoặc bằng số phạm vi bên trong bộ điều khiển PID, phạm vi đầu ra của bộ điều khiển hoặc các ràng buộc trong bộ khuếch đại hoặc là chính quá trình. Điều này sẽ xảy ra nếu có sự khác biệt đủ lớn trong giá trị quá trình đo được và giá trị điểm đặt tham chiếu, thường là do quy trình có nhiễu/tải lớn hơn hệ thống có khả năng xử lý.

Nếu bộ điều khiển sử dụng một khối tích phân thì có thể gặp vấn đề. Khối tích phân sẽ cộng dồn miễn là tình huống kéo dài và khi nhiễu/tải lớn hơn biến mất, bộ điều khiển PID sẽ bù quá mức đầu vào cho đến khi tổng tích phân trở lại bình thường.

Vấn đề này có thể tránh được bằng nhiều cách. Trong triển khai này, tổng tích phân tối đa bị giới hạn bằng cách không cho phép nó trở nên lớn hơn MAX_I_TERM. Kích thước chính xác của MAX_I_TERM sẽ phụ thuộc vào hệ thống và thời gian mẫu được sử dụng.

Bộ điều khiển PID được trình bày ở đây là một ví dụ đơn giản. Bộ điều khiển sẽ hoạt động tốt, nhưng có thể cần thiết làm cho bộ điều khiển tốt hơn nữa (hạn chế hết/tràn) trong một số ứng dụng nhất định.

Khi tính toán IFactor và DFactor, thời gian lấy mẫu T là một phần của phương trình. Nếu thời gian lấy mẫu T được sử dụng nhỏ hơn nhiều hoặc lớn hơn 1 giây thì độ chính xác của IFactor hoặc DFactor sẽ kém.

Có thể phải viết lại thuật toán PID và chia tỷ lệ sao cho độ chính xác của các số hạng tích phân và đạo hàm được giữ. Đồng thời chú ý giá trị cấp cho Timer1 cần nằm trong khoảng có ý nghĩa.

Thực nghiệm

Sử dụng vi điều khiển Atmega328 kết hợp với cảm biến nhiệt độ DS18B20 và màn hình LCD để hiển thị thông số. Đèn sợi đốt 12V được dùng như thiết bị cấp nhiệt hoặc cần kiểm soát nhiệt độ.

Các tham số kp, ki và kd trong ví dụ được lựa chọn cảm tính nhằm mục đích thử nghiệm. Để đảm bảo bộ PID hoạt động tối ưu nhất thì cần lựa chọn lại các tham số này.

Xem video minh họa

Leave a Reply

Your email address will not be published. Required fields are marked *