4.3.1.Thuật toán điều khiển và thuật toá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 tố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 tố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 q trình nghiên cứu và hồ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 tố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; } } }