.2 Chương trình Simulink đọc giá trị nhiệt độ được gửi từ Arduino Uno

Một phần của tài liệu ĐỀ TÀI THIẾT KẾ BỘ ĐIỀU KHIỂN NHIỆT ĐỘ SỬ DỤNG GIẢI THUẬT PID MỜ (Trang 37)

Cơng suất của lị nhiệt được khảo sát sẽ là tối đa, đảm bảo khơng có thay đổi trong suốt quá trình khảo sát. Cảm biến nhiệt độ sẽ đọc giá trị tại mỗi thời điểm khác nhau với chu kì trích mẫu là 1000ms.

Hình 3.3 Đồ thị lị nhiệt được khảo sát

Sau khi xác định được đồ thị của lò nhiệt. Sử dụng phần mềm System Identification để nhận dạng đối tượng. Chọn Import data nhập số liệu đã thu thập được vào mục Input và Output.

Hình 3.4 Thu thập dữ liệu thật bằng System Identification

Sau đó chọn mục Estimate rồi chọn Process Models và chọn dạng hàm truyền của lò nhiệt. Thu được các giá trị tham số 𝐾 = 4.079, 𝑇𝑝1 = 239.81, 𝑇𝑑 = 9.51.

Hình 3.6 So sánh hàm truyền được xây dựng và đồ thị thực Suy ra được hàm truyền của lò nhiệt với độ chính xác 98,09% Suy ra được hàm truyền của lị nhiệt với độ chính xác 98,09%

𝐺(𝑠) = 4.079.𝑒−9.51𝑠

1+239.8𝑠 (3.1)

Hàm truyền lò nhiệt được thể hiện trong Simulink bởi các khối Transfer Fcn như sau:

Hình 3.7 Khối hàm truyền

Đề tài xây dựng giải thuật dựa trên phương pháp điều khiển PID số nên cần có khâu lấy mẫu ZOH.

Hình 3.8 Khối hàm truyền và khâu lấy mẫu

3.3. Chỉnh định tham số mờ PID

3.3.1. Phương pháp chỉnh định

Có nhiều phương phương pháp khác nhau để chỉnh định tham số bộ điều khiển PID như là chỉnh định mờ Madani, chỉnh định theo Zhao – Tomizuka – Isaka, chỉnh định mờ Mallesham – Rajani, chỉnh định mờ Sugeno… Nguyên tắc chung là bắt đầu với các giá trị 𝐾𝑃, 𝐾𝐼, 𝐾𝐷 theo Zeigler – Nichols, các tham số được chỉnh định dựa trên sai lệch 𝑒(𝑡) và đạo hàm 𝑑𝑒(𝑡).

Ở trong đề tài này sử dụng chỉnh định mờ Mallesham – Rajani để tối ưu giá trị của các tham số bộ điều khiển PID.

Đầu tiên cần chuẩn hóa cho cả ba tham số 𝐾𝑃, 𝐾𝐼, 𝐾𝐷 với giả thiếu cả ba đều bị chặn trong khoản [𝐾𝑃𝑚𝑖𝑛, 𝐾𝑃𝑚𝑎𝑥], [𝐾𝐼𝑚𝑖𝑛, 𝐾𝐼𝑚𝑎𝑥], [𝐾𝐷𝑚𝑖𝑛, 𝐾𝐷𝑚𝑎𝑥]. Ta quy đổi các

khoảng này về dạng chính tắc [9]: 𝐾𝑃′ = 𝐾𝑃−𝐾𝑃𝑚𝑖𝑛 𝐾𝑃𝑚𝑎𝑥−𝐾𝑃𝑚𝑖𝑛 (3.2) 𝐾𝐼′ = 𝐾𝐼−𝐾𝐼𝑚𝑖𝑛 𝐾𝐼𝑚𝑎𝑥 − 𝐾𝐼𝑚𝑖𝑛 (3.3) 𝐾𝑃′ = 𝐾𝐷−𝐾𝐷𝑚𝑖𝑛 𝐾𝐷𝑚𝑎𝑥−𝐾𝐷𝑚𝑖𝑛 (3.4)

Khi đó, các giá trị 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ 𝜖 [0,1], và các bộ PID được tính lại:

𝐾𝑃 = (𝐾𝑃𝑚𝑎𝑥 − 𝐾𝑃𝑚𝑖𝑛)𝐾𝑃′ + 𝐾𝑃𝑚𝑖𝑛 (3.5)

𝐾𝑃 = (𝐾𝑃𝑚𝑎𝑥 − 𝐾𝑃𝑚𝑖𝑛)𝐾𝑃′ + 𝐾𝑃𝑚𝑖𝑛 (3.6)

