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

Nghiên cứu thiết kế, chế tạo robot vận chuyển trong xưởng cơ khí chế tạo

115 3 0

Đ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

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc LỜI CAM ĐOAN Tôi cam đoan, cơng trình nghiên cứu riêng Các số liệu, kết nêu luận văn trung thực chưa công bố cơng trình nghiên cứu khác Nếu nội dung nghiên cứu trùng lặp với cơng trình nghiên cứu cơng bố, tơi xin hoàn toàn chịu trách nhiệm tuân thủ kết luận đánh giá luận văn Hội đồng khoa học Hà Nội, ngày 14 tháng 07 năm 2018 Người cam đoan Nguyễn Quang Minh ii LỜI CẢM ƠN Trước hết cho phép tơi bày tỏ lịng biết ơn chân thành sâu sắc tới Thầy hướng dẫn khoa học TS Lê Ngọc Huẩn, dành nhiều thời gian bảo tận tình giúp đỡ tơi hồn thành luận văn Trân trọng cảm ơn lãnh đạo nhà trường, phịng sau Đại học, khoa Cơ điện Cơng trình trường Đại học Lâm nghiệp giúp đỡ, tạo điều kiện thuận lợi cho tơi hồn thành nhiệm vụ học tập nghiên cứu Trân trọng cảm ơn lãnh đạo trường Cao đẳng nghề Vĩnh Long tạo điều kiện thuận lợi cho tơi hồn thành khóa học luận văn tốt nghiệp Trân trọng cảm ơn bạn đồng nghiệp đóng góp nhiều ý kiến quý báu suốt trình làm hoàn chỉnh luận văn Hà Nội, ngày 14 tháng 07 năm 2018 Tác giả luận văn Nguyễn Quang Minh iii BỘ NƠNG NGHIỆP VÀ PTNT CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC LÂM NGHIỆP Độc lập – Tự – Hạnh phúc BẢN NHẬN XÉT Của người hướng dẫn luận văn thạc sĩ Họ tên người hướng dẫn: TS LÊ NGỌC HUẨN Họ tên học viên: NGUYỄN QUANG MINH Chuyên ngành: Kỹ thuật khí Khóa học: 2016 - 2018 Nội dung nhận xét Tinh thần, thái độ làm việc, ý thức tổ chức kỹ luật: - Học viên Nguyễn Quang Minh có ý thức làm việc tốt suốt trình thực đề tài Về lực trình độ chun mơn: - Học viên có đủ lực trình độ chun mơn để hồn tất đề tài theo yêu cầu người hướng dẫn Về trình thực đề tài kết luận văn: - Học viên hoàn thành đề tài có kết đáp ứng đủ yêu cầu người hướng dẫn Đồng ý cho học viên bảo vệ luận văn trước Hội đồng: X Có Khơng Hà Nội, ngày 17 tháng 05 năm 2018 Người hướng dẫn khoa học TS LÊ NGỌC HUẨN iv MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii NHẬN XÉT CỦA GVHD …………………………………………………3 MỤC LỤC iv DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT vii DANH MỤC CÁC BẢNG viii DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ ix MỞ ĐẦU 1 Tính cấp thiết vấn đề nghiên cứu Phạm vi nghiên cứu Chương TỔNG QUAN VỀ VẤN ĐỀ NGHIÊN CỨU 1.1 Khái quát 1.1.1 Sơ lược lịch sử phát triển Robot 1.1.2 Phân loại mobile robot 10 1.1.2.2 Căn theo môi trường hoạt động 14 1.1.2.3 Theo dạng điều khiển mobile robot 14 1.2 Tổng quan tình hình 15 1.3 Tổng quan nghiên cứu Robot 18 1.4 Những vấn đề tồn cần nghiên cứu giải 20 Chương THIẾT KẾ PHẦN CỨNG 22 2.1 Cơ sở lý thuyết động học mobile robot 22 2.1.1 Khái niệm 22 2.1.2 Mơ hình bánh xe robot 23 2.1.3 Mơ hình động học robot 27 2.2 Thiết kế phần thân robot 29 2.2.1 Yêu cầu chung 29 2.2.2 Phương án thiết kế 30 2.2.3 Bản vẽ thiết kế xe robot 35 v 2.2.3.1 Phần đế 35 2.2.3.2 Phần thân 35 2.2.3.3 Phần hông 36 2.2.3.4 Gối đỡ trụ 38 2.2.3.5 Đồ gá động 38 2.2.3.6 Trụ đồ gá chở hàng 39 2.2.3.7 Tấm để hàng 39 2.3 Tính tốn chọn động 40 2.3.1 Tính tốn kích thước trục 40 2.3.2 Tính tốn chọn động 41 2.4 Các thiết bị điều khiển robot 43 2.4.1 Mạch điều khiển 43 2.4.1.2 Mạch công suất 45 2.4.1.3 Khối nguồn 46 2.4.2 Sơ đồ đấu dây mạch điều khiển 48 2.4.3 Phương thức truyền nhận liệu 48 2.4.4 Cảm biến 54 2.4.4.1 Cảm biến vật cản 54 2.4.4.2 Cảm biến dò line 55 Chương GIẢI THUẬT ĐIỀU KHIỂN ROBOT 57 3.1 Ngôn ngữ lập trình 57 3.1.1 Phần mềm Arduino IDE 57 3.1.2 Phần mềm Android studio 65 3.2 Sơ đồ giải thuật điều khiển 81 3.3 Giao diện điều khiển cách sử dụng 81 Chương KẾT QUẢ NGHIÊN CỨU 84 4.1 Thiết kế phần cứng robot 84 4.1.1 Lắp ráp hệ thống …………………………………………… 84 4.1.2 Đánh giá thực nghiệm ………………………………………… 84 4.2 Điều khiển robot theo đường dẫn 85 4.2.1 Sơ đồ đường dẫn ……………………………………………… 85 vi 4.2.2 Đánh giá thực nghiệm ……………………………………… … 88 4.3 Điều khiển robot từ xa có tín hiệu từ smartphone 89 4.3.1 Điều khiển robot chế độ chạy tay …………….……… 89 4.3.2 Đánh giá thực nghiệm ……………………………………… ….90 Chương KẾT LUẬN VÀ KIẾN NGHỊ 91 5.1.Kết luận 91 5.2.Các hạn chế đề tài 91 5.3.Kiến nghị 92 TÀI LIỆU THAM KHẢO 93 PHỤ LỤC vii DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT Ký hiệu Oxy Tên Đơn vị Hệ tọa độ quy chiếu cố định r Bán kính bánh xe mm v Vận tốc dài bánh xe m/s  Vận tốc gốc bánh xe rad/s V1(t) Vận tốc dài bánh bên trái m/s V2(t) Vận tốc dài bánh bên phải m/s  (t) Vận tốc góc bánh bên trái rad/s  (t) Vận tốc góc bánh bên phải rad/s L Là khoảng cách bánh mm R Khoảng cách từ tâm robot tới tâm vận tốc tức thời ICC Tâm vận tốc tức thời P Trọng lượng toàn xe l Chiều dài sở trục bánh xe mm d Đường kính trục mm F Lực đẩy tồn xe chạy N P1 Công suất động cho phép W Fms Lực ma sát N k Hệ số ma sát W Công thực J S Quãng đường chạy m viii DANH MỤC CÁC BẢNG Số hiệu bảng Tên bảng Trang 2.1 Sơ đồ bánh xe mobile robot 35 2.2 Hệ số ma sát 53 ix DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Số hiệu Tên hình hình vẽ 1.1 Robot The Stanford Cart line follower [9] Trang 17 1.2 Robot Shakey[11] 18 1.3 Robot RB5X[10] 18 1.4 Robot Dante II[10] 19 1.5 Robot Pioneer[9] 19 1.6 Robot Sojourner[9] 20 1.7 Robot Abio[10] 20 1.8 Robot PackBot[10] 20 1.9 Robot Roomba[11] 21 1.10 Robot chân, chân , chân[11] 22 1.11 Robot nhánh xích[11] 23 1.12 Mobile robot Curiosity NASA[9] 24 2.1 Phương án sơ đồ ngun lý 33 2.2 Mơ hình bánh xe lý tưởng hóa[16] 34 2.3 Các loại bánh xe dùng cho robot tự hành[16] 35 2.4 Mơ hình động học robot 38 2.5 40 2.6 Kết cấu tổng thể robot Thân robot 2.7 Bánh xe chủ động 41 2.8 Bánh xe đa hướng 42 2.9 Đồ gá động 44 2.10 Bánh xe lắp xe robot 44 2.11 Gối đỡ trụ 45 2.12 Đồ gá chở hàng 45 41 x 2.13 Bản vẽ đế robot 46 2.14 Bản vẽ thân robot 46 2.15 Bản vẽ hông 47 2.16 Bản vẽ hông 47 2.17 Bản vẽ hông 48 2.18 Bản vẽ hông 48 2.19 Bản vẽ gối đỡ trụ 49 2.20 Bản vẽ đồ gá động 49 2.21 Bản vẽ trụ đồ gá chở hàng 50 2.22 Bản vẽ đế chở hàng 50 2.23 Biểu đồ nội lực 51 2.24 Mơ hình tốn bánh xe 52 2.25 Động 54 2.26 Mạch Adruino Mega 2569 R3 55 2.27 Mạch điều khiển động DC 400W Hbr-H 57 2.28 Pin Tiger-4500MAH-6S-45C 58 2.29 Pin NCR18650B 58 2.30 Sơ đồ đấu dây mạch điều khiển 59 2.31 Sơ đồ phương pháp truyền thông song song 60 2.32 Sơ đồ phương pháp truyền thông nối tiếp 60 2.33 Module Bluetooth HC06 64 2.34 Kết nối Arduino với HC06 64 2.35 Cảm biến siêu âm SRF05 66 2.36 Cảm biến dò line 66 3.1 Biểu tượng hai phần mềm cài máy tính 68 3.2 Tạo dự án 77 3.3 Định cấu hình dự án 78 90 4.3.2 Đánh giá thực nghiệm - Thực kết nối Bluetooth lệnh từ Smartphone chạy thẳng, rẽ trái, rẽ phải, chạy lui, dừng Tính hiệu điều khiển tốt Đơi có tượng bị nhiễu không thực thi lệnh kịp thời - Vận hành chạy không tải chế độ điều khiển tay hình 4.8, rẽ trái rẽ phải đơi có tượng trượt bánh xe - Vận hành chạy chế độ điều khiển tay thử tải vật nặng 10Kg hình 4.9, xe khơng rung lắc, rẽ trái rẽ phải không bị trượt bánh tốc độ tối đa 91 Chương KẾT LUẬN VÀ KIẾN NGHỊ 5.1 Kết luận Sau nghiên cứu xong đề tài, chúng tơi có rút số kết luận sau: - Đề tài phân tích ưu nhược điểm dạng kết nối truyền thông với từ lựa chọn thiết bị phù hợp thiết lập kết nối smartphone robot - Bằng nghiên cứu thực nghiệm chạy thực tế, từ viết chương trình xử lý tín hiệu cảm biến tín hiệu điều khiển cho phù hợp với tình hình thực tế xưởng sản xuất - Thông qua nghiên cứu nhận thấy, đề tài có tính dụng cao, sử dụng cho nhiều mục đích khác xe robot vận chuyển hàng dây chuyền sản xuất, vận chuyển hàng nhà kho, vận chuyển hàng khu vực nguy hiểm hạn chế tiếp xúc với người, Việc xây dựng thiết bị liên quan đến nhiều mảng kiến thức 5.2 Các hạn chế đề tài  Về hệ thống khí Nhìn tổng thể, robot vững chắc, phần lớn chi tiết đạt yêu cầu đề vẽ, bên cạnh cịn số hạn chế sau: - Một số chi tiết chưa đạt yêu cầu dung sai - Sau trình lắp đặt phát số thiết kế chưa tối ưu  Về điều khiển - Trong trình điều khiển xảy tượng nhiễu làm gián đoạn tín hiệu - Bộ nguồn làm hạn chế thời gian hoạt động robot 92 5.3 Kiến nghị Do thời gian nghiên cứu có hạn, đề tài cần định hướng nghiên cứu thêm vấn đề sau: Để tiếp tục phát triển đề tài này, trước hết cần khắc phục hạn chế mặt thiết kế, gia công chế tạo lỗi trình điều khiển Khi khắc phục hạn chế cịn tồn tại, robot phát triển theo hướng tự trị dựa sở lý thuyết phần động học mobile robot Lập trình đưa robot tự đến vị trí xác định, quỹ đạo định trước, mà không cần đến điều khiển người Sau hoàn thiện đáp ứng điều kiện nghiêm ngặt độ ổn định, hữu ích an tồn,… robot mang phục vụ cho cộng đồng 93 TÀI LIỆU THAM KHẢO [1] Oland Siegwart, Introduction to autonomous mobile robots (Intelligent robotics and autonomous agents series), Illah R Nourbakhsh Nhà xuất bản: The MIT Press, 2004 [2] GS.TSKH Phạm Thượng Cát, Tình hình nghiên cứu phát triển robot Việt Nam, viện công nghệ thông tin [3] TS Trần Thuận Hoàng, Nghiên cứu phương pháp tổng hợp cảm biến dùng kỹ thuật dẫn đường robot di động [4] Trịnh Chất Lê Văn Uyển, Tính tốn thiết kế hệ dẫn động khí [5] Khổng Minh, Nguyễn Văn Trường, Đề cương giảng robot cơng nghiệp, Giáo trình ĐHCN Hà Nội.2013 [6] PGS.TS Bùi Văn Hiệp, kỹ thuật robot [7] https://en.wikipedia.org/wiki/Mobile_robot [8] https://en.wikipedia.org/wiki/Mobile_robot#Mobile_robot_navigation [9] http://automation.net.vn/Robot-Robotics/blog.html [10] http://www.mobilerobots.com/Mobile_Robots.aspx [11] http://dinofab.com/atr/ [12] http://tailieu.vn/doc/thiet-ke-phuong-phap-dieu-khien-robot-tu-hanh-duatren-co-so-logic-mo-chuong-4-328373.html [14] http://www.hocavr.com/index.php/lectures/uart [15] https://en.wikipedia.org/wiki/Sojourner_(rover) [16]http://efa.tnut.edu.vn/Uploads/Articles/Files/44/25.Nguyen%20Thi%20Ph uong%20Chi.pdf [17] Nguyễn Văn Khang (2007), Động lực học hệ nhiều vật, Nhà xuất khoa học kỹ thuật, Hà Nội 94 PHỤ LỤC CODE CHƯƠNG TRÌNH #include #define NUM_SENSORS // number of sensors used #define TIMEOUT 2500 // waits for 2500 microseconds for sensor outputs to go low // Right Sensor (top view) -#define IR5_S1 22 #define IR4_S1 23 #define IR3_S1 24 #define IR2_S1 25 #define IR1_S1 26 // Middle Sensor (top view) -#define IR5_S2 27 #define IR4_S2 28 #define IR3_S2 29 #define IR2_S2 30 #define IR1_S2 31 // Left Sensor (top view) -#define IR5_S3 32 #define IR4_S3 33 #define IR3_S3 34 #define IR2_S3 35 #define IR1_S3 36 #define EMIT1 39 // emitter is controlled by digital pin #define EMIT2 40 #define EMIT3 41 int Motor1 = 8; //Motor phai int Dir1 = 7; int Motor2 = 10; // Motor phai int Dir2 = 9; // -Khai bao chan cam bien sieu am 95 const unsigned int TRIG_PIN_Middle=12; const unsigned int ECHO_PIN_Middle=13; const unsigned int TRIG_PIN_Left=50; const unsigned int ECHO_PIN_Left=51; const unsigned int TRIG_PIN_Right=52; const unsigned int ECHO_PIN_Right=53; QTRSensorsRC QTRC1((unsigned char[]) {IR5_S1,IR4_S1,IR3_S1,IR2_S1,IR1_S1}, NUM_SENSORS, TIMEOUT, QTR_NO_EMITTER_PIN); QTRSensorsRC QTRC2((unsigned char[]) {IR5_S2,IR4_S2,IR3_S2,IR2_S2,IR1_S2}, NUM_SENSORS, TIMEOUT, QTR_NO_EMITTER_PIN); QTRSensorsRC QTRC3((unsigned char[]) {IR5_S3,IR4_S3,IR3_S3,IR2_S3,IR1_S3}, NUM_SENSORS, TIMEOUT, QTR_NO_EMITTER_PIN); unsigned int Values1[NUM_SENSORS]; unsigned int Values2[NUM_SENSORS]; unsigned int Values3[NUM_SENSORS]; boolean S1[NUM_SENSORS]; boolean S2[NUM_SENSORS]; boolean S3[NUM_SENSORS]; char count = 0, countAll = 0; float tong = 0; float err = 0, pre_err =0; int PWM1, PWM2; char f[5]; char command; String string; int stage; int value ; String Incomedata[8]; boolean manu = false; #include 96 void setup() { // put your setup code here, to run once: Serial3.begin(9600); Serial.begin(9600); for (int i = 0; i < 10; i++) // make the calibration take about seconds { //QTRC1.calibrate(); //QTRC2.calibrate(); //QTRC3.calibrate(); delay(20); } pinMode(Motor1,OUTPUT); pinMode(Motor2,OUTPUT); pinMode(Dir1,OUTPUT); pinMode(Dir2,OUTPUT); // -Khai bao in/out cam bien sieu am pinMode(TRIG_PIN_Middle, OUTPUT); pinMode(ECHO_PIN_Middle, INPUT); pinMode(TRIG_PIN_Left, OUTPUT); pinMode(ECHO_PIN_Left, INPUT); pinMode(TRIG_PIN_Right, OUTPUT); pinMode(ECHO_PIN_Right, INPUT); } void loop() { // put your main code here, to run repeatedly: if (Serial.available() > 0) string = ""; while(Serial.available() > 0) { command = ((byte)Serial.read()); if(command == ':') break; else string = string+ command; delay(1); } if(string != "") 97 { value = 0; Incomedata[0] = string.charAt(0); Incomedata[1] = string.charAt(1); Incomedata[2] = string.charAt(2); Incomedata[3] = string.charAt(3); Incomedata[4] = string.charAt(4); Incomedata[5] = string.charAt(5); Incomedata[6] = string.charAt(6); Incomedata[7] = string.charAt(7); if (Incomedata[1] == "1") value = value + 64; if (Incomedata[2] == "1") value = value + 32; if (Incomedata[3] == "1") value = value + 16; if (Incomedata[4] == "1") value = value + 8; if (Incomedata[5] == "1") value = value + 4; if (Incomedata[6] == "1") value = value + 2; if (Incomedata[7] == "1") value = value + 1; if (Incomedata[0] == "F") movingforward(); if (Incomedata[0] == "B") movingbackward(); if (Incomedata[0] == "L") turnleft(); if (Incomedata[0] == "R") turnright(); if (Incomedata[0] == "S") rotate(); if (Incomedata[0] == "Z") stop(); if (Incomedata[0] == "A") Automode(); string == ""; } } void movingforward() { //Serial.println(value); digitalWrite(Dir1, HIGH); digitalWrite(Dir2, LOW); analogWrite(Motor1,55 + 2*value); analogWrite(Motor2,55 + 2*value); delay(10); } void movingbackward() { 98 digitalWrite(Dir1, LOW); digitalWrite(Dir2, HIGH); analogWrite(Motor1,55 + 2*value); analogWrite(Motor2,55 + 2*value); delay(10); } void turnleft() { digitalWrite(Dir1, HIGH); digitalWrite(Dir2, LOW); analogWrite(Motor1, 55 + 2*value); analogWrite(Motor2, value); delay(10); } void turnright() { digitalWrite(Dir1, HIGH); digitalWrite(Dir2, LOW); analogWrite(Motor1, value); analogWrite(Motor2, 55 + 2*value); delay(10); } void rotate() { digitalWrite(Dir1, HIGH); digitalWrite(Dir2, HIGH); analogWrite(Motor1,2.55*value); analogWrite(Motor2,2.55*value); delay(10); } void stop() { analogWrite(Motor1,0); analogWrite(Motor2,0); } void Automode() { // Xuat xung cam bien sieu am -digitalWrite(TRIG_PIN_Middle, LOW); 99 delayMicroseconds(2) ; digitalWrite(TRIG_PIN_Middle, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN_Middle, LOW); const unsigned long duration_middle= pulseIn(ECHO_PIN_Middle, HIGH); int distance_middle= (duration_middle)/29/2; if(duration_middle==0) { Serial.println("MID"); } else { //Serial.print("distance to nearest object(MID):" ); Serial.println(distance_middle); } // Left digitalWrite(TRIG_PIN_Left, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN_Left, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN_Left, LOW); const unsigned long duration_Left= pulseIn(ECHO_PIN_Left, HIGH); int distance_Left= duration_Left/29/2; if(duration_Left==0) { Serial.println("LEFT"); } else { //Serial.print("distance to nearest object(LEFT):" ); Serial.println(distance_Left); } // -RIght digitalWrite(TRIG_PIN_Right, LOW); delayMicroseconds(2); 100 digitalWrite(TRIG_PIN_Right, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN_Right, LOW); const unsigned long duration_Right= pulseIn(ECHO_PIN_Right, HIGH); int distance_Right= duration_Right/29/2; if(duration_Right==0) { Serial.println("RIGHT"); } else { //Serial.print("distance to nearest object(RIGHT):" ); Serial.println(distance_Right); } //delay(100); // -//pos = qtrrc.readLine(sensorValues); QTRC1.read(Values1); /* for (char i = 0; i < NUM_SENSORS; i++) { Serial.print(Values1[i]); Serial.print('\t'); // tab to format the raw data into columns in the Serial monitor } Serial.println(); */ QTRC2.read(Values2); //for (char i = 0; i < NUM_SENSORS; i++) //{ //Serial.print(Values2[i]); //Serial.print('\t'); // tab to format the raw data into columns in the Serial monitor //} //Serial.println(); QTRC3.read(Values3); /* for (char i = 0; i < NUM_SENSORS; i++) 101 { Serial.print(Values3[i]); Serial.print('\t'); // tab to format the raw data into columns in the Serial monitor } Serial.println();*/ boolean PAUSE = true; for (char i=0; i= && countAll = 7) { PWM1 = 0; PWM2 = 0; analogWrite(Motor1,PWM1); analogWrite(Motor2,PWM2); //delay(10000); } if (countAll < 5) { float V0 = 125; float Kp = 80; PWM1 = V0+Kp*err; PWM2 = V0-Kp*err; Serial.print(err); Serial.print(" "); Serial.print(PWM1); Serial.print(" "); Serial.print(PWM2); Serial.print(" "); 103 if (PWM1 > 250) PWM1 = 250; if (PWM1 >0) digitalWrite(Dir1, HIGH); //Forward else if (PWM1 250) PWM2 = 250; if (PWM2 >0) digitalWrite(Dir2, LOW); //Forward else if (PWM21000) S2[i] = true; else S2[i] = false; if (Values3[i] >1000) S3[i] = true; else S3[i] = false; } }

Ngày đăng: 12/07/2023, 16:52

Xem thêm:

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

TÀI LIỆU LIÊN QUAN

w