Tải bản đầy đủ (.pdf) (10 trang)

Giáo trình hướng dẫn phân tích bản chất của quá trình sấy với nhiệt dung của không khí trong bộ điều chỉnh p10 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (364.53 KB, 10 trang )

- 91 -
Vcc = 5V tối thiểu 10 chu kỳ dao động trước khi chân RST đạt mức thấp lần
nữa.
Chế độ nghỉ: Lệnh thiết lập bit IDL bằng 1 là lệnh sau cùng được thực thi
trước khi đi vào chế độ nghỉ. Ở chế độ nghỉ, tín hiệu Clock nội được khoá không
cho đến CPU nhưng không khoá đối với chức năng ngắt, định thời và Port nối
tiếp. Trạng thái của CPU được duy trì và nội dung củ
a tất cả các thanh ghi cũng
không đổi. Các chân Port cũng được duy trì các mức logic của chúng. ALE và
PSEN được giữ ở mức cao.
5.1.2. Khối giao tiếp bằng bàn phím

Sử dụng bốn phím trong đó 1 phím dùng để Reset còn 3 phím sử dụng cho
việc đặt giá trị tốc độ ban đầu.
Nút ấn SW1 dùng để Reset lại mạch.
Nút ấn SW2, SW3 và SW4 dùng để đặt tốc độ hỗn hợp dòng khí theo ý
muốn, chúng được nối đến các chân P2.5, P2.6. P2.7 của vi xử lí, tốc độ có thể
tăng hoặc giảm tuỳ theo ý muốn của người làm thí nghiệm.
Các tụ từ C
1
đến C
4
có tác dụng chống nhiễu.
5V
SW1
1 2
SW2
1 2
SW3
1 2
SW4


1 2
R1 8.2K R2
8.2K
R3
8.2K
R4
8.2K
C1
104
C2
104
C3
104
C4
104
RESET
P2.7
P2.5
P2.6

Hình 5.5. Sơ đồ nối ghép bàn phím
- 92 -
5.1.3. Khối cảm biến
* Sơ đồ khối

Hình 5.6. Sơ đồ khối cảm biến
Khối cảm biến có nhiệm vụ đưa tín hiệu phản ánh giá trị vận tốc dòng khí
ở đầu ra hệ thống, để đưa vào vi xử lí để so sánh với tín hiệu đặt. Lúc này vi xử lí
có nhiệm vụ xử lí tính toán và đưa ra tín hiệu điều khiển thích hợp đáp ứng được
yêu cầu mong muốn.

5.1.4. Khối hiển thị
Khối hiện thị có tác dụng hiển thị giá trị tốc độ hỗn hợp dòng khí đặt và
giá trị đo được thực tế từ hệ thống. Giúp người khi làm thí nghiệm quan sát cùng
một lúc hai giá trị vận tốc từ đó đánh giá được sự làm việc của hệ thống.
- 93 -
Ở đây ta sử dụng LED 7 đoạn để hiển thị, ta dùng hai cặp LED một cặp
dùng hiển thị giá trị đặt, cặp còn lại dùng hiển thị giá trị đo. Mỗi giá trị đo chỉ
hiển thị tối đa hai số và ngầm hiểu đơn vị là (cm/s).
Để hiển thị bằng đèn led, người thường dùng ba phương pháp là: phương
pháp quét, phương pháp chốt và kết hợp cả hai ph
ương pháp này. Trong thiết kế
này chúng tôi sử dụng phương pháp quét. Để hiển thị chữ số hoặc ký tự nào ta
cung cấp tín hiệu đến các chân của đầu nối. Các led trong thiết kế này được chọn
loại chung Anode. Muốn cho led nào sáng ta đưa chân tương ứng với nó tại cổng
J2 lên cao đồng thời đưa chân tương ứng với nó tại cổng J1 xuống thấp. Muốn
hiển thị đúng chữ số hoặc ký t
ự ta phải giải mã led.

Hình 5.7. Sơ đồ mạch hiển thị tốc độ
Thật vậy giả sử ta cần hiển thị số 0 thì byte tín hiệu chuyển đến cổng J1 sẽ
là: 11000000 (C0h) nếu cần hiển thị số 1 thì byte tín hiệu cần chuyển đến cổng
J1 sẽ là 11111001 (F9h)… Tương ứng với các số tiếp theo ta xác định byte tín
hiệu tương tự cụ thể số 2, 3, 4, 5, 6, 7, 8, 9 sẽ là: 10100100 (A4h); 10110000
(B0h); 10011001 (99h); 10010010 (92h); 10000010 (82h); 11111000 (F8h);
10000000 (80h); 10010000 (90h).


- 94 -
5.2. NGUYÊN LÝ HOẠT ĐỘNG
Sơ đồ khối của mạch



Hình 5.8. Sơ đồ nguyên lý mạch điều khiển
Khối nguồn có nhiệm vụ cung cấp điện áp nuôi cho toàn mạch.
Ba phím ấn sử dụng để đặt giá trị tốc độ cần làm thí nghiệm, trong đó có 1
phím tăng, 1 phím giảm và một phím OK.
Tuỳ theo mục đích sử dụng của người làm thí nghiệm mà có thể đặt bất kì
một giá trị tốc độ nào nằm trong khoảng 0 ÷ 1m/s.
Để thực hiện được điều này người làm thí nghiệm sử
dụng hai phím tăng
giảm để đặt giá trị. Giá trị đặt được thông qua chương trình viết bên trong vi xử
lí sẽ hiển thị trên LED, khi nào giá trị đặt đúng với yêu cầu ta chọn phím OK.
- 95 -
Sau khi ấn phím OK chương trình trong vi xử lý sẽ tự động tính toán và
phát ra một tần số xung tác động đến đầu vào là tín hiệu đặt cho bộ biến tần điều
khiển động cơ quạt hoạt động. Cùng lúc này tín hiệu ra của cảm biến tốc độ đặt ở
đầu ra của hệ thống sẽ được phản hồi trở về đầu vào của vi xử lí. Tín hiệu này
được vi xử lí tính toán và hi
ển thị trên LED đây là giá trị tốc độ thực tế đo được.
Đồng thời tín hiệu này được so sánh với tín hiệu đặt ban đầu. Sau thời gian quá
độ thì giá trị vận tốc đo được có giá trị bằng với giá trị đặt ban đầu. Và trạng thái
làm việc này của hệ thống sẽ được giữ ổn định trong quá trình làm thí nghiệm.
Nếu như có nhiễu tác động vào hệ thống làm cho vị trí trạ
ng thái ổn định của hệ
mất đi có thể tăng hoặc giảm. Dẫn đến giá trị sai lệch giữa giá trị đặt và giá trị đo
được khác không. Sai số này được qua bộ điều chỉnh PID số viết trên vi điều
khiển 8051 với các thông số tìm được ở chương 4. Lúc này nhờ luật điều khiển
đó mà vi điều khiển sẽ xử lí, tính toán và phát tín hiệu đi
ều khiển tác động vào
hệ biến tần sao cho triệt tiêu được sai lệch giữa giá trị đặt và đo. Và hệ thống sẽ

được giữ ổn định và trở lại trang thái ban đầu.
5.3. THUẬT TOÁN VÀ CHƯƠNG TRÌNH ĐIỀU KHIỂN
* 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
- 96 -




























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
Kết thúc
- 97 -


















* 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ị
Kết thúc
- 98 -
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();
key=quet();//Cho phim an tiep theo.
- 99 -
}
}
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;
- 100 -
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
ứng được một phần nhất định nào đó của yêu cầu bài toán.






×