THIẾT KẾ, CHẾ TẠO THÀNH CÔNG ROBOT SCARA 3 BẬC TỰ DO, SỬ DỤNG NGÔN NGỮ PYHTON VỚI SỰ HƯỚNG DẪN CỦA TIẾN SĨ NGUYỄN THIÊN CHƯƠNG TỪ ĐẠI HỌC LIBEREC BẠN NÀO CẦN FILE CÓ THỂ LIÊN HỆ MÌNH MÌNH CHO FILE ĐIỀU KHIỂN VÀ FIRMWARE ĐỂ NGHIÊN CỨU LIÊN HỆ HƯỚNG DẪN 01689996247
Trang 1Báo cáo: Đồ án kỹ thuật
Robot Nhóm 3
THÀNH VIÊN TRONG NHÓM:
Đinh Tiến Vinh
Bùi Xuân Tường
Lê Đức Trung
Lê Thanh Tùng
Nguyễn Thanh Luân
Trương Quang Dũng
Trang 2LỜI NÓI ĐẦU
Vào đầu thế kỉ trước, con người đã có ý tưởng tạo ra những cỗ máy thaythế mình trong các công việc nặng nhọc, nhàm chán, nguy hiểm năm 1940,robot đầu tiên ra đời tại Mĩ, làm nhiệm vụ vận chuyển các hoạt chất phóng xạ.đến thập kỉ 80, trên thế giới đã có tới 40 nghìn robot thuộc 500 kiểu, do 200hãng tham gia sản xuất Ngày nay, robot được sử dụng rộng rãi trong sản xuất,nghiên cứu khoa học và đời sống Đó là thiết bị không thể thiếu trong quá trìnhsản xuất, đặc biệt là hệ thống sản xuất linh hoạt Robot ngày càng phát triển,khéo léo và thông minh, được coi là sản phẩm điển hình của ngành kĩ thuật Cơđiện tử
Trước xu thế phát triển đó, hầu hết các trường đại học kỹ thuật ở ViệtNam đã đưa môn “kỹ thuật robot” vào giảng dạy trong chương trình chính khóa.Môn học này được giảng dạy chủ yếu cho các chuyên ngành cơ khí, song cáckhía cạnh riêng biệt của nó như kỹ thuật điều khiển, lập trình, mô phỏng cũngđược các ngành khác quan tâm Trong phạm vi của học phần, được sự giảng dạy
và hướng dẫn của thầy Nguyễn Thiên Chương, chúng em đã nghiên cứu và chếtạo Scara Robot Arm, đây là nội dung chính của bài báo cáo này
Robot Arm là một loại cánh tay cơ khí, thường được lập trình với cácchức năng tương tự cánh tay con người Robot Arm có thể là một cơ chế hoànchỉnh hoặc là một phần của robot phức tạp hơn Các liên kết của tay máy đượcnối với nhau bằng các khớp tự do, hoặc là chuyển động quay hoặc là chuyểnđộng tịnh tiến Các liên kết của các tay máy có thể tạo thành một chuỗi độnghọc Đích đến cuối cùng của chuổi động học này được gọi là End Effector,tương tự như cánh tay con người
Robot Arm luôn là chủ đề được quan tâm nhiều trong lĩnh vực tự độnghóa bởi tính ứng dụng thực tiễn của nó trong xã hội hiện nay nói chung và trongngành công nghiệp nói riêng Mỗi tay máy đều có một cơ cấu khác nhau, do đó
có các phương trình động học, động lực học cũng khác nhau cho nên việc tínhtoán và điều khiển mỗi loại tay máy là rất phức tạp Có thể thấy tay máy là một
đề tài không mới nhưng nó mang tính chất khó, tính nghiên cứu và ứng dụngcao
Bài báo cáo này được nhóm chúng em chuẩn bị dựa theo kiến thức được
Trang 3Chương 1: Tổng quan
1.1 Đề tài
Tự thiết kế một Robot cánh tay Scara và điều khiển
Sản phẩm thiết kế của nhóm 1.2 Yêu cầu của đề tài
- Thiết kế giao diện điều khiển bằng ngôn ngữ lập trình PYTHON và sử dụng vi điều khiển arduino
- Giải và điều khiển robot theo động học thuận, động học nghịch
- Định vị tọa độ cho robot
- Làm ra được 1 ứng dụng cho robot
Trang 4Chương 2: Thiết kế, chế tạo robot
2.1 Thiết kế
Thiết kế của tay Scara gồm 3 khâu 1 khớp tịnh tiến và 2 khớp xoay, tay A
có chiều dài là 110 mm, tay B là 115 mm Thiết kế được vẽ trên Solidwork theo
cơ cấu truyền động bánh răng
Sau khi thiết kế tổng cộng gồm 12 chi tiết lưu thành file STL và in 3d đểlắp ráp
Trang 52.2 Phần cơ khí
- 10 chi tiết nhựa in 3d.
- Sử dụng 3 động cơ bước Shinano Kenshi.
- 1 trục vít me bước 8mm dài 30 cm.
- 3 trục tuyến tính dài 35cm.
Trang 6- 4 ổ bi trượt LM8UU.
- 2 ổ bi 15 x 32 x 9 mm.
Trang 7 16 đầu vào analog.
4 UARTs (cổng nối tiếp phần cứng)
Trang 8Nó chứa tất cả mọi thứ cần thiết để hỗ trợ các vi điều khiển.
Arduino Mega2560 khác với tất cả các vi xử lý trước giờ vì không sử dụngFTDI chip điều khiển chuyển tín hiệu từ USB để xử lý Thay vào đó, nó sử dụngATmega16U2 lập trình như là một công cụ chuyển đổi tín hiệu từ USB Ngoài
ra, Arduino Mega2560 cơ bản vẫn giống Arduino Uno R3, chỉ khác số lượngchân và nhiều tính năng mạnh mẽ hơn, nên các bạn vẫn có thể lập trình cho con
vi điều khiển này bằng chương trình lập trình cho Arduino Uno R3
Chức năng: Là một bo mạch vi xử lý được dùng để lập trình tương tác với
các thiết bị phần cứng như động cơ Để kết nối và làm việc Arduino với phầnmềm python điều khiển cánh tay Robot
Trang 9Mạch RAMPS 1.4 Chức năng :
Dùng để điều khiển các dạng robot 3 trục tịnh tiến và máy in 3D
Có thể mở rộng cho các phụ kiên điện tử khác
3 mạch công suất cho các đầu sấy và quạt, các mạch xử lý tín hiệunhiệt điện trở
Điều khiển bàn nhiệt (có bảo vệ bằng cầu chì tự phục hồi 11A)
Có 5 khay cắm
2.3.3 Mạch điều khiển động cơ stepper drivers A4988
Chức năng: Mạch điều động cơ mô tơ bước A4988 là 1 mạch vi bước
lưỡng cực điểu khiển động cơ bước Driver cho phép điểu chỉnh cường độ dòngđiện bằng biến để bảo vệ quá tải dòng điện và nhiệt độ
A4988 có5chế độ điều khiển:
• Chế độ full bước (fullstep): mỗi tín hiệu điều khiển, động cơ bước quay 1.8 (hoặc 0.9) độ ứng với động cơ 1.8 (hoặc 0.9) độ
• Chế độ ½ bước : mỗi tín hiệu điều khiển, động cơ quay một góc bằng ½ so với chế độ full bước
• Chế độ ¼ bước : mỗi tín hiệu điều khiển, động cơ quay một góc bằng ¼ so với
Trang 10chế độ full bước.
• Chế độ 1/8 bước : mỗi tín hiệu điều khiển, động cơ quay một góc bằng 1/8 so với chế độ full bước
• Chế độ 1/16 bước : mỗi tín hiệu điều khiển, động cơ quay một góc bằng 1/16
so với chế độ full bước
Để thiết lập chế độ điều khiển bước, sử dụng các jump trên board RAMPS 1.4như hình sau
- Sau khi in 3D hết tất cả chi tiết, ta tiến hành lắp ráp robot.
- Quá trinh lắp ráp: robot được láp ráp từ cụm nhỏ rồi đến tổng thể của 1
con robot hoàn chỉnh
- Đầu tiên chúng ta lắp phần đế để đỡ robot, gồm có:
Trang 11Sau đó, ráp thành:
Trang 13Ráp bánh răng nhỏ vào đầu động cơ
Ráp phần giữa robot
Trang 16Ráp vào phần đế
Trang 17Lắp phần trên vào và hoàn thiện robot
Quá trình lắp ráp đã xong
Trang 18Chương 3: Chương trình điều khiển và phần đệm
3.1 Chương trình điều khiển
Giao diện và chương trình điều khiển robot được lập trình toàn bộ trênphần mềm PYTHON
Để điều khiển được robot thì ta phải giải được động học thuận và động họcnghịch: Bảng Move to Coordinate ( điều khiển theo động học nghịch) và MovetoAngle (động học thuận)
Trang 19Lập bảng phân tích từng khâu
Nhân các ma trận A1, A2, A3 với nhau và tìm ra phương trình tọa độ x và
y Do Scara robot có khớp 1 là khớp tịnh tiến nên chỉ có phương trình x, y
Việc tiếp theo ta chỉ cần vận kiến thức lập trình và đưa 3 phương trình này
vào PYTHON bằng thư viện math:
Px = (lengthArmB * math.cos(theta1) * math.cos(theta2)) - (lengthArmB
* math.sin(theta1) * math.sin(theta2)) + (lengthArmA * math.cos(theta1))
Py = (lengthArmB * math.sin(theta1) * math.cos(theta2)) + (lengthArmB
* math.cos(theta1) * math.sin(theta2)) + (lengthArmA * math.sin(theta1))
Trang 20Ở đây, theta1 và theta2 là 2 góc mà ta muốn 3 động cơ xoay.
Ứng với 2 góc này sẽ ứng với vị trí P(x,y)
Còn trục z vì là tịnh tiến nên cần nhập tọa độ z là động cơ xoay đến vị trímong muốn
Theo hình trên, thì theta1 là góc tayA, theta2 là góc tayB chưa hợp vớiphương x
Ta sẽ nhập 2 góc và trục z của 3 động cơ vào giao diện
Tuy nhiên, 2 góc trên giao diện là 2 góc hợp bởi các tay với phương x đểngười sử dụng dễ điều khiển hơn Vậy nên, khi bấm nút “Move” ta sẽ bù trừ
Trang 21chuyển đến tọa độ x,y,z mà ta mong muốn Vậy bài toán ở đây là ta đi tìm 2 góctheta, và để tìm được 3 góc này ta sẽ dùng phương pháp giải hình học.
Vậy là ta có được 2 góc theta, từ đây ta ráp vào phần lập trình trongPYTHON:
Px = toadox.get()
Py = toadoy.get()
Pz = toadoz.get()
Trang 22denta = ((math.pow(Px, 2) + math.pow(Py, 2) math.pow(lengthArmA, 2) math.pow(lengthArmB, 2)) / (2 * lengthArmA * lengthArmB))
dentaq = math.acos(q)
denta1 = s_q - dentaq
denta_1 = denta1 * 180/math.pi
Tính góc ra xung
position[1] = int (denta_1 * ((200 * 16) * 32/9) / 360)
position[2] = int (denta_2 * ((200 * 16) * 32/9) / 360)
Trang 23Ta nhập tọa độ vào giao diện, nhấn “Move” robot sẽ di chuyển đến tọa độ mong muốn.
Nút “Reset” để lấy tọa độ đầu và nút “Home” để cho cánh tay di chuyển
về vị trí home Vị trí home có 2 góc là tayA = 90, tayB = 90, trucZ = 0
Nút “Forward” và “Backward” dùng để di chuyển theo phương x
Nút “Left” và “Right” dùng để di chuyển theo phương y
Nút “Up” và “Down” dùng để di chuyển theo phương z
Khung “Curent Position” dùng để hiển thị tọa độ và các góc hiện tại củatay tác động cuối cùng
Nút “Connect to MeArm” dùng để kết nối và ngắt kết nối giữa máy tínhvới robot
Ở phần mềm giao diện PYTHON khi thực hiện lệnh nào đó sẽ gửi 1 chuỗi
dữ liệu gồm 6 đến 8 dữ liệu
Vd: arduino.write('A'+str(truyen[1])+'B'+str(truyen[2])+'C'+str(truyen[3])+'D'+str(truyen[4])+'E'+str(truyen[5])+'F'+str(truyen[6])
+'G'+str(2)+'H'+str(0)+'I')
Trang 24Các kí tự A,B,C,D, dùng để đóng gói dữ liệu Để khi arduino nhận cóthể dễ dàng phân biệt và tách dữ liệu để điều khiển Một chuỗi dữ liệu bao gồm
3 dữ liệu mang xung và 3 dữ liệu xác định chiều quay của động cơ
3.2 Phần đệm Arduino
Như đã trình bày ở mục trước, hầu hết chương trình điều khiển chínhđược viết trên PYTHON nên arduino chỉ có nhiệm vụ là nhận chuỗi dữ liệu từPYTHON gửi xuống rồi tiến hành sắp xếp và tách lây dữ liệu và điều khiểnđộng cơ bước theo mong muốn
Sau khi PYTHON gửi chuỗi dữ liệu xuống, arduino tiến hành nhận và tìm
Trang 25if(recever=='Z'){position_Z = count_number_string;}
Trang 27Chương 4: Vận hành và ứng dụng
4.1 Vận hành
Đầu tiên ta dùng tay canh chỉnh tay robot về vị trí đầu
Tiếp đó ta kết nối máy tính với robot bằng cách bấm nút “Connect tomeArm” trên giao diện rồi nhập các góc hợp với phương x ứng với vị trí robot
mà ta vừa dùng tay căn chỉnh
Sau đó bấm nút “Reset” để lấy tọa độ đầu với góc vừa nhập, rồi điềukhiển động học thuận, nghịch như chương trước đã trình bày
Trang 28Đồ án này chỉ dừng lại ở mức độ vẽ các hình cơ bản vì kiến thức của nhómcòn hạn hẹp
4.3.1 Ý Tưởng
Phương pháp điều khiển để robot vẽ được hình tròn là cho góc anpha hợpbởi bán kính và điểm M nằm trên đường tròn chạy từ 0 đến 360 độ, ứng với 1giá trị anpha là ứng với 1 tọa độ điểm M thuộc đường tròn Khi cho góc anphachạy hết 360 độ, ta có tập hợp các điểm M nằm trên đường tròn cần vẽ
4.3.2 Phương pháp vẽ
Ta vẽ trên mặt phẳng x và y nên không cần phải tìm z
Để tìm được các điểm M(xm,ym) thuộc đường tròn này, ta vẫn sẽ sử dụngphương pháp hình học và chia ra làm 4 trường hợp:
Trường hợp 1: góc anpha chạy từ 0 đến 90 độ
Trang 29Để tìm được Xm và Ym thì ta phải biết MI và AI
Biến v ở đây chính là góc anpha, sử dụng vòng lặp for chạy từ 0 đến 360
độ và mỗi lần chạy cách nhau 5 đơn vị, tức là mỗi điểm M thuộc đường tròncách nhau 1 góc 5 độ Ứng với mỗi biến v ta giải ra được 1 điểm M(xm,ym) rồichạy hàm donghocnghich1( ) giải ra 3 góc động cơ rồi gửi xuống arduino
Trường hợp 2: góc anpha chạy từ 91 đến 180 độ
Trang 31Trường hợp 3: góc anpha chạy từ 181 đến 270 độ.
Trang 32Trường hợp 4: góc anpha chạy từ 271 đến 360 độ.
Trang 33Khi bấm nút “XuatCode”, chương trình sẽ chạy hàm ungdung( ) và biến vbắt đầu chạy từ 0 đến 360, ứng với mỗi biến v là một tọa điểm M nằm trênđường tròn và gửi từng vị trí của các điểm đó xuống arduino.
Muốn cho bán kính R bao nhiêu thì nhập vào ô trống
Trang 34Sau khi gửi tập hợp các điểm trên đường tròn xuống arduino, arduino sẽnhận và dùng các biến toadoa[ ], toadob[ ], toadoc[ ] lưu vị trí tất cả các điểm đólại.
Khi bấm nút “veduongtron” robot lập tức vẽ và di chuyển đến từng điểmtrên đường tròn đã được lưu trước đó
Sau khi vẽ được đường tròn rồi, nhóm tiếp tục phát triển ứng dụng vẽthêm hình vuông và hình sao Cũng tương tự như phương pháp vẽ đường tròntrên ta cũng phân tích hình học để vẽ
Trang 35Hình vuông
Hình sao
Trang 365.2 Kết quả chưa đạt được
- Đây là loại robot rất khó để lấy chính xác vị trí ban đầu nên vẫn còn hạn chế
phải dùng tay căn chỉnh
- Vì vị trí ban đầu lấy còn chưa chính xác nên ứng dụng vẽ còn chưa được đẹp
lắm