.Thuật toán điều khiển và viết chương trình

Một phần của tài liệu Thiết kế hệ thống giám sát và điều khiển nhiệt độ lò sấy (Trang 54)

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 (adsbygoogle = window.adsbygoogle || []).push({});

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; (adsbygoogle = window.adsbygoogle || []).push({});

#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; } } }

Một phần của tài liệu Thiết kế hệ thống giám sát và điều khiển nhiệt độ lò sấy (Trang 54)