Lời mở đầu
 Đồ án môn học 1 là đồ án đầu tiên trong chương trình học của em, nên đây là đồ án rất quan trọng, là nền tảng để em thực hiện những đồ án sau này. 
 Trong quá trình thực hiện đồ án, được sự giúp đỡ tận tình của thầy Nguyễn 
 Thanh Phương và thầy Phạm Quốc Phương em đã thu được nhiều kiến thức quý báu giúp em rất nhiều trong quá trình học và làm việc của em trong tương lai : được tiếp xúc với vi điều khiển họ AVR ( Atmega8), biết cách thiết kế mạch in bằng phần mềm OrCaD, thi công mạch in v.v. 
 Trong quá trình thực hiện đồ án, do em chưa có nhiều kinh nghiệm nên không tránh khỏi những sai sót. Mong nhận được sự góp ý của các thầy để được hoàn thiện hơn. 
 Một lần nữa em xin chân thành cảm ơn sự quan tâm giúp đỡ của quý thầy trong quá trình thực hiện đồ án để em hoàn thành đồ án này và mong được sự giúp đỡ của các thầy trong các đồ án sau. 
Giới thiệu
 I. Tổng quan
 1. Cấu trúc 
 2. Hệ thống điều khiển
 3. Sơ đồ nguyên lý hệ thống điều khiển
 II. Hoạt động 
 1. Đặc tả đường đua
 2. Hoạt động của động cơ Servo
 3. Hoạt động của sensor
 4. Giải thuật
 5. Code điều khiển
III. Ứng d ng, hạn chế và hướng giải quyết
                
              
                                            
                                
            
 
            
                 28 trang
28 trang | 
Chia sẻ: banmai | Lượt xem: 5350 | Lượt tải: 4 
              
            Bạn đang xem trước 20 trang tài liệu Đồ án Xe đua dò line, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Đồ án môn học 1 Page 1 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 Robot dò line 
LỜI MỞ ĐẦU 
Đồ án môn học 1 Page 2 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 Lời đầu tiên, em xin chân thành cảm ơn thầy Nguyễn Thanh Phương và thầy 
Phạm Quốc Phương đã giúp đỡ em rất nhiều trong quá trình thực hiện đồ án này! 
 Đồ án môn học 1 là đồ án đầu tiên trong chương trình học của em, nên đây là 
đồ án rất quan trọng, là nền tảng để em thực hiện những đồ án sau này. 
 Trong quá trình thực hiện đồ án, được sự giúp đỡ tận tình của thầy Nguyễn 
Thanh Phương và thầy Phạm Quốc Phương em đã thu được nhiều kiến thức quý 
báu giúp em rất nhiều trong quá trình học và làm việc của em trong tương lai : 
được tiếp xúc với vi điều khiển họ AVR ( Atmega8), biết cách thiết kế mạch in 
bằng phần mềm OrCaD, thi công mạch in…v.v. 
 Trong quá trình thực hiện đồ án, do em chưa có nhiều kinh nghiệm nên không 
tránh khỏi những sai sót. Mong nhận được sự góp ý của các thầy để được hoàn 
thiện hơn. 
 Một lần nữa em xin chân thành cảm ơn sự quan tâm giúp đỡ của quý thầy trong 
quá trình thực hiện đồ án để em hoàn thành đồ án này và mong được sự giúp đỡ 
của các thầy trong các đồ án sau. 
 SVTH 
 Phạm Quốc Gia 
