1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng vi điều khiển 89c52 để lập trình và thiết kế robot do đường

20 1,2K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 183,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ứng dụng vi điều khiển 89c52 để lập trình và thiết kế robot do đường Ứng dụng vi điều khiển 89c52 để lập trình và thiết kế robot do đường Ứng dụng vi điều khiển 89c52 để lập trình và thiết kế robot do đường Ứng dụng vi điều khiển 89c52 để lập trình và thiết kế robot do đường Ứng dụng vi điều khiển 89c52 để lập trình và thiết kế robot do đường Ứng dụng vi điều khiển 89c52 để lập trình và thiết kế robot do đường Ứng dụng vi điều khiển 89c52 để lập trình và thiết kế robot do đường

Trang 1

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

10K

10K

SW0 SW1 SW2 SW3 SW4 SW5 SW6 SW7 VCC

1 2 3 4 5

6 7 8 9 10

DD2

GND VCC

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

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

R2 250

LR1 LED

VCC GND

R3 47 C4

VCC

GND

LD1

R4 270

1

3

PNP1

+24V

VCC

X1 12Mhz Cx2 33pF

Cx1 33pF

GND

RES

R1 1K

C3 10uF

2 1 4

SW3

GND

1 2 3

JP1

1

2

HD3

1

2

HD4

IN 1

IC2

HD1

HD2

D1

BUT0 BUT1

2 1 4

SW1

2 1 4

SW2

BUT0 BUT1

Trang 2

Mạch in

5

5

1

4

1

2 3

4

1

2

1

2

2

1

1

2 2

1

2

1

2

2

3

2

1

2

1

2 1 2

1

1

2 3

4

2

1

2

1

2

1

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

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

2 1

2 1

Trang 3

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

LD3 LD2 LD1

R1 10K R2 270 R3 270 R4270

GND PWM0

DK0

VCC +24V

C1 47uF/50V

VCC VCC +24V

PWM0 DK0

GND

G 1 2

3 S

IRF840

G 1 2

3 S

IRF840

GND

GND

DCR0

DCL0

NC 10 NC 12 V+

21 GND 1

Cur R 2

IN1 3

GLS1 4

GLS2 17

IN2 18 ST 19

WAKE 20

MC1

Trang 4

Mạch in

2

1 2

1 1

1

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

1 2 3

3 2 1

21

5 13

2 1

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

a Mạch nguyên lý

Trang 5

7 5

6

IC1B

1 3

2

IC1A

VR1 100K

LD1

VR2 100K

7 5

6

IC2B

1 3

2

IC2A

VR3 100K

VR4 100K

7 5

6

IC3B

1 3

2

IC3A

VR5 100K

VR6 100K

7 5

6

IC4B

1 3

2

IC4A

VR7 100K

VR8 100K

VCC

1

3

5

6

8

10

DD2

GND

VCC

RN2

103

LDED0

LDED2

LDED4

LDED6

VCC

1

3

5

6

8

10

DD1

GND

VCC

b Mạch in

1 0

3

2

1

3

2

1

3 2 1

3 2 1

3 2 1

3 2 1

3 2 1

3 2 1

9 7 5

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

Trang 6

Mắt dò đường

Mạch nguyên lý

R3 10K

1

3

5

6

8

10

DD1

GND

VCC

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

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

0

2

1 2

1 2

1 2

1 2

1 2

1 2

1 2

2

1 2

1 2

1 2

1 2

1 2

1 2

1

2

2 2

2 2

2 2

2 2

2 2

2 1

2 1

1 2

1 3 5 6 8 10

Trang 7

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

Trang 8

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

// -// khai báo

unsigned char tocdo1,tocdo2 ;

unsigned char x=0,y=0;

unsigned long int counter0=0;

unsigned char INPUT;

Trang 9

// ==============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)

Trang 10

{

TR0=1;

tocdo1=tocdo0;

dk1=0;

}

}

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

}

}

Trang 11

// -//============ Tao Xung PWM bánh phải ============= void ngatt1 (void) interrupt 3

{

y++;

if( y==1)

TL1=256-tocdo2;

xung2=1;

TR1=1;

}

if (y==2)

{

TR1=0;

TL1=256-(100-tocdo2);

xung2=0;

TR1=1;

Trang 12

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

Trang 13

xung=0;

TR0=1;

x=0;

}

}

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

Trang 14

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;

}

case L3:

{

banhphai(65,go);

banhtrai(35,go);

nhophai=0;

nhotrai=0;

Trang 15

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:

Trang 16

{

banhphai(85,go);

banhtrai(15,go);

nhophai=1;

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

Trang 17

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;

}

case R6:

{

banhphai(20,go);

banhtrai(80,go);

nhophai=0;

nhotrai=1;

break;

Trang 18

}

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 :

{

Trang 19

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

{

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;

}

Trang 20

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

}

}

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

Ngày đăng: 04/10/2014, 16:47

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w