𝐾𝑃 = (𝐾𝑃𝑚𝑎𝑥 − 𝐾𝑃𝑚𝑖𝑛)𝐾𝑃′ + 𝐾𝑃𝑚𝑖𝑛 (3.7) Khi đó bộ chỉnh định mờ của Malleshan – Rajani bao gồm hai đầu vào: sai lệch

𝑒(𝑡) và đạo hàm sai lệch 𝑑𝑒(𝑡). Và ba đầu ra cho ba tham số bộ PID: 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ như

hình 3.7:

Hình 3.9 Mờ hóa bộ chỉnh định mờ cho PID

3.3.2. Cấu trúc bộ mờ và các hàm thuộc

Hình 3.10 Cấu trúc của khối mờ

Ở đây, với mỗi đầu vào bộ mờ ta lập 5 hàm thuộc tương ứng với 5 biến ngôn ngữ:

𝑒(𝑡) = {𝑁𝐵, 𝑁𝑆, 𝑍𝐸, 𝑃𝑆, 𝑃𝐵} 𝑑𝑒(𝑡) = {𝐷𝐹, 𝐷𝑆, 𝑀𝑇, 𝐼𝑆, 𝐼𝐹}

Hình 3.11 Các hạm thuộc của sai lệch 𝑒(𝑡)

Khoảng giá trị của các biến vật lý cho các hàm thuộc của sai lệch 𝑒(𝑡) phụ

thuộc vào khoảng giá trị của tín hiệu đo được.

Hình 3.12 Các hàm thuộc của đạo hàm sai lệch 𝑑𝑒(𝑡)

Khoảng giá trị của các biến vật lý cho các hàm thuộc của đạo hàm sai lệch

𝑑𝑒(𝑡) ta cũng lấy tương tự như đối với 𝑒(𝑡). Tuy nhiên có một chú ý là khoảng giá trị

này phụ thuộc vào thời gian lấy mẫu 𝑇. Thời gian lấy mẫu ở đây là 𝑇 = 1.

Các đầu ra 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ có dạng giống nhau là dạng chuẩn, nên hàm thuộc ta cũng lấy cùng dạng như hình 3.11. Khoảng giá trị biến ra là chính tắc [0; 1]

Hình 3.13 Các hàm thuộc của biến ra 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′

3.3.3. Xây dựng luật hợp thành

Phương pháp Mallesham – Rajani sử dụng luật hợp thành Min – Max và giải mờ theo phương pháp điểm trọng tâm.

Hình 3.14 Luật hợp thành và phương pháp giải mờ được sử dụng Các luật hợp thành đều có dạng chung cho ba đầu ra 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ như sau: Các luật hợp thành đều có dạng chung cho ba đầu ra 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ như sau:

If 𝑒(𝑡) is NB and 𝑑𝑒(𝑡) is DF, then 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ is S

Tổng kết lại ta có bảng luật hợp thành như bảng 3.1 và hình 3.10 với hai giá tri đầu vào, ba giá trị đầu ra và hai mươi lăm luật hợp thành.

Bảng 3.1 Bảng luật hợp thành mờ 𝑑𝑒(𝑡)/𝑒(𝑡) NB NS ZE PS PB 𝑑𝑒(𝑡)/𝑒(𝑡) NB NS ZE PS PB DF S S MS MS M DS S MS MS M MB MT MS MS M MB MB IS MS M MB MB B IF M M MB B B Hình 3.15 Luật hợp thành mờ

3.3.4. Kết quả mơ phỏng

Hình 3.16 Sơ đồ khối bộ điều khiển PID mờ

So sánh với phương pháp Ziegler – Nichols 1:

Ở đây, mơ hình hàm truyền đối tượng lị nhiệt là mơ hình (3.1). Tham số bộ PID được chọn theo Ziegler – Nichols 1 (Bảng 2,1). Các tham số, các hàm thuộc, luật hợp thành của bộ PID mờ được lựa chọn như ở trên đã phân tích. Ta có các thơng số tính tốn theo Ziegler – Nichols 1 được dùng cho bộ điều khiển như sau:

𝐾𝑃 = 1.2 𝑇2

𝐾∗𝑇1 = 1.2 227

110∗4≈ 7.41 (3.7)

𝑇𝐼 = 2 ∗ 𝑇1 = 2 ∗ 4 = 19.02 (3.8)

So sánh với công cụ PID Turning Toolbox:

Hình 3.18 Kéo thả hàm truyền xuống khối To Workspace để lưu giá trị

