Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
1,39 MB
Nội dung
TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ HỌC PHẦN: KĨ THUẬT VI ĐIỀU KHIỂN (CN581) BÁO CÁO ĐỒ ÁN ĐỀ TÀI: TÌM HIỂU VỀ CẢM BIẾN SIÊU ÂM VÀ THIẾT KẾ ROBOT TRÁNH VẬT CẢN NHÓM 21 Giáo viên hướng dẫn: Nhóm sinh viên thực hiện: Nguyễn Khắc Nguyên Mai Trọng Hữu B1913028 Nguyễn Hoàng Linh B1913045 Đào Hữu Đức B1913016 Tống Thế Kiệt B1912941 MỤC LỤC GIỚI THIỆU ĐỀ TÀI a Tên mục tiêu đề tài b Các tính c Phương pháp thực THỰC HIỆN a Mơ hình hệ thống i Mô tả sơ lược hệ thống ii Mơ hình hệ thống dạng khối b Thiết kế phần cứng mạch điện .2 i Mô tả sơ lược hoạt động mạch điện ii Sơ đồ khối phần cứng mạch điện .2 iii Thiết kế chi tiết .2 iv Sơ đồ nguyên lý tổng hợp toàn mạch .5 c Thiết kế phần mềm điều khiển .6 i Chức phần mềm ii Lưu đồ chương trình .6 iii Lưu đồ chương trình yếu iv Đoạn code chương trình KẾT QUẢ THỰC HIỆN .13 a Mơ hình thực tế 13 b Kết thực .13 c Nhận xét hệ thống .13 d Hướng phát triển 14 TÀI LIỆU THAM KHẢO 14 PHỤ LỤC 14 a Quá trình thực đề tài 14 b Phân chia công việc 14 ĐỀ TÀI : THIẾT KẾ ROBOT TRÁNH VẬT CẢN GIỚI THIỆU ĐỀ TÀI a Tên mục tiêu đề tài Tên đề tài: Tìm hiểu cảm biến siêu âm thiết kế robot tránh vật cản Mục tiêu: Hiểu cấu tạo, hoạt động, chức ứng dụng cảm biến siêu âm thí nghiệm lĩnh vực thực tế, thiết kế thành cơng mơ hình robot nhỏ có khả di chuyển tránh vật cản b Các tính Có thể di chuyển chuyển hướng phát vật cản phía trước ứng dụng phổ biến robot lau nhà, xe thơng minh, … Ngồi kết hợp thêm loại cảm biến khác để dạng chức sản phẩm c Phương pháp thực hiện Sử dụng cảm biến siêu âm để đo khoảng cách va chạm robot với vật cản phía trước hiển thị khoảng cách LED đoạn, từ liệu khoảng cách đọc từ cảm biến lệnh cho robot tiếp tục di chuyển, rẽ trái, rẽ phải hay dừng lại nhờ khối động gắn với bánh xe phía robot THỰC HIỆN a Mơ hình hệ thống i Mơ tả sơ lược hệ thống - Sản phẩm cấu tạo bao gồm thành phần: cảm biến siêu âm HC-SR 04, chip vi điều khiển msp430f2232, LED đoạn, giá đỡ, khối động bánh xe xe điều khiển mơ hình loại nhỏ Ngun tắc hoạt động khởi động xe bắt đầu di chuyển đồng thời cảm biến siêu âm hiển thị khoảng cách so với vật cản phía trước lên LED đoạn khoảng cách 50cm robot bắt đầu chuyển hướng di chuyển theo hướng robot tiếp tục di chuyển ii Mơ hình hệ thống dạng khối b Thiết kế phần cứng mạch điện i Mô tả sơ lược hoạt động mạch điện - Khi cấp nguồn cảm biến siêu âm tiến hành đo khoảng cách truyền liệu lên vi điều khiển bằng phương pháp quét led hiển thị giá trị lên led đoạn sau giá trị so sánh với giá định trước tiến hành lệnh cho động di chuyển theo trường hợp định trước ii Sơ đồ khối phần cứng mạch điện iii Thiết kế chi tiết Sơ đồ khối - Khối điều khiển: điều khiển trung tâm, định hoạt động khối lại - Sơ đồ nguyên lý kết nối: Sơ đồ khối - Cảm biến siêu âm: dùng để đo khoảng cách từ robot đến vật cản - Chú thích chân: Chân số chân Vcc Chân số chân ECHO Chân số chân TRI Chân số chân GND - Cách kết nối Chân Vcc nối lên nguồn 5v Chân GND nối mass Chân ECHO nối với chân P1.4 vi điều khiển Chân TRI nối với chân P1.5 vi điều khiển - Thông số kĩ thuật Điện áp làm việc: 5VDC Dòng điện: 15mA Tần số: 40 KHz Khoảng cách phát hiện: 3cm – 4m Tín hiệu đầu ra: xung mức cao 5V, mức thấp 0V Góc cảm biến: khơng q 15 độ Độ xác lên đến 3mm Chế độ kết nối: VCC / Trig (T-Trigger) / Echo (R-Receive) / GND Sơ đồ khối 3 - Khối LED đoạn: dùng để hiển thị khoảng cách mà cảm biến siêu âm đo - Led đoạn sử dụng loại led anode chung nên chân led đoạn kết nối với MSP430 ứng với chân kết nối vào port (1.0, 1.1, 1.2, 1.3) - Sơ đồ nguyên lý kết nối Sơ đồ khối - Khối LM293 động DC: dùng để thay đổi hướng di chuyển robot gặp vật cản -Thống số kĩ thuật Điện áp hoạt động: 4-36V Cấp dòng: 600mA Dòng đỉnh 1.2A Dùng để điều khiển động cơ, robot, motor\ Kiểu DIP16 Input: TTL Logic - Sơ đồ nguyên lý kết nối iv Sơ đồ nguyên lý tổng hợp toàn mạch c Thiết kế phần mềm điều khiển i Chức phần mềm - Khi hệ thống bắt đầu hoạt động Timer sử dụng để tạo xung PWM dùng để đo khoảng cách tính tốn thời gian qt led để hiển thị khoảng cách led - Khi nhận khoảng cách từ cảm biến trả tiến hành so sánh với khoảng cách định trước 50cm tiến hành lệnh động di chuyển khoảng cách lớn 50cm robot di chuyển tiến trước ngược lại khoảng cách nhỏ 50cm có led đơn sáng lên báo cho biết gần khoảng cách va chạm động bên trái dừng, động bên phải quay ngược, nên lúc lùi quay đầu sang phải khoảng cách tiếp tục nhỏ 50cm động chuyển hướng đến khoảng cách lớn 50cm tiếp tục di chuyển - Vịng lặp chương trình giúp hệ thống ln hoạt động giống với mơ tả ii Lưu đồ chương trình iii Lưu đồ chương trình yếu iv Đoạn code chương trình #include #define PDAT P3OUT #define CTR P1OUT #define led BIT0 #define K BIT7 void timer(); void PWM_init(); void DCtienvetruoc(); void luisangphai(); void scanled(); void toDisplay(int num); void delayms(int ms); // -Khai bao doc cam bien int miliseconds; int distance; long sensor; // -Khai bao bien cho led doan char tbl7seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; char buff[4]={0,0,0,0}; char idx=0; int num = 0; void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR = 0x0f; //P1.0 den 1.3 la output P3DIR = 0xFF; // P3 la oupput cho led7 P4DIR = BIT0; // P4.0 la ouput cho den // khai bao port cho motor ben phai P2DIR |= BIT0 + BIT1 + BIT2; // P2.0,P2.1,P2.2 all output cho P2OUT &= ~BIT0 + BIT1 + BIT2; // Clear P2.0,P2.1,P2.2 // khai bao port cho motor ben trai P2DIR |= BIT3 + BIT4 + BIT6; // P2.3,P2.4,P2.6 all output P2OUT &= ~BIT3 + BIT4 + BIT6; // Clear P2.3,P2.4,P2.6 P2SEL &= ~(BIT6 + BIT0); //sudunghetport2 timer(); // khoi dong timer doc cam bien va quet led PWM_init(); // khoi dong Pwm cho dong co _BIS_SR( GIE); // cho phep ngat toan cuc ca Pwm va timer while(1){ P1DIR |= BIT5; P1OUT |= BIT5; delay_cycles(10); P1OUT &= ~BIT5; P1DIR &= ~BIT4; P1IFG = 0x00; P1IE |= BIT4; P1IES &= ~BIT4; delayms(100); // P1.5 la ouput trigger // set trigger muc cao // for 10us // dung cho trigger ve muc thap // cho pin P1.2 input (ECHO) // clear flag // cho phep interupt ECHO // cho echo muc cao // delay 1ms distance = sensor/58; toDisplay(distance); // doi thoi gian cam bien doc duoc cm // dua led7 if(distance 50 xe tien ve truoc } }//end while }// end main // cau hinh timer khoang cach va quet led -// void timer () { DCOCTL = 0; BCSCTL1 = CALBC1_1MHZ; // 1mhz DCOCTL = CALDCO_1MHZ; // 1mhz CCTL0 = CCIE; // CCR0 interrupt enabled CCR0 = 1000; // 1ms at 1mhz TACTL = TASSEL_2 + MC_1 + TAIE; // SMCLK, upmode/Enable Timer Interrupt TAIV } // cau hinh PWM // void PWM_init() { CCTL1 = CCIE; CCR1 = 200; // Enable interrupt for CCR1 // Load value 20%C0 } // -khai bao vector ngat // #pragma vector=PORT1_VECTOR interrupt void Port_1(void) { if(P1IFG&BIT4) // neu co vector ngat { if(!(P1IES&BIT4)) // neu khong co echo canh len { TACTL|=TACLR; // clears timer A miliseconds = 0; P1IES |= BIT4; // cho echo canh len } else { sensor = (long)miliseconds*1000 + (long)TAR; // khoang cach bang thoi gian dem duoc } P1IFG &= ~BIT4; } //clear flag } // khai bao ngat timer -// #pragma vector=TIMER0_A0_VECTOR interrupt void Timer_A (void) { scanled(); miliseconds++; } // ngat PwM // #pragma vector = TIMER0_A1_VECTOR 10 interrupt void TimerA(void) { switch(TAIV) { case 0x002: // CCR1 interrupt P2OUT |= BIT0; // P2.0 = ,1&2_EN = 1,Right Motor bat dau chay P2OUT |= BIT6; // P2.6 = ,3&4_EN = 1,Left Motor bat dau chay break; case 0x004: break; case 0x00A: //TAR overflow interrupt P2OUT &= ~BIT0; // P2.0 = ,1&2_EN = 0,Right Motor dung P2OUT &= ~BIT6; // P2.6 = ,3&4_EN = 0,Left Motor dung break; } } // ham tien dong co ve truoc // void DCtienvetruoc(){ // DC phai tien P2OUT |= BIT1; P2OUT &= ~BIT2; // DC trai tien P2OUT |= BIT3; P2OUT &= ~BIT4; } // P2.1 = 1, // P2.2 = // P2.3 = 1, // P2.4 = 0, // ham lui dong co ket hop chuuyen huong sang phai // void luisangphai(){ 11 // DC phai qua nguoc P2OUT &= ~BIT1; // P2.1 = 0, P2OUT |= BIT2; // P2.2 = // Dc trai dung P2OUT &= ~BIT3; // P2.3 = 0, P2OUT &= ~BIT4; // P2.4 = 0, } // -ham delay // void delayms(int ms) { for(int i=0; i