Đề 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 |
Chia sẻ: lvcdongnoi | Lượt xem: 3915 | 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