Tải bản đầy đủ (.doc) (18 trang)

Tài liệu Bài báo cáo vi điều khiển Robot do đường doc

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 (284.67 KB, 18 trang )

ĐỒ ÁN TỐT NGHIỆP
VI ĐIỀU KHIỂN ROBOT DÒ ĐƯỜNG
1
MỤC LỤC
MỤC LỤC 2
Bài báo cáo vi điều khiển Robot do đường 3
I. Mạch 3
Mạch điều khiển 89S52 3
Mạch nguyên lý 3
Mạch in 4
Mạch điều khiển động cơ “ IC MC 33486” 5
Mạch nguyên lý 5
Mạch in 6
Mạch so sánh (“IC LM358”) 6
Mắt dò đường 8
Mạch nguyên lý 8
Mạch in 8
II. CODE Robot dò đường 9
III. Đồ án Robot dò đường dùng vi điều khiển 89S52 18
2
Bài báo cáo vi điều khiển Robot do đường
I. Mạch
Mạch điều khiển 89S52
Mạch nguyên lý
T2/P1.0
1
T2 EX/P1.1
2
P1.2
3
P1.3


4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
RESET
9
RXD/P3.0
10
TXD/P3.1
11
INT0/P3.2
12
INT1/P3.3
13
T0/P3.4
14
T1/P3.5
15
WR/P3.6
16
RD/P3.7
17
XTAL1
18
XTAL2

19
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
P2.7/A15
28
PSEN
29
ALE/PROG
30
EA/VPP
31
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3

36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
IC1
DK0
DK1
PWM0
PWM1
1
2
3
4
5
6
7
8
9
10
DD1
GND
VCC
A0 A1
A2 A3
A4 A5

A6 A7
A0
A1
A2
A3
A4
A5
A6
A7
RN1
10K
RN2
10K
SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7
VCC
1
2
3
4
5
6
7
8

9
10
DD2
GND
VCC
SW0 SW1
SW2 SW3
SW4 SW5
SW6 SW7
DCR0
DCL0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

20
21
22
23
24
25
26
27
28
29
30
HDC1
DCR0
DCL0
+24V
VCC
DK0
C1
104
GND
PWM0
DCR1
DCL1
1
2
3
4
5
6
7

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
HDC2
DCR1
DCL1
+24V
VCC
DK1
C2

104
GND
PWM1
RN3
10K
R2
250
LR1
LED
VCC
GND
VCC
SW2
R3
47
C4
2200uF/16V
C6
104
C5
2200uF/16V
C7
104
VCC
GND
LD1
R4
270
1
2

3
PNP1
+24V
VCC
X1
12Mhz
Cx2 33pF
Cx1 33pF
GND
RES
R1
1K
C3
10uF
21
3 4
SW3
GNDVCC
RES
1
2
3
JP1
1
2
HD3
1
2
HD4
IN

1
GND
2
OUT
3
IC2
1
2
HD1
1
2
HD2
D1
BUT0
BUT1
21
3 4
SW1
21
3 4
SW2
GND GND
BUT0BUT1
3
Mạch in
5
5
1
2 3
4

1
2
3
4
1
2
1
2
2
1
1
2
2
1
2
1
21 21
3 12
0 0
3
2
1
2
1
2
1
2
1
1
2

3
4
2
1
1 2 3
2
1
2
1
1 2
8
6
4
3
2
1
5
7
9
8
6
4
3
2
1
5
7
9
8
6

4
3
2
1
5
7
9
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
20
19
18

17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
1
2
3
4
5
6
7
8
9
10
1
2
3

4
5
6
7
8
9
10
2
1
2
1
1 2
12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

18
19
20
21
22
23
24
25
26
27
28
29
30
2121
4
Mạch điều khiển động cơ “ IC MC 33486”
Mạch nguyên lý

1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
HD-MC1
CHAN CAM
DCR0
PWM0
DK0
VCC
DCL0
GND
+24V
LD4
LD3
LD2
LD1
R1
10K
R2
270
R3
270
R4
270
GND
PWM0
DK0
VCC
+24V
C1

47uF/50V
VCC
VCC
+24V
PWM0
DK0
GND
G
1
2
3
S
D
Q1
IRF840
G
1
2
3
S
D
Q2
IRF840
GND
GND
DCR0
DCL0
NC
10
NC

12
V+
21
GND
1
Cur R
2
IN1
3
GLS1
4
OUT1
5
OUT2
13
GLS2
17
IN2
18
ST
19
WAKE
20
MC1
5
Mạch in
2
1
2
1

1
2
2
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2 1 2 1
2 1 2 1
1
2
3
3
2
1
21
5
13

2
1
Mạch so sánh (“IC LM358”)
a. Mạch nguyên lý
6
7
5
6
IC1B
1
3
2
IC1A
VR1
100K
LD1
VR2
100K
GND VCC GND VCC
LD4 LD6LD2 LD3 LD5 LD7 LD8
7
5
6
IC2B
1
3
2
IC2A
VR3
100K

