4.2.4. Nhận dạng đối tượng.
Trên đồ thị ta thấy có đoạn gần như đường thẳng bằng các dãn khoảng cách điểm trên trục thời gian ta xác định được đoạn đó từ điểm 0 đến điểm 16 trên đồ thị của giao diện Labview. Khoảng thời gian đó là thời gian trễ Tt và Tt=t×16=500×16=8000(ms)=8s.
http://www.ebook.edu.vn 51 Hình 4.9: Đặc tính trễ của mơ hình đối tượng lị nhiệt.
Ta có thể thấy theo đặc tính trên thì đối tượng có mơ hình khâu qn tính là bậc nhất có trễ. Ta áp dụng phương pháp thứ nhất của Ziegler – Nichols. Kẻ tiếp tuyến tại điểm uốn và dựng đường thẳng song song với trục thời gian từ điểm cao nhất của đường đặc tính, chiếu giao điểm xuống trục tọa độ thời gian ta xác định được thời gian tăng trưởng hay thời gian qn tính T=(393-16)×500=188,5(s).
Hình 4.10: Cách xác đinh đặc tính của lị sấy mơ hình. Tt Tt
T K
http://www.ebook.edu.vn 52 từ đó ta xác định được các thơng số của đối tượng lị sấy đó như sau:
• Hệ số khuếch đại : 97 23 0.74 100
K = − =
• Thời gian trễ: Tt =8(s) Thời gian q độ: T=188,5(s)
Từ đó ta tìm được hàm truyền của hệ thống là: ( ) 0.74 8 1 188.5 s e G s s − = +
Tuy nhiên thực tế đối với đối tượng lò sấy người ta thường dùng bộ điều khiển PI.
Theo Ziegler – Nichols 1 ta có hàm truyền của bộ điều khiển PI là: 1 ( ) 1 PI I G s kp T s ⎛ ⎞ = ⎜ + ⎟ ⎝ ⎠ Với 0.9 0.9 188.5 28.66 . 0.74 8 P t T k K T = = × = × 8 26.67 0.3 0.3 t I T T = = = 28.66 1.0746 26.67 P I I k k T = = =
4.2.5. Mơ phỏng Simulink đặc tính của đối tượng.
Ta lấy các khối trong Matlab để mô phỏng cho bài tốn như sau.
http://www.ebook.edu.vn 53 Hình 4.12: Bảng nạp thơng số PID.
Hình 4.13: Đặc tính của đối tượng lị sấy mơ phỏng trên simulink.
Như vậy trên mô phỏng ta thấy đường đặc tính nhanh chóng về chế độ xác lập
với độ quá điều chỉnh không vượt quá 40% giá trị giới hạn K, trong hình nó
khoảng 25% giá trị của K, dao động tắt nhanh và tiến đến ổn định do đó thỏa mãn yêu cầu của Ziegler – Nichols.
http://www.ebook.edu.vn 54
4.3.Thuật toán điều khiển và viết chương trình.
4.3.1.Thuật tốn điều khiển và thuật tốn PID.
a. Thuật toán điều khiển.
BEGIN SETUP Kp,Ki ĐỌC ADC END LCD,RS232 E=SETUP-ADC THOAT? Upid Duty =Upid S Đ
http://www.ebook.edu.vn 55
b. Thuật toán PID.
4.3.2.Thử nghiệm trên mơ hình.
Qua thử nghiệm,em đặt nhiệt độ ở 400C thấy mơ hình hoạt động khá ổn định.
PID controller Error = SP - PV P_term = Kp*Error Update PWM I_term + = Ki*sampletime*Error PI = P_term + I_term PIout = 0 < = PI <= 255
http://www.ebook.edu.vn 56
Hình 4.14: Kết quả thực nghiệm mơ hình.
4.4. Kết luận chương 4.
Trong chương 4 em đã.
• Thiết kế được giao diện giám sát và điều khiển. • Tìm hiểu hai phương pháp của Ziegler – Nichols.
• Áp dụng Ziegler – Nichols 1 tìm được kP, kI của bộ điều khiển PI. • Xây dựng lưu đồ thuật toán và viết code trình điều khiển.
• Mơ phỏng Simulink kiểm tra lại giá trị kP, kI thỏa man điều kiện Ziegler – Nichols.
http://www.ebook.edu.vn 57
KẾT LUẬN Kết quả thu được:
Sau quá trình nghiên cứu và hoàn thành đồ án tốt nghiệp với đề tài:”Thiết kế hệ thống điều khiển nhiệt độ lò sấy dùng vi điều khiển” em thu được những kết quả sau:
• Hiểu được ứng dụng của bài toán điều khiển nhiệt độ trong công nghiệp, cấu tạo chung của một số lị sấy điện trở.
• Thiết kế và thi cơng phần cứng hệ thống điều khiển nhiệt độ mơ hình lị sấy điện trở.
• Tổng hợp,mơ phỏng và cài đặt thực nghiệm bộ điều khiển PID cho đối tượng lị sấy điện trở mơ hình.
• Tuy nhiên do kiến thức và thời gian còn hạn chế nên đề tài cịn có nhiều thiếu sót:
• Do cảm biến nhiệt độ có sai số lớn nên việc đo nhiệt độ chưa được chính xác lắm,giới hạn nhiệt độ thấp.
• Mơ hình nhỏ chưa đáp ứng địi hỏi như thực tế. • Chất lượng điều khiển chưa cao lắm.
Hướng nghiên cứu và phát triển:
• Nghiên cứu và sử dụng bộ điều khiển có chất lượng cao hơn. • Sử dụng các cảm biến có độ chính xác cao hơn.
http://www.ebook.edu.vn 58
TÀI LIỆU THAM KHẢO
[1]. Lý thuyết điều khiển tự động Lê Hùng Lân
Trường ĐH Giao Thông Vận Tải [2]. Điện tử cơng suất
Nguyễn Bính
Nhà xuất bản khoa học và kĩ thuật - 1995 [3]. Lò điện
Lương Văn Đề
Trường Đại Học Bách Khoa Hà Nội - 1993 [4]. Lý thuyết điều khiển tuyến tính Nguyễn Dỗn Phước
Nhà xuất bản khoa học kĩ thuật - 2002
http://www.ebook.edu.vn 59
PHỤ LỤC
CODE CHƯƠNG TRÌNH BÀI TỐN LỊ SẤY.
//==================================== === //Ten chuong trinh :Dieu chinh nhiet lo say
//Mo ta phan cung :PIC16F887,crystal 20Mhz
//thach anh 20MHz ->tan so lenh la 5Mhz ->chu ki lenh la 0.2us //=================================== ===
//Khai bao cac thu vien su dung
#include <16f887.h>//thu vien chuan cho PIC16F887 #include <def_887.h>//thu vien cac thanh ghi tu dinh nghia #DEVICE ADC=10
//Khai bao cac thiet lap cho chip
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer #FUSES MCLR //Master Clear pin enabled
#FUSES NOPROTECT //Code not protected from reading #FUSES NOCPD //No EE protection
#FUSES NOBROWNOUT //No brownout reset
#FUSES IESO //Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled
http://www.ebook.edu.vn 60 #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOWRT //Program memory not write protected #FUSES BORV40 //Brownout reset at 4.0V
//Khai bao cac thanh phan su dung
#use delay(clock=20M)//su dung thach anh 20Mhz
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)//su dung khoi truyen thong UART
#include <lcd_4bit.c>
unsigned int nhietdothuc;
unsigned int nhietdodat=40,count=0; signed int16 duty;
signed int8 err=0;
signed int16 Ppart=0,Ipart=0;
#define hs 0.488;
//Khai bao tham so const #define Kp 30
#define Ki 0.2
http://www.ebook.edu.vn 61 #define inv_sampletime 2
void hienthiLCD(unsigned int16 x)//hien thi LCD { char x1,x2,x3,x4; x1= x/1000; x2=(x%1000)/100; x3=((x%1000)%100)/10; x4=((x%1000)%100)%10; LCD_PutChar(x1+48); LCD_PutChar(x2+48); LCD_PutChar(x3+48); LCD_PutChar(x4+48); }
//Ham cap nhat PID void PID() { err=nhietdodat-nhietdothuc; Ppart=Kp*err; Ipart+=Ki*sampletime*err; //Dpart=Kd*(err-pre_err)*inv_sampletime; duty=Ppart+Ipart;
http://www.ebook.edu.vn 62 if(duty>1023) duty=1023; if(duty<0) duty=0; } //ngat timer 1; #int_timer1 void ngatT1() { count++;
set_timer1(3036);//timer 1 100ms tran 1 lan clear_interrupt(int_timer1);
}
void main() {
//Khoi tao ngat
enable_interrupts(GLOBAL); //cho phep ngat toan cuc
http://www.ebook.edu.vn 63 LCD_Init(); SETUP_ADC(ADC_CLOCK_INTERNAL); SETUP_ADC_PORTS(sAN0|VSS_VDD); SET_ADC_CHANNEL(0); delay_us(20);
LCD_PutChar ( "Giam sat nhiet");
//dem 500ms ngat 1 lan;
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); set_timer1(3036);//timer 1 100ms tran 1 lan
setup_ccp1 (CCP_PWM) ;//thiet lap bo CCP1 va CCP2 lam bo PWM setup_ccp2 (CCP_PWM) ;
setup_timer_2 (T2_DIV_BY_16, 255, 1);//1.22kHz - duty 10 bits set_pwm2_duty (0);//dat duty ban dau = 0
set_pwm1_duty (0); while(true) { if(count==5)//0.5s { timer1on=0;//dung bo timer 1
http://www.ebook.edu.vn 64 nhietdothuc=read_adc(); delay_us(10); nhietdothuc=nhietdothuc*hs; PID(); set_pwm1_duty(duty); set_pwm2_duty(duty); LCD_SetPosition(0xc5); hienthiLCD(nhietdothuc); printf("%u",nhietdothuc); count=0; timer1on=1; } } }