.4 Sơ đồ khối Simulink điều khiển bộ PID số

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 50)

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 ngun 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ơ đồ ngun 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 ngoà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 7 đoạn. Chân Q7’ được sử dụng để xếp tầng với các IC 74HC595 khác. - Chân SH_CP là chân Clock phát xung nhịp không đổi để giữ thời gian. - Chân DS là chân Data gửi dữ liệu về chân đầu ra nào phải ở mức thấp và

chân nào sẽ ở mức cao.

- Chân ST_CP là chân Latch cập nhật dữ liệu nhận được vào các chân đầu ra khi đặt mức cao.

Hình 4.24 Khai báo IC 74HC595

4.4. Kết luận chương

4.4.1. Một số kết quả mạch chạy thực tế

Do khi thực hiện lị nhiệt thực tế có ảnh hưởng bởi các yếu tố phụ như môi trường, sai số thiết bị, độ ổn định của nguồn điện cấp…nên kết quả khảo sát ở mô phỏng và thực tế là khác nhau. Việc mơ phỏng chỉ mang tính chất tham khảo để tìm kiếm tham số thực tế của bộ điều khiển một cách nhanh chóng hơn. Các tham số thực tế của bộ PID được lấy xấp xỉ tỉ lệ với giá trị tham số mô phỏng từ công cụ PID Turning.

Ta khảo sát thực tế mơ hình với nhiệt độ đặt là 600C, Thời gian lấy mẫu bộ PID là 0.01 giây, thời gian lấy mẫu nhiệt độ là 1 giây, thời gian chạy chương trình là 500 giây.

Hình 4.25 Kết quả với giá trị 𝐾𝐼 = 10.5; 𝐾𝐼 = 0.06; 𝐾𝐷 = 2

Hình 4.27 Kết quả với giá trị 𝐾𝐼 = 10.5; 𝐾𝐼 = 0.06; 𝐾𝐷 = 0

Hình 4.29 Kết quả với giá trị 𝐾𝐼 = 12; 𝐾𝐼 = 0.06; 𝐾𝐷 = 0

Hình 4.30 Kết quả với giá trị 𝐾𝐼 = 9; 𝐾𝐼 = 0.06; 𝐾𝐷 = 0

4.4.2. Kết luận chương

Kết quả thực từ mơ hình thực tế lị nhiệt với thời gian lấy mẫu 0.01 giây thì hệ thống đáp ứng tốt với các giá trị 𝐾𝐼 = 10.5; 𝐾𝐼 = 0.06; 𝐾𝐷 = 0 khi không xuất hiện

lọt vố, bám sát với nhiệt độ đặt với khoảng dao động nhỏ và thời gian đáp ứng tốt. Khi tăng giá trị 𝐾𝑃 cũng tỉ lệ thuận với thời gian đáp ứng của hệ thống. Nếu giảm 𝐾𝑃 thì hệ thống có lọt vố.

Với giá trị 𝐾𝐼, nếu giảm giá trị này về gần bằng 0 thì xuất hiện sai số xác lập càng lớn. Còn nếu tăng 𝐾𝐼 lên thì xuất hiện lọt vố và hệ thống cũng bắt đầu không ổn định khi dao động quanh điểm đặt tương đối lớn.

Ta cũng nhận thấy hệ thống hoạt động ổn định nhất khi 𝐾𝐷 = 0, nếu tăng giá trị 𝐾𝐷 thì hệ thống xuất hiện sai số xác lập.

Thực nghiệm cho thấy lò nhiệt hoạt động tốt với giải thuật PID số, giá trị dao động quanh nhỏ, xuất hiện dao động chủ yếu do các yếu tố phụ như mơi trường, nhiễu đo… Lị nhiệt hoạt động ổn định nhất khi dùng bộ điều khiển tích phân tỉ lệ PI với giá trị 𝐾𝑃 = 10.5, 𝐾𝐼 = 0.06, thời gian lấy mẫu 0.1s và nhiệt độ đặt là 600C.

KẾT LUẬN

1. Kết quả đạt được:

Xây dựng và chạy thành cơng chương trình mơ phỏng bằng Simulink các bộ điều khiển PID và PID mờ, so sánh chất lượng đáp ứng các bộ điều khiển.

Thiết kế và hồn thiện mơ hình phần cứng bao gồm mạch điều khiển, mạch công suất. Giải quyết được vấn đề điều khiển lò nhiệt thực tế với bộ điều khiển PID số. Hệ thống thực tế hoạt động ổn định, không xuất hiện lọt vố và thời gian đáp ứng tương đối nhanh.

2. Một số mặt hạn chế

Giải thuật điều khiển sử dụng là PID số, khác với mục tiêu đề tài là bộ điều khiển PID mờ.

Hạn chế về công cụ hỗ trợ cần thiết, khả năng xuất hiện sai số dao động quanh nhiệt độ đặt do mơ hình thủ cơng chưa được chuẩn hóa nên việc nhận dạng hàm truyền chưa được chính xác nhất, dẫn đến việc chất lượng điều khiển chưa được như mong đợi.

