Tải bản đầy đủ (.ppt) (27 trang)

Bài 8: BÀI TOÁN TỔNG QUÁT

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 (379.87 KB, 27 trang )


Bài 8: BÀI TOÁN TỔNG QUÁT
I>Điều Khiển Động Cơ Nâng Cao:

Ở bài trước các bạn đã biết cách điều khiển động cơ với
một tốc độ cố định (động cơ chỉ chạy với một tốc độ hoặc nếu
có thay đổi tốc độ thì hoàn toàn phụ thuộc vào chương trình
trên vđk) .Như vậy với một bài toán thực tế :tốc độ động cơ
thay đổi tùy thuộc vào môi trường bên ngoài(cảm biến…) thì
nó chưa giải quyết được vấn đề .
Ở bài này ta sẽ đi giải quyết vấn để trên.

Bài 8: BÀI TOÁN TỔNG QUÁT
THUẬT TOÁN ĐIỀU KHIỂN:
Giả sử ta cần có 10 cấp tốc độ cho ĐC, và muốn động cơ quay ở cấp tốc
độ v vơi T = 0,001s(f=1kHz), tốc độ v này được thay đổi qua việc thiết lập
bằng phím bấm , qua giao tiếp máy tính , hay qua tính toán từ việc thu
thập giư liệu từ các cảm biến ….ta sẽ có giải thuật cho hàm PWM như
sau :
Để có được 10 cấp tốc độ thì ta sẽ chia T thành 10 lần ngắt BĐT. Như
vậy với T=0,001s=1000chu kỳ máy thì ta phải tạo BĐT 100 chu kỳ sẽ
ngắt một lần(kiến thức bài 6).Như vậy có thể coi mỗi lần ngắt sẽ tương
đương với một cấp tốc độ , và việc còn lại là so sánh số lần ngắt với v để
tạo xung thich hợp

Bài 8: BÀI TOÁN TỔNG QUÁT
Giải thuật chương trình tạo xung

Bài 8: BÀI TOÁN TỔNG QUÁT
B1 :Dùng bộ đếm Counter0 để đếm số lần nhấn phím ở
chân P3_4 ,băm xung đk động cơ băng T0,mỗi lần bấm thì


tốc độ động cơ sẽ tăng lên 1 cấp(10 cấp như trên).(tham
khảo B1 của bài số 7). Dùng cả ngắt ngoài để thay đổi
chiều quay của động cơ(INT0)
B2 : Vẫn dùng Counter0 như trên(hoặc hàm phím bấm)
và 20 cấp tốc độ. Tốc độ động cơ sẽ thay đổi tùy thuộc vào
việc bạn bấm nhanh hay chậm (bấm càng nhanh thì tốc độ
đc càng cao) .Hiển thị cấp tốc độ ra Led 7 thanh.

Bài 8: BÀI TOÁN TỔNG QUÁT
II>PHÍM MA TRẬN:

Sơ Đồ Nguyên Lý:

5V
5V
C1
33p
C2
33p
+
C3
10uF/25V
R1
10K
5VDC
5V5V5V
EA/VP
31
X1
19

X2
18
RESET
9
P2.0
21
P2.1
22
P2.2
23
P2.3
24
P2.4
25
P2.5
26
P2.6
27
VCC
40
VSS
20
P3.1
11
P3.2
12
P3.3
13
P3.4
14

P3.5
15
P3.6
16
P3.7
17
P3.0
10
U3
8051
R3
10K
12Mhz
C
B
A
E
D
G
F
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
5V
LED 7 THANH

HANG 2
HANG 1
COT 4
COT 3
COT 2
COT 1
HANG 4
HANG 3
P3.2
R21
R
R22
R
R23
R
R24
R
R25
R
R26
10Kx8
R27
R
R28
R
P3.0
P3.1
1 2
PHIM 1
1 2

PHIM 2
1 2
PHIM 3
1 2
PHIM 4
1 2
PHIM 5
P3.3
1 2
PHIM 6
P3.4
1 2
PHIM 7
1 2
PHIM 8
1 2
PHIM 9
1 2
PHIM 10
1 2
PHIM 11
1 2
PHIM 12
P3.5
1 2
PHIM 13
P3.6
1 2
PHIM 14
1 2

PHIM 15
1 2
PHIM 16
P3.7
Bài 8: BÀI TOÁN TỔNG QUÁT

Bài 8: BÀI TOÁN TỔNG QUÁT
// Ban phim ma tran ------------------------------------
// chuong trinh lam quen voi ban phim matran 4*4
// Hien thi phim an tren LCD
/*-------------Ban phim matran---------------
===============
| 0 | 1 | 2 | 3 |
===============
| 4 | 5 | 6 | 7 |
===============
| 8 | 9 | + | - | Cac phim chuc nang voi ten dinh truoc.
===============
| * | / | D | = |
===============
-------------------------------------------*/

#include <REGX51.H>
long codeLCD, hienthi ;
sbit co1 = P1^3;
sbit co2 = P1^2;
sbit co3 = P1^1;
sbit co4 = P1^0;
sbit ha1 = P1^7;
sbit ha2 = P1^6;

sbit ha3 = P1^5;
sbit ha4 = P1^4;
#include < string.h>
sfr LCDdata = 0xA0;// Cong 2 , 8 bit du lieu P0 co dia chi 0x80, P1 0x90 , P2 0xA0
sbit BF = 0xA7; // Co ban bit 7 cua p2
sbit RS = P3^7;
sbit RW = P3^6;
sbit EN = P3^5;
Bài 8: BÀI TOÁN TỔNG QUÁT

/*------chuyen sang ma ASCII cho LCD--------*/
void decode_LCD(unsigned char number2)
{
switch (number2)
{
case 0: {codeLCD='0';break;}
case 1: {codeLCD='1';break;}
case 2: {codeLCD='2';break;}
case 3: {codeLCD='3';break;}
case 4: {codeLCD='4';break;}
case 5: {codeLCD='5';break;}
case 6: {codeLCD='6';break;}
case 7: {codeLCD='7';break;}
case 8: {codeLCD='8';break;}
case 9: {codeLCD='9';break;}
case 10: {codeLCD='+';break;}
case 11: {codeLCD='-';break;}
case 12: {codeLCD='*';break;}
case 13: {codeLCD='/';break;}
case 14: {codeLCD='D';break;}

case 15: {codeLCD='=';break;}
}
}
Bài 8: BÀI TOÁN TỔNG QUÁT

/*---------Cac chuong trinh con cua lcd ------*/
//---------------Chuong trinh con kiem tra su san sang cua lcd----------------;
void wait(void)
{
long n = 0;
EN=1;// Dua chan cho fep len cao
RS=0;// Chon thanh ghi lenh
RW=1;// Doc tu LCD
LCDdata=0xff;// Gia tri 0xFF
while(BF){n++; if(n>110) break;}// Kiem tra co ban
// Neu ban dem n den 100 roi thoat khoi while
EN=0;// Dua xung cao xuong thap de chot
RW=0;// Doc tu LCD
}
Bài 8: BÀI TOÁN TỔNG QUÁT

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×