Thiết bị lặn điều khiển từ xa rov Thiết bị lặn điều khiển từ xa rov Thiết bị lặn điều khiển từ xa rov luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: THIẾT BỊ LẶN ĐIỀU KHIỂN TỪ XA (ROV) Người hướng dẫn: Sinh viên thực hiện: TS LÊ HOÀI NAM NGUYỄN TRUNG ANH NGUYỄN VĂN THÁI Số thẻ sinh viên : 101120276 101120315 Lớp: 12CDT1 Đà Nẵng, 2017 LỜI NÓI ĐẦU Với phát triển vượt bậc khoa học kỹ thuật, ngày thiết bị không người lái ngày trở nên phổ biến thông dụng đời sống ngày công nghiệp Nhưng nước phổ biến đề tài nghiên cứu thiết bị không người lái không, mặt đất mà đề tài ngiên cứu thiết bị không người lái nước Các thiết bị khơng người lái nước ứng dụng nhiều lĩnh vực môi trường, hải sản, dầu khí, quân sự… Xuất phát từ tầm quan trọng đó, hướng dẫn thầy Lê Hồi Nam nhóm chúng em tiếp cận nghiên cứu chế tạo mơ hình “Thiết bị lặn điều khiển từ xa (ROV)” Với hướng dẫn giúp đỡ nhiệt tình thầy Lê Hồi Nam, chúng em hồn thành đề tài đúng thời gian đặt đạt kết mong muốn Do khiến thức cịn hạn hẹp, kinh nghiệm nên chúng em khó tránh khỏi sai sót Vì chúng em mong nhận hướng dẫn tần tình thầy khoa để chúng em hồn thiện đồ án cách tốt Cuối chúng em xin chân thành cảm ơn thầy cô khoa, đặc biệt hướng dẫn tận tình thầy Lê Hồi Nam giúp chúng em hoàn thành đồ án này! Chúng em xin chân thành cảm ơn! Đà Nẵng, ngày 25, tháng 5, năm 2017 Sinh viên thực hiện: Nguyễn Văn Thái i Nguyễn Trung Anh CAM ĐOAN Trong trình thực đề tài, nhóm chúng em có tham khảo mơ hình có liên quan thơng qua mạng Internet, phần ghi rõ tên tác giả, nhóm tác giả, kết thực tế phần liên quan theo đúng thơng tin mà nhóm tìm Các lý thuyết nguyên lý điều khiển nêu thuyết minh tham khảo trích dẫn từ tài liệu tham khảo ghi rõ phần phụ lục Ngoài thiết kế cấu, chi tiết tàu nhóm đề ra, khơng chép mơ hình khác Các tính tốn thiết kế, nguyên lý hoạt động thực độc lập khơng sử dụng kết tính tốn từ nguồn có sẵn Các số liệu đo đạc, kết thực nghiệm lấy từ thực tế q trình thí nghiệm, vận hành thử sản phẩm Nhóm cam kết khơng cung cấp số liệu ảo sai với thực tế Nhóm xin cam đoan nhóm trình bày đúng thật cam kết tuân thủ quy định liêm học thuật nhà trường đề Đà Nẵng, ngày 20 tháng năm 2017 Sinh viên thực Nguyễn Văn Thái ii Nguyễn Trung Anh MỤC LỤC LỜI NÓI ĐẦU i CAM ĐOAN ii MỤC LỤC iii DANH MỤC BẢNG, HÌNH VẼ v DANH SÁCH CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT viii CHƯƠNG 1: TỔNG QUAN 1.1 Giới thiệu đề tài 1.1.1 Ý tưởng đề tài 1.1.2 Nội dung nghiên cứu đề tài 1.2 Giới thiệu thiết bị lặn điều khiển từ xa 1.3 Giới thiệu thiết bị lặn điều khiển từ xa ROV 1.3.1 Lịch sử phát triển ROV 1.3.2 Hệ thống ROV 1.3.3 Ứng dụng ROV 1.3.4 Một số sản phẩm thương mại 1.4 Một số cơng trình nghiên cứu thiết bị lặn nước 12 1.5 Phương pháp nghiên cứu 13 1.5.2 Phương pháp nghiên cứu 13 1.5.3 Phương tiện nghiên cứu 14 CHƯƠNG 2: THIẾT KẾ CƠ CẤU 16 2.1 Lựa chọn phương án thiết kế 16 2.1.1 Các phương án thiết kế chuyển động lặn cho ROV 16 2.1.2 Các phương án bố trí động 18 2.1.3 Các phương án chọn động đẩy 19 2.1.4 Các phương án thiết kế thân tàu 20 2.2 Nguyên lý cân ROV 21 2.3 Thiết kế hệ thống 22 2.3.1 Thiết kế nguyên lý 22 2.3.2 Chọn gioăng cao su 23 iii 2.3.3 Thiết kế khung 24 2.3.4 Thiết kế thân phao 25 2.3.5 Thiết kế mặt bích 28 2.3.6 Thiết kế động đẩy 29 2.3.7 Thiết kế gá mạch 30 2.4 Mơ hình thực tế 32 CHƯƠNG 3: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN 34 3.1 Sơ đồ khối hệ thống điều khiển 34 3.1.1 Các thành phần hệ thống 34 3.2 Giới thiệu số linh kiện hệ thống 35 3.2.1 Bo mạch Raspberry Pi camera 35 3.2.2 Bo mạch Arduino Nano 36 3.2.3 Động BLDC ESC 38 3.2.4 Cảm biến la bàn 43 3.3 Lập trình điều khiển 44 3.3.1 Lập trình cho Raspberry Pi 44 3.3.2 Thuật toán điều khiển Arduino 51 3.4 Thiết kế mạch điều khiển 52 3.4.1 Mạch điều khiển trung tâm 52 3.4.2 Mạch nguồn 52 3.4.3 Mạch động lực 53 3.5 Hướng dẫn sử dụng 54 3.5.2 Hướng dẫn điều khiển 54 KẾT LUẬN 56 TÀI LIỆU THAM KHẢO 58 PHỤ LỤC iv DANH MỤC BẢNG, HÌNH VẼ Bảng 1.1 Thông số kỹ thuật ROV VideoRay Pro Plus BASE Bảng 1.2 Thông số kỹ thuật ROV Seaeye Jaguar Bảng 1.3 thông số kỹ thuật OpenROV Bảng 3.1 Thông số kỹ thuật bo mạch Arduino Nano Bảng 3.2 Thơng số kỹ thuật cảm biến la bàn HMC5883L Hình 1.1 ROV Hercules Hình 1.2 Phân loại loại robot nước Hình 1.3 AUV ứng dụng thăm dị cáp quang biển Hình 1.4 ROV ROVOP Hình 1.5 ROV Poodle Hình 1.6 Hệ thống ROV Hình 1.7 Mơ hình hệ thống ROV SEAYE đại Hình 1.8 Hệ thống ROV mini đơn giản Hình 1.9 Bộ điều khiển ROV videoray Hình 1.10 Bộ điều khiển Deep Trekker ROV Hình 1.11 Một loại dây cáp cho ROV đại Hình 1.12 ROV VideoRay Pro Plus BASE Hình 1.13 Hệ thống ROV Seaeye Jaguar Hình 1.14 OpenROV Hình 1.15 Robot Yết Kiêu 01 Hình 1.16 Robot cá Hình 1.17 Robot ROV sinh viên trường Đại học Bách khoa – ĐHĐN chế tạo Hình 2.1 Nguyên lý Ác-si-mét Hình 2.2 Cơ chế lặn tàu ngầm Hình 2.3 Cơ chế dùng động đẩy Hình 2.4 Bố trí động robot Hình 2.5 Bố trí động robot Hinh 2.6 Cấu tạo động đẩy sử dụng truyền động nam châm Hình 2.7 Động không chổi than sử dụng OpenROV Hình 2.8 Robot observer thiết kế thân nguyên khối Hình 2.9 ROVBUILDER theo kiểu module Hình 2.10 Mơ hình giải thích ngun lý cân ROV v Hình 2.11 Mơ hình giải thích momen cân ROV Hình 2.12 Nguyên lý thiết kế Hình 2.13 Goăng cao su trịn Hình 2.14 Chống nước cho ống tĩnh Hình 2.15 Chống nước cho mặt Hình 2.16 Khung Hình 2.17 Thân Hình 2.18 Mặt cắt thân tầu Hình 2.19 Phao Hình 2.20 Các kích thước chọn goăng mặt bích sau Hình 2.21 Các kích thước chọn goăng mặt bích trước Hình 2.22 Động sunnysky A2212 980kV Hình 2.23 Cánh quạt T200 Hình 2.24 Động đẩy thiết kế SolidWorks Hình 2.25 Gá mạch thiết kế SolidWorks Hình 2.26 Gá mạch lắp vào thân ROV Hình 2.27 Mơ hình khung thực tế Hình 2.28 Các phận trình lắp ráp Hình 2.29 Hình ảnh mơ hình sau hồn thiện Hình 3.1 Sơ đồ khối hệ thống Hình 3.2 Cấu trúc phần cứng Raspberry Pi Hình 3.3 Sơ đồ chân bo mạch Arduino Nano Hình 3.4 Stato động BLDC Hình 3.5 Rotor động BLDC Hình 3.6 Hall sensor động BLDC Hình 3.7 Dạng sóng sức phản điện động pha tín hiêu hall sensor Hình 3.8 Bộ động BLDC ESC Hình 3.9 Tín hiệu PWM điều khiển Hình 3.10 Nguyên lý mạch động lực điều khiển động BLDC Hình 3.11 Bộ điều tốc ESC dùng để điều khiển động BLDC Hình 3.12 Sơ đồ kết nối ESC Hình 3.13 Cảm biến la bàn HMC5883L Hình 3.14 Cài đặt Putty Hình 3.15 Giao diện Linux Raspberry Hình 3.16 Giao diện MJPG-Steamer Hình 3.17 Giao diện điều khiển sau lập trình vi Hinh 3.18 Thuật tốn điều khiển Raspberry Hình 3.19 Thuật tốn điều khiển Arduino Hình 3.20 Sơ đồ nguyên lý mạch nguồn Hình 3.21 Mạch động lực cho đèn Hình 3.22 Mach driver động Hình 3.23 Sơ đồ nguyên lý mạch điện Hình 3.24 Hướng dẫn sử dụng tay điều khiển vii DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT KÝ HIỆU: 𝐹𝑛 𝐹𝐴 P D V m g 𝐹𝑑𝑐 CB CG C/S I/D Lực Lực đẩy Ác-si-mét Trọng lực Khối lượng riêng chất lỏng Thể tích vật Khối lượng vật Gia tốc rơi tự Lực đẩy từ động Tâm robot Trọng tâm robot Đường kính biên dạng goăng Đường kính goăng CHỮ VIẾT TẮT: ROV Remotely Operated Vehicles UART Universal Asynchronous Receive/Transmit I2C Inter-Integrated Circuit AUV Autonomous Underwater Vehicle BLDC Brushless Dc ESC Electronic Speed Contronller CPU Central Processing Unit GPU Graphics Processing Unit RAM Random Access Memory DIY Do It Yourself MCU Marvel Cinematic Universe IC Integrated Circuit I/O In/Out PWM Pulse-Width Modulation SRAM Static Random-Access Memory EEPROM Electrically Erasable Programmable Read-Only Memory ADC Analog-To-Digital Converter SSH Secure Shell OSI Open Systems Interconnection Reference Model IP Internet Protocol viii CHƯƠNG 1: TỔNG QUAN 1.1 Giới thiệu đề tài 1.1.1 Ý tưởng đề tài Từ năm 1960, robot hoạt động nghiên cứu phát triển phục vụ công việc nước Từ robot lặn CURV hải quân Mỹ với nhiệm vụ cứu hộ tìm kiếm trục vớt đáy biển, đến ROV ứng dụng rộng rãi ngành hải dương, viễn thông, thủy lợi, thủy sản, du lịch, mơi trường, tìm kiếm cứu hộ, nước phát triển Đối với Việt Nam, đất nước ven biển có tới 3000 km bờ biển, vùng biển rộng lớn, nhiều đảo… với hệ thống sơng ngịi, ao hồ nhiều, ngành ni trồng thủy sản Nhu cầu làm chủ biển đảo, an ninh quốc phòng, kinh tế, môi trường, chất lượng nuôi trồng thủy sản cần thiết bị máy móc đại, robot hoạt động nước khơng thể bỏ qua Nhưng nước ta robot lặn biển xuất lĩnh vực dầu khí chủ yếu ROV có giá thành đắt từ 4000$ đến hàng triệu đô Với thực tiễn đề tài sẽ nghiên cứu chế tạo ROV nhỏ gọn với giá thành sản xuất thấp để áp dụng ngành du lịch, thủy sản, quay phim, khoa học, khám phá… nước nhà Hình 1.1 ROV Hercules Sinh viên thực hiện: Nguyễn Trung Anh – Nguyễn Văn Thái Hướng dẫn: TS Lê Hoài Nam PHỤ LỤC CHƯƠNG TRÌNH ĐIỀU KHIỂN TRÊN ARDUINO NANO #include #include #include #include /* KHAI BÁO */ Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345); String serial_lenh = ""; String lenh = ""; String giatri_string = ""; int giatri = 0; boolean lenh_complete = false; int pwmlan=100,pwmlolung,pwmt=100,pwmp=100; char Trangthai='S'; Servo DC_trai, DC_phai,DC_lan; int lechphai=0,lechtrai=0; int tocdolan=0,tocdonoi=0; unsigned long time; void setup() { pinMode(3,OUTPUT); pinMode(5,INPUT_PULLUP); digitalWrite(3,LOW); serial_lenh.reserve(200); DC_trai.attach(9); DC_phai.attach(10); DC_lan.attach(11); Serial.begin(9600); Serial.println("Hello"); Khoidong(); digitalWrite(3,HIGH); if(!mag.begin()) { Phụ lục Serial.println("Ooops, no HMC5883 detected Check your wiring!"); } time = millis(); } void loop() { if ( (unsigned long) (millis() - time) > 400) { laban(); dosau(); pin(); nuoc(); time = millis(); } if (lenh_complete) { serial_lenh.trim(); int pos = serial_lenh.indexOf(':'); lenh = serial_lenh.substring(0,pos); giatri_string = serial_lenh.substring(pos+1); giatri = giatri_string.toInt(); Serial.print("Command: "); Serial.print(lenh); Serial.print(" Value: "); Serial.println(giatri); if (lenh == "BAT") { digitalWrite(3,LOW); }else if (lenh == "TAT") { digitalWrite(3,HIGH); }else if (lenh == "setdcLan") { pwmlan = giatri; }else if(lenh == "setdcLolung") { pwmlolung = giatri; }else if(lenh == "setdcTrai") { pwmt = giatri; }else if(lenh == "setdcPhai") { pwmp = giatri; }else if(lenh == "Tien") { Phụ lục if (giatri 500) pwmt=500; if (pwmp >500) pwmt=500; } Tien(); }else if(lenh == "Lui") { if (giatri 500) pwmt=500; if (pwmp >500) pwmt=500; } Lui(); }else if(lenh == "Noi") { if (giatri 500) pwmt=500; } Phai(); }else if(lenh == "Stop") { Stop(); Phụ lục } if(lenh == "Huy")Huy(); serial_lenh = ""; // Serial.println(serial_lenh); lenh_complete = false; } delay(50); } void Lan(){ DC_lan.writeMicroseconds(1500+pwmlan); } void Noi(){ DC_lan.writeMicroseconds(1500-pwmlan); } void Tien(){ if (pwmt==0) DC_trai.writeMicroseconds(0); else DC_trai.writeMicroseconds(1500+pwmt); if (pwmp==0) DC_phai.writeMicroseconds(0); else DC_phai.writeMicroseconds(1500+pwmp); } void Lui(){ if (pwmt==0) DC_trai.writeMicroseconds(0); else DC_trai.writeMicroseconds(1500-pwmt); if (pwmp==0) DC_phai.writeMicroseconds(0); else DC_phai.writeMicroseconds(1500-pwmp); } void Trai(){ if (pwmt==0) DC_trai.writeMicroseconds(0); else DC_trai.writeMicroseconds(1500-pwmt); if (pwmp==0) DC_phai.writeMicroseconds(0); else DC_phai.writeMicroseconds(1500+pwmp); } void Phai(){ if (pwmt==0) DC_trai.writeMicroseconds(0); else DC_trai.writeMicroseconds(1500+pwmt); if (pwmp==0) DC_phai.writeMicroseconds(0); else DC_phai.writeMicroseconds(1500-pwmp); } Phụ lục void Stop(){ pwmt=0; pwmp=0; pwmlan=0; DC_trai.writeMicroseconds(0); DC_phai.writeMicroseconds(0); DC_lan.writeMicroseconds(1500+pwmlolung); } void Huy(){ pwmt=0; pwmp=0; pwmlan=0; DC_trai.writeMicroseconds(0); DC_phai.writeMicroseconds(0); DC_lan.writeMicroseconds(0); } void Khoidong(){ DC_trai.writeMicroseconds(1000); DC_phai.writeMicroseconds(1000); DC_lan.writeMicroseconds(1000); delay(2000); DC_trai.writeMicroseconds(11000); DC_phai.writeMicroseconds(11000); DC_lan.writeMicroseconds(11000); delay(1000); for (int i=1;i=360) headingDegrees=headingDegrees-360; String Huong ="N"; if((headingDegrees >= 22)&&(headingDegrees = 68)&&(headingDegrees = 113)&&(headingDegrees = 158)&&(headingDegrees = 203)&&(headingDegrees = 248)&&(headingDegrees = 293)&&(headingDegrees 24px; height:50; width:1300; text-1
50
10N
10.2
m12.1
Phụ lục 10 V File gamepad.js var socket = io.connect(); aIsDown = false; var gamepad_detected = false; var gamepadSupportAvailable = navigator.getGamepads || !!navigator.webkitGetGamepads || !!navigator.webkitGamepads; var button_pressed = new Array(16); var button_value = new Array(16); var axis_value = new Array(16); var level=0; function zero_depth_window() { socket.emit("button","zero_depth"); } function zeroPad(num, places) { var zero = places - num.toString().length + 1; return Array(+(zero > && zero)).join("0") + num; } function readgamepad() { var value; var pressed; var gamepad = navigator.getGamepads()[0]; var axes = gamepad.axes.length; var buttons = gamepad.buttons.length; if (gamepad) { // socket.emit("gamepad","gamepad loop"); // Init if (!gamepad_detected) { Phụ lục 11 socket.emit('led', { value: "axis", flag: axes }); socket.emit("gamepad",gamepad.id); socket.emit("gamepad","index "+gamepad.index); // // // // socket.emit("gamepad",axes+" Axes" ); socket.emit("gamepad",buttons+" Buttons" ); for (i=0 ; i < axes ; i++) { axis_value[i] = 0.0; } for (i=0 ; i < buttons ; i++) { button_value[i] = 0.0; } gamepad_detected = true; } // Check button for (i=0 ; i (button_value[i]+0.1)) { button_value[i] = value; level ; if (level < 0) level = 0; //document.getElementById("kq").innerHTML = "SetTocdo"+ level; document.getElementById("so").innerHTML =level; } if (value < (button_value[i]-0.1)) { button_value[i] = value; } } else { if (pressed) { if (!button_pressed[i]) { if ( i == 4){ level++; Phụ lục 12 if (level > 5) level =5; socket.emit('led', { value: "SetTocDo", flag: level }); } if (i == 3) {level=0; socket.emit('led', { value: "setTocdo", flag: level }); //document.getElementById("kq").innerHTML = "SetTocdo"+ level; document.getElementById("so").innerHTML =level; } if (i == 0) { socket.emit('led', { value: "Lan", flag: level*50 }); } if (i == 2) { socket.emit('led', { value: "Noi", flag: level*50 }); } if (i == 1) {level=0; socket.emit('led', { value: "Huy", flag: }); } if (i == 8) { socket.emit('led', { value: "BAT", flag: }); } if (i == 9) { socket.emit('led', { value: "TAT", flag: }); } button_pressed[i] = true; } } else { if (button_pressed[i]) { if ((i == 0)||(i==2)) { socket.emit('led', { value: "Lan", flag: }); } button_pressed[i] = false; } } } } } for (i=0 ; i < axes ; i++) { value = gamepad.axes[i]; Phụ lục 13 if (gamepad.axes[i]>0){ if ((gamepad.axes[i] < axis_value[i]-0.1)||(gamepad.axes[i] > axis_value[i]+0.1)) { axis_value[i] = gamepad.axes[i]; // document.getElementById("kq").innerHTML = i + ""+ Math.floor(gamepad.axes[i]*100) if (i == 9){ if (( gamepad.axes[i]> 0.4)&&(gamepad.axes[i] < 2)){ socket.emit('led', { value: "Trai", flag: 50*level });} else if (gamepad.axes[i] < 0.4) { socket.emit('led', { value: "Lui", flag: 50*level }); } else if (gamepad.axes[i] > 2) { socket.emit('led', { value: "Stop", flag: }); } }else if (i == 1) socket.emit('led', { value: Math.floor(gamepad.axes[i]*100*level) }); else if (i == 0) socket.emit('led', { value: Math.floor(gamepad.axes[i]*100*level) }); else if (i == 5) Math.floor(gamepad.axes[i]*100*level) }); } } if (gamepad.axes[i] axis_value[i]+0.1)) { axis_value[i] = gamepad.axes[i]; if (i == 9){ if (( gamepad.axes[i]> -0.7)){ socket.emit('led', { value: "Phai", flag: 50*level });} else if (gamepad.axes[i] < -0.7) { socket.emit('led', { value: "Tien", flag: 50*level }); } }else if (i == 1) socket.emit('led', { value: "Tien", flag: Math.floor(gamepad.axes[i]*100*-level) }); else if (i == 0) socket.emit('led', { value: "Trai", flag: Math.floor(gamepad.axes[i]*100*-level) }); else if (i == 5) Math.floor(gamepad.axes[i]*100*-level) }); } } socket.emit('led', { value: "Lan", flag: } } Phụ lục 14 } function mainloop() { readgamepad(); } function init() { setInterval(mainloop, 20); } init(); Phụ lục 15 ... Lê Hoài Nam Thiết bị lặn điều khiển từ xa (ROV) 1.3 Giới thiệu thiết bị lặn điều khiển từ xa ROV 1.3.1 Lịch sử phát triển ROV Năm 1953, Sau gặp khó khăn mà thợ lặn khơng thể thăm dị điều tra tàu... thiệu thiết bị lặn điều khiển từ xa 1.3 Giới thiệu thiết bị lặn điều khiển từ xa ROV 1.3.1 Lịch sử phát triển ROV 1.3.2 Hệ thống ROV 1.3.3 Ứng dụng ROV ... Nam Thiết bị lặn điều khiển từ xa (ROV) Hình 1.10 Bộ điều khiển Deep Trekker ROV b) Dây cáp Dây cáp công cụ để truyền tín hiệu (camera, sensor) từ robot lên điều khiển hay ngược lại từ điều khiển