3. Hướng phát triển đề tài

Vì bộ nhớ giải thuật điều khiển PID mờ tương đối lớn, không thể nhúng được trên các vi điều khiển thông thường, nên sử dụng những vi điều khiển có bộ nhớ lớn hơn như STM32, Raspberry pi… Hoặc có thể xây dựng thư viện của các thơng số mờ, quy tắc giải mờ bằng ngơn ngữ lập trình trên vi điều khiển, từ đó việc xây dựng giải thuật hoàn tồn dựa trên các ngơn ngữ lập trình, khơng phụ thuộc vào phân mềm Matlab & Simulink. Khi đấy bộ PID sẽ được xác định theo công thức (2.20).

Về phần cứng, sử dụng các bộ khảo sát lò nhiệt đạt chuẩn trong phịng thí nghiệm, thiết kế mạch công suất nguồn đảm bảo cho việc xác định hàm truyền được chuẩn xác.

Về thuật toán, thay đổi các dạng và số lượng hàm thuộc, sử dụng các luật hợp thành và phương pháp giải mờ khác để tìm được phương pháp tối ưu.

Ngồi ra, trong đề tài này chỉ thể hiện dạng sóng thời gian thực trên khối Scope của Simulink. Cần chú ý phát triển thêm các dạng hiển thị để giúp cho việc quan sát trực quan và dễ dàng hơn.

TÀI LIỆU THAM KHẢO

[1], [3], [4]: Đỗ Chí Phi – Trang bị điện – Cao đẳng Cao Thắng. [2]: https://steeluniversity.org/courses/m3d-eaf-electric-arc-furnace/

[5], [6]: Nguyễn Thị Phương Hà, Huỳnh Thái Hoàng (2004) – Lý thuyết điều khiển tự

động – NXB Đại học Quốc gia Thành Phố Hồ Chí Minh.

[7]: A. O Dwyer (2013) – PI and PID controller tuning rules for time delay processes:

a summary, Part 2: PID controller tuning rules – Proceedings of the Irish Signals and

Systems Conference, National University of Ireland, Galway.

[8]: Nguyễn Thị Phương Hà – Giáo trình lý thuyết điều khiển hiện đại – Đại học Quốc gia Thành Phố Hồ Chí Minh.

[9]: Nguyễn Đức Hiển, Hồng Đình Cơ – Tài liệu học tập điều khiển mờ và mạng nơron – Trường Đại học kinh tế -Kỹ thuật công nghiêp.

PHỤ LỤC Chương trình kích mở Triac: #define TRIAC_PIN 7 float thoigian; int i,j,output; double adc; char MA7DOAN[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; char madem; uint8_t Thoigianquet=1; uint8_t Tranled1 = 5; uint8_t Tranled2 = 4; uint8_t Tranled3 = 3; uint8_t latchpin = 9; uint8_t clockpin = 10; uint8_t datapin = 8; void TriacControl() { QuetLed(); delayMicroseconds((1000-output)*10); digitalWrite(TRIAC_PIN,HIGH); delayMicroseconds(100); digitalWrite(TRIAC_PIN,LOW); QuetLed(); } void setup() {

pinMode(TRIAC_PIN,OUTPUT);

attachInterrupt(0, TriacControl, RISING); pinMode(Tranled1,OUTPUT); pinMode(Tranled2,OUTPUT); pinMode(Tranled3,OUTPUT); pinMode(latchpin , OUTPUT); pinMode(clockpin, OUTPUT); pinMode(datapin, OUTPUT); output=100; digitalWrite(latchpin, LOW); madem=MA7DOAN[0];

shiftOut(datapin, clockpin, MSBFIRST,(madem)); digitalWrite(latchpin, HIGH); } void loop() { adc=0; for(i=0;i<1000;i++) adc+=analogRead(A0); adc=adc/1000; output=map(adc,0,1023,100,900); } void QuetLed() { Thoigianquet++; if(Thoigianquet>3) Thoigianquet=1; if(Thoigianquet==1)

digitalWrite(latchpin, LOW); madem=MA7DOAN[output/100];

shiftOut(datapin, clockpin, MSBFIRST,(madem-128)); digitalWrite(latchpin, HIGH); digitalWrite(Tranled3,HIGH); digitalWrite(Tranled1,LOW); } else if(Thoigianquet==2) { digitalWrite(latchpin, LOW); madem=MA7DOAN[output/10%10];

shiftOut(datapin, clockpin, MSBFIRST,(madem)); digitalWrite(latchpin, HIGH); digitalWrite(Tranled1,HIGH); digitalWrite(Tranled2,LOW); } else { digitalWrite(latchpin, LOW); madem=MA7DOAN[output%10];

shiftOut(datapin, clockpin, MSBFIRST,(madem)); digitalWrite(latchpin, HIGH);

digitalWrite(Tranled2,HIGH); digitalWrite(Tranled3,LOW); }

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 50)

Tải bản đầy đủ (PDF)

(70 trang)