MỤC LỤC 
Đồ án môn học 1 Page 3 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
Giới thiệu…………………………………………………….4 
I. Tổng quan………………………………………………...4 
1. Cấu trúc ……………………………………………4 
2. Hệ thống điều khiển……………………………… ..4 
3. Sơ đồ nguyên lý hệ thống điều khiển……………...5 
II. Hoạt động…………………………………………………7 
1. Đặc tả đường đua…………………………………...7 
2. Hoạt động của động cơ Servo………………………10 
3. Hoạt động của sensor……………………………….11 
4. Giải thuật……………………………………………12 
5. Code điều khiển…………………………………….13 
III. Ứng dụng, hạn chế và hướng giải quyết…………………...28 
Đồ án môn học 1 Page 4 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
GIỚI THIỆU 
Tự động hóa là tổng hoà của nhiều lĩnh vực như cơ khí, điều khiển, công nghệ 
thông tin và cơ điện tử. Các lĩnh vực này kết hợp lại với nhau tạo thành các hệ thống 
tự động hóa và cao hơn nữa là tự động hóa toàn bộ quá trình sản xuất. Ngành công 
nghiệp tự động hóa ngày càng có vai trò quan trọng và hết sức cần thiết để đáp ứng 
các mục tiêu phát triển kinh tế, nhất là trong tiến trình công nghiệp- hiện đại hóa 
nhanh như hiện nay. Nó đòi hỏi một nguồn nhân lực có trình độ cao để vận hành. 
Trên thế giới hiện nay có rất nhiều loại robot: 
Quy mô lớn như: Những cánh tay máy trong các dây chuyền sản xuất, những hệ thống 
sản xuất tự động. 
Nhỏ hơn là những robot có khả năng di chuyển, làm những công việc nguy hiểm thay 
thế con người, robot giúp người già, robot bán hàng…v.v. 
 Trong đồ án lần này em thực hiện làm robot dò line, so với những robot trên thì 
nó chỉ là 1 robot nhỏ, đơn giản nhưng đây là nền tảng để em làm được những cái lớn 
hơn, có ích hơn trong quá trình học tập và làm việc của em sau này. 
I. 
Tổng quan: 
1. Cấu trúc: 
Cấu trúc của robot gồm: 
- Hai bánh xe sau được nối với hai motor truyền động cho xe. 
- Hai bánh xe trước được điều khiển bẳng động cơ Servo 
- Bo mạch chủ dùng chíp AVR Atmega8 để tiếp nhận tín hiệu từ sensor và 
phát lệnh điều khiển hoạt động của xe. 
- Hệ thống dò đường ( Sensor) gồm 6 cặp quang trở- led siêu sáng. 
Đồ án môn học 1 Page 5 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
2. Hệ thống điều khiển: 
Bo mạch chủ sử dụng chip AVR Atmega8 
Hình 1: Chip Atmega8 
3. Sơ đồ nguyên lý mạch điều khiển: 
• Mạch Nguồn: 
 Hình 2: Sơ đồ mạch nguồn 
Mạch nguồn dùng ic ổn áp 7805 từ nguồn 12 v để tạo ra điện áp 5v cung cấp 
cho vi điều khiển và cầu chì bảo vệ ic. 
Đồ án môn học 1 Page 6 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
• Mạch điều khiển: 
 Hình 3: Sơ đồ mạch điều khiển 
 Tín hiệu từ sensor được đọc về các chân trên Port.C của IC. 
Vì chip Atmega8 chỉ có 2 chân PWM nên PIND.4 được dùng làm chân điều chế xung 
để điều khiieenr góc quay của động cơ RC Servo. 
Bốn PIN 0,5,6,7 của Port.D được dùng để đưa tín hiệu điều khiển 2 cầu H L298_A và 
L298_B. 
Hai chân PINB.1, PINB.2 điều chế xung PWM điều khiển 2 cầu H qua đó điều chỉnh 
tốc độ của hai động cơ. 
Đồ án môn học 1 Page 7 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
• Mạch công suất: 
Hình 4: Sơ đồ phần mạch công suất 
Trong mỗi IC L298 được tích hợp 2 cầu H, mỗi cầu H chịu được dòng 2 Ampe. Khi 
nối các chân có cùng chức năng của 2 cầu H trên IC với nhau thì IC có thể cung cấp 
được dòng 4 Ampe đủ để cho động cơ hoạt động hết công suất. 
Cần gắn tản nhiệt cho IC L298 vì trong quá trình hoạt động IC rất nóng dễ hỏng IC. 
II. HOẠT ĐỘNG 
1. Đặc tả đường đua: 
Cấu tạo đường đua như sau: 
Đồ án môn học 1 Page 8 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
* Dày 30mm 
* Rộng 300mm 
Hình 5 
 Mặt đường chạy của đường đua (xem hình 6) bao gồm màu trắng, màu đen, 
và màu xám. Trong đó phần màu trắng dùng để xác định khúc đường cua 
hay chuyển làn đường. 
 Hình 6 
Toàn bộ đường đua là sự kết hợp của đường thẳng, đường vòng, đường 
ngoặt (góc cua 900), đường vòng hình chữ S (bán kính bên trong tối thiểu là 
450mm) và độ dốc khi lên xuống không quá 700 (xem trong hình 7) 
Đồ án môn học 1 Page 9 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
Hình 7 
 Ở khúc ngoặt 900 sẽ có 2 vạch màu trắng để báo hiệu, độ rộng của mỗi vạch 
