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

báo cáo thiết kế robot dò đườ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 (1.6 MB, 31 trang )

LỜI NÓI ĐẦU
Trong thời gian gần đây, những đề tài về robot xuất hiện thƣờng xuyên trên
Tivi. Điều đó cho thấy rằng con ngƣời ngày càng quan tâm nhiều hơn đến robot,
nhƣng lại có rất ít cơ hội để họ có thể tự mình chế tạo ra những con robot. Bài báo
cáo này sẽ sử dụng robot dò đƣờng với việc sử dụng cả ba yếu tố để tạo ra một robot
“cảm biến”, “ xử lý vi tính “, “ kiểm soát điều khiển chuyển động “. Robot mà cấu
tạo càng đơn giản thì càng dễ hiểu đƣợc cái nguyên tắc hoạt động của trƣơng trình
cũng nhƣ hiểu đƣợc bố trí của mạch điện, chính vì vậy cũng sẽ nắm đƣợc cái nguyên
tắc chung của thiết bị mà đang sử dụng trong mạch đó. Mục đích của báo cáo này
chúng em sẽ tìm hiểu sâu hơn về cơ chế hoạt động của robot,tạo ra một con robot,
mạch điện cũng nhƣ viết và phát hiện lỗi của chƣơng trình điều khiển để có thể điều
khiển robot.
Bản báo cáo gồm 3 phần:
1. Giới thiệu robot dò đƣờng
2. Cấu trúc robot và lắp ráp
3. Xây dựng chƣơng trình
Chúng em thực hiện đề tài dƣới sự hƣớng dẫn của TS. Lê Dũng, do trình độ có
hạn, kinh nghiệm trong thiết kế mạch chƣa có nhiều nên bài thiết kế sẽ có nhiều sai
sót, phƣơng pháp thiết kế chƣa tối ƣu. Chúng em rất mong nhân đƣợc những ý kiến
đóng góp quí báu của thầy.
Chúng em gửi lời cảm ơn chân thành tới Thầy đã góp ý, giải đáp thắc mắc,
hƣớng dẫn chi tiết, tận tình cho nhóm, qua đó đã giúp cho chúng em hiểu thêm rất
nhiều điều và hoàn thành đề tài này.

Hà Nội, 06/2013

1


MỤC LỤC


LỜI NÓI ĐẦU ...................................................................................................................... 1
MỤC LỤC ............................................................................................................................ 2
CHƯƠNG 1. GIỚI THIỆU ROBOT DÒ ĐƯỜNG ................................................................. 3
1.1.

Giới thiệu ............................................................................................................... 3

1.2.

Các thành phần chính của robot ............................................................................. 3

CHƢƠNG 2. CẤU TRÚC ROBOT VÀ LẮP RÁP..................................................................... 5
2.1

Sơ đồ nguyên lí, mạch in và danh sách linh kiện ...................................................... 5

2.2

Thiết kế khung xe và động cơ .................................................................................. 7

2.3

Lắp ráp .................................................................................................................. 9

CHƯƠNG 3. XÂY DỰNG CHƯƠNG TRÌNH VỚI PIC16F84A .......................................... 10
3.1.

Thiết lập các cổng với PIC16F84A ........................................................................ 10

3.2.


Lập trình với ngôn ngữ C ..................................................................................... 11

3.2.1.

Ngôn ngữ C ................................................................................................... 11

3.2.2.

Led nhấp nháy và nút bấm ............................................................................ 12

3.3.

Phát hiện đƣờng đi bằng cảm biến ........................................................................ 17

3.4.

Điều khiển động cơ ............................................................................................... 19

3.4.2.

Điều khiển tốc độ động cơ .............................................................................. 22

3.5.

Dò đƣờng ............................................................................................................. 22

3.6.

CODE .................................................................................................................. 27


KẾT LUẬN ......................................................................................................................... 31

2


CHƢƠNG 1. GIỚI THIỆU ROBOT DÒ ĐƢỜNG

1.1.

Giới thiệu

