THUẬT TOÁN VÀ CHƯƠNG TRÌNH ĐIỀU KHIỂN

Một phần của tài liệu Tự động điều chỉnh tốc độ hỗn hợp dòng khí bằng bộ điều chỉnh đa vòng (Trang 95 - 101)

* Lưu đồ thuật toán

Chương trình chính

Khởi tạo các giá trị. Bộ định thời 0 được dùng để đo tần số xung vào. Bộ định thời 1 dùng để tính thời gian trích mẫu. Bộ định thời 2 dùng để tính tần số xung ra. Ngắt ngoài 0 dùng để phục vụ khi có phím ấn. Ngắt ngoài 1 dùng để

xác định sườn xuống của xung vào.

Hiển thị vận tốc hiện tại trong buồng sấy

timer1. Chương trình này thực hiện khi đã đến thời

gian trích mẫu

Lưu vận tốc hiện tại đo được Tính sai số

Thực hiện bộ điều khiển PID,đầu ra lưu vào biến output. Rồi nạp cho

thanh ghi TH2

Kết thúc

ext0. Hàm này thực hiện khi có phím ấn Lưu phím ấn vào biến key.

Nếu là phím tăng thì tăng biến dữ liệu lên 1 Nếu là phím giảm thì giảm biến dữ liệu xuống 1

Nếu là phím OK thì thoát khỏi vòng lặp

Kết thúc

timer2. Hàm này được dùng để kích xung ra

Tăng biến đếm lên, nếu biến đếm = output thì lấy đảo trên chân P3.0

đồng thời gán biến đếm bằng 0

* Chương trình điều khiển #include <reg52.h>

unsigned int time=1; unsigned int input=0;

unsigned int count,dem,u2,u1,y,y1,output,saiso,input_1,cout; char dulieu=5,key;

char temp;

unsigned int trich_mau;

void timer0(void) interrupt 1// cu sau 100us lai thuc hien ham nay, no chi viec tang thoi gian len mot gia tri.

{

time++; }

char quet(void)//Ham nay se cho phim duoc an, va tra ve gia tri phim duoc an {

ext1. Ngắt ngoài 1 ngắt này được dùng để phát hiện sườn

xuống ở đầu vào

Lưu giá trị thời gian(biến timer) và tính để chuyển từ f sang v. Sau đó cho biến

timer = 0 để cho chu kỳ tiếp theo

Kết thúc

timer0. Hàm này thực hiện để tính thời gian cho xung vào Cứ sau 100us thì tăng biến time

lên 1 giá trị

while(P2&0x0E==0x0E); return P2&0x0E;

}

void timer1(void) interrupt 3//Cu sau 100us lai thuc hien ham nay. {

if(trich_mau++ >=5000)//tang bien trich mau len, neu no bang 5000 co nghia la 0.5s

{//thi thuc hien doan chuong trinh sau.

input_1=input;//luu gia tri van toc hien tai lai saiso=dulieu-input_1;//Tinh sai so.

output=75*u2-10*u1-5*saiso+y;//tinh bo dieu khien PID voi cac thong so: K=40. Ki=30, Kd=10

u1=u2;//Sau khi da roi rac hoa, voi thoi gian trich mau la 0.5s. u2=saiso; y=y1; y1=output; output=output/0.005; } }

void timer2(void) interrupt 5//Ham nay duoc thuc hien khi da den thoi diem kich xung dau ra.

{ if(dem++>=output) { P3_0=~P3_0; dem=0; } }

void ext0(void) interrupt 0//Ham nay duoc thuc hien khi co bat ky phim nao duoc an.

{

key=quet();//Luu gia tri phim duoc an.

while(key!=0x80)//Kiem tra xem co phai phim OK hay khong? {//Neu khong thi kiem tra

if(key==0x40)//Neu la phim tang thi dulieu++;//Tang

if (key==0x20)//Neu la phim giam thi giam dulieu--;

for(cout=1;cout<=100;cout++)//Tre 100us de cho phim an tiep theo. wait();

} }

void ext1(void) interrupt 2//Khi co suon xuong cua xung vao no se thuc hien {

input=10000/(50*time);//chuyen tu tan so sang van toc theo ham v=0.02*f, vi bien time la chu ky, don vi la 100us cho nen cong thuc phai duoc tinh nhu tren. time=0;//gan bien time =0

} void wait(void){ ; } void main(void) { char shift;

unsigned int temp1; TH0=-92; TL0=-92; TH2=-92; TMOD=0x22; TCON|=0x04; TR1=1; TR2=1; IE=0xAF; while (1) {

temp1=input_1; //Hien thi gia tri dau vao. for(shift=1;shift<=8;shift<<=1) { temp=temp1%10; temp1=temp1/10; switch(temp) { case 0: P1=0x40; break; case 1: P1=0x79; break; case 2: P1=0x24; break; case 3: P1=0x30;

break; case 4: P1=0x19; break; case 5: P1=0x12; break; case 6: P1=0x02; break; case 7: P1=0x78; break; case 8: P1=0x00; break; case 9: P1=0x10; break; } P2=shift; for(count=1;count<100;count++) wait(); } } } 5.4. KẾT LUẬN CHƯƠNG V

Bằng cơ sở lý thuyết cũng như yêu cầu điều khiển của bài toán trong chương 5 này ta đã xây dựng được mạch điều khiển tốc độ gió. Tìm hiểu cấu tạo và nguyên lý hoạt động của thiết bị điều khiển sử dụng là vi điều khiển AT89C51. Xây dựng thuật toán và lập trình điều khiển từ đó khảo sát hoạt động của mạch. Xong do kỹ năng lập trình cũng như điều kiện ban đầu không tìm

được tham số của bộđiều chỉnh. Vì vậy với chương trình điều khiển trên chỉ đáp

Một phần của tài liệu Tự động điều chỉnh tốc độ hỗn hợp dòng khí bằng bộ điều chỉnh đa vòng (Trang 95 - 101)

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

(102 trang)