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

“Thiết kế robot dò đường theo vạch đen”

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

Đề tài: Thiết kế robot dò đường

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIẾN THÔNG
KHOA KĨ THUẬT ĐIỆN TỬ 1

BÁO CÁO
ĐỒ ÁN THIẾT KẾ HỆ THỐNG NHÚNG
ĐỀ TÀI:
“Thiết kế robot dò đường theo vạch đen”

GVHD: TS.Nguyễn Ngọc Minh
Lớp: D09XLTH1
Nhóm 1: Vũ Thanh Hường
Phạm Minh Khánh

Hà Nội, ngày 15 tháng 4 năm 2013

Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 1


Đề tài: Thiết kế robot dò đường

LỜI NÓI ĐẦU
Vi điều khiển viết tắt Micro-controller, là mạch tích hợp trên một chip có thể lập
trình được, dùng để điều khiển hoạt động của một hệ thống. Theo các tập lệnh của người
lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, đo thời gian và tiến hành đóng
mở một cơ cấu nào đó.


Vi điều khiển có thể được coi là một máy tính được tích hợp trên một chip, nó
thường được sử dụng để điều khiển các thiết bị điện tử. Vi điều khiển, thực chất là một hệ
thống bao gồm một vi xử lí có hiệt suất đủ dùng và giá thành thấp (khác với các bộ vi xử
lí đa năng dùng trong máy tính) kết hợp với các khối ngoại vi như bộ nhớ, các module
vào ra, ADC, DAC, timer, ngắt… Ở máy tính thì các module thường được xây dựng bởi
các chip và mạch ngoài.
Hầu hết các vi điều khiển ngày nay được xây dựng dựa trên kiến trúc Harvard, kiến
trúc này định nghĩa bốn thành phần cần thiết của một hệ thống nhúng. Những thành phần
này là lõi CPU, bộ nhớ chương trình (thông thường là ROM hoặc bộ nhớ Flash), bộ nhớ
dữ liệu RAM, một hoặc vài bộ nhớ định thời và các cổng vào/ra để giao tiếp với các thiết
bị ngoại vi và các môi trường bên ngoài- tất cả các khối này được thiết kế trong một vi
mạch tích hợp. Vi điều khiển khác với các vi xử lí đa năng ở chỗ là nó có thể hoạt động
chỉ với vài vi mạch hỗ trợ bên ngoài.
Đề tài thiết kế xe chạy theo đường vẽ sẵn được chúng em thực hiện dựa trên nền
kiến thức về mạch điện tử, vi xử lý nói chung và vi điều khiển họ 8051 nói riêng. Thực
hiện đề tài này là tiền đề để chúng em nắm được kiến thức các môn học trong các kì học,
củng cố và bổ sung những kinh nghiệm còn thiếu.

Hà Nội, ngày 14 tháng 4 năm 2013
Nhóm sinh viên thực hiện

MÔ TẢ KĨ THUẬT
Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 2


Đề tài: Thiết kế robot dò đường


1. Phần mạch
Hai mạch chính sử dụng trong bài tập này là mạch SENSOR để dò đường và mạch VI
XỬ LÍ VÀ ĐỘNG CƠ để thu tín hiệu, xử lí và đưa ra tín hiệu điều khiển hai động cơ để
dẫn hướng. Ngoài ra, để nạp chương trình cho vi điều khiển, chúng em sử dụng mạch nạp
ISP và nạp trực tiếp cho vi điều khiển.
a. Mạch Sensor
Đường đi của xe được vẽ bằng vạch đen nằm trên nền trắng. Để xe nhận ra được
đường đi, chúng em sử dụng các cặp led thu phát hồng ngoại đặt gần nhau. Các led phát
phát ra ánh sáng màu đỏ đục, các led thu có điện trở phụ thuộc vào có nhận được ánh
sáng phản xạ từ đường đi hay không.
Khi cặp thu phát ở vị trí nền trắng, ánh sáng từ led phát phát ra phản xạ trên nền
trắng và tới led thu. Led thu thu được ánh sáng này thì điện trở giảm xuống, điện áp ở cực
Anot (+) của led thu gần về 5V. Ngược lại, ở vị trí vạch đen, ánh sáng từ led phát phát ra
không phản xạ lại được do bị vạch đen hấp thụ. Led thu không nhận được ánh sáng này
nên điện áp ở cực Anot của nó gần bằng 0 V. Điện áp ra từ led thu được đem so sánh với
điện áp chuẩn đã được tinh chỉnh hợp lý qua IC LM393 để cho ra mức logic 0-1, đưa vào
vi điều khiển xử lý.
Hình ảnh minh họa như sau:

Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 3


Đề tài: Thiết kế robot dò đường

IC LM393 gồm 2 bộ so sánh:

Khi led ở ngoài nền trắng, mức điện áp trên led thu đo được là cao hơn so với mức
so sánh điện áp ngưỡng, ngược lại, mức điện áp thu đo được khi bắt vào vạch đen là thấp
hơn so với mức so sánh điện áp. Điện áp so sánh (Vref) được đặt qua biến trở 20k
Khi ở ngoài nền trắng: Vled thu >Vref nên Output=0
Khi bắt vạch đen: Vled thu Để bắt đường được tốt, chúng em sử dụng 4 cặp led thu phát được bố trí như sau (LT: Led
thu; LP: Led phát)
LT1

LT2

LT3

LT4

LP1

LP2

LP3

LP4

Chiều rộng của 2 Led giữa là 28mm ( ôm 2 bên vạch )

Sơ đồ nguyên lí:
Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng


Page 4


Đề tài: Thiết kế robot dò đường

b. Khối nguồn
Trong khối nguồn chúng ta sử dụng 1 bình ắc quy khô 12V.Mặt khác hệ thống điều
khiển cần phải có nguồn 5V để cung cấp cho khối VI ĐIỀU KHIỂN và khối SENSORS.
Để tạo nguồn 5V DC chúng ta sử dụng IC ổn áp 7805, với đầu vào gồm đất chung của
toàn hệ thống và nguồn 12 V DC lấy trực tiếp từ nguồn ắc quy.2 IC ổn áp LM7805 được
lắp một tản nhiệt loại nhỏ để tản bớt nhiệt khi hoạt động giúp khối nguồn cũng như toàn
bộ mạch hoạt động ổn định. Cùng với hệ thống các tụ điện tạo ổn áp cho nguồn.

Mạch nguồn như sau:
Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 5


Đề tài: Thiết kế robot dò đường

1 con IC 7805 cung cấp nguồn cho mạch chính và chip. 1 con cung cấp cho sensor,
cung cấp riêng để chống nhiễu cho sensor
Trong mạch nguồn có sử dụng một cầu chì kí hiệu là SW3 phòng xảy ra sự cố chập
mạch, nhằm bảo vệ cho mạch nguồn cũng như các khối liên quan khác.
c. Khối vi điều khiển
Khối này gồm có Vi điều khiển AT89S52, mạch RESET, mạch tạo dao động, các
led báo vạch về từ mạch SENSORS, Jumpers đầu vào dùng để nạp ISP.

+ Vi điều khiển AT89S52 được chúng ta sử dụng vì nó có đầy đủ những chức năng
của vi điều khiển AT89C51. Ngoài ra còn có thêm một timer (timer2) và có bộ nhớ Flash,
công nghệ nạp ISP (In System Programming) tức là nạp mà không cần tháo chip ra khỏi
mạch, giúp việc lập trình và test rất thuận tiện. Giá thành thậm chí còn rẻ hơn AT89C51.

Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 6


Đề tài: Thiết kế robot dò đường
+ Mach RESET có chức năng reset lại hoạt động của vi điều khiển, được nối vào
chân số 9 của vi điều khiển là chân tích cực cao. Khi chân số 9 được set lên 1 thì vi điều
khiển được reset lại. Để chống rung khi ấn nút, chúng ta dùng một tụ hóa nối song song
với nút ấn.
+ Mạch DAO ĐỘNG sử dụng thạch anh 12Mhz, như vậy một chu kì máy là 1us, rất
thuận tiện cho việc tính toán và lập trình. Tuy nhiên có hạn chế là không thể truyền thông
với máy tính qua cổng COM (đòi hỏi thạch anh 11.0592Mhz). Thạch anh này được nối
đất với tụ gốm 33p để lọc nhiễu.
+ Các Jumpers dùng để nạp ISP sử dụng mạch nạp ISP loại đơn giản, chỉ cần dùng 5
chân: GND, MOSI, MISO, SCK, RESET nối với cổng LPT của máy tính thông qua jack
DB25. Sử dụng kiểu nạp ISP này rất thuận tiện khi lập trình và test xe vì không phải tháo
chip (hạn chế hỏng, gẫy chân chip), tốc độ nạp chấp nhận được, ít khi bị lỗi, chi phí thấp.
+ Các led báo vạch về dùng để phản ánh tình trạng của các led thu phát ở mạch
SENSORS. Khi một cặp thu-phát bắt vào vạch đen thì led báo tương ứng sẽ tắt và ngược
lại. Nói cách khác, các led báo này phản ánh vị trí lệch của xe so với vạch đen, từ đó giúp
debug chương trình thuận tiện hơn rất nhiều.


Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 7


Đề tài: Thiết kế robot dò đường