Hình 3.19 Mở hộp Công cụ Turning và Import khối To Workspace

Hình 3.21 So sánh đáp ứng của bộ PID (Tuning toolbox) và PID mờ

Sau khi sử dụng công cụ PID Tuning toolbox, ta so sánh đáp ứng của bộ này với bộ PID mờ.

3.4. Kết luật chương

Từ các đồ thị trên, ta nhận thấy rõ chất lượng đáp ứng của bộ PID mờ tốt hơn hẳn hai bộ PID theo Ziegler – Nichols 1 và theo công cụ PID Turning ở tất cả các tiêu chí. Với thời gian đáp ứng nhanh, khơng có sai lệch tĩnh và độ lọt vố thấp (6% so với 7.5% của PID Turning và 43% của PID Ziegler – Nichols).

Chương 4: Thiết kế hệ thống điều khiển – hồn thiện mơ hình

4.1. Giới thiệu chương

Nội dung đề tài được thể hiện xuyên suốt là xây dựng bộ điều khiển cho lò nhiệt với giải thuật PID mờ, với nhiệm vụ đề tài được nêu ở phần mở đầu là nhúng kết quả mô phỏng vào vi điều khiển thực hiện việc điều chỉnh thông số đầu ra mạch cơng suất. Ta có sơ đồ khối điều khiển PID mờ được nhúng như sau:

Hình 4.1 Sơ đồ khối nhúng giải thuật vào vi điều khiển

Tuy nhiên, khi thực hiện việc nhúng chương trình, vi điều khiển được sử dụng để nhúng là Arduino Mega 2560 R3 Atmega 16u2. Đây là dòng vi điều khiển có bộ nhớ lớn nhất trong họ vi điều khiển Arduino, với bộ nhớ 8 KB. Thì chương trình giải thuật PID mờ chiếm bộ nhớ hơn 11 KB, vượt mức 8 KB tối đa mà Arduino có thể đáp ứng. Vì vậy việc nhúng chương trình vào vi điều khiển khơng thể thực hiện được.

Hình 4.2 Chương trình chiếm đến 137% bộ nhớ của Arduino Mega

Em rất tiếc về sự cố này và nhận trách nhiệm về sự thiếu sót khi lựa chọn vi điều khiển. Phương án khắc phục được đề cập ở phần kết luận và có thể thực hiện

4.2. Lưu đồ giải thuật PID

4.2.1. Lưu đồ thuật toán

Trong báo cáo này, với sự cho phép của giáo viên hướng dẫn, để tiếp tục nội dung đề tài và hoàn thiện mơ hình, phương án giải thuật thay thế được đưa ra là sử dụng bộ PID số thuần túy để điều khiển nhiệt độ lị nhiệt. Các thơng số về hàm truyền, thời gian lấy mẫu, phương pháp điều khiển công suất vẫn được giữ nguyên. Yêu cầu đặt ra là bộ PID số vẫn đảm bảo tính ổn định, đáp ứng được nhiệt độ đặt mong muốn.

4.2.2. Sơ đồ khối chương trình

Hình 4.4 Sơ đồ khối Simulink điều khiển bộ PID số Bao gồm các khối: Bao gồm các khối:

- Analog Input: Sử dụng để đọc giá trị điện áp mà cảm biến LM35 gửi vào Arduino. Ở đây LM35 gửi giá trị vào chân A0 của arduino với thời gian lấy mẫu là 1 giây.

- Khối xử lý nhiệt độ: Chuyển tín hiệu điện áp từ chân A0 thành giá trị nhiệt độ. Công thức chuyển đổi được thể hiện ở mục 4.2.1.

- Khối nhiệt độ đặt: Nhiệt độ cài đặt mong muốn.

- Các khối hiển thị nhiệt độ tức thời và hiển thị giá trị sung. - Khối Scope hiển thị dạng sóng nhiệt độ.

- Khối PID số là khối giải thuật điều khiển chính, quyết định giá trị xung ra trong khoảng từ (0 – 255).

4.3. Sơ đồ mơ hình và giải thích nguyên lý

4.3.1. Sơ đồ nguyên lý

Hình 4.6 Sơ đồ ngun lý mơ hình Sơ đồ ngun lý mơ hình bao gồm các khối: Sơ đồ ngun lý mơ hình bao gồm các khối:

- Khối điều khiển bao gồm Board Arduino Uno R3 (được sử dụng thay thế cho Arduino Mega trong hình 1.6) và phần mềm Matlab & Simulink. Khối này có nhiệm vụ cài đặt nhiệt độ đặt mong muốn, đọc giá trị cảm biến nhiệt độ và cho ra tín hiệu điều khiển với giải thuật PID số.

