1. Trang chủ
  2. » Luận Văn - Báo Cáo

xe tự động tránh vật cản

55 444 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 55
Dung lượng 2,35 MB

Nội dung

xe tự động tránh vật cản

BỘ GIAO THÔNG VẬN TẢI HỌC VIỆN HÀNG KHÔNG VIỆT NAM Khoa Đ i ệ n t v i ễ n t h ô n g TIỂU LUẬN TỐT NGHIỆP TÊN ĐỀ TÀI: XE TỰ ĐỘNG TRÁNH VẬT CẢN Giáo viên hướng dẫn: T h s N g u y ễ n T h ị L i n h P h n g Sinh viên thực hiện: Mã số SV: Lớp: Thành phố Hồ Chí Minh - 2017 BỘ GIAO THÔNG VẬN TẢI HỌC VIỆN HÀNG KHƠNG VIỆT NAM Khoa Điện Tử Viễn Thơng TÊN ĐỀ TÀI: XE TỰ ĐỘNG TRÁNH VẬT CẢN Giáo viên hướng dẫn: ThS NGUYỄN THỊ LINH PHƯƠNG Thành phố Hồ Chí Minh – 2017 Sinh viên thực h iện : LỜI CẢM ƠN Trong thời gian làm tiểu luận tốt nghiệp, em nhận nhiều giúp đỡ, đóng góp ý kiến bảo nhiệt tình thầy bạn bè Em xin chân thành cảm ơn thầy cô giáo trường HVHK dạy cho em kiến thức môn đại cương mơn chun ngành, giúp em có sở ký thuyết để hoàn thành tiểu luận Em xin gửi lời cảm ơn chân thành đến Th.s Nguyễn Thị Linh Phương, hướng, giúp đỡ em trình làm tiểu luận Em nỗ lực suốt trình làm đề tài nhương với lượng kiến thức hạn chế nên tiểu luận nhiều thiếu sót Em mong nhận ý kiến đóng góp thầy bạn để đề tài em hoàn thiện Em xin chân thành cảm ơn LỜI CAM ĐOAN Tôi cam đoan tiểu luận tốt nghiệp tơi thực hiện, số liệu kết báo cáo trung thực, không chép từ đề tài nghiên cứu khoa học Ngày……tháng……năm 2017 Sinh viên thực NHIỆM VỤ TIỂU LUẬN TỐT NGHIỆP HỌ VÀ TÊN: LỚP: MSSV: NGÀNH: Điện tử viễn thông Tên tiểu luận tốt nghiệp: Xe tự động tránh vật cản Nhiệm vụ tiểu luận tốt nghiệp: Tìm hiểu linh kiện, xử lý, chương trình điều khiển xe, thiết kế tạo sản phẩm thực tế Ngày giao tiểu luận tốt nghiệp: 6/4/2017 Ngày nộp tiểu luận tốt nghiệp: 22/5/2017 Họ tên cán hướng dẫn ThS Nguyễn Thị Linh Phương TRƯỞNG KHOA (Ký ghi rõ họ tên) CÁN BỘ HƯỚNG DẪN CHÍNH (Ký ghi rõ họ tên) NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN TpHCM, ngày … tháng …… năm …… Giáo viên hướng dẫn [Ký tên ghi rõ họ tên] NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN TpHCM, ngày … tháng …… năm …… Giáo viên phản biện [Ký tên ghi rõ họ tên] MỤC LỤC CHƯƠNG TỔNG QUAN VỀ ĐỀ TÀI 1.1 Lý chọn đề tài .1 1.2 Mục tiêu đề tài 1.3 Phương pháp nghiên cứu 1.4 Đối tượng phạm vi nghiên cứu CHƯƠNG 2.1 CƠ SỞ LÝ THUYẾT .3 Arduino UNO R3 2.1.1 Giới thiệu tổng quan Arduino UNO R3 .3 2.1.2 Một vài thông số Arduino UNO R3 2.1.3 Vi điều khiển 2.1.4 Nguồn .6 2.1.5 Bộ nhớ 2.1.6 Các cổng vào/ .9 2.1.7 Lập trình cho Arduino .11 2.2 Module điều khiển động L298 12 2.2.1 Thông số kỹ thuật 12 2.2.2 Các chân tín hiệu 12 2.3 Cảm biến siêu âm SRF05 14 2.3.1 Sóng siêu âm 14 2.3.2 Giới thiệu chung .16 2.3.3 Nguyên lý làm việc 17 2.3.4 Lập trình điều khiển 20 2.4 Động điện chiều 21 2.5 Module bluetooth HC-05 23 2.5.1 Giới thiệu 23 2.5.2 Các chế độ hoạt động .25 CHƯƠNG THIẾT KẾ VÀ THI CÔNG 27 3.1 Sơ đồ khối nguyên lý hoạt động mạch .27 3.2 Lưu đồ thuật toán 30 3.3 Lưu đồ thuật tốn chương trình tự động 31 3.4 Sơ đồ nguyên lý 32 3.5 Mạch thực tế 33 3.6 Kết kiểm thử mạch 34 CHƯƠNG KẾT LUẬN VÀ KIẾN NGHỊ 35 4.1 Kết luận 35 4.2 Kiến nghị .35 PHỤ LỤC HÌNH ẢNH Hình 2.1 Arduino UNO R3 Hình 2.2 Vi điều khiển Hình 2.3 Các cổng vào .9 Hình 2.4 Cửa sổ lập trình 11 Hình 2.5 Các chân tín hiệu L298 12 Hình 2.6 Sóng siêu âm 15 Hình 2.7 Cảm biến siêu âm 16 Hình 2.8 Cấu hình SRF 05 mode 17 Hình 2.9 Nguyên lý hoạt động SRF 05 mode 18 Hình 2.10 Cấu hình SRF 05 mode 19 Hình 2.11 Nguyên lý hoạt động SRF 05 mode 19 Hình 2.12 Động DC .21 Hình 2.13 module bluetooth HC-05 23 Hình 2.14 Sơ đồ chân HC - 05 24 Hình 3.1 Sơ đồ khối tổng quát 27 Hình 3.2 Lưu đồ chương trình 30 Hình 3.3 Lưu đồ chương trình tự động .31 Hình 3.4 Sơ đồ nguyên lý 32 Hình 3.5 Mạch thực tế 33 3.6 Kết kiểm thử mạch Về mạch hoạt động tránh vật cản gặp phải Nhưng tồn số vấn đề sau:  Cảm biến siêu âm có hạn chế: Mức độ sóng âm hồi tiếp phụ thuộc vào cấu tạo đối tượng góc phản xạ Một đối tượng mềm cho tín hiệu phản hồi yếu khơng phản hồi Mặt tiếp xúc vật cản ảnh hưởng tới việc nhận biết cảm biến  Khi di chuyển vào vùng hẹp có nhiều vật cản xe hoạt động trở nên thiếu xác 41 CHƯƠNG KẾT LUẬN VÀ KIẾN NGHỊ 4.1 Kết luận  Ưu điểm: + Xe thiết kế đơn giản,giá thành thấp dễ dàng cho người tìm hiểu nghiên cứu + Về tránh vật cản hoàn thành mục tiêu đặt  Khuyết điểm: + Có nghiên cứu phát triển thêm kết nối bluetooth chưa đạt kết mong muốn + Khi quét vật cản để chọn phương hướng nhiều gặp phải trục trặc chọn hướng rẽ + Trong điều kiện cho phép em thực mơ hình mức độ đơn giản trình thực chưa hồn hảo, mạch thi cơng thiếu sót hạn chế Xe hoạt động thật chưa ổn định 4.2 Kiến nghị Có thể nghiên cứu phát triển thêm cho xe như: phát triển thành máy hút bụi tự động, xe dò đường, nhiểu ứng dụng dùng xe tự động khác 42 TÀI LIỆU THAM KHẢO Phạm Quang Huy – Lê Cảnh Trung , Lập trình điều khiển với arduino, Khoa học kỹ thuật Phạm Quang Huy – Nguyễn Trọng Hiếu , Vi điều khiển ứng dụng arduino dành cho người tự học , Bách Khoa Hà Nội http://arduino.vn/bai-viet/948-bam-xung-dieu-khien-toc-do-dong-co-bang-l298 http://arduino.vn/bai-viet/991-o-dieu-khien-bang-android-dung-mach-cau-h-l298 http://arduino.vn/result/1306-robot-tranh-vat-can https://drive.google.com/file/d/0B4vt-olV258taFRFalBzcDZLcWM/view http://ngocson-inspirer.blogspot.com/2015/10/module-bluetooth-hc-05-phan1.html http://tae.vn/mach-dieu-khien-dong-co-l298 PHỤ LỤC #include #include #include SoftwareSerial mySerial(3, 2); //rx 3, tx #define TRIGGER_PIN 13 #define ECHO_PIN 12 #define MAX_DISTANCE 400 NewPing ultrasonic(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); Servo myservo; #define maxSpeed 255 #define minSpeed #define maxLeft #define maxRight 178 #define steeringCenter 89 #define DIRECTION_STOP #define DIRECTION_FORWARD #define DIRECTION_BACKWARD #define DIRECTION_ROTATE_RIGHT #define DIRECTION_ROTATE_LEFT //Variables uint8_t distance; uint8_t checkRight; uint8_t checkLeft; uint8_t pos = 90; uint8_t in1_Left = 6; uint8_t in2_Left = 5; uint8_t in3_Right = 10; uint8_t in4_Right = 9; uint8_t Throttle = 0; uint8_t throttleLeft = Throttle; uint8_t throttleRight = Throttle; uint8_t CONTROL = 0xF3; uint8_t SPEED = minSpeed; uint8_t STEERING = steeringCenter; uint8_t BUTTON = 255; uint8_t preCONTROL = 0x01; uint8_t command[4] = {0x00, 0x00, 0x00, 0x00}; uint8_t Direction = DIRECTION_STOP; boolean Mode = 1; //0: Bluetooth 1:Obstacle Avoidance //SET UP//////////////////////////////////////////////////////// void setup() { Serial.begin(9600); pinMode(in1_Left, OUTPUT); pinMode(in2_Left, OUTPUT); pinMode(in3_Right, OUTPUT); pinMode(in4_Right, OUTPUT); analogWrite(in1_Left, 0); analogWrite(in2_Left, 0); analogWrite(in3_Right, 0); analogWrite(in4_Right, 0); myservo.attach(11); myservo.write(pos); } //MAIN PROGRAM////////////////////////////////////////////////// void loop(){ if (mySerial.available() == 4){ for (byte i = 0; i < 4; i++) { command[i] = mySerial.read(); } preCONTROL = CONTROL; CONTROL = command[0]; SPEED = command[1]; STEERING = command[2]; BUTTON = command[3]; Throttle = SPEED; } else { Mode = 1; } if(bitRead(BUTTON,4)){ Mode = 1; } else{ Mode = 0; } if(!Mode){ bluetooth_mode(); run_the_tank(); } else{ obstacle_avoidance_mode(); } } //MAIN PROGRAM////////////////////////////////////////////////// //SUB PROCEDURE///////////////////////////////////////////////// //RUN THE TANK=========================================// void run_the_tank(){ if (CONTROL != preCONTROL) { analogWrite(in1_Left, 0); analogWrite(in2_Left, 0); analogWrite(in3_Right, 0); analogWrite(in4_Right, 0); //delay(200); } switch (Direction) { case DIRECTION_FORWARD: analogWrite(in1_Left, throttleLeft); analogWrite(in2_Left, 0); analogWrite(in3_Right, throttleRight); analogWrite(in4_Right, 0); break; case DIRECTION_BACKWARD: analogWrite(in2_Left, throttleLeft); analogWrite(in1_Left, 0); analogWrite(in4_Right, throttleRight); analogWrite(in3_Right, 0); break; case DIRECTION_ROTATE_LEFT: analogWrite(in2_Left, throttleLeft); analogWrite(in1_Left, 0); analogWrite(in3_Right, throttleRight); analogWrite(in4_Right, 0); break; case DIRECTION_ROTATE_RIGHT: analogWrite(in1_Left, throttleLeft); analogWrite(in2_Left, 0); analogWrite(in4_Right, throttleRight); analogWrite(in3_Right, 0); break; case DIRECTION_STOP: analogWrite(in1_Left, 0); analogWrite(in2_Left, 0); analogWrite(in3_Right, 0); analogWrite(in4_Right, 0); break; } } //BLUETOOTH MODE==============================================// void bluetooth_mode(){ if (CONTROL steeringCenter) { throttleLeft = Throttle; throttleRight = map(STEERING, steeringCenter, maxRight, Throttle, minSpeed); } else if (STEERING < steeringCenter) { throttleRight = Throttle; throttleLeft = map(STEERING, steeringCenter, maxLeft, Throttle, minSpeed); } else { throttleLeft = throttleRight = Throttle; } if (CONTROL == 0xF1) { Direction = DIRECTION_FORWARD; } else { Direction = DIRECTION_BACKWARD; } } else { if (STEERING > steeringCenter) { throttleRight = throttleLeft = map(STEERING, steeringCenter, maxRight, minSpeed, maxSpeed); Direction = DIRECTION_ROTATE_RIGHT; } else if (STEERING < steeringCenter) { throttleRight = throttleLeft = map(STEERING, steeringCenter, maxLeft, minSpeed, maxSpeed); Direction = DIRECTION_ROTATE_LEFT; } else { throttleRight = throttleLeft = 0; Direction = DIRECTION_STOP; } } } } //OBSTACLE AVOIDANCE MODE=====================================// void obstacle_avoidance_mode(){ throttleLeft = 100; throttleRight = 100; distance = ultrasonic.ping_cm(); delay(40); //Serial.println(distance); if (distance > 10){ Direction = DIRECTION_FORWARD; run_the_tank(); } else if (distance checkRight){ Direction = DIRECTION_ROTATE_LEFT; run_the_tank(); delay(400); } else if (checkLeft

Ngày đăng: 15/01/2019, 12:12

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w