màu trắng là 20mm, khoảng cách của 2 vạch màu trắng này là 30mm, và 
chúng được đặt cách khúc ngoặt từ 500mm đến 100mm (xem hình 8). 
Hình 8 
 Ở khúc chuyển làn đường, chiều dài và bề rộng ở khúc chuyển làn đường 
đều là 600mm. Có 2 vạch màu trắng để báo hiệu, độ rộng của mỗi vạch 
trắng này là 20mm, khoảng cách của 2 vạch màu trắng này là 30mm, chúng 
được đặt một bên (bên trái hay bên phải) tùy thuộc vào hướng của phần 
chuyển đường và cách khúc ngoặt từ 300mm đến 1000mm. Đường màu 
trắng trung tâm sẽ xuất hiện từ điểm 200mm đến 400mm (xem hình 9). 
Đồ án môn học 1 Page 10 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
Hình 9 
2. Hoạt động của động cơ servo: 
Hình 10: Cấu tạo động cơ Servo 
RC servo là một loại động cơ điện đặc biệt có khả năng quay cơ cấu chấp hành 
tới một vị trí chính xác và giữ cứng tại vị trí đó ngay cả khi cơ cấu chấp hành bị 
đẩy trở lại. Dải góc quay chuẩn của đầu trục ra thường là là 90 và 180 độ. 
Đồ án môn học 1 Page 11 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
Động cơ servo được điều khiển bằng mạch điều khiển. mạch điều khiển bằng 
xung vuông có độ rộng 1ms ->2ms, tần số 50 -> 60 hz. 
Để điều khiển servo quay theo các góc cố định thì chip điều khiển phải phát 
xung với độ rộng từ 1ms đến 2ms. Trên hình bên là mô tả về tín hiệu điều khiển này: 
1ms ứng với góc quay nhỏ nhất -900 và 2ms ứng với góc quay lớn nhất của servo 900 
nên góc quay ở giữa 00 ứng với độ rộng xung là 1,5 ms. 
Vì thế RC servo được sử dụng để điều khiển hướng di chuyển của robot một 
cách chính xác và đáp ứng tốt yêu cầu đặt ra. 
3. Hoạt động của sensor dò đường: 
Cần dò đường đưa ra phía trước, gồm có 6 cặp quang trở-Led siêu sáng nằm 
song song với nhau. Khi hoạt động ánh sáng từ led chiếu xuống đường nếu gặp đường 
line màu trắng ánh sáng phản chiếu trở lại quang trở tương ứng, lúc đó tín hiệu được 
truyền về chân tương ứng ở PortC của Vi điều khiển là mức [1].Nếu ánh sáng từ led 
chiếu xuống gặp nền đen của đường đua thì ánh sáng bị hấp thụ hết, lúc đó tín hiệu từ 
sensor báo về portD vi điều khiển là mức [0]. 
Đồ án môn học 1 Page 12 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
4. Ý tưởng giải thuật: 
Khi xe hoạt động, sensor dò đường báo tín hiệu về Vi điều khiển để biết được vị 
trí tương đối của xe so với đường đi. Tương ứng với từng tín hiệu Vi điều khiển sẽ 
phát lệnh điều khiển đến RC Servo và 2 động cơ kéo 2 bánh xe truyền động. 
 Việc điều khiển bẻ Servo cần liên tục và chính xác để khi xe chạy tốc độ cao 
vẫn luôn bám được line chỉ đường. Vì thế ta sử dụng ngắt tràn timer0 để tạo ra thời 
gian kiểm tra của servo là 20ms. Khi đó cứ mỗi 20ms thì servo được điều chỉnh hướng 
quay một lần đảm bảo robot di chuyển đúng line. 
 Khi gặp vạch báo hiệu bẻ góc 900 hoặc chuyển line thì vi điều khiển phát lệnh 
