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

Báo cáo mạch vi điều khiển robot do đường

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 (272.67 KB, 15 trang )

Đồ án vi điều khiển

Bài báo cáo vi điều khiển Robot do đường
I. Mạch
1. Mạch điều khiển 89S52
a. Mạch nguyên lý

RN 2
10K
Cx1 33pF

RES
X1
12Mhz

GND
Cx2 33pF

VCC

10
11
12
13
14
15
16
17
9
18
19



GND

T2/P1.0
T2 EX/P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7

RXD/P3.0
TXD/P3.1
INT0/P3.2
INT1/P3.3
T0/P3.4
T1/P3.5
WR/P3.6
RD/P3.7


P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15

RESET

EA/VPP

XTAL1
XTAL2
IC1

ALE/PROG
PSEN

1 PNP1

+24V

D1

R3

1
2

HD4

D CL 0
D CR0

HD1

C1
104

BUT1

1

2

3

4

2
1

16
17
18
19
20
21
22

23
24
25
26
27
28
29
30

HD2
D CL 1
D CR1

2
1

1
2 DCR1
3
4
5 DCL1
6
7
8 +24V
9
10
11 GND
12
13 VCC
14 DK1

15 PWM1

HDC1

39
38
37
36
35
34
33
32

C2
104

HDC2
BUT0

SW1

1

2

3

4

SW2


GND

21
22
23
24
25
26
27
28

GND

C3

RN3

PWM0
DK0
PWM1
DK1

R1

RES

VCC

31


VCC

1

2

3

4

SW3

VCC

30
29

GND

1K

10uF

BUT1
BUT0
R2
250

LR1

SW2
LED

VCC
GND

3
2
1
JP1

3

1

IN

47
C4
C6
2200uF/16V104

16
17
18
19
20
21
22
23

24
25
26
27
28
29
30

10K

SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7

1
2
3
4
5
6
7
8

DD2


GND

A0
A1
A2
A3
A4
A5
A6
A7

SW1
SW3
SW5
SW7

5 10
4 9
3 8
2 7
1 6

VCC

GND

10K

HD3
1

2

SW0
SW2
SW4
SW6

DD1

RN 1

VCC

A1
A3
A5
A7

OUT

2

5 10
4 9
3 8
2 7
1 6

2


A0
A2
A4
A6

1
2 DCR0
3
4
5 DCL0
6
7
8 +24V
9
10
11 GND
12
13 VCC
14 DK0
15 PWM0

IC2

3

VCC
R4
270
C5
2200uF/16V


C7
104

LD1

GND

CDT - K9
1


Đồ án vi điều khiển

b. Mạch in

1

1
2
0

0

2
1
2

3


1

1

1

2

2

5

2

1

2

2

2

3
1

1
1

2


2

1

1

2

21

20
2

30

15

30

9

15

2

22

9
19


1
29

28

14

29

13

8

14

28

13

27

12

27

12

26

11


26

11

23

1

24

2

1

10

25

10

9

24

9

23

8


23

8

6

21

6

20

5

20

5

4

19

4

3

18

3


17

2

17

2

16

1

16

4

5

10

4

1

2

3

1

11

10

1

2

9

1

33

8

2

34

7

3

35

6

4


5

5

32

18

9

2

1

31

19

8

4

12

1
30

21

3


5

13

2

7

7

3

29

22

2

6

14

3
28

7

7


15

2

4
27

22

6

16

5
26

24

1

17

6
25

25

8
18


7

1
36

1

6

2

7

3

8

4

9

5

10

2

1

2


1

2

37

4

6

38

3

7

39

2

8

1

9

1
40


1

2

1

2

1

3

1

3

3

1

2

2

5
4

2

4


2

1

CDT - K9
2


Đồ án vi điều khiển

2. Mạch điều khiển động cơ “ IC MC 33486”
a. Mạch nguyên lý
HD-MC1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CHAN CAM


DCR0
DCL0
+24V
GND

+24V

R1

VCC

R2

LD1

270

LD2

PWM0 R3
270
DK0

VCC 19
PWM0 3
DK0 18
VCC 20
2
12

+24V 21
10
C1
47uF/50V GND 1

VCC
DK0
PWM0

10K

R4

GND

LD3

270

LD4

ST
IN1
IN2
WAKE
Cur R
NC
V+
NC
GND


OUT1
GLS1

5

DCR0

4

G

D 2
1
S 3

GND
OUT2
GLS2

MC1

Q1
IRF840

13

DCL0

17


G

D 2
1

Q2
IRF840

S 3

GND

b. Mạch in
2

1

2

2

1

1

2

1
15


2

2

1

1

2

2

1

1

14
13

13

1

12

2

11
21


3

10

9

5

1

8

7

2

6

5

4
3
3
2
2
1
1

