Đề 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.

pdf32 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3763 | Lượt tải: 1download
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:

  • pdfbao_cao_mcr_1992.pdf