Robot tự hành hay robot di động (mobile robots, thƣờng đƣợc gọi tắt là
mobots) đƣợc định nghĩa là một loại xe robot có khả năng tự dịch chuyển, tự vận
động (có thể lập trình lại đƣợc) dƣới sự điền khiển tự động để thực hiện thành công
công việc đƣợc giao.
Tiềm năng ứng dụng của robot tự hành hết sức rộng lớn: robot vận chuyển vật
liệu, hàng hóa trong các tòa nhà, nhà máy, cửa hàng, sân bay và thƣ viện; robot phục
vụ quét dọn đƣờng phố; robot kiểm tra trong môi trƣờng nguy hiểm; robot canh gác,
do thám; robot khám phá không gian, di chuyển trên hành tinh; robot xe lăn phục vụ
ngƣời khuyết tật; robot phục vụ sinh hoạt gia đình v.v...
Cùng với sự phát triển mạnh mẽ của các hệ thống tự động hóa, robot tự hành
ngày một đƣợc hoàn thiện và càng cho thấy lợi ích của nó trong công nghiệp và sinh
hoạt. Một vấn đề đƣợc quan tâm khi nghiên cứu về robot tự hành là làm thế nào để
robot biết đƣợc vị trí đang đứng và có thể di chuyển tới 1 vị trí xác định, đồng thời có
thể tự động tránh đƣợc các chƣớng ngại vật trên đƣờng đi. Vì vậy, việc chế tạo thành
công đề tài này sẽ mở ra 1 hƣớng tiếp cận mới và góp phần thúc đẩy việc ứng dụng
của robot ngày càng nhiều vào trong đời sống hàng ngày và trong nghiên cứu chế tạo.
Mặc dù nhu cầu ứng dụng cao, nhƣng những hạn chế chƣa giải quyết


đƣợc

của robot tự hành, nhƣ chi phí chế tạo cao, đã không cho phép chúng đƣợc sử dụng
rộng rãi. Bài toán tìm đƣờng của robot tự hành cũng không phải là loại bài toán đơn
giản nhƣ nhiều ngƣời nghĩ lúc ban đầu.
Trong đề tài này, bài toán tìm đƣờng sẽ đƣợc giải quyết ở mức độ không quá
phức tạp: dò đƣờng theo đƣờng vạch sẵn.
1.2.

Các thành phần chính của robot

1) Khối xử lí

1 PIC16F84A & mạch ngoại vi

2) Khối cảm biến

3 bộ led thu phát hồng ngoại
3


3) Động cơ

2 động cơ DC công suất nhỏ

4) Nguồn cung cấp

5V-6V (pin tiểu)

Hình 1.1 Robot dò đƣờng


4


CHƢƠNG 2. CẤU TRÚC ROBOT VÀ LẮP RÁP

2.1 Sơ đồ nguyên lí, mạch in và danh sách linh kiện
 Sơ đồ nguyên lí

Hình 2.1 Sơ đồ nguyên lí
 Mạch in
Dùng phần mềm Proteus 7.7 mô phỏng và vẽ mạch in:

5


Hình 2.2 Xắp xếp vị trí linh kiện
Đi dây và đổ đồng

Hình 2.3 Mạch in
6


 Bảng linh kiện
STT

Tên linh kiện

Giá trị


SL

1

Tụ gốm 104

0.1uF

1

2

Tụ gốm 33

33uF

2

3

Tụ hóa

1000uF

1

4

Tụ hóa


10uF

1

5

Diode

3

6

Transistor Tip122

2

7

PIC16F84a

1

8

Led đỏ + led nguồn

4

9


Điện trở

220 Ω

6

10

Điện trở

100Ω

3

11

Điện trở

10KΩ

5

12

Biến trở vi chỉnh

50KΩ

3


13

LM324

1

14

Nút bấm 4 chân

2

15

Nút nguồn 6 chân

1

16

Thạch anh

17

DIP14+DIP18

2

18


Bộ động cơ

1

8M

2.2 Thiết kế khung xe và động cơ

7

1


Hình 2. 4 Khung xe

Hình 2.5 Khung xe và động cơ

8


Hình 2.6 Vị trí bắt ốc
2.3 Lắp ráp
Tiến hành hàn linh kiện vào mạch ta đƣợc:

Hình 2.7 Mạch robot
9


CHƢƠNG 3. XÂY DỰNG CHƢƠNG TRÌNH VỚI PIC16F84A


Dùng phầm mềm MPLAB X IDE 1.6 lập trình với ngôn ngữ C, biên dịch bằng
HI-TECH PICC (v9.83)
Tìm hiểu và thực hành với PIC16F84A, LM324, mở transistor….
Thiết lập các cổng với PIC16F84A

3.1.

Bảng 4.1a PORTA
A7

A6

A5

A4

__

__

__

Start

Use

I

I/O


1

1

1

A3

1

1

A2

A1

1

A0

1

1

Bảng 4.1b PORTB
B7

B6

B5


B4

B3

B2

B1

B0

R motor

L motor

R led

M led

L led

Rsensor

Msensor

Lsensor

Use

O


O

O

O

O

I

I

I

I/O

0

0

0

0

0

1

1


1

Bảng 4.2 Đầu vào Sensor và đầu ra Led
B7

B6

B2

