Đề tài Môn vi điều khiển xe dò line mcr micom car rally
          
        
            
               
            
 
            
                
                    Lưu ý một số PIC không có 2 chân PGC, PGD mà 
chúng được đặt tên ICSPCLK, ICSPDAT hay PGECx, 
PGEDx nhưng chức năng không thay đổi.
 Theo khuyến cáo của Microchip các chân AVdd, AVss 
(nếu có) cũng phải được cấp nguồn. Hai chân PGC và PGD 
lúc nạp không được nối với linh kiện có tải lớn (ví dụ led).
 Trên phần mềm chọn họ PIC (Combo Box thứ nhất) và 
click Detect Device để kiểm tra kết nối với PIC. Việc chọn 
họ của PIC cần phải chọn đúng, đặc biệt khi bạn sử dụng PIC 
3.3 volt.
                
              
                                            
                                
            
 
            
                 32 trang
32 trang | 
Chia sẻ: lvcdongnoi | Lượt xem: 4200 | Lượt tải: 1 
              
            Bạn đang xem trước 20 trang tài liệu Đề tài Môn vi điều khiển xe dò line mcr micom car rally, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
 TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT TP.HCM 
KHOA CƠ KHÍ CHẾ TẠO MÁY 
 
BÁO CÁO MÔN VI ĐIỀU KHIỂN 
XE DÒ LINE MCR 
Micom Car Rally 
 CBGD. Nguyễn Tấn Nó 
Thành viên: 
1. Phạm Anh Vũ 11911028 
2. Võ Thanh Phúc 11911018 
3. Ngô Văn Tửng 11911027 
4. Phạm Thanh Sơn 11911021 
5. Trƣơng Đăng Khoa 11911009 
TP.HCM, Ngày 5 tháng 1 năm 2014 
Báo cáo Micom Car Rally 
2 | P a g e 
GIỚI THIỆU 
 Tự động hóa là tổng hòa 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 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. 
 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… 
 Lần này nhóm thực hiện làm xe MCR (xe dò line). Đây là cơ 
sở, nền tảng để 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 sau này. 
Báo cáo Micom Car Rally 
3 | P a g e 
CHƢƠNG 1: 
PHẦN CƠ KHÍ 
Báo cáo Micom Car Rally 
4 | P a g e 
Thiết kế xe bằng Solidwork : 
 Vật tư làm xe là mica dày 2mm. 
Các phần chính: 
+ Thân chính 
Hình 1. Thân chính 
+ Thanh dò line 
Hình 2. Thanh dò line 
Báo cáo Micom Car Rally 
5 | P a g e 
 Hai bánh xe sau được làm từ ống nước Ø42 và mica, sử dụng 
bánh răng trong cơ cấu truyền động xoay qua lại của quạt 
máy. 
Nhiệm vụ: Motor quay, thông qua dây đai sẽ truyền động cho 
bánh xe tạo lực kéo xe về phía trước. 
Hình 3. Cấu tạo của bánh xe sau. 
Báo cáo Micom Car Rally 
6 | P a g e 
Hình 4. Bánh xe sau. 
 Hai bánh xe trước lấy từ bộ lắp ghép kỹ thuật cấp 1. 
Hình 5. Bánh trước và động cơ servo. 
Báo cáo Micom Car Rally 
7 | P a g e 
 Các vòng tròn có nhiệm vụ cố định động cơ với trục bánh xe 
Hình 6. Tấm mica cố định động cơ 
Báo cáo Micom Car Rally 
8 | P a g e 
Thiết kế xe bằngAutoCAD : 
 File thiết kế (dùng cắt mica): 
Hình 7. File cắt mica của xe 
Báo cáo Micom Car Rally 
9 | P a g e 
CHƢƠNG 2: 
MẠCH ĐIỆN 
Báo cáo Micom Car Rally 
10 | P a g e 
1. Board cảm biến dò đƣờng: 
a. Hình dáng: 
Hình 8. Hình dáng thực tế board dò đường 
b. Sơ đồ nguyên lý: 
Hình 9. Nguyên lý 
c. Mạch in: 
Hình 10. Mạch in board cảm biến 
Báo cáo Micom Car Rally 
11 | P a g e 
d. Nguyên lý hoạt động: 
Board cảm biến gồm 8 đầu dò sensor, mỗi đầu dò nguyên lý như 
hình 9. Nguồn áp VCC = 5V lấy từ board xử lý cảm biến, led 
phát ra led siêu sáng phát ánh sáng trắng, phần thu dùng quang 
trở, qua cầu phân áp R1 và LDR 1 tín hiệu ra là áp thay đổi tùy 
thuộc vào lượng ánh sáng phản xạ về. Tín hiệu ra in1 được đưa 
đến mạch xử lý cảm biến. 
2. Board công suất 2 DC motor L298: 
a. Hình dáng: 
Hình 11. Hình dáng board công suất 2 DC motor L298 
Báo cáo Micom Car Rally 
12 | P a g e 
b. Sơ đồ nguyên lý: 
a. 
b. 
Hình 12. Nguyên lý board công suất 2 DC motor L298 
Báo cáo Micom Car Rally 
13 | P a g e 
c. Mạch in: 
Hình 13. Mạch in board công suất 
d. Nguyên lý hoạt động: 
Board công suất 2 motor gồm các khối: 
 + Khối ổn áp nguồn: gồm nguồn 5V cấp chi các mạch 