xuống 2 động cơ giảm tốc độ cho xe để xe dễ dàng xử lý sau đó chờ tín hiệu tiếp theo 
để bẻ góc hoặc chuyển line. 
Tốc độ của xe được điều khiển bằng 2 chân điều chế xung PWM (PWM1A và 
PWM1B) cũng hỗ trợ trong việc điều chỉnh hướng di chuyển của xe. 
Đồ án môn học 1 Page 13 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
5. Code điều khiển: 
/***************************************************** 
Project : DO AN MON HOC 1 ( Robot do line) 
Version : 1.0 
Date : 20/12/2010 
Author : Pham Quoc Gia 
Company : Lop 08-DTD 
Comments: 
Chip type : ATmega8 
Program type : Application 
Clock frequency : 12.000000 MHz 
Memory model : Small 
External SRAM size : 0 
Data Stack size : 256 
*****************************************************/ 
 #include 
 #include 
// Declare your global variables here 
 int x=0; 
/*************************************************** 
// Timer/Counter 1 initialization 
// Clock source: System Clock 
// Clock value: 12000.000 kHz 
// Mode: Fast PWM top=ICR1 
// OC1A output: N on-Inv. 
// OC1B output: N on-Inv. 
// Input Capture on Falling Edge 
***************************************************/ 
Đồ án môn học 1 Page 14 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 void setup_pwm() 
 { 
 TCCR1A=0xA2; //Thiet lap PWM cho TCCR1A& 1B 
 TCCR1B=0x19; 
 TCNT1H=0x00; 
 TCNT1L=0x00; 
 ICR1H=0X00; 
 ICR1L=0xff; 
 } 
//----------------------------------- 
 void set_pwm1A(int duty1A) 
 { 
 OCR1AH=0x00; 
 OCR1AL=(duty1A); 
 } 
//----------------------------------- 
 void set_pwm1B(int duty1B) 
 { 
 OCR1BH=0x00; 
 OCR1BL=(duty1B); 
 } 
//----------------------------------- 
 void SPEED(int L, int R) 
 { 
 set_pwm1A(R-8); 
 set_pwm1B(L); 
 } 
//----------------------------------- 
Đồ án môn học 1 Page 15 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
/* 
>>>>>DAO CHIEU DONG CO<<<<<< 
*/ 
//----------------------------------- 
 void DAO_A() 
 { 
 PORTD.5=~PORTD.5; 
 PORTD.6=~PORTD.6; 
 } 
//----------------------------------- 
 void DAO_B() 
 { 
 PORTD.7=~PORTD.7; 
 PORTB.0=~PORTD.0; 
 } 
//----------------------------------- 
//**********CHUYEN LINE********/ 
 void CHUYEN_PHAI() 
 { 
 while (1) 
 { 
 if (PINC==0x0c) x=0;//STRANGE 
 if (PINC==0x18) x=-18;//LEFT 18 
 if (PINC==0x06) x= 18;//RIGHT 18 
 if (PINC==0x00) //CHANGE LANE 
 { 
 x= 18; 
Đồ án môn học 1 Page 16 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 SPEED(235,160); 
 while(1) 
 { 
 if (PINC.1==1) 
 { x=-65; 
 SPEED(160,200); 
 delay_ms(90); 
 break; 
 } 
 } 
 break; 
 } 
 } 
 } 
//----------------------------------- 
 void CHUYEN_TRAI() 
 { 
 while(1) 
 { 
 if (PINC==0x0c) x=0; //STRANGE 
 if (PINC==0x18) x=-18; //LEFT 18 
 if (PINC==0x06) x= 18; //RIGHT 18 
 if (PINC==0x00) //CHANGE LANE 
 { 
 x= -18; 
 SPEED(160,235); 
 while(1) 
 { 
Đồ án môn học 1 Page 17 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 if(PINC.4==1) 
 { 
 x=65; 
 SPEED(210,160); 
 delay_ms(90); 
 break; 
 } 
 } 
 break; 
 } 
 } 
 } 