B1

B0

PORT

R sensor

M sensor

L sensor

S-I

R sensor

M sensor

L sensor


R sensor

M sensor

L sensor

R sensor

M sensor

L sensor

Dịch







Đảo

R led

M led

B5

B4


B3

L led

10

Dịch
Dịch

L-O


Bảng 4.3 Điều khiển động cơ theo cảm biến đầu vào
Right sensor

Middle sensor

Lefeft sensor

Motor

B2

B1

B0

1

0


1

Đi thẳng

0

0

1

Rẽ phải

1

0

0

Rẽ trái

0

1

1

Rẽ phải

1


1

0

Rẽ trái

1

1

1

Rẽ phải or trái

0

0

0

Dừng

0

1

0

Không xảy ra


Bảng 4.4 Điều khiển động cơ theo mức logic

3.2.

L motor

Right motor

Control logic

0

0

Dừng

1

0

Rẽ trái

0

1

Rẽ phải

1


1

Đi thẳng

Lập trình với ngôn ngữ C

3.2.1. Ngôn ngữ C
Robot dò đƣờng sử dụng ngôn ngữ C. Ngôn ngữ C có thể thể hiện chức năng
tƣơng đồng trong vài dòng code . Ngoài ra, nó dễ dàng hơn cho việc thể hiện việc
hoạt động ở mức cao hơn nhƣ biểu thức toán học hay thuật toán trong C hơn là trong
assembly.
11


Sự phát triển của một chƣơng trình trong ngôn ngữ C đƣợc hoàn thiện trong
những bƣớc sau. Trƣớc tiên, ngôn ngữ C đƣợc tạo ra bằng việc sử dụng một bản soạn
thảo với máy tính cá nhân. Sau đó ngôn ngữ C đƣợc biến đổi thành mã khiến máy
tính hiểu đƣợc.

Hình 3.1 Cấu trúc chƣơng trình ngôn ngữ C
3.2.2. Led nhấp nháy và nút bấm

a. Đèn LED nhấp nháy:
(a) khi điện thế cao (5v) đầu ra từ PORT , LED sẽ bật lên
(b) khi điện thế thấp (0v) đầu ra từ PORT , LED sẽ tắt
Để đầu ra có điện thế cao (5v) , thiết lập giá trị “1” cho PORT :
Để đầu ra có điện thế thấp (0V) , thiết lập “1” cho PORT
 Mô tả chƣơng trình đèn LED nhấp nháy.
(1) Tất cả các LED nhấp nháy 5s 1 lần


12


Bên dƣới là chƣơng trình để điều khiển 3 đèn LED kết nối tới bit 3, bit 4,
và bit 5 của PORT B . Khi chƣơng trình đƣợc thực hiện , tất cả các đèn LED
đều bật và tắt mỗi 5s.
LED (PORT B)

tất cả LED bật

LED (PORT B)

tất cả LED tắt

(Tất cả LED đều tắt ) PORTB =0x00;
RB7

RB6

RB5

RB4

0

0

0


0

RB3
0

RB2

RB1

RB0

0

0

0

(Tất cả LED đều tắt ) PORTB =0x38;
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
0

0

1

1

1

0


0

0