d. Khối điều khiển động cơ
Để điều khiển động cơ quay thuận ngược nhanh chậm, chúng ta không thể dùng trực
tiếp các chân của vi điều khiển được vì dòng ra của chân vi điều khiển nhỏ. Do vậy chúng
ta sử dụng IC L293D gồm hai mạch cầu H bên trong, mỗi mạch cầu H dùng điều khiển
một động cơ có sơ đồ khối như hình vẽ:

Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 8


Đề tài: Thiết kế robot dò đường

Trong khối này còn sử dụng một công tắc nguồn, có tác dụng bật tắt động cơ khi điều
chỉnh vị trí của xe trước khi chạy.
Bảng chân lý mô tả hoạt động của L293D trên một kênh như sau

Nhóm 1_D09XLTH1


Đồ án thiết kế hệ thống nhúng

Page 9


Đề tài: Thiết kế robot dò đường
Giả sử ta cần điều khiển động cơ bên trái. Ba chân cần điều khiển là IN1, IN2,
EN1 và đầu ra OUT1 OUT2 của L293D được nối với hai dây của động cơ một chiều.
TRẠNG THÁI

IN1

IN2

EN1

DỪNG

X

X

0

QUAY THUẬN

1

0


1

QUAY NGƯỢC

0

1

1

Sơ đồ nguyên lí chung:

Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 10


Đề tài: Thiết kế robot dò đường

2. Mô tả thiết kế Cơ Khí cho xe
Thân xe được làm từ một thanh nhôm hình hộp chữ nhật :12x25,,đằng trước có gắn
bánh lái có thể quay 360o, do vậy chuyển động của xe phần lớn do hai bánh sau quyết
định. Hai bánh đằng sau được lắp vào hai trục của động cơ một chiều để lái chiều chuyển
động của xe.
Hai động cơ sử dụng là động cơ một chiều loại 12V được gắn chặt vào thân xe bằng
các đai và ốc vít
Mạch SENSORS kết nối với mạch vi điều khiển qua sợi cáp 8 sợi trong đó có hai sợi
cấp nguồn 5V và 6 sợi truyền tín hiệu của mạch SENSORS về cho vi điều khiển.

Phần cơ khí của xe:

3.Thiết Kế Phần Mềm
Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 11


Đề tài: Thiết kế robot dò đường
Chương trình viết cho vi điều khiển sử dụng ngôn ngữ Assembler với trình dịch là
phần mềm Keil C. Ưu điểm của ngôn ngữ Assembler là mã nguồn chạy nhanh và gọn,
giúp sinh viên nắm chắc cấu trúc phần cứng của vi điều khiển cũng như các bước lập trình
phần mềm. Tuy nhiên nhược điểm của ngôn ngữ này là khó hiểu và rắc rối.
Sơ đồ khối điều khiển được tóm tắt như sau:
MẠCH

MẠCH

SENSORS

VI ĐIỀU KHIỂN

ĐIỀU KHIỂN ĐỘNG


XE CHUYỂN ĐỘNG

Lưu đồ thuật toán điều khiển:


Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 12


Đề tài: Thiết kế robot dò đường
KHỞI TẠO
GIỚI THIỆU

DÒ ĐƯỜNG

NO

YES
LỆCH

Đi thẳng

Cua trái
Or Cua phải

NO

VẠCH

YES


Chương trình con
khi bắt vạch đích

CODE cho vi điều khiển
#include <REGX51.H>

Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 13


Đề tài: Thiết kế robot dò đường
#include <string.h>
/*********Cac ham define********************/
//#define menu P3_0
#define ok P3_0
#define down P3_1
#define up P3_2
#define PWM1 P1_6
#define PWM2 P1_7
#define div1_1 P2_3
#define div1_2 P2_1
#define div2_1 P2_2
#define div2_2 P2_0
#define s1 P1_0
#define s2 P1_1
#define s3 P1_2
#define s4 P1_3