- Khối mạch cơng suất đóng vai trị điều khiển điện áp xoay chiều cấp cho lò nhiệt, với điện áp càng cao thì lị đạt cơng suất càng lớn.

- Thiết bị gia nhiệt được sử dụng trong lị nhiệt là bóng đèn sợi đốt, với cơng suất được cấp càng lớn thì bóng đèn sáng đồng thời tỏa ra nhiệt lượng lớn để gia tăng nhiệt độ trong lò nhiệt.

- Cảm biến LM35 được đặt trong lò nhiệt sẽ liên tục gửi giá trị nhiệt độ đạt được trong lị nhiệt theo chu kì lấy mẫu được cài đăt về khối điều khiển. Về nguyên lý, khi cấp nguồn cho mơ hình, cảm biến biến nhiệt độ LM35 sẽ truyền tín hiệu điện áp đến Arduino Uno R3. Arduino Uno đọc giá trị điện áp nhận được từ LM35, quy đổi sang nhiệt độ và gửi vào chương trình Matlab & Simulink. Tại đây, giải thuật PID mờ sẽ so sánh nhiệt độ thiết lập với nhiệt độ tức thời đo được và xuất ra xung PWM tương ứng từ 0 -255 cho Arduino Uno.

Arduino Uno sẽ gửi tín hiệu PWM đến khối mạch cơng suất, từ đó mạch cơng suất có nhiệm vụ điều chỉnh thời gian sáng của bóng đèn tỉ lệ với xung PWM đọc được. Xung càng lớn thì thì thời gian sáng của bóng đèn (trong nửa chu kì điện áp

sáng đèn tương ứng với (1𝑚𝑠 − 9𝑚𝑠). Nguyên tắc kích dẫn điều chỉnh thời gian đèn sáng sẽ được giải thích ở mục 4.2.2.

Hình 4.7 Sơ đồ nối dây phần cứng

Cảm biến nhiệt độ LM35:

LM35 là một cảm biến nhiệt độ tương tự, điện áp đầu ra của cảm biến tỉ lệ với nhiệt độ tức thời và có thể dễ dàng được xử lý để có được nhiệt độ bằng 0C.

Cảm biến nhiệt độ LM35 hoạt động bằng cách cho ra một điện áp tại chân số 2 ứng với mỗi mức nhiệt độ. Điện áp thay đổi tuyến tính theo mức nhiệt độ 10𝑚𝑉/ 𝐶𝑜 .

Board Arduino đọc giá trị 𝑉𝑜𝑢𝑡 của LM35 bằng các chân Analog. Tại các chân Analog giá trị điện áp đọc được trong khoảng (0 − 5𝑉) sẽ được quy đổi về (0 − 1023). Vì giá trị LM35 gửi về là 10𝑚𝑉 nên khi quy đổi ta cần phải nhân 100 với giá

trị quy đổi để hiển thị nhiệt độ đọc được một cách chính xác nhất. Từ đó ta có cơng thức đọc giá trị nhiệt độ của cảm biến LM35:

𝑛ℎ𝑖ệ𝑡 độ = (𝑢 ∗ 5/1023) ∗ 100 (4.1)

Với 𝑢 là giá trị điện áp ra từ chân số 2 của cảm biến LM35.

Hình 4.10 Sơ đồ nguyên lý mạch công suất. Mạch công suất bao gồm các thành phần: Mạch công suất bao gồm các thành phần:

- Board mạch điều khiển Arduino Nano. - Mạch phát hiện điểm 0.

- Mạch kích Triac.

- Khối quét 3 Led 7 đoạn hiển thị thời gian sáng của đèn (đơn vị mili giây). Mạch cơng suất có vai trị cung cấp cơng suất phù hợp cho thiết bị gia nhiệt (bóng đèn). Vi điều khiển Arduino Nano sẽ đọc tín hiệu xung PWM được gửi từ Arduino Uno bằng cổng Analog. Từ đó xử lý để cho ra tín hiệu phù hợp kích chân 𝐺 của Triac làm cho đèn sáng và hiển thị thời gian sáng đèn trên 3 led 7 đoạn.

Công suất mở của triac phụ thuộc vào sự thay đổi của góc kích 𝛼. Khi góc kích

𝛼 thay đổi thì điện áp đầu ra cũng thay đổi. Ngun tắc điều khiển góc kích 𝛼 được sử

dụng là tìm được điểm 0, tức là điểm giao nhau giữa chu kì âm và chu kì dương của điện áp xoay chiều. Quá trình được biểu thị ở hình 4.2

Hình 4.12 Chu kì hoạt động của điện áp xoay chiều

Mạch phát hiện điểm 0:

Hình 4.13 Mạch phát hiện điểm 0

Mạch phát hiện điểm 0 được thiết kế dựa trên nguyên lý hoạt động của điện áp xoay chiều.

thuận và được xem như một diode bán dẫn bình thường. Khi Diode zenner dẫn nghịch được xem như một nguồn 4.7 𝑉 cung cấp điện áp cho led trong opto PC817 phát sáng kích dẫn chân 3 và 4 với nhau.

Hình 4.14 Sơ đồ chân thực tế PC817

Hình 4.15 Cầu Diode KBP206

Tuy nhiên có một khoảng thời gian ngắn giữa hai nửa chu kì điện áp nhỏ hơn

4.7𝑉. Điện áp ghim vào hai chân 1 và 2 của opto PC817 không đủ làm cho led phát

sáng. Chân 3 và chân 4 không dẫn điện. Ta gọi khoảng thời gian đấy là điểm 0 và dựa vào ngắt ngoài của vi điều khiển để phát hiện điểm 0, tính góc mở Triac.

Cú pháp ngắt ngồi của Arduino:

𝑎𝑡𝑡𝑎𝑐ℎ𝐼𝑛𝑡𝑒𝑟𝑟𝑢𝑝𝑡(𝑖𝑛𝑡𝑒𝑟𝑟𝑢𝑝𝑡, 𝐼𝑆𝑅, 𝑚𝑜𝑑𝑒);

Trong đó:

- Interrupt: là số thứ tự của ngắt. Với Arduino Nano ta có 2 ngắt với số thứ tự là 0 và 1. Ngắt số 0 với chân Digital 2 và ngắt số 1 với chân Digital 3.

- ISR: tên hàm sẽ gọi khi có sự kiện ngắt. Trong trường hợp này, ta sẽ gọi hàm kích dẫn Triac.

- Mode: là kiểu kích hoạt ngắt, sử dụng kiểu “RISING” – kích hoạt khi trạng thái của chân Digital chuyển từ mức điện áp thấp sang mức điện áp cao.

Hình 4.16 Lệnh ngắt gọi hàm kích dẫn Triac.

Mạch kích góc mở Triac:

Hình 4.17 Mạch kích góc mở Triac

Mạch cơng suất kích góc mở Triac được thiết kế như hình 4.4. Khi có tín hiệu phát hiện điểm 0, chân kích Triac của vi điều khiển phát tín hiệu điện áp thì led của MOC3023 sẽ phát quang kích dẫn chân 4 và chân 6 vì thế sẽ có điện áp kích chân G của Triac để sáng đèn. Ta chỉ điều khiển khiển thời gian kích Triac trong khoảng từ

Trong đó:

- t1 tương ứng với góc mở của Triac.

- t2 là thời gian xung kích của chân G để kích dẫn.

- t3 là khoảng thời gian mà dịng điện đóng ngắt trong nửa chu kì.

Với thời gian t1 được điều khiển dài hay ngắn phụ thuộc từ tín hiệu PWM gửi vào Arduino Nano.

Hình 4.20 Sơ đồ chân Triac BTA12

Khối quét 3 led 7 đoạn:

Khối quét 3 led 7 đoạn có vai trị hiển thị thời gian sáng của đèn với đơn vị là mili giây giúp cho việc theo dõi mơ hình được thuận lợi. Đảm bảo bóng đèn được cấp cơng suất thích hợp vào từng thời điểm sai lệch nhiệt độ.

Khối quét 3 led 7 đoạn bao gồm một con led 7 đoạn 3 số Anode được kết nối với IC 74HC595 và 3 Transistor NPN tương ứng với 3 số của led. Arduino Nano sẽ điều khiển IC 74HC595 và Transitor để hiển thị thời gian sáng đèn trên led 7 đoạn.

Hình 4.22 Mã hex led 7 đoạn Anode chung

74HC595 là một thanh ghi dịch nối tiếp vào song song ra 8 bit, tức là nó có thể nhận (đầu vào) dữ liệu nối tiếp và điều khiển 8 chân đầu ra song song.

- Các chân Q0 đến Q7 là các chân đầu ra, được nối vào các thanh led của led

Một phần của tài liệu ĐỀ TÀI THIẾT KẾ BỘ ĐIỀU KHIỂN NHIỆT ĐỘ SỬ DỤNG GIẢI THUẬT PID MỜ (Trang 37)