Code:
#include
__CONFIG(0xFFFA); /* Initial setting CP:OFF,PT:OFF,WT:OFF,HS */
wait0(short k)
{
/* wait time about (k×0.01 sec.) */
short i;
short j; /* declaration of 16 bit variables */
for(j=0;j{ /* (k×3000)*/
for(i=0;i<3000;i++){
}
}
}
main(void)
13


{
TRISA = 0xFC; /* A0,1:output, 2,3,4:input */
TRISB = 0xC7; /* B0,1,2:input, B3,4,5:LED output, other bits input */
while(1){ /* infinite loop */
PORTB=0x00; /* LEDs off */
wait0(50); /* wait time = 0.5 sec. */
PORTB=0x38; /* LEDs on */

wait0(50); /* wait time = 0.5 sec. */
}
}
 Mô tả của đầu vào và thiết lập đầu ra bởi TRISA và TRISB
TRISA = 0xFC; /* A0,1:output, 2,3,4:input */
TRISB = 0xC7; /* B0,1,2:input, B3,4,5:LED output, other bits input */
Hai dòng code bên trên thiết lập hoạt động làm việc của input/output của PIC’s
PORTA và PORTB .
Chi tiết hoạt động đƣợc thể hiện ở (Hình 3.2) bên dƣới

Hình 3.2 Các cổng I/O

14


Nếu input đƣợc định nghĩa nhƣ 1 và output đƣợc định nghĩa nhƣ 0, cấu hình input
và output của PORTA và PORTB đều đƣợc thể hiện ở Bảng 4.1a và Bảng 4.1b.
Cho PORTA , những pin còn lại đều đƣợc đặt cho input. PORTB tất cả đều đƣợc
đặt cho input. Bên dƣới là giá trị cấu hình của mỗi PORT và giá trị tƣơng ứng trong
hệ 16
A7

A6
1

B7
0

1


B6
0

A5
1

B5
0

A4

A3

1

1

B4

B3

0

0

A2
1

B2
1


A1
1

B1
1

A0
1

B0
1

Trong ngôn ngữ C, hệ 16 đƣợc bắt đầu với 0x. Hơn thế nữa, PORTA và PORTB
cấu hình I/O đều đƣợc điều khiển bởi TRISA và TRISB . Hơn nữa, dấu chấm phẩy
“;” , đƣợc sử dụng để kết thúc 1 câu lệnh trong ngôn ngữ C. Do đó, C codes cấu hình
cổng cho PIC vi điểu khiển nhƣ sau :
TRISA=0xFF;
TRISB=0x07;
b. Nút bấm
Hình 3.3 (a) và (b) thể hiện mạch phần cứng và logic để xử lý nút bấm
Trong hình 3.3(a) , khi mà công tắc không đƣợc bật, chân IC tƣơng ứng sẽ ở mức
điện thế cao (5v). Do đó , giá trị khi mà viết vào trƣơng trình sẽ là “1”.
Trong hình 3.4(b) , khi mà công tắc đƣợc bấm, chân IC tƣơng ứng sẽ ở mức điện
thế thấp (0v) . Do đó giá trị đƣợc viết vào chƣơng trình sẽ là “0”.
Ví dụ:

15



while(RA4!=0){} // next code

Hình 3.3a Bút bấm

Hình 3.3b Thiết kế nút Start và Reset

16


3.3.

Phát hiện đƣờng đi bằng cảm biến
Chúng em dung cảm biến hồng ngoại, với mạch dò đƣờng cần 3 bộ thu phát,

mỗi bộ gồm 1 led phát hồng ngoại và 1 led thu hồng ngoại đƣợc đặt sát nhau. Chúng
em kết hợp dùng LM324 để mức logic vào PIC16f84a đƣợc chính xác và ổn định
hơn.
LM324 gồm 4 bộ so sánh, mỗi bộ đƣợc kết nối theo Hình 3.4. Cổng 2 đƣợc
phân áp cố định. Khi Led thu hồng ngoại không thu đƣợc sóng hồng ngoại của led
phát thì áp trên cổng 3 sẽ nhỏ hơn áp trên cổng 2  đầu ra mức 0, led báo tắt. Ngƣợc
lại, nếu led thu nhận đƣợc sóng hồng ngoại thì áp trên cổng 3 lớn hơn áp trên cổng
2 đầu ra mức 1,led báo sáng. Các bộ so sánh khác cũng tƣơng tự nhƣ vậy.
Ta có thể chỉnh độ nhạy của cảm biến bằng cách thay đổi giá trị của biến trở vi
chỉnh.

Hình 3.4 Khối cảm biến

17



Hình 3.5 Led báo
Đầu ra của LM324 nối với đầu vào của PIC16F84A
LM324 (out put)

PIC16F84A (in put)

Pin 1

Pint 6

Pin 7

Pin 7

Pin 8

Pin 8

 Ví dụ code C test sensor :
#include
#include
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 8000000 //Khai bao tan so thach anh(giong voi mach thuc)
#endif
__CONFIG(0xFFFA); /* Initial setting CP:OFF,PT:OFF,WT:OFF,HS */
int sensor(void){
RB3 = RB0;
RB4 = RB1;
RB5 = RB2;
18



}
void main()
{
TRISA = 0xFF;
TRISB = 0x07;
while(1)
{
sensor();
}
3.4.

Điều khiển động cơ
Dùng 2 động cơ 1 chiều công suất nhỏ, đóng mở 2 động cơ bằng transistor TIP

122
3.4.1. Nguyên lí
Trong Hình 3.6 (a), khi điện thế cao (5v) là cổng ra từ PORT, động cơ xoay.
Trong Hình 3.6 (b), khi điện thế thấp (0v) là cổng ra từ PORT, động cơ dừng.
Khi ở điện thế cao (5v) là cổng ra từ PORT, motor quay, tƣơng đƣơng mức
“1”.
Khi ở điên thế thấp (0v) là cổng ra từ PORT, motor dừng quay, tƣơng đƣơng
mức “0”.

19


Hình 3.6 Nguyên lí
Sơ đồ thiết kế thực tế:


Hình 3.7 Khối động cơ
 Ví dụ code điều khiển động cơ đơn giản:
20


#include
#include
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 8000000 //Khai bao tan so thach anh(giong voi mach thuc)
#endif
__CONFIG(0xFFFA); /* Initial setting CP:OFF,PT:OFF,WT:OFF,HS */
int sensor(void){
RB3 = RB0;
RB4 = RB1;
RB5 = RB2;
}
void main()
{
TRISA = 0xFF;
TRISB = 0x07;
RB6 = 0;
RB7 = 0;
while(1)

{
if(RB0==1 && RB1==0 && RB2==0){
RB6=1;// motor trai quay
}
if(RB0==0 && RB1==1 && RB2==0){

RB6=1;//2 motor quay
RB7=1;
}
if(RB0==0 && RB1==0 && RB2==1){
21


RB7=1;//motor phai quay
}
}
}
3.4.2. Điều khiển tốc độ động cơ
Hình 3.8, khi motor đƣợc bật lên và tắt đi lặp lại nhiều lần trong chu kì thời gian
ngắn sẽ đƣợc thể hiện nhƣ bên phải, mức trung bình dòng điện chảy qua nó sẽ đƣợc
thể hiện ở bên trái. Bởi vậy, sự thay đổi tỷ lệ thời gian bật và tắt theo chu kì, nó có thể
điều khiển tốc độ của motor .

Hình 3.8 Các trạng thái tốc độ
Với 2 động cơ trái và phải, việc điều khiển tốc độ từng động cơ sẽ giúp xe rẽ
trái hoặc rẽ phải. Động cơ trái tắt, động cơ phải bật sẽ điều khiển xe rẽ trái và ngƣợc
lại. Nếu thời gian động cơ trái bật lớn hơn thời gian động cơ phải tắt sẽ điều khiển
động cơ rẽ phải với góc cua rộng hơn…
3.5.

Dò đƣờng
 Chuyển đổi giữa các trạng thái
Nhƣ trong Hình 3.9, trạng thái của robot sẽ thay đổi bởi cảm biến, phải cân

nhắc sự khác biệt giữa các trạng thái của robot để thiết kế chƣơng trình dò đƣờng.
Trong trƣờng hợp xấu nhất, nếu robot đi chệch khỏi đƣờng, giá trị của ba cảm biến

22


(màu trắng, màu trắng, màu trắng). Trạng thái của robot sẽ thay đổi theo hƣớng của
đƣờng đi.

Hình 3.9 Chuyển đổi giữa các trạng thái

 Nếu robot không bị nghiêng khỏi đƣờng đi.

Hình 3.10 Đi thẳng
Nhƣ đã đƣợc thể hiện trong Hình 3.10, nếu robot không chệch
khỏi đƣờng đi , robot sẽ đi thẳng.
 Nếu hơi nghiêng khỏi đƣờng đi
23


Hình 3.11 Rẽ trái vòng cua nhỏ
Mô tả trƣờng hợp này nhƣ mô Hình 3.11 và Hình 3.12 đƣợc thể
hiện bên dƣới.
Mỗi pin RB0,RB1 và RB2 của PORTB đƣợc kết nối với 1 cảm
biến tƣơng ứng là trái , giữa và phải . Nếu sàn là màu trắng, là mức “1”.
Nếu sàn là màu đen, là mức “0”. Khi cảm biến trái , phải và giữa là ( đen,
đen ,trắng ) =( 0,0,1), robot hơi nghiêng sang bên phải. Nhƣ vậy để trở
lại đƣờng đi, robot phải rẽ trái c theo vòng cung bán kính lớn bằng việc
làm giảm động cơ bên trái .

Hình 3.12 Chu trình rẽ trái
 Nếu robot từ từ rẽ phải


24


Hình 3.13 Rẽ trái vòng cua lớn
Mô tả của trƣờng hợp này nhƣ Hình 3.13 và Hình 3.14 đều đƣợc
thể hiện bên dƣới.
Mỗi RB0, RB1 và RB2 là PORT kết nối với cảm biến trái, phải ,
và giữa. Nếu sàn là màu trắng, là mức “1”. Nếu sàn là màu đen, là mức
“0”. Khi mỗi cảm biến trái, phải và giữa phát hiện ( đen, trắng ,trắng ) =(
0,1,1), robot nghiêng nhiều sang bên phải. Sau đó để trở về đƣờng đi ,
robot phải rẽ trái dọc theo vòng cung bán kính lớn bằng việc làm giảm
động cơ bên trái.

Hình 3.14 Chu trình rẽ trái vòng cua lớn

25


×