Robot là cơ cấu đa chức năng có khả năng lập trình được dùng để dichuyển nguyên vật liệu, các chi tiết, các dụng cụ thông qua các truyền động được lậptrình trước.. Robot có cánh tay với
Trang 1ĐỒ ÁN KỸ THUẬT ROBOT
TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CƠ KHÍ - -
SVTH:TRÌNH ĐÌNH THI
PHẠM HỒNG NHỰT LÂM HOÀNG NGỌC THẠCH LỚP: 56CDT
GVHD: NGUYỄN THIÊN CHƯƠNG
NHATRANG 7/12/2017
NỘI DUNG: THIẾT KẾ CHẾ TẠO CÁNH
TAY ROBOT SCARA
Trang 2Robot ứng dụng rộng rãi và đóng vai trò quan trọng trong sản xuất cũng nhưtrong đời sống Robot là cơ cấu đa chức năng có khả năng lập trình được dùng để dichuyển nguyên vật liệu, các chi tiết, các dụng cụ thông qua các truyền động được lậptrình trước Khoa học robot chủ yếu dựa vào các phép toán về đại số ma trận.
Robot có thể thao tác như con người và hợp tác một cách thông minh
Robot có cánh tay với nhiều bậc tự do và có thế thực hiện các chuyển độngnhư tay người và điều khiển được bằng máy tính hoặc có thể điều khiểnbằng chươngtrình được nạp sẵn trong chip trên bo mạch điều khiển robot
Để hệ điều khiển robot có độ tin cậy, độ chính xác cao, giá thành hạ và tiếtkiệm năng lượng thì nhiệm vụ cơ bản là hệ điều khiển robot phải đảm bảo giá trị yêucầu của các đại lượng điều chỉnh và điều khiển Ngoài ra, hệ điều khiển robot phảiđảm bảo ổn định động và tĩnh, chống được nhiễu trong và ngoài, đồng thời không gâytác hại cho môi trường như: tiếng ồn quá mức quy định, sóng hài của điện áp và dòngđiện quá lớn cho lưới điện v.v
Trang 3Mục Lục
CHƯƠNG 1: GIỚI THIỆU VỀ ROBOT SCARA 3
1.1 Giới thiệu Robot Scara: 3
1.2 Phân loại robot công nhiệp: 4
1.2.1 Phân loại theo kết cấu: 4
1.2.2 Phân loại theo hệ thống truyền động: 4
1.2.3 Phân loại theo ứng dụng: 4
1.3.4 Phân loại theo phương pháp điều khiển 4
CHƯƠNG 2: THIẾT KẾ, CHẾ TẠO ROBOT 5
2.1 Cơ sở khoa học: 5
2.2Bản thiết kế bằng Solidworks : 5
2.3 Danh sách linh kiện: 6
2.3.1 Cơ khí: 6
2.3.2 Phần điện tử: 10
2.3.3 Chi tiết in: 15
2.4 Các bước chế tạo lắp ráp: 18
2.4.1 Cơ khí 18
2.4.2 Phần sơ đồ mạch điện: 25
CHƯƠNG 3: CHƯƠNG TRÌNH ĐIỀU KHIỂN VÀ PHẦN ĐỆM 29
3.1 Chương trình điều khiển bằng python 29
3.1.1 Các bước viết ra giao diện chương trình python 29
3.2 Chương trình đệm arduino 56
3.3 Hiệu chỉnh máy 57
3.4 Ứng dụng 58
Chương 4 : Kết Luận 66
4.1 Kết quả đạt được 66
4.2 Các mặt còn hạn chế 66
4.3 Hướng phát triển tương lai 66
Trang 4-CHƯƠNG 1: GIỚI THIỆU VỀ ROBOT SCARA
1.1 Giới thiệu Robot Scara:
Scara Robot ra đời vào năm 1979 tại trường đại học Yasamaski (Nhật Bản) dùng
trong việc lắp ráp Đó là tay máy scara đặc biệt gồm hai khớp quay và một khớp trượt,nhưng cả ba khớp đều có trục song song với nhau Kết cấu này làm cho tay máy cứngvững hơn theo phương thẳng đứng nhưng kém cứng vững hơn theo phương ngang.Loại này chuyên dùng trong công việc lắp ráp với tải trọng nhỏ theo phương đứng TừScara là viết tắt của chữ “Selective Compliance Articulated Robot Actuato ”
Scara Robot được nhiều hãng chế tạo để phục vụ có nhiều mục đích khác nhau
như hàn, lắp ráp, vận chuyển, khoan, doa,… Các hãng chuyên sản xuất Robot Scaranhư General motor, Hitachi, Mitsubishi, IBM, MOTOMAN, EPSON, PANASONIC,SONY,… Ngày nay, các hãng tiếp tục hoàn thiện bộ điều khiển và kết cấu cơ khí đểngày càng được linh hoạt hơn
Scara Robot có vùng không gian hoạt động có dạng hình trụ Đây là loại cấu hình
dễ thực hiện nhất được ứng dụng cho robot là dạng khớp nối bản lề và kế đó là khớptrượt Dạng này phổ biến nhất trong ứng dụng công nghiệp bởi vì chúng cho phép cácnhà sản xuất robot sử dụng một cách trực tiếp và dễ dàng nhờ các khâu và khớp hợplại có nhiều ưu điểm
Về mặt hình học, cấu hình dạng khớp nối bản lề với ba trục quay bố trí theophương thẳng đứng là dạng đơn giản và có hiệu quả nhất trong trường hợp yêu cầugắp đặt và đặt chi tiết theo phương thẳng Trong trường hợp này bài toán tọa độ hoặcquỹ đạo chuyển động đối với robot chỉ cần giải quyết ở hai phương x và y còn lạibằng cách phối hợp ba chuyển động quay quanh ba trục song song với trục z
Scara Robot luôn là chủ đề được quan tâm nhiều trong lĩnh vực tự động hó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à trong ngành côngnghiệp nói riêng Mỗi cánh tay đều có một cơ cấu khác nhau, do đó có các phươngtrình động học , động lực học cũng khác nhau cho nên việc tính toán và điều khiểnmỗi loại cánh 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ớinhưng nó mang tính chất khó, nghiên cứu và ứng dụng cao
Scara Robot là một trong những robot phổ biến nhất trong công nghiệp Chuyển
động của robot này rất đơn giản nhưng lại phù hợp với các dây chuyền và ứng dụnghữu hiệu trong nhiệm vụ nhặt và đặt sản phẩm Robot Scara (Selectively CompliantArticulated Robot Arm) có nghĩa là tay máy lắp ráp chọn lọc
Cấu trúc động học loại tay máy này thuộc hệ phỏng sinh, có các trục quay, cáckhớp đều là thẳng đứng Nó có cấu tạo hai khớp ở cánh tay, một khớp ở cổ tay và một
Trang 51.2 Phân loại robot công nhiệp:
1.2.1 Phân loại theo kết cấu:
Theo kết cấu của tay máy người ta phân thành robot kiểu tọa độ Đề các, kiểutọa độ trụ, kiểu tọa độ cầu, kiểu tọa độ góc, robot kiểu scara
1.2.2 Phân loại theo hệ thống truyền động:
- Hệ truyền động điện: thường dùng các loại động cơ điện 1 chiều (DC) hoặc cácđộng cơ bước (step motor) Loại truyền động này dễ điều khiển, kết cấu gọn gàng
- Hệ truyền động thủy lực: có thể đạt được công suất cao, đáp ứng những điềukiện làm việc nặng Tuy nhiên hệ thống thướng có kết cấu cồng kềnh, khó xử lýkhi điều khiển
- Hệ truyền động khí nén: có kết cấu gọn nhẹ hơn do không cần dẫn ngược nhưnglại phải gắn liền với trung tâm tạo ra khí nén Hệ này làm việc với công suất trungbình và nhỏ, kém chính xác
1.2.3 Phân loại theo ứng dụng:
Dựa vào ứng dụng của robot trong sản xuất như: robot sơn, robot hàn, robot lắpráp, robot chuyển phôi…
1.3.4 Phân loại theo phương pháp điều khiển.
- Robot điều khiển hở (mạch điều khiển không có các quan hệ phản hồi)
- Robot điều khiển kín: sử dụng các cảm biến, mạch phản hồi để tăng độ chínhxác và mức độ linh hoạt khi điều khiển
Trang 6CHƯƠNG 2: THIẾT KẾ, CHẾ TẠO ROBOT
2.1 Cơ sở khoa học:
Thiết kế của tay Scara gồm 3 khâu 1 khớp tịnh tiến và 2 khớp quay, Tay A cóchiều dài 110mm, tay B là 85mm Thiết kế được vẽ trên Solidwork theo cơ cấu truyềnđộng qua pully và dây đai
Với yêu cầu thiết kế cánh tay robot Scara ứng dụng để vẽ Chúng em đưa ra cáctiêu chí như sau:
- Cơ khí :
+ Đáp ứng yêu cầu môn học (thiết kế cánh tay Scara với 3 khâu, 1 khớp tịnhtiến, và 2 khớp quay và đầu kẹp viết để vẽ)
+ Nhỏ gọn, đẹp, chắc chắn, hạn chế độ rê nhất có thể tại các khớp nối
+ Vật liệu chi tiết nhẹ, tiết kiệm chi phí
- Điều khiển:
+ Đơn giản, tiết kiệm chi phí
+ Phù hợp với quy mô thiết kế, và công suất robot
Trang 7Hình 1 Robot Scara trên bản vẽ Solidwords
2.3 Danh sách linh kiện:
2.3.1 Cơ khí:
Hình 2.1 Trục vitme
Trang 8Hình 2.2Thanh trượt
Hình 2.3Bạc đạn 13-5
Hình 2.4 Ốc vít
Trang 9Hình 2.5Con trượt LM8UU
Hình 2.6Dây đai GT2
Hình 2.7Puly GT2, bước răng 2mm
Trang 10Hình 2.8Bạc đạn giữ vitme
Hình 2.9Khớp nối mềm 5x8
Trang 112.3.2 Phần điện tử:
2.3.2.1 Mạch Arduino Uno:
Hình 2.10 Mạch Arduino Uno
-Một số thông số kỹ thuật của Arduino Uno
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA
Điện áp vào khuyên dùng 7-12V DC
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Trang 122.3.2.2: Mạch CNC Shield:
Hình 2.12 Mạch CNC Shield
CNC shield V3 là board mở rộng của Arduino UNO R3 dùng để điều khiển các máyCNC mini Board có 4 khay dùng để cắm các mô đun điều khiển động cơ bướcA4988, khi đó board có thể điều khiển3 trục X, Y, Z và thêm một trục thứ 4 tùy chọntrên các máy CNC mini
Đặc điểm nổi bật:
- Tương thích GRBL (mã nguồn mở chạy trên Arduino UNO R3 để điều khiển CNCmini)
- Hỗ trợ lên tới 4 trục (trục X, Y, Z và một trục thứ tư tùy chọn)
- Hỗ trợ tới 2 Endstop (cảm biến đầu cuối) cho mỗi trục
- Tính năng điều khiển Spindle
- Tính năng điều khiển dung dịch làm mát khi máy hoạt động
- Sử dụng các mô đun điều khiển động cơ bước, giúp tiết kiệm chi phí khi thay thế,nâng cấp
- Thiết lập độ phân giải bước động cơ bằng jump đơn giản
- Thiết kế nhỏ gọn, các đầu nối tiêu chuẩn thông dụng
- Điện áp nguồn cấp đa dạng từ 12V tới 36V
Trang 132.3.2.3 Mạch điều khiển động cơ stepper drivers A4988
Hình 2.13 Stepper drvivers A4988
A4988 là một driver điều khiển động cơ bước cực kì nhỏ gọn, hỗ trợ nhiều chế độ làmviệc điều chỉnh được dòng ra cho động cơ , tự ngắt điện khi quá nóng
Mạch Arduino điều khiển trực tiếp 2 chân sung và chiều trên A4988 là chân STEP vàchân DIR
cấp Điện áp tối thiểu: 8 V
Điện áp logic 1 tối thiểu: 3 V
Điện áp logic 1 tối đa: 5.5 V
MS1 , MS2 , MS3 : điều khiển chế độ của độngcơ
Độ phân giải: full, 1/2, 1/4, 1/8, và 1/16
Tín hiệu điều khiển : STEP, DIR
Khích chân enable ở mức thấp thì driver hoạtđộng
Chân sleep va reset luôn được nối với nhau vìkhi hết hoạt động tự động reset driver về 0
Chân Vmot và GND nguồn cung cấp cho độngcợ
Chân VDD và GND nguồn nuôi driver
* Muốn động cơ quay nhanh ta điều khiển chế độ của driver, khi động cơ đi quá nhanh sẽdẫn tới sai số ảnh hưởng đến sản phẩm mà ta gia công
Trang 14Các chế độ điều khiển của driver A4988:
Hình 2.14 Các chế độ điều khiển A4988
2.3.2.4 Động cơ Servo
Hình 2.15 Động cơ Servo
Động cơ RC Servo 9G là động phổ biến dùng trong các mô hình điều khiển nhỏ và đơn giản như cánh tay robot Động cơ có tốc độ phản ứng nhanh, được tích hợp sẵn Driver điều khiển động cơ, dễ dàng điều khiển góc quay bằng phương pháp điều độ rộng xung PWM
Khối lượng : 9g
Kích thước: 22.2x11.8.32 mm
Momen xoắn: 1.8kg/cm
Trang 15Kết nối dây màu đỏ với 5V, dây màu nâu với mass, dây màu cam với chân phát
xung của vi điều khiển Ở chân xung cấp một xung từ 1ms-2ms theo để điều khiển gócquay theo ý muốn
2.3.2.5 Động cơ bước Nema 17
- Cường độ định mức 1.5A, mô men giữ 0.55 Nm, góc quay mỗi bước 1.8 °
- Dây nối dài 1m, đầu dây chuẩn XH2.54 Tương thích với đầu ra động cơ bước trênmạch RAMPS 1.4 hoặc CNC shield V3
- Công suất phù hợp cho máy in 3D và CNC mini
- Ít tỏa nhiệt, chuyển động êm
- Khối lượng: 400g
2.3.2.5 Công tắc hành trình Module
Trang 16Hình 2.17 Công tắc hành trình Module
Công tắc hành trình máy in 3D được sử dụng trong các thiết kế máy in 3D để xác định điểm của hành trình trục, công tắc được thiết kế dễ sử dụng với dây cắm đi kèm, đèn báo kích hoạt Ngoài việc sử dụng cho máy in 3D công tắc có thể được sử dụng cho nhiều mục đích khác nhau
2.3.3 Chi tiết in:
Trang 17Motor bot Motor top
Trang 18Arm bottom Bánh răng GT2
Arm A1
Trang 19Tay 1
Tay 2
2.4 Các bước chế tạo lắp ráp:
2.4.1-Cơ khí
B1 : Lắp 3 thanh trượt vào Bot , Lắp Đai ốc vít me để giữ vít me
B2 : Cố định LM8UU và Bạc đạn vào M-Top B3: Tương tự B2 với Motor bot
Trang 20B4+B5 : Gắn động cơ bước vào Motor bot và Motor top
B6 :Cố định Puly GT2 vào 2 động cơ bước (có thể làm trước B4, B5)
Trang 21B7 + B8 : Cố định Arm A và Arm A1 với Motor bottom
Trang 22B9 : Cố định Arm B với Motor top
B10 : Lắp các khớp ở B8 vào trục thanh trượt phi 8
Trang 23B11 : Lắp con trượt tròn vào spacer fix, 2 cái, sau đó cho vào 2 trục còn lại của tirenphi 8
B12 : Lắp B9 vào khớp với 3 trục Cố định khoảng cách giữa Bot và Top bằng 2 bulong 2 bên (đo đúng kích thước 2 bên = 4.8cm)
Trang 24B13: Lắp bạc đạn khớp với Arm A1 và Arm B, Bulong phi 8 giữ trục
B14 : Lắp dây đai cho các bánh răng và puly
Trang 25B15:Lắp động cơ bước vào Top
B16: Cố định động cơ bước và vitme bằng khớp nối mềm , Lắp vào 3 thanh trượt
Trang 26B17: Cố định động cơ Servo vào Gá tay gắp vật, sau đó lắp Gá tay gắp vật với Arm B
Trang 272.4.2 Phần sơ đồ mạch điện:
Hình 3.1 Sơ đồ mạch điện
Bước 1: Lắp mạch Arduino Uno với CNC Shield
Trang 28B2: Sau đó cắm các Jump vào mạch CNC Shield để đưa mạch về điều khiển động cơ bước với vi bước 1/16
B3: Cắm Drive A4988 vào 3 ô trên mạch CNC Shield để điều khiển 3 trục Z , khớp 1, khớp 2.
Trang 29B4: Nối dây điều khiển động cơ bước và động cơ Servo với mạch CNC Shield
Trang 30B6 : Cố định công tắc hành trình hạn chế góc quay của các khớp và trục Z
Trang 31CHƯƠNG 3: CHƯƠNG TRÌNH ĐIỀU KHIỂN VÀ
PHẦN ĐỆM
3.1 Chương trình điều khiển bằng python
Hình 3.2 Giao diện python
3.1.1 Các bước viết ra giao diện chương trình python
Bước 1 : Tạo bảng làm việc SCARA Nhóm 6 TNT, File ,Help
Trang 32from tkinter import*
import serial
import serial.tools.list_ports
import time #import the time library
from math import sin, cos
f=Frame(parent)
Label(f,text=text1,fg=clr1,anchor=W,width=w1,justify=LEFT,font=("Arial",size1,'bold')).pack(side=LEFT)
v=StringVar()
Label(f,textvariable=v,fg=clr2,anchor=W,width=w1,justify=LEFT,font=("Arial",size2)).pack(fill=X,side=RIGHT)
Trang 34#hiển thị vi trí theo thứ tự ưu tiên trc sau,, widget nào lập trỉnh trc thì ưu tiên vị trí trc
Trang 35fcon.pack(side=BOTTOM)
def onConnect(self):
Trang 36if self.arduino is None or not self.arduino.isOpen():
Trang 37print('Disconnection established successfully')
Bước 3 : Tạo bảng hiển thị Tọa độ , Góc khớp cánh tay Robot
lf1=LabelFrame(self,text='Current position')
fl11,self.v11=create_frame_label(lf1,'X:','$ $',w1=8,w2=8) fl11.grid(row=1,column=0)
fl12,self.v12=create_frame_label(lf1,'Y:','@ @',w1=8,w2=8) fl12.grid(row=1,column=1)
fl13,self.v13=create_frame_label(lf1,'Z:','* *',w1=8,w2=8) fl13.grid(row=1,column=2)
Trang 38fl14,self.v14=create_frame_label(lf1,'KHOP 1:','^ ^',14,16,'black','orange') fl14.grid(row=2,column=0)
fl15,self.v15=create_frame_label(lf1,'KHOP 2:','^ ^',14,16,'black','orange') fl15.grid(row=2,column=1)
fl16,self.v16=create_frame_label(lf1,'TRUC Z:','^ ^',14,16,'black','orange') fl16.grid(row=2,column=2)
if self.arduino is not None and self.arduino.isOpen():
print('G21' + 'X' + str(X) + 'Y' + str(Y)+ 'Z' + str(Z))
self.arduino.write(bytes('G21 ' + 'X' + str(X) + 'Y' + str(Y)+
Trang 39#valT = self.et47.get()#TOOL
if self.arduino is not None and self.arduino.isOpen():
print('G21' + 'X' + str(valR0) + 'Y' + str(valR1)+ 'Z' + str(valR2))
self.arduino.write(bytes('G21' + 'X' + str(valR0) + 'Y' + str(valR1) +
Trang 40bt52 = Button(lf5, height=2,width=6,text = '<< Y-',font =("Broadway", 12,'bold'),command=self.cb_send_Yg)
Trang 41lf4=LabelFrame(self,text='Move to Angles',relief=SUNKEN)
self.et46,self.v46=create_frame_entry(lf4,'Z Axis:',5)
self.et44,self.v44=create_frame_entry(lf4,'Arm A:',5)#44 X, 45 Y, 46 Z self.et45,self.v45=create_frame_entry(lf4,'Arm B:',5)
Trang 43self.arduino.write(bytes('G90'+'\n', 'utf-8')) #tuyêt dôi
else:
self.t=1
print('G91')
if self.arduino is not None and self.arduino.isOpen():
self.arduino.write(bytes('G91'+'\n', 'utf-8')) #tuong dôi
self.gcodeEnt.bind('<Return>', (lambda event:self.gcodeSender()))
f33.pack(expand=YES, side=BOTTOM,fill=X, padx=5, pady=5)
Trang 44Bước 7 : Chương trình điều khiển động học thuận
Trang 45def cb_send_Yt(self): # y+
s=float(self.et57.get())
s1=float(self.v15.get())
s2= s1+s
Trang 50self.arduino.write(bytes('G90'+'G0'+'X' + str(denta_1) + 'Y' + str(denta_1+denta_2) + 'Z' + str(self.et33.get()) + '\n','utf-8'))
Trang 52A2 = float(((math.pow(X2, 2) + math.pow(Y2, 2) - math.pow(110, 2) - math.pow(120, 2)) / (2*110*120)))
Trang 53self.arduino.write(bytes('G90'+'G0'+'X' + str(denta_11) + 'Y' +
str(denta_11+denta_21) + 'Z' + str(20) + '\n','utf-8'))
self.arduino.write(bytes('G90'+'G0'+'X' + str(denta_11) + 'Y' +
str(denta_11+denta_21) + 'Z' + str(self.et33.get()) + '\n','utf-8'))
self.arduino.write(bytes('G90'+'G0'+'X' + str(denta_12) + 'Y' +
str(denta_12+denta_22) + 'Z' + str(self.et82.get()) + '\n','utf-8'))