Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 98 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
98
Dung lượng
7,07 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ÐIỆN TỬ TRUYỀN THÔNG THIẾT KẾ VÀ CHẾ TẠO CÁNH TAY ROBOT BẰNG CÔNG NGHỆ IN 3D GVHD: NGUYỄN THANH TÂM SVTH : TRẦN KHÁNH KHOA MSSV: 14141156 SKL005644 Tp Hồ Chí Minh, tháng 01/2019 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ CHẾ TẠO CÁNH TAY ROBOT BẰNG CÔNG NGHỆ IN 3D GVHD: THS NGUYỄN THANH TÂM SVTH : TRẦN KHÁNH KHOA MSSV : 14141156 Tp Hồ Chí Minh - 01/2019 TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Trần Khánh Khoa Chuyên ngành: Điện tử Cơng ghiệp Hệ đào tạo: Đại học quy Khóa: 2014 I TÊN ĐỀ TÀI: THIẾT KẾ VÀ CHẾ TẠO CÁNH TAY ROBOT BẰNG CÔNG NGHỆ IN 3D AI NHIỆM VỤ Các số liệu ban đầu: - Chế tạo cánh tay robot trục sử dụng động bước - Giao tiếp phần mềm máy tính cánh tay robot tập lệnh gcode Nội dung thực hiện: - NỘI DỤNG 1: In 3D lắp ráp cánh tay robot bậc sử dụng động bước - NỘI DUNG 2: Thiết kế thi công mạch điều khiển robot qua driver động bước - NỘI DUNG 3: Tìm hiểu tập lệnh Gcode CNC cơng nghiệp - NỘI DUNG 4: Viết chương trình cho vi điều khiển điều khiển cánh tay robot qua tâp lệnh gcode - NỘI DUNG 5: Giao tiếp phần mềm máy tính, điều khiển cánh tay robot thơng qua tập lệnh Gcode - NỘI DUNG 6: Khảo sát phần mềm xuất Gcode điều khiển cánh tay robot - NỘI DUNG 7: Khảo sát ứng dụng cánh tay robot điều khiển tập lệnh Gcode: vẽ 2D, in 3D, khắc laser, khoan CNC,… - NỘI DUNG 8: Lắp ráp chạy thử nghiệm hệ thống ii - NỘI DUNG 9: Cải tiến mơ hình sản phẩm - NỘI DUNG 10: Viết sách luận văn - NỘI DUNG 11: Phản biện bổ sung, chỉnh sửa luận văn - NỘI DUNG 12: Báo cáo đề tài tốt nghiệp III NGÀY GIAO NHIỆM VỤ: IV NGÀY HOÀN THÀNH NHIỆM VỤ: 15/01/2019 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: CÁN BỘ HƯỚNG DẪN ThS Nguyễn Thanh Tâm BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH iii BỘ MÔN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: TRẦN KHÁNH KHOA Lớp: 14941DT Tên đề tài: THIẾT KẾ VÀ CHẾ TẠO CÁNH TAY ROBOT BẰNG CÔNG NGHỆ IN 3D Tu Tuần 03/10/201 T 08/10/201 T 15/10/201 T 22/10/201 Tu 29/10/201 Tu 12/11/201 Tuần 26/11/201 Tuầ 17/12/201 T 31/12/201 T 7/01/201 GV HƯỚNG DẪN iv LỜI CAM ĐOAN Tôi – Trần Khánh Khoa cam đoan đồ án tốt nghiệp cơng trình nghiên cứu thân tơi hướng dẫn thầy Th.S Nguyễn Thanh Tâm Các kết công bố đồ án tốt nghiệp trung thực khơng chép từ cơng trình khác Người thực đề tài Trần Khánh Khoa v LỜI CẢM ƠN Để hồn thành đề tài này, em thực xin gửi lời cảm ơn chân thành đến Thầy/Cô khoa Điện - Điện Tử, trường Đại học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh, người truyền đạt cho em kiến thức quý báu, dẫn định hướng cho em trình học tập Đây tiền đề để em hồn thành đề tài nghiệp sau Đặc biệt, em xin chân thành cảm ơn Thầy Nguyễn Thanh Tâm tận tình hướng dẫn tạo điều kiện thuận lợi cho em suốt thời gian thực Đồ Án Tốt Nghiệp Em xin phép gửi đến thầy lòng biết ơn, lời cảm ơn chân thành sâu sắc Kiến thức, kinh nghiệm tâm nghề nghiệp thầy khơng giúp đỡ nhóm hồn thành tốt đề tài mà gương để nhóm học tập noi theo đường sau Cuối cùng, cố gắng hoàn thành nhiệm vụ đề tài đặt đảm bảo thời hạn kiến thức non yếu nên chắn khơng tránh khỏi thiếu sót, mong q Thầy/Cô bạn sinh viên thông cảm Rất mong nhận ý kiến Thầy/Cô bạn sinh viên Em xin chân thành cảm ơn! vi MỤC LỤC Trang bìa…………… ………………………………………………………………i Nhiệm vụ đồ án tốt nghiệp ii Lịch trình thực đồ án tốt nghiệp iv Lời cam đoan v Lời cảm ơn vi Mục lục vii Liệt kê hình vẽ x Liệt kê bảng vẽ xii Tóm tắt xiii Chương TỔNG QUAN 1.1 Đặt vấn đề .1 1.2 Mục tiêu nghiên cứu 1.2.1 Mục tiêu nghiên cứu 1.2.2 Phương pháp nghiên cứu 1.3 Nội dung nghiên cứu .3 1.4 Giới hạn 1.5 Bố cục Chương CƠ SỞ LÝ THUYẾT 2.1 Tổng quan robot .6 2.1.1 Quá trình phát triển 2.1.2 Ứng dụng Robot 2.1.3 Phân loại Robot 2.2 Tổng quan robot công nghiệp 12 2.2.1 Robot công nghiệp 12 2.2.2 Cấu trúc Robot công nghiệp 13 2.2.3 Kết cấu tay máy 14 2.3 Ngôn ngữ gcode ứng dụng cnc 17 2.3.1 Khái niệm Gcode 17 2.3.2 Các lệnh Gcode lập trình CNC 17 2.4 Công nghệ in 3d 25 vii 2.5 Động học nghịch cánh tay robot bậc 27 2.6 Chuẩn truyền liệu nối tiếp – uart 30 2.6.1 Khái niệm UART 30 2.6.2 Các thông số 30 2.7 Giới thiệu phần cứng 31 2.7.1 Driver A4988 động bước 31 2.7.2 Động bước 32 2.7.3 Arduino Uno R3 32 2.7.4 Board CNC Shield V3 34 2.7.5 Công tắc hành trình 34 Chương TÍNH TỐN VÀ THIẾT KẾ 35 3.1 Giới thiệu 35 3.2 Tính tốn thiết kế hệ thống 35 3.2.1 Sơ đồ khối hệ thống 35 3.2.2 Tính toán thiết kế mạch 36 Chương THI CÔNG HỆ THỐNG 49 4.1 Giới thiệu 49 4.2 Thi công phần cứng 49 4.2.1 Thi công cánh tay robot 49 4.2.2 Thi công mạch điều khiển 53 4.3 Lập trình hệ thống 54 4.3.1 Lưu đồ giải thuật 54 4.3.2 Phần mềm Arduino IDE 58 4.3.3 Phần mềm Inkscape tạo file gcode 60 4.3.4 Phần mềm gcode sender điều khiển cánh tay robot 61 4.4 Sử dụng gcode sender google chrome điều khiển cánh tay robot 62 Chương KẾT QUẢ, NHẬN XÉT VÀ ĐÁNH GIÁ 62 5.1 Kết 62 5.2 Nhận xét đánh giá 62 5.3.1 Ưu điểm hệ thống 62 5.3.2 Nhược điểm hệ thống 63 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 64 viii CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 KẾT LUẬN Sau thời gian tìm hiểu thực đề tài, nhóm chúng em thu thập lượng kiến thức, kinh nghiệm từ việc nghiên cứu, thiết kế, chế tạo mạch đến việc lắp ráp, thi công hệ thống biết cách vận dụng kiến thức học vào thực tế Mơ hình cánh tay robot hoạt động đạt yêu cầu đặt như: - Khảo sát tính tốn xác động học nghịch cánh tay robot bậc - Khả nhận liệu điều khiển thực điều khiển hệ thống hoạt động xác - Dữ liệu tiếp nhận qua phần mềm gcode sender truyền đến vi điều khiển xác để vi điều khiển thực công việc - Mơ hình cánh tay robot nhận lệnh gcode điều khiển di chuyển xác đến vị trí mong muốn khơng gian chiều - Hệ thống endstop với cơng tác hành trình hoạt động tốt, xác định vị trí gốc làm việc cánh tay - Phần mềm gcode sender điều khiển mô hình cánh tay robot theo chế dộ: nút nhấn điều khiển, đọc lệnh qua tập tin gcode 6.2 HƯỚNG PHÁT TRIỂN Vì thời gian thực đề tài có giới hạn nên nhiều phương án - thiết kế để thay đổi - bổ sung thêm cho hệ thống mà nhóm chưa thể tìm hiểu thực Những phương án bổ sung nhằm tăng thêm chức năng, mở rộng khả điều khiển, tính linh hoạt cho hệ thống Cụ thể hướng phát triển mà nhóm nghĩ đến sau: - Sử dụng mơ hình cánh tay robot dạng hình học khác chắn sai số thấp mơ hình sử dụng - Sử dụng động bước có tích hợp encoder để xác định góc quay có độ xác - Tích hợp thêm cơng cụ vào đầu cánh tay như: đầu in 3D, đầu khắc laser, đầu khoan CNC, đầu kẹp,… để mở rộng ứng dụng cánh tay robot BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 64 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN - Tăng số trục robot lên nhằm tăng phạm vi hoạt động tăng tính linh hoạt cho robot - Viết thêm phần mềm điều khiển máy tính đồng với mơ hình robot: tích hợp thêm hình ảnh 3D mơ chuyển động cánh tay thực tế BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 65 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Các tài liệu tham khảo: [1] Nguyễn Đình Phú, Phan Vân Hồn, Trương Ngọc Anh, “Giáo trình vi điều khiển PIC”, NXB ĐH Quốc gia Tp.HCM, 2018 Bùi Quý Tuấn, "Programming manual for CNC mill", HaNoi University of Industry, 2017 [2] MachMotion, "Summary of Gcode commands", https://machmotion.com/cnc-info/g-code.html, 2018 [3] Nguyễn Văn Thái, "Động học nghịch tay máy", https://www.youtube.com/watch?v=p1wIJut1bTs, Digital learning center HCMC youtube channel, 2016 [4] [5] Saha S.K, "Inverse Kinematics", IIT Delhi, 2009 trieutuan_vnu, "Robot Arm MK2 Plus", https://www.instructables.com/id/Robot-Arm-MK2-Plus-Stepper-Motor-Used/, viewed Nov 2018 [6] Arduino.vn, “Hướng dẫn điều khiển động bước”, http://arduino.vn/baiviet/685-huong-dan-dieu-khien-dong-co-buoc, 2018 [7] Nguyễn Phát Lợi, “Cấu tạo động bước”, http://www.nguyenphatloi.com/2014/11/ong-co-buoc-step-motor.html, 2018 [8] Arduino.vn, “Điều khiển động bước pha”, http://arduino.vn/tutorial/1385-dieu-khien-module-dong-co-step-2-pha-va-thu-vien, 2018 [9] Các datasheet tham khảo: Datasheet arduino Uno r3 Datasheet driver A4988 Datasheet CNC shield v3 Các trang chủ phần mềm sử dụng: Phần mềm arduino IDE: https://www.arduino.cc/ Phần mềm gcode sender: https://winder.github.io/ugs_website/ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 66 TÀI LIỆU THAM KHẢO Phần mềm gcode sender google chrome app: https://chrome.google.com/webstore/detail/gcodesender/ngncibnakmabjlfpadjagnbdjbhoelom Phần mềm inkscape: https://inkscape.org/ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 67 PHỤ LỤC PHỤ LỤC Các define, số, biến số: /* -* Global defination * -*/ //define gpio pin #define STEP_X_AXIS #define STEP_Y_AXIS #define STEP_Z_AXIS #define DIRECTION_X_AXIS #define DIRECTION_Y_AXIS #define DIRECTION_Z_AXIS #define ENABLE_PIN #define LIMIT_X_AXIS #define LIMIT_Y_AXIS 10 #define LIMIT_Z_AXIS 11 //define default degree #define DEFAULT_ANPHA_1 #define DEFAULT_ANPHA_2 109.1 #define DEFAULT_ANPHA_3 75.5 //define for cnc #define MAX_BUF #define STEPS_SIZE #define MIN_FEEDRATE #define MAX_FEEDRATE #define NUM_AXIES #define CM_PER_SEGMENT #define TOOL_DISTANCE #define RATIO_AXIS_3 #define RATIO_AXIS_2 #define RATIO_AXIS_1 #define CONVERT_INCH_TO_CM #define MICRO_STEP /* -* Global constant variable * -const float L1 = 80; const float L2 = 128; const float L3 = 135; const float CONVERT_RADIAN_TO_DEGREE = 57.29; const float CONVERT_DEGREE_TO_RADIAN = 0.017; /* -* Global variable * */ int mode_abs; float a[3]; float newa[3]; float s[3]; float sub[3]; char buffer[MAX_BUF]; //buffer of uart int sofar; float max_step; float step_delay = 1000;//default step delay float fr = 1000; float Ax, Ay, Az; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 67 PHỤ LỤC Hàm tính giá trị góc quay trục thứ nhất: static float getTheta1(float px, float py, float pz) { float Theta; Theta = atan2(py, px)*CONVERT_RADIAN_TO_DEGREE; return Theta; } Hàm tính giá trị góc quay thứ hai: static float getTheta2(float px, float py, float pz, float Deg) { float Anpha, Beta, Theta, SinAnpha, CosAnpha, SinBeta, CosBeta; SinAnpha = L3*sin(Deg*CONVERT_DEGREE_TO_RADIAN); CosAnpha = L2 - L3*cos(Deg*CONVERT_DEGREE_TO_RADIAN); Anpha = atan2(SinAnpha, CosAnpha); SinBeta = pz - L1; CosBeta = sqrt(px*px + py*py); Beta = atan2(SinBeta, CosBeta); Theta = (Anpha + Beta)*CONVERT_RADIAN_TO_DEGREE; return Theta; } Hàm tính giá trị góc quay thứ ba: static float getTheta3(float px, float py, float pz) { float CosTheta, SinTheta, Theta; CosTheta = (L2*L2 + L3*L3 - px*px - py*py - (pz - L1)*(pz L1))/(2*L2*L3); SinTheta = sqrt(1 - CosTheta*CosTheta); Theta = atan2(SinTheta, CosTheta)*CONVERT_RADIAN_TO_DEGREE; return Theta; } Chương trình tính số bước động cơ: void position(float px, float py, float pz) { int i; newa[0] = getTheta1(px, py, pz); newa[2] = getTheta3(px, py, pz); newa[1] = getTheta2(px, py, pz, newa[2]); newa[2] = newa[2] + newa[1]; for(i=0; i < NUM_AXIES; i++){ sub[i] = newa[i] - a[i]; } s[0] = MICRO_STEP*RATIO_AXIS_1*abs(sub[0])/STEPS_SIZE; s[1] = MICRO_STEP*RATIO_AXIS_2*abs(sub[1])/STEPS_SIZE; s[2] = MICRO_STEP*RATIO_AXIS_3*abs(sub[2])/STEPS_SIZE; } BỘ MÔN ĐIỆN TỬ CƠNG NGHIỆP Y SINH 68 PHỤ LỤC Chương trình chọn chiều quay cho động cơ: void direction_motor() { if(sub[0] >= 0) digitalWrite(DIRECTION_X_AXIS, LOW); else digitalWrite(DIRECTION_X_AXIS, HIGH); if(sub[1] >= 0) digitalWrite(DIRECTION_Y_AXIS, LOW); else digitalWrite(DIRECTION_Y_AXIS, HIGH); if(sub[2] >= 0) digitalWrite(DIRECTION_Z_AXIS, LOW); else digitalWrite(DIRECTION_Z_AXIS, HIGH); } Chương trình xuất bước đến driver động cơ: void oneStep(int _motor) { if(_motor == 0) { digitalWrite(STEP_X_AXIS, digitalWrite(STEP_X_AXIS, } else if(_motor == 1) { digitalWrite(STEP_Y_AXIS, digitalWrite(STEP_Y_AXIS, } else if(_motor == 2) { digitalWrite(STEP_Z_AXIS, digitalWrite(STEP_Z_AXIS, } } HIGH); LOW); HIGH); LOW); HIGH); LOW); Chương trình di chuyển đến tọa độ void line(float px, float py, float pz) { int i, j; long over_1 = 0; long over_2 = 0; long over_3 = 0; position(px, py, pz); int is_max_step = 0; direction_motor(); max_step = s[0]; if(s[1] > max_step) { max_step = s[1]; is_max_step = 1; } if(s[2] > max_step) { max_step = s[2]; is_max_step = 2; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 69 PHỤ LỤC //max step is step motor if(is_max_step == 0) { for(i=0; i < max_step; i++) { oneStep(0); over_1 = over_1 + s[1]; over_2 = over_2 + s[2]; if(over_1 >= s[0]) { over_1 = over_1 - s[0]; oneStep(1); } if(over_2 >= s[0]){ over_2 = over_2 - s[0]; oneStep(2); } pause(step_delay); } } //max step is step motor else if(is_max_step == 1){ for(i=0; i < max_step; i++) { oneStep(1); over_1 = over_1 + s[0]; over_2 = over_2 + s[2]; if(over_1 >= s[1]) { over_1 = over_1 - s[1]; oneStep(0); } if(over_2 >= s[1]){ over_2 = over_2 - s[1]; oneStep(2); } pause(step_delay); } } //max step is step motor else if(is_max_step == 2){ for(i=0; i < max_step; i++) { oneStep(2); over_1 = over_1 + s[0]; over_2 = over_2 + s[1]; if(over_1 >= s[2]) { over_1 = over_1 - s[2]; oneStep(0); } if(over_2 >= s[2]){ over_2 = over_2 - s[2]; oneStep(1); } pause(step_delay); } } //save this position Ax = px; Ay = py; Az = pz; for(i=0; i < NUM_AXIES; i++){ a[i] = newa[i]; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 70 PHỤ LỤC Chương trình vẽ cung trịn nhỏ 180 độ: void arc(float cx, float cy, float x, float y, float dir) { // get radius float dx = Ax - cx; float dy = Ay - cy; float radius = sqrt(dx*dx + dy*dy); / find angle of arc (sweep) float angle1 = atan3(dy, dx); float angle2 = atan3(y - cy, x - cx); float theta = angle2 - angle1; if(dir>0 && theta