logic, 6V cấp cho RC servo motor. 
 + Khối mạch logic: gồm các cổng NOT và NAND kết 
hợp nhau nhằm tạo ra các ngõ vào tín hiệu PWM (tốc độ), DIR 
(đảo chiều quay) và các ngõ ra in1, in2, in3, in4 tương thích với 
logic điều khiển L298. Bảng trạng thái tín hiệu điều khiển 1 
kênh DC Motor như hình sau: 
Báo cáo Micom Car Rally 
14 | P a g e 
Hình 14. Bảng trạng thái tín hiệu điều khiển 1 kênh DC Motor 
Trong bảng trên ta thấy: để motor có thể quay thuận, quay 
ngược và thay đổi tốc độ ta cần 2 kênh điều khiển xung PVM, 
điều này lại hạn chế đối với vi điều khiển hỗ trợ ít kênh PVM. 
Để giải quyết điều này thì khối logic đã đảm nhiệm, với ngõ vào 
PWM và DIR ta dễ dàng điều khiển DC Motor, lúc này ta chỉ 
cần một kênh PWM để tay đổi tốc độ và 1 chân tín hiệu số để 
đảo chiều quay. 
Báo cáo Micom Car Rally 
15 | P a g e 
3. Board vi điều khiển PIC16F887: 
a. Hình dáng: 
Hình 15. Hình dáng board vi điều khiển PIC16F887 
b. Sơ đồ nguyên lý: 
Khối vi điều khiển: 
Hình 16. Khối vi điều khiển 
Báo cáo Micom Car Rally 
16 | P a g e 
Các khối khác: 
Hình 17. Khối nút nhấn, LED, và còi BUZZ 
Các cổng xuất - nhập: 
Hình 18. Các cổng xuất nhập 
Báo cáo Micom Car Rally 
17 | P a g e 
Khối nguồn: 
Hình 19. Sơ đồ nguyên lý khối nguồn 
c. Mạch in: 
Hình 20. Mạch in boar vi điều khiển 
Báo cáo Micom Car Rally 
18 | P a g e 
d. Nguyên lý hoạt động: 
+ Khối vi điều khiển: sử dụng PIC16F887, dao động xung 20 
Mhz. 
+ Các chức năng: NUT1, NUT2, NUT3 sử dụng cho các 
chức năng START, MODE….. dùng INT của chân RB0, còi 
BUZZER dùng cho báo hiệu hay gỡ rối chương trình. 
+ Các cổng xuất nhập: dùng để kết nối mạch nạp, mạch 
nguồn, mạch công suất, mạch cảm biến. 
+ Khối nguồn vào: dùng 5V, sử dụng IC ổn áp 7805. 
Báo cáo Micom Car Rally 
19 | P a g e 
*Hình ảnh sản phẩm: 
Hình 21. Sản phẩm sau khi hoàn thành phần cơ khí và mạch điện. 
Báo cáo Micom Car Rally 
20 | P a g e 
CHƢƠNG 3: 
LẬP TRÌNH 
Báo cáo Micom Car Rally 
21 | P a g e 
1. Lập trình bằng phần mềm MPLAP 
Code 
Main.c 
#include 
__CONFIG (HS & WDTDIS & PWRTEN & MCLREN & UNPROTECT & 
DUNPROTECT& BORDIS & IESODIS & FCMDIS & LVPDIS); 
#include "main.h" 
#include "Init.h" 
#include "doccambien.h" 
#include "Motor.h" 
#define _XTAL_FREQ 20000000 
char cambien; 
char cline, cua; 
unsigned char TURN; 
char RUN, x; 
int y; 
void main(){ 
 init(); 
 y=30000; 
 x=0; 
 while(1){ 
 if (RUN == 0) { 
 TURN = CENTER; 
 LEDA=0; 
 LEDB=0; 
 DIR_L=0; 
 DIR_R=0; 
 Left_Wheel(0); 
 Right_Wheel(0); 
 } 
 while(RUN){ 
 read_adc(); 
 switch(cambien) 
 { 
 case 0b00011000: 
 TURN = CENTER; 
 Right_Wheel(250); 
 Left_Wheel(250); 
 break; 
 case 0b00001000: 
 TURN = SlightRight; 
 Right_Wheel(250); 
 Left_Wheel(250); 
 break; 
 case 0b00001100: 
Báo cáo Micom Car Rally 
22 | P a g e 
 TURN = SlightRight; 
 Right_Wheel(150); 
 Left_Wheel(190); 
 break; 
 case 0b00000100: 
 TURN = SlightRight-3; 
 Right_Wheel(150); 
 Left_Wheel(190); 
 break; 
 case 0b00000110: 
 TURN = SmallRight; 
 Right_Wheel(150); 
 Left_Wheel(190); 
 break; 
 case 0b00000111: 
 TURN = MiddleRight; 
 Right_Wheel(130); 
 Left_Wheel(210); 
 break; 
 case 0b00000011: 
 TURN = MiddleRight; 
 Right_Wheel(100); 
 Left_Wheel(200); 
 break; 
 case 0b00000001: 
 TURN = LargeRight; 
 Right_Wheel(100); 
 Left_Wheel(200); 
 break; 
 case 0b00010000: 
 TURN = SlightLeft; 
 Right_Wheel(250); 
 Left_Wheel(250); 
 break; 
 case 0b00110000: 
 TURN = SlightLeft; 
 Right_Wheel(190); 
 Left_Wheel(150); 
 break; 
 case 0b00100000: 
 TURN = SlightLeft+3; 
 Right_Wheel(190); 
 Left_Wheel(150); 
 break; 
 case 0b01100000: 
Báo cáo Micom Car Rally 
23 | P a g e 
 TURN = SmallLeft; 
 Right_Wheel(190); 
 Left_Wheel(150); 
 break; 
 case 0b11100000: 
 TURN = MiddleLeft; 
 Right_Wheel(190); 
 Left_Wheel(130); 
 break; 
 case 0b11000000: 
 TURN = MiddleLeft; 
 Right_Wheel(190); 
 Left_Wheel(110); 
 break; 
 case 0b10000000: 
 TURN = LargeLeft; 
 Right_Wheel(190); 
 Left_Wheel(110); 
 break; 
 case 0b11111000: 
 TURN = CENTER; 
 y--; 
 break; 
 case 0b11110000: 
 TURN = CENTER; 
 y--; 
 break; 
 case 0b11100000: 
 TURN = CENTER; 
 y--; 
 break; 
 case 0b00011111: 
 TURN = CENTER; 
 y++; 
 break; 
 case 0b00001111: 
 TURN = CENTER; 
 y++; 
Báo cáo Micom Car Rally 
24 | P a g e 
 break; 
 case 0b00000111: 
 TURN = CENTER; 
 y++; 
 break; 
 case 0b00000000: 
 x=1; 
 break; 
 default: break; 
 TURN = CENTER; 
 } 
 if (x==1 && y>30050){ 
 y=30000; 
 x=0; 
 TURN = 60; 
 LEDA=1; 
 LEDB=1; 
 __delay_ms(300); 
 } 
 if (x==1 && y<29950){ 
 y=30000; 
 x=0; 
 TURN = 150; 
 __delay_ms(300); 
 } 
 } 
 } 
} 
void interrupt ngat() 
{ 
 //DIEU CHE XUNG DIEU KHIEN RCSERVO 
 if(T0IF==1){ 
 static unsigned int t = 0; 
 TMR0=206; 
 t++; 
 if(t>=2000) 
 { 
 t=0; 
 RC0=1; 
 } 
 if(t>=TURN) RC0=0; 
Báo cáo Micom Car Rally 
25 | P a g e 
 T0IF=0; 
 } 
 //INTERRUPT NUT AN A 
 if (INTF==1){ 
 RUN=1; 
 INTF=0; 
 } 
} 
Main.h 
#define _XTAL_FREQ 20000000 
#define BUZZ RD0 //set 0 thi bat 
SPEAKER 
#define LEDA RD1 //set 1 thi bat 
led 
#define LEDB RD2 
#define BUTA RB1 
#define BUTB RB2 
#define BUTC RB4 
#define DIR_L RC3 
#define DIR_R RC4 
//GOC XOAY RCSERVO 
#define CENTER 110//change 50 to 
160 
#define SlightLeft 115 
#define SmallLeft 125 
#define MiddleLeft 135 
#define LargeLeft 140 
#define SlightRight 105 
#define SmallRight 95 
#define MiddleRight 85 
#define LargeRight 80 
Doccambien.c 
#include 
#include "main.h" 
#include 
extern char cambien; 
float sosanh[8]= {2.1,2.2,2.2,2.3,2.3,2.4,2.0,2.0}; 
Báo cáo Micom Car Rally 
26 | P a g e 
char kenh_adc[8]= 
{0b0000,0b0001,0b0010,0b0011,0b0100,0b0101,0b0110,0b01
11}; 
// Ham đoc nhieu kenh ADC 
void read_adc(void){ 
 cambien=0; 
 static int i; 
 static int temp; 
 temp=0; 
 for(i=0;i< 8;i++){ 
 CHS3=0; 
 CHS2=kenh_adc[i]>>2; 
 CHS1=(kenh_adc[i]>>1) & 0b0001; 
 CHS0=kenh_adc[i] & 0b0001; 
 GODONE=1; 
 while (GODONE); 
 temp=ADRESH; 
 if ((temp*5.0/255.0)<(sosanh[i]+0.6)) 
 cambien+=pow(2,i); 
 } 
} 
Doccambien.h 
#include 
#include "main.h" 
void read_adc(void); 
Init.c 
#include "Init.h" 
#include "main.h" 
void init(void) 
{ 
//KHOI TAO DOC ADC CAM BIEN 
 ANSEL=0xFF; //ANS0-ANS7 0b11111111; 
 TRISA0=1; 
 TRISA1=1; 
 TRISA2=1; 
 TRISA3=1; 
 TRISA5=1; 
 TRISE0=1; 
 TRISE1=1; 
 TRISE2=1; 
Báo cáo Micom Car Rally 
27 | P a g e 
 ADCS1=1; 
 ADCS0=0; 
 VCFG1=0; 
 VCFG0=0; 
 ADFM=0; 
 ADON=1; 
 __delay_ms(5); 
//KHOI TAO SU DUNG NUT AN A 
 ANSELH=0; 
 TRISB0=1; 
 TRISB1=1; 
 TRISB2=1; 
 TRISB4=1; 
 RB0=1; 
 RB1=1; 
 RB2=1; 
 RB4=1; 
 INTE=1; 
 INTF=0; 
 INTEDG=0; 
 GIE=1; 
//KHOI TAO LEDA, LEDB, BUZZ, DIR_L, DIR_R 
 RD0=1; 
 RD1=0; 
 RD1=0; 
 RC3=0; 
 RC4=0; 
 TRISD0=0; 
 TRISD1=0; 
 TRISD2=0; 
 TRISC3=0; 
 TRISC4=0; 
//Khoi tao TM0 TAO PWM RCSERVO 
 T0CS=0; 
 PSA=1; 
 TMR0=206; //xung PWM do phan giai 0.01ms 
Báo cáo Micom Car Rally 
28 | P a g e 
 T0IE=1; 
 T0IF=0; 
 GIE=1; 
 RC0=0; 
 TRISC0=0; 
//Khoi tao PWM DONG CO 
 TRISC1=1; 
 TRISC2=1; 
 PR2=250; 
 CCP1CON=0b00001100; 
 CCP2CON=0b00001100; 
 //Thay doi van toc, 8bit 
 CCPR1L=0; 
 CCPR2L=0; 
 TMR2IF=0; 
 T2CKPS1=T2CKPS0=1; 
 TOUTPS3=TOUTPS2=TOUTPS1=TOUTPS0=1; 
 TMR2ON=1; 
 while(TMR2IF); 
 TRISC2=0; 
 TRISC1=0; 
} 
Init.h 
#include 
#include "main.h" 
void init(void); 
Motor.c 
#include "Motor.h" 
void Right_Wheel(unsigned Vel) 
{ 
 if(CCPR2L!=Vel) 
 { 
 TMR2ON=0; 
 TRISC2=1; 
 CCPR2L=Vel; 
Báo cáo Micom Car Rally 
29 | P a g e 
 TMR2ON=1; 
 TRISC2=0; 
 } 
} 
void Left_Wheel(unsigned Vel) 
{ 
 if(CCPR1L!=Vel) 
 { 
 TMR2ON = 0; 
 TRISC1=1; 
 CCPR1L=Vel; 
 TMR2ON=1; 
 TRISC1=0; 
 } 
} 
Motor.h 
#include 
void Left_Wheel(unsigned Vel); 
void Right_Wheel(unsigned Vel); 
2. Mạch nạp Burn-e 
Hình 22. Giao diện chính 
Báo cáo Micom Car Rally 
30 | P a g e 
Hình 23. Mạch nạp Burn-e thực tế 
*Cách nạp chương trình cho PIC17F887 với mạch nạp Burn-e 
a. Download phần mềm 
 Mạch nạp được điều khiển bởi phần mềm Burn-E 