//----------------------------------- 
 void BE90() 
 { 
 SPEED(190,190); 
 DAO_A(); 
 DAO_B(); 
 SPEED(220,220); 
 delay_ms(230); 
 SPEED(190,190); 
 DAO_A(); 
 DAO_B(); 
 while(1) 
 { 
 if (PINC==0x18) x=-10;//LEFT 10 
 else if (PINC==0x06) x= 10;//RIGHT 10 
 else x=x; 
Đồ án môn học 1 Page 18 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 //------------------------------------------ 
 if 
 (PINC==0x3c||PINC==0x38||PINC==0x3e||PINC.5==1) 
 { 
 while(1) 
 { 
 if(PINC==0x00) 
 { 
 x= -65; 
 DAO_B(); 
 //Be sang trai 90 
 SPEED(200,245); 
 delay_ms(280); 
 SPEED(180,200); 
 while(1) 
 { 
 if(PINC.4==1) 
 { 
 DAO_B(); 
 break; 
 } 
 } 
 break; 
 } 
 } 
 break; 
 } 
 //------------------------------------------ 
Đồ án môn học 1 Page 19 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 if 
 (PINC==0x0f||PINC==0x07||PINC==0x1f||PINC.0==1) 
 { 
 while(1) 
 { 
 if(PINC==0x00) 
 { 
 x= 65; 
 DAO_A(); 
 //Be sang phai 90 
 SPEED(245,200); 
 delay_ms(280); 
 SPEED(200,180); 
 while(1) 
 { 
 if(PINC.3==1) 
 { 
 DAO_A(); 
 break; 
 } 
 } 
 break; 
 } 
 } 
 break; 
 } 
 } 
Đồ án môn học 1 Page 20 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 } 
/************************************************ 
*****Be goc***** 
Phai(0 -> 90); trai(0 -> -90) 
1485===>>>Giua 
 2200 >>> Phai 
 550 >>> Trai 
*************************************************/ 
//>>>>>>>>>>>>>Ngat tran timer0<<<<<<<<<<<<<<<<<<<// 
 interrupt [TIM0_OVF] void timer0_ovf_isr(void) 
 { 
 TCNT0=0x12; 
 switch (x) 
 { 
 case (0): 
 PORTD.4=1; 
 delay_us(1485); 
 PORTD.4=0; 
 break; 
 case (10): 
 PORTD.4=1; 
 delay_us(1573); 
 PORTD.4=0; 
 break; 
 case (18): 
 PORTD.4=1; 
 delay_us(1590); 
 PORTD.4=0; 
Đồ án môn học 1 Page 21 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 break; 
 case (20): 
 PORTD.4=1; 
 delay_us(1620); 
 PORTD.4=0; 
 break; 
 case (25): 
 PORTD.4=1; 
 delay_us(1800); 
 PORTD.4=0; 
 break; 
 case (45): 
 PORTD.4=1; 
 delay_us(1790); 
 PORTD.4=0; 
 break; 
 case (65): 
 PORTD.4=1; 
 delay_us(2040); 
 PORTD.4=0; 
 break; 
 case (-10): 
 PORTD.4=1; 
 delay_us(1470); 
 PORTD.4=0; 
 break; 
 case (-18): 
 PORTD.4=1; 
Đồ án môn học 1 Page 22 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 delay_us(1387); 
 PORTD.4=0; 
 break; 
 case (-20): 
 PORTD.4=1; 
 delay_us(1347); 
 PORTD.4=0; 
 break; 
 case (-25): 
 PORTD.4=1; 
 delay_us(1167); 
 PORTD.4=0; 
 break; 
 case (-45): 
 PORTD.4=1; 
 delay_us(1090); 
 PORTD.4=0; 
 break; 
 case (-65): 
 PORTD.4=1; 
 delay_us(940); 
 PORTD.4=0; 
 break; 
 } 
 } 
//----------------------------------------------------------------- 
 void main(void) 