#define tien 1
#define lui 0
#define dc_trai_dung P2_3=0;P2_1=0;
#define dc_phai_dung P2_2=0;P2_0=0;
/*********Khai bao bien toan cuc************/
unsigned char xung2=50,dem_t0=0,xung1=50,dem_t1=0,so_vong=1;
/*********Cac ham con***********************/
//Ham tre
void tre(long time)
{
long i;
for(i=0;i{}
}
//Khoi timer
void init_ngat()
{
ET0=1;
//Cho phep ngat timer 0
ET1=1;
//Cho phep ngat timer 1
TMOD=0x22; //Dat che do 8 bit tu nap lai cho timer 0 va timer 1
TH0=156;
//Gia tri quay vong
TL0=156;
//Gia tri dua vao
TH1=156;
//Gia tri quay vong
TL1=156;
//Gia tri dua vao

TR0=1;
//Khoi dong timer 0
TR1=1;
//Khoi dong timer 1

Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 14


Đề tài: Thiết kế robot dò đường
EA=1;
//Cho phep ngat toan cuc
}
//Ham thuc hien ngat timer 0
void timer0()interrupt 1
//Timer 0 dung de tao xung PWM1
{
TR0=0; //Tat timer 0
TF0=0;
//Xoa co ngat timer 0
dem_t0++;
if(dem_t0==100)
dem_t0=0;
if(dem_t0PWM1=1;
else
PWM1=0;

TR0=1;
//Khoi dong timer 0
}
//Ham thuc hien ngat timer 0
void timer1()interrupt 3
//Timer 1 dung de tao xung PWM2
{
TR1=0; //Tat timer 1
TF1=0;
//Xoa co ngat timer 1
dem_t1++;
if(dem_t1==100)
dem_t1=0;
if(dem_t1PWM2=1;
else
PWM2=0;
TR1=1;
//Khoi dong timer 1
}
//Ham dieu khien dc
trai
void dong_co_trai(unsigned char trang_thai,unsigned char so_xung)
{
if(trang_thai==tien)
{P2_3=1;P2_1=0;}
else if(trang_thai==lui)
{P2_3=0;P2_1=1;}
xung1=so_xung;
}

//Ham dieu khien dc
2
void dong_co_phai(unsigned char trang_thai,unsigned char so_xung)
{
if(trang_thai==tien)
{P2_2=0;P2_0=1;}
else if(trang_thai==lui)
{P2_2=1;P2_0=0;}
xung2=so_xung;
}
void bao_vong()
{
if(so_vong==0)

Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 15


Đề tài: Thiết kế robot dò đường
{P1_4=1;P1_5=1;}
else if(so_vong==1)
{P1_4=1;P1_5=0;}
else if(so_vong==2)
{P1_4=0;P1_5=1;}
else if(so_vong==3)
{P1_4=0;P1_5=0;}
}

//Ham chay
void run()
{
unsigned char i=0;
while(ok)
{
if(!up)
{
tre(10);
if(!up)
{
while(!up);
so_vong++;
if(so_vong>4)
so_vong=1;
}
}
if(!down)
{
tre(10);
if(!down)
{
while(!down);
so_vong--;
if(so_vong<1)
so_vong=3;
}
}
bao_vong();
}

while(!ok);
TR0=1;
TR1=1;
while(so_vong>0)
{
if(i!=1&&!s1&&!s2&&!s3&&!s4)
//di thang
{
dong_co_trai(tien,100);
dong_co_phai(tien,100);
i=1;
}
else if(i!=2&&!s1&&s2&&!s3&&!s4) //lech phai 1
{

Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 16


Đề tài: Thiết kế robot dò đường
dong_co_trai(tien,50);
dong_co_phai(tien,100);
i=2;
}
else if(i!=3&&!s1&&!s2&&s3&&!s4) //lech trai 1
{
dong_co_trai(tien,100);

dong_co_phai(tien,50);
i=3;
}
else if(s1&&!s2&&!s3&&!s4) //lech phai 2
{
dong_co_trai(tien,80);
dong_co_phai(tien,100);
tre(10);
if(s1&&s4)
{
dong_co_trai(tien,100);
dong_co_phai(tien,100);
while(s1||s4);
so_vong--;
bao_vong();
}
else
{
dc_trai_dung;
dong_co_phai(tien,100);
while(!s3);
}
}
else if(!s1&&!s2&&!s3&&s4) //lech trai 2
{
dong_co_trai(tien,100);
dong_co_phai(tien,80);
tre(10);
if(s1&&s4)
{

dong_co_trai(tien,100);
dong_co_phai(tien,100);
while(s1||s4);
so_vong--;
bao_vong();
}
else
{
dc_phai_dung;
dong_co_trai(tien,100);
while(!s2);
}
}
else if(s1&&s2&&!s3&&!s4) //gap goc vuong trai

Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 17


Đề tài: Thiết kế robot dò đường
{
dc_trai_dung;
dong_co_phai(tien,100);
while(!s3);
}
else if(!s1&&!s2&&s3&&s4) //gap goc vuong phai
{

dong_co_trai(tien,100);
dc_phai_dung;
while(!s2);
}
else if(s1&&s2&&s3&&s4)
//gap vach dich
{
dong_co_trai(tien,100);
dong_co_phai(tien,100);
while(s1||s4);
so_vong--;
bao_vong();
}
}
}
/*********Ham chinh*************************/
void main()
{
P1=0xff;
s1=1;s2=1;s3=1;s4=1;
while(1)
{
TR0=0;
TR1=0;
init_ngat();
dc_trai_dung;
dc_phai_dung;
run();
}
}


Nhóm 1_D09XLTH1

Đồ án thiết kế hệ thống nhúng

Page 18



×