Bảng 7-1: Hệ các quy tắc mờ của bộ điều khiển mờ U(t) DE(t) U(t) DE(t) NB NS Z PS PB E(t) NB NB NB NS NS Z NS NB NS NS Z PS Z NS NS Z PS PS PS NS Z PS PS PB PB Z PS PS PB PB
Các tập mờ của từng ngõ vào gồm có: NB (Negative Big), NS (Negative Small), Z (Zero), PS (Positive Small), PB (Positive Big). Các hàm liên thuộc của các tập mờ ngõ vào sai số, các tập mờ ngõ vào tốc độ thay đổi của sai số, và các tập mờ ngõ ra được trình bày lần lượt ở các hình Sử dụng phương pháp mờ hóa và suy diễn mờ là MAX-MIN, phương pháp giải mờ là tính tốn trọng tâm. Hệ quy tắc mờ được tóm tắt và trình bày ở Bảng 7-1
7.3 YÊU CẦU THỰC HIỆN
7.3.1 Khảo sát đáp ứng của bộ điều khiển mờ bằng việc thay đổi K1, cho K2=0, và Ku=12 Ku=12
a) Vẽ đáp ứng ngõ ra của hệ thông ứng với các thông số điều khiển khác nhau trên cùng đồ thị.
b) Vẽ đáp ứng tín hiệu điều khiển ứng với các thông số điều khiển khác nhau trên cùng một đồ thị.
c) Xác định các thông số POT, Tr, Tss và Ess của các đáp ứng ngõ ra ứng với các thơng số bộ điều khiển khác nhau.
Hình 7.8: Xây dựng khối PID mờ điều khiển động cơ với K2=0, Ku=12, K1 thay đổi Code Matlab Code Matlab clc; figure(); plot(k11.time,k11.signals(1).values); hold on; plot(k12.time,k12.signals(1).values); hold on; plot(k13.time,k13.signals(1).values);
xlabel('Time(s)');
ylabel('Goc quay dong co (Deg)');
Hình 7.9: Biểu đồ đáp ứng ngõ ra với các giá trị K1 thay đổi
Hình 7.11: Biểu đồ đáp ứng tín hiệu điều khiển với các giá trị K1 thay đổi Bảng 7-2: Thông số thu được khi thay đổi thông số K1 Bảng 7-2: Thông số thu được khi thay đổi thông số K1
K1 1/300 1/200 1/100 1/50 POT(%) 0 0 0 18.12 s s e (Deg/s) 23.23 9.11 8.45 4.91 r T (s) 0.153 0.112 0.101 0.089 xl T (s) 0.287 0.222 0.201 0.267
7.3.2 Khảo sát đáp ứng của bộ điều khiển mờ bằng việc thay đổi K2, cho K1=1/20, và Ku=12
Hình 7.12: Xây dựng khối PID mờ điều khiển động cơ với K2=1/20, Ku=12, K2 thay đổi Code Matlab clc; figure(); plot(k21.time,k21.signals(1).values); hold on; plot(k22.time,k22.signals(1).values); hold on; plot(k23.time,k23.signals(1).values); hold on; plot(k24.time,k24.signals(1).values); hold on; plot(setpoint.time,setpoint.signals(1).values); grid on; xlabel('Time(s)');
Bảng 7-3: Thông số thu được khi thay đổi thông số K2 K1 1/500 1/4000 1/2000 1/1000 K1 1/500 1/4000 1/2000 1/1000 POT(%) 13.92 9.51 7.37 0 s s e (Deg/s) 2.68 0 0 0 r T (s) 0.115 0.121 0.115 0.129 xl T (s) 0.485 0.500 0.309 0.306
7.3.3 Thiết kế bộ điều khiển mờ với các thông số POT, Tr, Tss và Ess thỏa các điều kiện sau: POT<10%, Tr<1.5, Tss<2, Ess<1
Yêu cầu
- Vẽ các đáp ứng của ngõ ra động cơ DC. - Vẽ các đáp ứng của tín hiệu điều khiển.
- Xác định các thơng số POT, Ess, Tr và Tss trên hình vẽ.
POT <10%.
Tr < 1.5
Tss <2.
Ess<1.
Lựa chọn các thông số: K1=1/20, K2=1/1500, Ku=255 ta thu được các biểu đồ
max 108 100.8 .100% 7.2% 10% 100 xl xl y y POT y int 100 100.8 0.8 1 xl setpo xl E y y s 102% s xl
T y hoặc Txl 98%yxl. Ta thấy điểm cao nhất lọt vào trong đồ thị là
108 107.14% yxl(khơng phải điểm thời gian xác lập). Vậy điểm cịn lại là 98.898%yxl
(thõa điểm thời gian xác lập). Vậy thời gian xác lập là 0.18s2s
Với yxl 100.8thì thời gian lên là khoảng thời gian từ (t y1.08) t t y( 90.72)
0.16 0.02 0.14( ) 1.5( )
r
t s s
Như vậy chất lượng điều khiển đáp ứng tiêu chí ban đầu
7.4 CÂU HỎI MỞ
1) Từ kết quả thí nghiệm sinh viên hãy trình bày ý nghĩa của các thông số K1, K2 và Ku trong bộ điều khiển mờ
Với Ku = constant = 255 thì khi a) K1 càng tăng dẫn đến
- POT (%) tăng
- Ess (Deg/s) giảm dần và sau đó có xu hướng tăng lên 1 ít - Tr (s) giảm dần
- Txl (s) giảm dần và sau đó có xu hướng tăng lên b) K2 càng tăng thì
- POT (%) giảm dần
- Ess (Deg/s) giảm dần và sau đó có xu hướng tăng lên - Tr (s) giảm rồi tăng
- Txl (s) giảm dần
2) Đề xuất bộ điều khiển fuzzy PID cho đối tượng động cơ DC
“Speed Control of DC Motor Using Fuzzy PID Controller” Advance in Electronic and Electric Engineering.
Chương 8. KHẢO SÁT BỘ ĐIỀU KHIỂN PID CHO ĐỐI TƯỢNG BỒN NƯỚC ĐƠN
8.1 MỤC ĐÍCH THÍ NGHIỆM
Bài thí nghiệm tập trung vào tìm hiểu nguyên lý hoạt động của các thiết bị trong mơ hình thí nghiệm bồn nước đơn; Thiết lập các chương trình điều khiển vịng hở khơng quan sát, có quan sát và hồi tiếp âm; Tìm hiểu chương trình nhúng giải thuật điều khiển PID cho mơ hình bồn nước đơn; Khảo sát sự ảnh hưởng của các thông số bộ điều khiển PID lên chất lượng điều khiển của hệ thống.
8.2 KIẾN THỨC CƠ BẢN
8.2.1 Trình bày nguyên lý hoạch động của cảm biến.
Hình 8.1: Cảm biến siêu âm HC-SR04
Cảm biến khoảng cách siêu âm HC-SR04 được sử dụng rất phổ biến để xác định khoảng cách vì rẻ và chính xác. Cảm biến sử dụng sóng siêu âm và có thể đo khoảng cách trong khoảng từ 2 -> 300 cm, với độ chính xác gần như chỉ phụ thuộc vào cách lập trình.
Các chân kết nối gồm có:
Bảng 8-1: Sơ đồ chân HC-SR04
Vcc 5V
Trig Một chân Digital Output
Echo Một chân Digital Input
GND GND
Nguyên lý hoạt động
Để đo khoảng cách, ta sẽ phát 1 xung rất ngắn (5 microSeconds - us) từ chân Trig. Sau đó, cảm biến sẽ tạo ra 1 xung HIGH ở chân Echo cho đến khi nhận lại được sóng phản xạ ở pin này. Chiều rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ cảm biển và quay trở lại.
Tốc độ của âm thanh trong khơng khí là 340 m/s (hằng số vật lý), tương đương với 29,412 microSeconds/cm (106/ (340*100)). Khi đã tính được thời gian, ta sẽ chia cho 29,412 để nhận được khoảng cách
8.2.2 Trình bày nguyên lý điều khiển của bơm nước một chiều.
Hình 8.2: Bơm 385
Để điều khiển bơm ta có nhiều cách, tuy nhiên trong phần thí nghiệm dựa vào kit xử lý Arduino chúng ta sẽ sử dụng phương pháp điều khiển PWM
Phương pháp PWM là phương pháp dùng để điều chỉnh điện áp ra tải dựa trên sự thay đổi độ rộng và chuỗi xung vuông. Khiến điện áp thay đổi. Các PWM khi biến đổi sẽ có chung một tần số chỉ khác về độ rộng của sườn dương hoặc sườn âm.
Nguyên lý điều khiển điều khiển tốc độ động cơ một chiều bằng PWM:
Để có thể điều khiển điều khiển tốc độ động cơ một chiều bằng PWM ta dùng mạch điện tử để thay đổi độ rộng của xung ở ngõ ra mà khiến chúng không bị thay đổi tần số. Khi độ rộng xung thay đổi thì điện áp sẽ thay đổi.
Có thể áp dụng cơng thức: ON out T U U T (8.1) on
8.2.3 Xây dựng chương trình bộ điều khiển PID trên MATLAB Simulink.
1) Sơ đồ khối và sơ đồ nối dây
Hình 8.3: Sơ đồ tổng quan của hệ bồn nước
Sơ đồ tổng quan bồn nước được mơ tả trong Hình 8.3 Chương trình từ máy tính thơng qu khối điều khiển để điều khiển bơm. Bơm được điều khiển bơm nước lên bể, cảm biến siêu âm đo mực nước trong bể và phản hồi về khối điều khiển để điều chỉnh cơng suất bơm phù hợp.
Hình 8.4: Sơ đồ nối dây mơ hình bồn nước
Trong Hình 8.4 là sơ đồ nối dây của mơ hình bồn nước, trong đó sử dụng vi điều khiển trung tâm là Arduino mega 2560. Mega 2560 sẽ điều khiển mạch cơng suất L298H để điều khiển máy bơm sau đó nhận tín hiệu phản hồi về từ cảm biến siêu âm. Nguồn tổ ong 12V cấp cho mạch công suất L298N
2) Thư viện cho Module bồn nước Bước 1: Tải file thư viện.
Bước 2: Trong Matlab, di chuyển đến thư mục lưu thư viện vừa tải.
Bước 3: Chuột phải vào thư mục, chọn add to path, chọn Selected Folders and Subfolders.
Hình 8.5: Kiểm tra thư viện 3) Hệ bồn nước trên Simulink 3) Hệ bồn nước trên Simulink
8.3 YÊU CẦU THỰC HIỆN
8.3.1 Xây dựng mơ hình điều khiển PID cho hệ bồn nước
Hình 8.7 miêu tả sơ đồ các khối chức năng trong mơ hình thí nghiệm bồn nước. Hệ bồn nước bao gồm có một vi xử lý trung tâm (Arduino Mega 2560), một mạch công suất (L298N), một bơm nước, một bồn nước đơn, một cảm biến đo mực nước và một nguồn một chiều. Mạch xử lý trung tâm được kết nối với máy tính có cài đặt phần mềm MATLAB Simulink thơng qua cổng USB. Bởi vì chương trình bộ điều khiển PID được thiết kế trên MATLAB Simulink được đổ xuống thông qua chế độ External Model nên các thơng số bộ điều khiển PID có thể thay đổi trong suốt q trình hệ thống hoạt động. Ngồi ra các đáp ứng liên quan tới mực nước và tín hiệu điều khiển cũng có thể được quan sát theo thời gian thực.
Hình 8.7: Sơ đồ khối mơ hình thí nghiệm bồn nước Code Matlab cho khối Driver L298N Code Matlab cho khối Driver L298N
function [ENA,INT1,INT2]=L298(u) ENA=abs(u); if u<0 INT1=1;INT2=0; elseif u>0 INT1=0;INT2=1; else INT1=0;INT2=0; end end
Tiến hành xây dựng trên Matlab Simulink
Hình 8.8: Sơ đồ bồn nước hệ hở để theo dõi hoạt động của bơm
Hình 8.9: Sơ đồ bồn nước hệ hở có sử dụng cảm biếm siêu âm để tính tốn giá trị chiều cao mực nước cho phù hợp trên Simulink
Hình 8.10: Sơ đồ hệ bồn nước đơn kín sử dụng bộ điều khiến PID để điều chỉnh mực nước theo mong muốn.
8.3.2 Khảo sát bộ điều khiển PID
Yêu cầu:
- Vẽ các đáp ứng của ngõ ra động cơ DC ứng với các thông số bộ điều khiển khác nhau. - Vẽ các đáp ứng của tín hiệu điều khiển ứng với các thông số bộ điều khiển khác nhau. - Lập bảng xác định các thông số chất lượng bộ điều khiển ứng với các thông số bộ điều
khiển khác nhau
a) Khảo sát đáp ứng ngõ ra của hệ thống với Ki=0, Kd=0, và thay đổi Kp clc; figure(); plot(kp1.time,kp1.signals(1).values); hold on; plot(kp2.time,kp2.signals(1).values); hold on; plot(kp3.time,kp3.signals(1).values); hold on; plot(kp4.time,kp4.signals(1).values); hold on; plot(kp5.time,kp5.signals(1).values); grid on; xlabel('Time(s)'); ylabel('Chieu cao (cm)');
Hình 8.13: Biểu đồ đáp ứng tín hiệu điều khiển với các giá trị Kp thay đổi Bảng 8-2: Thông số thu được khi thay đổi thông số Kp Bảng 8-2: Thông số thu được khi thay đổi thông số Kp
Kp 1 10 20 50 100 POT(%) 0 0 0 0 0 s s e (Deg/s) 10 10 6 2 1 r T (s) 0 0 130 125 120 xl T (s) 0 0 170 150 145 Nhận xét:
- Khi giá trị Kp=1 và 10 thì điện áp cung cấp cho bơm không đủ để bơm hoạt động nên chiều cao mực nước sẽ giữ nguyên là 0 trong quá trình chạy.
- Khi càng tăng giá trị Kp thì giá trị xác lập càng tăng.
- Đồ thị dao động nhiều là do nhiễu tác động nên cần chọn bộ lọc thích hợp ở ngõ ra trước khối scope để giảm thiểu giao động.
b) Khảo sát đáp ứng ngõ ra của hệ thống với Kp=4, Kd=0 và thay đổi Ki clc;
figure();
plot(ki1.time,ki1.signals(1).values); hold on;
plot(ki2.time,ki2.signals(1).values); hold on; plot(ki3.time,ki3.signals(1).values); hold on; plot(ki4.time,ki4.signals(1).values); hold on; plot(ki5.time,ki5.signals(1).values); grid on; xlabel('Time(s)'); ylabel('Chieu cao (cm)');
Tiến hành biên dịch chương trình ta thu được các đồ thị sau
Hình 8.15: Biểu đồ sai số với các giá trị Ki thay đổi
Bảng 8-3: Thông số thu được khi thay đổi thông số Ki Kp 0 0.1 0.2 0.5 1 POT(%) 0% 0% 0% 0% 0% s s e (Deg/s) 0 0 -2 -6 -7.5 r T (s) 130 198 200 195 200 xl T (s) 170 290 240 200 240 Nhận xét:
- Khi tăng Ki thì giá trị xác lập ngày càng tăng.
- Giá trị đo được trong khoảng từ 0 đến 100 dao động mạnh do nhiễu tác động (dao động của mặt nước và các yếu tố bên ngoài khác) dẫn đến sai số trong khi đo.
- Khi tiến tới gần giá trị xác lập thì đồ thị giao động ít lại hơn vì khoảng cách của mặt nước ngày càng gần cảm biến.
c) Khảo sát đáp ứng ngõ ra của hệ thống với Kp=4, Ki=0.2 và thay đổi Kd
8.3.3 Thiết kế bộ điều khiển PID
Yêu cầu
- Vẽ các đáp ứng của ngõ ra động cơ DC. - Vẽ các đáp ứng của tín hiệu điều khiển.
- Xác định các thơng số POT, Ess, Tr và Tss trên hình vẽ. a) Trường hợp 1 POT <5%. Tr < 1 Tss <1.1 Ess<1.4 b) Trường hợp 1 POT = 0%. Ess < 0.5. Tr < 1.
- Khâu P: Khi tăngKPthì sẽ làm giảm sai số xác lập nhưng lại làm tăng độ vọt lố. - Khâu I: Khi tăng KIthì làm cho hệ thống triệt tiêu sai số xác lập nhưng lại làm tăng
độ vọt lố và thời gian xác lập.
- Khâu D: Chưa thu thập đủ dữ liệu để nhận xét.
Thơng thường, khi tăng KD thì làm cho hệ thống giảm độ vọt lố nhưng lại làm tăng thời gian xác lập.
TÀI LIỆU THAM KHẢO
1. “Bài giảng Điều khiển tự động”, Nguyễn Thế Hùng.
2. Link 1: Thiết kế bộ điều khiển PID cho bồn nước sử dụng MATLAB nhúng cho Adruino Uno: https://youtu.be/DUgovjj9jmQ.
3. Link 2: Thiết kế bộ điều khiển P, PI, PID, FLC and FPID cho hệ bồn nước đơn m(MATLAB – Adruino) https://www.youtube.com/watch?v=iFauXSf-Afo 4. Link mô phỏng động cơ DC dựa vào hàm truyền của hệ thống trong MATLAB. 5. Simulink: https://www.youtube.com/watch?v=dqgQZrK4zyw&t=711s.
6. Link hướng dẫn vẽ đồ thị trên khối Scope trong MATLAB Simulink: https://www.youtube.com/watch?v=X5F4C6EpOKk&t=8s.
7. Link hướng dẫn vẽ nhiều đáp ứng trên cùng một đồ thị trong MATLAB https://youtu.be/9StfbAkNiZM.
8. “Lý thuyết Điều khiển tự động”, Nguyễn Thị Phương Hà, Huỳnh Thái Hoàng, NXB ĐHQG TPHCM.
9. “Bài giảng Điều khiển tự động”, Nguyễn Thế Hùng.
10. “MATLAB for Control System Engineers” Rao V Dukkipati. 11. “MATLAB for Control Engineers” Katsuhiko Ogata.
12. Video hướng dẫn thiết kế bộ điều khiển PID và Fuzzy trên MATLAB Simulink để lập trình cho Adruino: www.youtube.com/watch?v=tyz44ztDNPw&t=744s.