Đồ án môn học 1 Page 23 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 { 
 PORTD.5=1; //Dieu khien cau H1 
 PORTD.6=0; 
 //------------------------- 
 //----DIEU KHIEN DONG CO------ 
 PORTD.7=1; //Dieu khien cau H2 
 PORTB.0=0; 
 //------------------------- 
 PORTB.1=0; 
 PORTB.2=0; 
 DDRB=0x07; 
 DDRC=0x00; 
 PORTD.4=0; 
 PORTD.2=1; 
 PORTD.3=1; 
 DDRD=0xf0; 
 //------------------------- 
 /*>>>>>Setup Timer0<<<<<<<<*/ 
 TCNT0=0x12; //Start at 18 >>> count time = 236*85us=20.06ms 
 TCCR0=0x05; //MODE CLOCK/1024 
 //------------------------- 
 //INTERRUPTS 
 TIMSK=0x01; //Cho phep ngat ngoai 
 #asm ("sei") 
 //-------PWM--------------- 
 setup_pwm(); 
 //------------------------- 
 while (1) 
Đồ án môn học 1 Page 24 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 { 
 if(PIND.2==0) 
 { 
 x= 0; 
 SPEED(230,230); 
 delay_ms(50); 
 SPEED(250,250); 
 delay_ms(50); 
 SPEED(230,230); 
 delay_ms(50); 
 while(1) 
 { 
 switch(PINC) 
 { 
 /********************************************************* 
 >>>>>>>>>>>>>>>>>> NORMAL<<<<<<<<<<<<<<<<< 
 *********************************************************/ 
 case (0x0c): // (001100) 
 x=0; 
 SPEED(215,215); 
 break; 
 /*********************************************************/ 
 case (0x18): // (011000) 
 x=-10; 
 SPEED(160,205); 
 break; 
 /*************************************************************************/ 
 case (0x06): // (000110) 
Đồ án môn học 1 Page 25 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 x= 10; 
 SPEED(205,160); 
 break; 
 SPEED(205,160); 
 break; 
 /*******************************************************/ 
 case (0x30): // (110000) 
 x=-25; 
 SPEED(160,225); 
 break; 
 /*********************************************************/ 
 case (0x03): // (000011) 
 x= 25; 
 SPEED(225,160); 
 break; 
 /********************************************************/ 
 //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<< 
 case (0x3c): // (111100) 
 delay_ms(10); 
 if(PINC==0x3f) 
 { 
 BE90(); 
 break; 
 } 
 SPEED(200,200); 
 DAO_A(); 
 DAO_B(); 
 delay_ms(100); 
Đồ án môn học 1 Page 26 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 DAO_A(); 
 DAO_B(); 
 CHUYEN_TRAI(); 
 break; 
 // ---------------------------------------- 
 //Chuan bi chuyen line trai 
 case (0x38): // (111000) 
 delay_ms(10); 
 if(PINC==0x3f) 
 { 
 BE90(); 
 break; 
 } 
 SPEED(200,200); 
 DAO_A(); 
 DAO_B(); 
 delay_ms(100); 
 DAO_A(); 
 DAO_B(); 
 CHUYEN_TRAI(); 
 break; 
 //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
 case (0x0f): // (001111) 
 delay_ms(10); 
 if(PINC==0x3f) 
 { 
 BE90(); 
 break; 
Đồ án môn học 1 Page 27 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 } 
 SPEED(200,200); 
 DAO_A(); 
 DAO_B(); 
 delay_ms(150); 
 DAO_A(); 
 DAO_B(); 
 CHUYEN_PHAI(); 
 break; 
 // ------------------------------------------- 
 //Chuan bi chuyen line phai 
 case (0x07): // (000111) 
 delay_ms(10); 
 if(PINC==0x3f) 
 { 
 BE90(); 
 break; 
 } 
 SPEED(200,200); 
 DAO_A(); 
 DAO_B(); 
 delay_ms(150); 
 DAO_A(); 
 DAO_B(); 
 CHUYEN_PHAI(); 
 break; 
 //>>>>>> MEET A CROSS <<<<<<<<<< 
 case (0x3f): // (111111) 
Đồ án môn học 1 Page 28 
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia 
 ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH 
 BE90(); 
 break; 
 //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
 default:x=x; // DEFAULT 
 } 
 } 
 } 
 } 
 } 
/*************************END****************************/ 
III. Ứng dụng, hạn chế và hướng giải quyết: 
1. Ứng dụng: 
 Dựa vào cách hoạt động của robot dò line chúng ta có thể phát triển rộng hơn 
để tạo nên những robot có ứng dụng thực tế hơn như robot thay con người đi 
vào những nơi nguy hiểm, những robot làm 1 công việc trên 1 hành trình cố 
định..v.v. 
2. Hạn chế: 
- Tốc độ chưa cao. 
- Dễ bị trượt khỏi đường khi chạy vận tốc cao, khi bẻ cua, xuống dốc. 
3. Khắc phục: 
- Tăng số lượng sensor trên cần dò line. 
- Dùng động cơ bẻ góc RC Servo có đáp ứng tốt. 
- Dùng Vi điều khiển có tốc độ xử lý cao hơn. 
- Chất liệu bánh xe bám đường tốt. 
********************************END********************************* 
            Các file đính kèm theo tài liệu này:
 do_an_robot_do_line_4853.pdf do_an_robot_do_line_4853.pdf