ĐỒ Á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 dò đườ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 TR0=1;.......................................................................................................................... 10 TR0=1;.......................................................................................................................... 10 TR1=1;.......................................................................................................................... 11 TR1=1;.......................................................................................................................... 11 TR1=1;.......................................................................................................................... 11 TR1=0;.......................................................................................................................... 12 TR1=1;.......................................................................................................................... 12 TR0=0;.......................................................................................................................... 12 TL0=256-tocdo1; ..........................................................................................................12 TR0=1;.......................................................................................................................... 12 TR0=0;.......................................................................................................................... 12 TR0=1;.......................................................................................................................... 12 TR0=0;.......................................................................................................................... 17 TR1=0;.......................................................................................................................... 17 IT0=1; ........................................................................................................................... 17 IP=0; ............................................................................................................................. 17 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ý

DCR0

DCR1

12

12

DCL0

DCL1

HD1

HD2

A0 A2 A4 A6

A1 A3 A5 A7

SW1 SW3 SW5 SW7

SW0 SW2 SW4 SW6

5 4 3 2 1

10 9 8 7 6

5 4 3 2 1

10 9 8 7 6

0 L C D

0 R C D

1 L C D

1 R C D

+24V

+24V

DD1

DD2

C1

C2

VCC

VCC

GND

GND

GND

GND

104

104

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

VCC DK0 PWM0

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

VCC DK1 PWM1

HDC1

HDC2

2

1

2

1

BUT1

BUT0

4

3

4

3

SW1

SW2

1 N R

GND

GND

A0 A1 A2 A3 A4 A5 A6 A7

1 2 3 4 5 6 7 8

39 38 37 36 35 34 33 32

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

C3

VCC

RN3

R1

RES

10K

VCC

GND

1K

10uF

PWM0 DK0 PWM1 DK1

2

1

4

3

2 N R

K 0 1

SW3

SW0 SW1 SW2 SW3 SW4 SW5 SW6 SW7

10 11 12 13 14 15 16 17

21 22 23 24 25 26 27 28

BUT1 BUT0

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

LR1

VCC

10K

RES

9

31

R2

RESET

EA/VPP

VCC

SW2

Cx1 33pF

VCC

GND

250

LED

18 19

30 29

3 2 1 JP1

GND

XTAL1 XTAL2

ALE/PROG PSEN

X1 12Mhz

IC1

Cx2

33pF

PNP1

1

3

+24V

HD3 1 2

2

R3

D1

1

3

IN

OUT

VCC

D N G

47

1 2 HD4

R4 270

2

C4 2200uF/16V

C5 2200uF/16V

IC2

LD1

C6 104

C7 104

GND

3

Mạch in

1 1 2 0 0

2 1 2 3 1

1 2 1

2 5 2 1 2 3 2 2 1 1 1 2 1 2 1

2

21 20 2 9 9 30 15 30 15 2 22 19 1 8 8 29 14 29 14 6 1 23 18 1 7 7 28 13 28 13 7 2 1 24 17 2 6 6 27 12 27 12 8 3 25 16 5 5 26 11 26 11 9 4 26 15 2 4 4 25 10 25 10 10 5 27 14 3 3 24 9 24 9 28 13 2 2 23 8 23 8 29 12 4 1 1 1 1 22 7 22 7 30 11 21 6 21 6 31 10 20 5 20 5 1 2 2 3 1 32 9 19 4 19 4 2 33 8 18 3 18 3 3 34 7 6 1 17 2 17 2 4 35 6 7 2 16 1 16 1 5 36 5 2 8 3 6 37 4 9 4 7 38 3 10 5 8 39 2 1 2 1 2 1 9 40 1 1 2 1 2

4

1 3 1 3 3 1 2 2 5 4 2 4 2 1

Mạch điều khiển động cơ “ IC MC 33486”

Mạch nguyên lý

+24V

R1

HD-MC1

10K

LD1

DCR0

R2

VCC

270

LD2

GND

PWM0

R3 270

DCL0

LD3

DK0

R4

270

+24V

LD4

GND

DCR0

5

OUT1

2

D

G

4

Q1 IRF840

GLS1

1

VCC DK0 PWM0

VCC PWM0 DK0 VCC

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

3S

CHAN CAM

GND

+24V

DCL0

13

OUT2

2

D

G

GND

19 3 18 20 2 12 21 10 1

17

C1 47uF/50V

Q2 IRF840

ST IN1 IN2 WAKE Cur R NC V+ NC GND

GLS2

1

3S

MC1

GND

5

Mạch in

2

2

1

1

2

1

2

1

15

2

2

2

2

14

1

1

1

1

13

13

1

12

2

11

21

3

10

9

8

5

1

7

2

6

5

