.18 Hàm xử lý thời gian kích Triac

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

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.

Ngoà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 58)