Programmer 
 Phần mềm yêu cầu .Net Framework 32bit hay .Net 
Framework 64bit phiên bản 2.0 trở lên. 
 Burn-E Programmer khi download thành công là 1 file 
nén, hãy giải nén và thực thi file *.exe duy nhất. 
 Khi có phiên bản mới hơn, hãy download và giải nén 
rồi chép đè lên file và thư mục cũ, mọi thông tin và hiệu 
chỉnh bởi người dùng trước đây vẫn được giữ nguyên. 
b. Kết nối mạch nạp với PC 
 Với chức năng Plug and Play, mạch nạp Burn-E không 
yêu cầu cài đặt Driver. 
 PC nhận ra phần cứng mới ngay khi cấm mạch nạp vào 
cổng USB (dùng cáp USB nối dài khi cần). Mạch nạp báo 
hiệu việc kết nối thành công khi led xanh nhấp nháy nhanh 
(10 Hz). 
 Kiểm tra kết nối trên phần mềm bằng cách click vào 
Hardware Test và nhận đươc thông báo. 
c. Kết nối mạch nạp với PIC 
Báo cáo Micom Car Rally 
31 | P a g e 
 Trên mạch nạp có header ICSP (rất tiện sử dụng với 
kiểu Male & Female) đánh tên theo thứ tự MCLR, VDD, 
GND, PGD, PGC, AUX. Chúng ta sẽ kết nối với PIC theo 
những chân tương ứng, xem datasheet của PIC đang sử dụng 
để biết vị trí của chúng. AUX của ICSP không có tác dụng 
nên để hở. 
 Lưu ý một số PIC không có 2 chân PGC, PGD mà 