VR4
100K
GND VCC GND VCC
7
5
6
IC3B
1
3
2
IC3A
VR5
100K
VR6
100K
GND VCC GND VCC
7
5
6
IC4B
1
3
2
IC4A
VR7
100K
VR8
100K
GND VCC GND VCC
RN1 102

VCC
A0 A1
A2 A3
A4 A5
A6 A7
A0
A1
A2
A3
A4
A5
A6
A7
1
2
3
4
5
6
7
8
9
10
DD2
GND
VCC
LDED0 LDED1
LDED2 LDED3
LDED4 LDED5
LDED6 LDED7

LDED0 LDED1
LDED2 LDED3
LDED4 LDED5
LDED6 LDED7
RN2
103
LDED0
LDED1
LDED2
LDED3
LDED4
LDED5
LDED6
LDED7
VCC
0 1
2 3
4 5
6 7
1
2
3
4
5
6
7
8
9
10
DD1

GND
VCC
A0 A1
A2 A3
A4 A5
A6 A7
b. Mạch in
1
0
1 2 3 4 5
6 7 8 9 10
3
2
1
3
2
1
3
2
1
3
2
1
3
2
1
3
2
1
3

2
1
3
2
1
9751 2 3 4 6 8
9 7 5 123468
21 21 21 21 21 1 2 21 1 2
5
6
7
8
4
3
2
1
5
6
7
8
4
3
2
1
5
6
7
8
4
3

2
1
5
6
7
8
4
3
2
1
1 2 3 4 5
6 7 8 9 10
7
Mắt dò đường
Mạch nguyên lý
R3
10K
1
2
3
4
5
6
7
8
9
10
DD1
GND
VCC

LDED0 LDED1
LDED2 LDED3
LDED4 LDED5
LDED6 LDED7
LDR3
GND
VCC
R4
10K
LDR4
GND
VCC
R5
10K
LDR5
GND
VCC
R6
10K
LDR6
GND
VCC
R7
10K
LDR7
GND
VCC
R8
10K
LDR8

GND
VCC
R1
10K
LDR1
GND
VCC
LDED0
R2
10K
LDR2
GND
VCC
LDED1 LDED2 LDED3 LDED4 LDED5 LDED6 LDED7
LD1
R9
1K
GND
VCC
LD2
R10
1K
GND
VCC
LD3
R11
1K
GND
VCC
LD4

R12
1K
GND
VCC
LD5
R13
1K
GND
VCC
LD6
R14
1K
GND
VCC
LD7
R15
1K
GND
VCC
LD8
R16
1K
GND
VCC
Mạch in
3
2
1
0
2

1
2
1
2
1
2
1
2
1
2
1
2
1
2
1 1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2

2 12 12 12 1
21212121
2 1
2 1
2 112211 21 2
21
12345
678910
8
II. CODE Robot dò đường
#include <REGX51.H>
//========= Định nghĩa chiều quay bánh==========
#define go 1
#define back 0
//

#define out 0xFF // 0B11111111

//============= Định nghĩa mắt dò================
#define R7 0x7F // 0B01111111
#define R6 0x3F // 0B00111111
#define R5 0xBF // 0B10111111
#define R4 0x9F // 0B10011111
#define R3 0xDF // 0B11011111
#define R2 0xAF // 0B11001111
#define R1 0xEF // 0B11101111
#define TT 0xE7 // 0B11100111
#define L1 0xF7 // 0B11110111
#define L2 0xF3 // 0B11110011
#define L3 0xFB // 0B11111011

#define L4 0xF9 // 0B11111001
#define L5 0xFD // 0B11111101
#define L6 0xFA // 0B11111100
#define L7 0xFE // 0B11111110
//
// =========== Định nghĩa Pin xung PWM, Pin điều khiển=======
sbit xung=P2^0;
sbit dk1=P2^1;
sbit dk2=P2^3;
sbit xung2=P2^2;
//
9
// khai báo
unsigned char tocdo1,tocdo2 ;
unsigned char x=0,y=0;
unsigned long int counter0=0;
unsigned char INPUT;
// ==============Hàm tạo trễ===============
void delay(unsigned long int a)
{
unsigned long int i;
for (i=0;i<=a;i++);
}
//
//========== Đếm đường ngắt 0=================
void ngat0(void) interrupt 0
{
counter0++;
}
//