CDT - K9

3


Đồ án vi điều khiển

3. Mạch so sánh (“IC LM358”)
a. Mạch nguyên lý
RN1 102

VCC

VCC

LD8

A7

LD7

A6

LD6

DD1
GND

VR1

VR2


GND

VCC
5

0

100K

GND

LDED0
5
LDED2
4
LDED4
3
LDED6
2
1

10
9
8
7
6

100K

VCC

3

IC1A

VR3

VR4

GND

2

100K

VCC
5

GND

3

7 A2

LDED2 6

100K

VCC
3


IC2A

VR5
GND

LDED0
LDED1
LDED2
LDED3
LDED4
LDED5
LDED6
LDED7
VCC

VR6
VCC
4
5

100K

GND

VCC
5
3

7 A4


LDED4 6

100K

1 A5

LDED5 2
IC3A

IC3B
VR7

VR8

GND

VCC
6
5
100K

103

1 A3

LDED3 2

IC2B

GND


1 A1

LDED1 2

IC1B

LDED1
LDED3
LDED5
LDED7

DD2

RN2

1

7 A0

LDED0 6

VCC

LD5
A5

LD4
A4


LD3
A3

LD2
A2

A1
A3
A5
A7

10
9
8
7
6

A0

5
4
3
2
1

A1

LD1
A0
A2

A4
A6

GND
7

LDED6 6

VCC
7
3

A6

100K

1

LDED7 2

A7

IC4A

IC4B

b. Mạch in
0

9


1

2

1

6

7

8

9

10

1

2

3

4

5

8

2


7

1

2

6

5

1

2

4

1

3

2

2

1

1

2


1

2

1

2

1

8

1

8

1

8

1

8

2

7

2


7

2

7

2

7

3

6

3

6

3

6

3

6

4

5


4

5

4

5

4

5

1

1

1

1

1

1

1

1

2


2

2

2

2

2

2

2

3

3

3

3

3

3

3

3


1

2

3

4

5

6

7

6

7

8

9

10

1

2

3


4

5

8

9

1

CDT - K9
4


Đồ án vi điều khiển

4. Mắt dò đường
a. Mạch nguyên lý
VCC

LDED0
5
LDED2
4
LDED4
3
LDED6
2
1

VCC

VCC

LDR1

LDED1
LDED3
LDED5
LDED7

10
9
8
7
6

VCC

LDR2

LDED0

VCC

LDR3

LDED1

R1

10K

DD1

VCC

LDR4

LDED2

R2
10K

VCC

LDR5

LDED3

R3
10K

R4
10K

VCC

VCC

LDR6


LDED4

LDR7

LDED5

R5
10K

LDR8

LDED6

R6
10K

LDED7

R7
10K

R8
10K

GND

GND

GND


GND

GND

VCC

VCC

VCC

VCC

R9
1K

R10
1K

LD1

R11
1K

LD2

GND

VCC


R12
1K

LD3

GND

GND

R13
1K

LD4

GND

GND

GND

GND

VCC

VCC

VCC

R14
1K


LD5

GND

R15
1K

LD6

GND

R16
1K

LD7

GND

GND

LD8

GND

b. Mạch in
10

9


8

7

6

5

4

3

2

1

3

0

1

2

2

1

1
2


1

2

2

1

1

2

1

2

1

2

2

1

1

2

1


2

1

2

2

1

1

2

2

2

2

1

2

2

2

1


1

1

2

2

2

1

1

1

2

1

2

2

2

1

1


2

1

1

2

2

2

1

1

1

1

2

2

1

1

CDT - K9

5

1


Đồ án vi điều khiển

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;
//------------------------------------------------------------------------------------

CDT - K9
6


Đồ án vi điều khiển

// 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;
}
}
//----------------------------------------------------------------------------------CDT - K9
7


Đồ án vi điều khiển

// =============== Đ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)
{
CDT - K9

8


Đồ án vi điều khiển

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;

}
}
//----------------------------------------------------------------------CDT - K9
9


Đồ án vi điều khiển

//=============== 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;
nhotrai=0;
break;
CDT - K9
10


Đồ án vi điều khiển

}
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;
nhotrai=0;
break;
CDT - K9
11



Đồ án vi điều khiển

}
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;
nhotrai=1;
break;
CDT - K9
12


Đồ án vi điều khiển

}
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!=R
5)||(INPUT!=R6)||(INPUT!=R7)||(INPUT!=L1)||(INPUT!=L2)||(INPUT!=L3
)||(INPUT!=L4)||(INPUT!=L5)||(INPUT!=L6)||(INPUT!=L7)||(INPUT!=out)
));
{
CDT - K9
13



Đồ án vi điều khiển

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);
}
}
CDT - K9
14


Đồ án vi điều khiển

¾ 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

CDT - K9
15



×