chúng được đặt tên ICSPCLK, ICSPDAT hay PGECx, 
PGEDx nhưng chức năng không thay đổi. 
 Theo khuyến cáo của Microchip các chân AVdd, AVss 
(nếu có) cũng phải được cấp nguồn. Hai chân PGC và PGD 
lúc nạp không được nối với linh kiện có tải lớn (ví dụ led). 
 Trên phần mềm chọn họ PIC (Combo Box thứ nhất) và 
click Detect Device để kiểm tra kết nối với PIC. Việc chọn 
họ của PIC cần phải chọn đúng, đặc biệt khi bạn sử dụng PIC 
3.3 volt. 
 Một Số Lƣu Ý Khi Sử Dụng 
 Board ứng dụng có nguồn riêng 
 Nên sử dụng nguồn riêng này cho board ứng dụng, trường 
hợp board ứng dụng có nhiều tải cũng không ảnh hưởng tới 
quá trình nạp. 
 Luôn đặt jumper của Burn-E tại vị trí OFF, khi đó bus 6-
pin không có đường VDD, điện từ nguồn riêng không chạy 
qua Burn-E gây nguy hiểm cho cổng USB của máy tính. 
 Kết nối Burn-E và board ứng dụng 
 Chân MCLR hạn chế tối đa việc sử dụng tụ Reset (100nF), 
đối với sản phẩm Microchip hầu hết vi điều khiển không 
yên cầu tụ Reset, chỉ yêu cầu 1 điện trở kéo lên Vcc. 
 Hai chân PGC và PGD lúc nạp không được nối với linh 
kiện có tải lớn. Vì thế nên xây dựng công tắc nhằm chuyển 
đổi giữa việc nạp và chạy ứng dụng. 
 Vi điều khiển có các chân nguồn của ADC, Microchip đề 
nghị phải cấp nguồn cho chúng. 
 Cáp kết nối từ Burn-E vào PIC có chiều dài không quá 
30cm. 
Báo cáo Micom Car Rally 
32 | P a g e 
 Với board ủi luôn kiểm tra các chân PGC, PGD, AUX bên 
board ứng dụng có bị chạm với nhau hay chạm với GND. 
_____________________________ 
TÀI LIỆU THAM KHẢO 
1. KHT MCR CAR Usermanual.pdf 
2. Hướng dẫn tìm hiểu chương trình TDC MCR.pdf 
3. Huong dan su dung chuong trinh BKIT MCR.pdf 
            Các file đính kèm theo tài liệu này:
 bao_cao_mcr_1992.pdf bao_cao_mcr_1992.pdf