//================ Điều khiển bánh trái==================
void banhtrai (unsigned char tocdo0,unsigned char chieu)
{
if (chieu==go)
{
TR0=1;
tocdo1=tocdo0;
dk1=1;
}
if (chieu==back)
{
TR0=1;
tocdo1=tocdo0;
dk1=0;
}
}
10
//
// =============== Điều khiển bánh phải==================
void banhphai (unsigned char tocdo0,unsigned char chieu)
{
if (chieu==go)
{
TR1=1;
tocdo2=tocdo0;
dk2=1;
}
if (chieu==back)
{
TR1=1;

tocdo2=tocdo0;
dk2=0;
}
}
//
//============ Tao Xung PWM bánh phải =============
void ngatt1 (void) interrupt 3
{

y++;

if( y==1)
{ TR1=0;

TL1=256-tocdo2;
xung2=1;

TR1=1;
}
if (y==2)
11
{

TR1=0;

TL1=256-(100-tocdo2);
xung2=0;

TR1=1;
y=0;

}
}
//
//============ Tao Xung PWM bánh trái =============
void ngatt0 (void) interrupt 1
{

x++;
if (x==1)
{
TR0=0;

TL0=256-tocdo1;
xung=1;

TR0=1;
}
if (x==2)
{

TR0=0;

TL0=256-(100-tocdo1);
xung=0;
TR0=1;
x=0;
}
12
}
//

//=============== Hàm do đường ================
void doduong(unsigned long int cm)
{
unsigned char nhotrai,nhophai;
unsigned char INPUT;
counter0=0;
while((100*cm)>=(counter0*18))
{
INPUT=P1; // mắt dò đượng nhận vào bằng PORT 1.
switch (INPUT)
{
case TT:
{
banhphai(50,go);
banhtrai(50,go);
nhophai=0;
nhotrai=0;
break;
}
case L1:
{
banhphai(55,go);
banhtrai(45,go);
nhophai=0;
nhotrai=0;
break;
}
case L2:
{
banhphai(60,go);

banhtrai(40,go);
nhophai=0;
13
nhotrai=0;
break;
}
case L3:
{
banhphai(65,go);
banhtrai(35,go);
nhophai=0;
nhotrai=0;
break;
}
case L4:
{
banhphai(70,go);
banhtrai(30,go);
nhophai=0;
nhotrai=0;
break;
}
case L5:
{
banhphai(75,go);
banhtrai(25,go);
nhophai=1;
nhotrai=0;
break;
}

case L6:
{
banhphai(80,go);
banhtrai(20,go);
nhophai=1;
nhotrai=0;
break;
}
case L7:
{
banhphai(85,go);
banhtrai(15,go);
nhophai=1;
14
nhotrai=0;
break;
}
case R1:
{
banhphai(45,go);
banhtrai(55,go);
nhophai=0;
nhotrai=0;
break;
}
case R2:
{
banhphai(40,go);
banhtrai(60,go);
nhophai=0;

nhotrai=0;
break;
}
case R3:
{
banhphai(35,go);
banhtrai(65,go);
nhophai=0;
nhotrai=0;
break;
}
case R4:
{
banhphai(30,go);
banhtrai(70,go);
nhophai=0;
nhotrai=0;
break;
}
case R5:
{
banhphai(25,go);
banhtrai(75,go);
nhophai=0;
15
nhotrai=1;
break;
}
case R6:
{

banhphai(20,go);
banhtrai(80,go);
nhophai=0;
nhotrai=1;
break;
}
case R7:
{
banhphai(15,go);
banhtrai(85,go);
nhophai=0;
nhotrai=1;
break;
}
case out:
{
if (nhotrai == 1)
{
banhphai(90,go);
banhtrai(10,back);
}
if (nhophai == 1)
{
banhphai(10,back);
banhtrai(90,go);
}
break;
}

default :

{
if(((INPUT!=R1)||(INPUT!=R2)||(INPUT!=R3)||(INPUT!=R4)||(INPUT!
=R5)||(INPUT!=R6)||(INPUT!=R7)||(INPUT!=L1)||(INPUT!=L2)||(INPUT!
=L3)||(INPUT!=L4)||(INPUT!=L5)||(INPUT!=L6)||(INPUT!=L7)||(INPUT!
=out)));
16
{

banhphai(50,go);
banhtrai(50,go);
}
break;
}
}
}
}
//
//================ Hàm Stop===============
void stop(void)
{
TR0=0;
TR1=0;
xung=0;
dk1=0;
dk2=0;
xung2=0;
}
//
// Hàm chính
void main (void)

{

TMOD=0x22;
IE=0x8B;
IT0=1;
IP=0;
while(1)
{
doduong(300); // dò đường 3m dừng.
stop();
while(1);
}
17
}
 Bài sử dụng các tài nguyên của 89S52 như sau:
o Timer 0,1 chế đỗ 8bit tạo xung dùng ngắt 1,3
o Ngắt ngoài 0 để đếm đường bằng Encoder
o PORT 1 để nhận tín hiệu từ mắt dò
o Và Pin I/O điều khiển
III. Đồ án Robot dò đường dùng vi điều khiển 89S52

Thực hiên đồ án: Phạm Văn Lượng
Lê Xuân Định
Nguyễn Trần Cường
Lớp: CDT- K9
18

×