4

3

3

2

2

1

1

Mạch so sánh (“IC LM358”)

a. Mạch nguyên lý

6

RN1 102

VCC

LD1

LD2

LD3

LD4

LD5

LD6

LD7

LD8

0 A

1 A

2 A

3 A

4 A

5 A

6 A

7 A

A0 A2 A4 A6

A1 A3 A5 A7

5 4 3 2 1

10 9 8 7 6

DD1

VCC

GND

VR1

VR2

GND

GND

VCC 5

0

VCC 3

1

100K

7

A0

1

A1

100K

LDED0

6

LDED1

2

IC1A

IC1B

VR3

VR4

GND

GND

LDED1 LDED3 LDED5 LDED7

LDED0 LDED2 LDED4 LDED6

VCC 5

2

VCC 3

3

100K

5 4 3 2 1

10 9 8 7 6

7

A2

1

A3

100K

LDED2

6

LDED3

2

DD2

VCC

IC2A

IC2B

GND

VR5

VR6

RN2

GND

GND

100K

VCC 5

4

VCC 3

5

7

A4

1

A5

100K

LDED4

6

LDED5

2

IC3A

IC3B

VR7

VR8

GND

GND

LDED0 LDED1 LDED2 LDED3 LDED4 LDED5 LDED6 LDED7 VCC

VCC 5

6

VCC 3

7

7

A6

1

A7

100K

100K

103

LDED6

6

LDED7

2

IC4A

IC4B

b. Mạch in

0

6

7

8

9

10

1

2

3

4

5

9

8

7

6

5

4

3

2

1

1

2

1

2

1

2

1

2

1

2

1

2

1

2

1

2

1

8

1

8

1

8

8

1

2

7

2

7

2

7

7

2

3

6

3

6

3

6

6

3

4

5

4

5

4

5

5

4

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

8

9

6

8

9

10

7

1

1

3

4

5

2

7

Mắt dò đường

Mạch nguyên lý

VCC

VCC

VCC

VCC

VCC

VCC

VCC

VCC

LDR1

LDR2

LDR3

LDR4

LDR5

LDR6

LDR7

LDR8

LDED0 LDED2 LDED4 LDED6

LDED1 LDED3 LDED5 LDED7

LDED0

LDED1

LDED2

LDED3

LDED4

LDED5

LDED6

LDED7

5 4 3 2 1

10 9 8 7 6

DD1

R1 10K

R2 10K

R3 10K

R4 10K

R5 10K

R6 10K

R7 10K

R8 10K

VCC

GND

GND

GND

GND

GND

GND

GND

GND

GND

VCC

VCC

VCC

VCC

VCC

VCC

VCC

VCC

R9 1K

R10 1K

R11 1K

R12 1K

R13 1K

R14 1K

R15 1K

R16 1K

LD1

LD2

LD3

LD4

LD5

LD6

LD7

LD8

GND

GND

GND

GND

GND

GND

GND

GND

Mạch in

10

9

8

7

6

0

3

5

4

3

2

1

2

1

2

1

2

1

2

1

1

2

1

2

1

2

1

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

1

2

2

1

1

2

1

2

1

2

2

1

2

1

2

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

2

8

II. CODE Robot dò đường #include //========= Đị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

TR0=1; tocdo1=tocdo0; dk1=1; } if (chieu==back)

TR0=1; tocdo1=tocdo0; dk1=0; }

// 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) { { }

10

TR1=1; tocdo2=tocdo0; dk2=1; } if (chieu==back)

TR1=1; tocdo2=tocdo0; dk2=0; }

TR1=0; TL1=256-tocdo2;

//----------------------------------------------------------------------------------- // =============== Điều khiển bánh phải================== void banhphai (unsigned char tocdo0,unsigned char chieu) { if (chieu==go) { { } //----------------------------------------------------------------------------------- //============ Tao Xung PWM bánh phải ============= void ngatt1 (void) interrupt 3 { y++; if( y==1) {

xung2=1; TR1=1; } if (y==2)

11

{ TR1=0;

TL1=256-(100-tocdo2); xung2=0; TR1=1; y=0; }

{ TR0=0; TL0=256-tocdo1;

} //----------------------------------------------------------------------- //============ Tao Xung PWM bánh trái ============= void ngatt0 (void) interrupt 1 { x++; if (x==1)

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!=R 5)||(INPUT!=R6)||(INPUT!=R7)||(INPUT!=L1)||(INPUT!=L2)||(INPUT!=L3

16

)||(INPUT!=L4)||(INPUT!=L5)||(INPUT!=L6)||(INPUT!=L7)||(INPUT!=out) )); { 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

Lê Xuân Định Nguyễn Trần Cường

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ớp: CDT- K9

18