BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
Thiết kế và chế tạo robot Scara phân loại bánh răng.pdf
1. `
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CƠ KHÍ
ĐỒ ÁN TỐT NGHIỆP
NGÀNH: CƠ ĐIỆN TỬ
CHUYÊN NGÀNH: CƠ ĐIỆN TỬ
ĐỀ TÀI:
THIẾT KẾ VÀ CHẾ TẠO ROBOT SCARA
PHÂN LOẠI BÁNH RĂNG
Người hướng dẫn: TS. ĐẶNG PHƯỚC VINH
Người duyệt: PGS. TS. TRẦN XUÂN TÙY
Sinh viên thực hiện: ĐẶNG CÔNG ANH KHOA
NGUYỄN TUẤN TÚ
Lớp: 14CDT2
Đà Nẵng, 6/2019
DUT.LRCC
2. i
TÓM TẮT ĐỒ ÁN
ĐỀ TÀI: THIẾT KẾ VÀ CHẾ TẠO ROBOT SCARA PHÂN LOẠI BÁNH RĂNG.
Họ và tên SV : Đặng Công Anh Khoa
Mã SV : 101140186
Lớp : 14CDT2
Họ và tên SV : Nguyễn Tuấn Tú
Mã SV : 101140206
Lớp : 14CDT2
GV hướng dẫn : TS. Đặng Phước Vinh
Nội dung đã làm được bao gồm các vấn đề sau:
1. Nhu cầu thực tế của đề tài.
Đồ án tốt nghiệp là một trong những học phần bắt buộc của sinh viên ngành Cơ điện
tử nói riêng cũng như sinh viên khối ngành kĩ thuật nói chung. Để thiết kế thành công
một cơ cấu, một cụm chi tiết máy hay một máy hoàn chỉnh thì đòi hỏi sinh viên phải có
hiểu biết và nắm chắc các kiến thức về lĩnh vực cơ khí cũng như điện tử. Đây là điều
kiện thuận lợi cho tác giả để được ứng dụng các kiến thức đã học vào thực tế.
Công nghiệp ngày càng chính xác và nhanh chóng để đáp ứng xu thế hiện đại hóa.
Các ngành ngành công nghiệp đóng gói, dược phẩm cũng như trong lĩnh vực điện, điện
tử là những nghành đỏi hỏi sự chính xác cao trong kiểm tra đầu ra và để thay thế con
người trong việc kiểm tra thành phẩm với tốc độ nhanh và độ chính sác cao. Trong quá
trình sản xuất bánh răng sẽ không tránh khỏi xuất hiện của những bánh răng không đạt
chất lượng (gãy răng, mẻ răng, thiếu răng) mà những lỗi này người công nhân khó có
thể phát hiện kịp thời trong một dây chuyền tự động. Vì vậy, nhóm đã chọn đề tài “Thiết
kế và chế tạo robot SCARA phân loại bánh răng” để giải quyết vấn đề này.
DUT.LRCC
3. ii
2. Phạm vi nghiên cứu của đề tài:
Trong đề tài này nhóm thiết kế hệ thống băng tải sản phẩm, robot SCARA và
nghiên cứu ứng dụng xử lý ảnh để phân loại bánh răng.
- Tình toán thiết kế cánh tay robot SCARA.
- Tính toán thiết kế các hệ truyền động băng tải
- Xử lý ảnh
- Thiết kế, thi công mô hình.
3. Nội dung đề tài đã thực hiện :
- Một bản báo cáo thuyết minh.
- 5 bản vẽ A0.
- Một mô hình.
4. Kết quả đã đạt được:
Phần lý thuyết đã tìm hiểu:
- Tổng quan về quy trình sản xuất và phân loại bánh răng.
- Nguyên lý thiết kế băng tải
- Thiết kế cánh tay robot SCARA.
- Phần mềm xử lý ảnh và ứng dụng của xử lí ảnh.
Đã lựa chọn và thiết kế phần:
- Lựa chọn và đưa ra các phương án tối ưu để thiết kế băng tải.
- Lựa chọn và đưa ra các phương án tối ưu để thiết kế cánh tay robot.
- Thiết kế bộ phận chống nhiễu cho hệ thống xử lý ảnh.
Thiết kế mô hình tổng thể
DUT.LRCC
4. iii
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌCBÁCH KHOA
KHOA CƠKHÍ
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: ĐẶNG CÔNG ANH KHOA MSSV: 101140186
NGUYỄN TUẤN TÚ MSSV: 101140206
Lớp: 14CDT2 Khoa: Cơ khí Ngành: Kỹ thuật Cơ Điện Tử
1. Tên đề tài đồ án: Thiết kế và chế tạo robot SCARA phân loại bánh răng.
2. Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ đối với kết quả thực hiện
3. Các số liệu và dữ liệu ban đầu:
……………………………………..……………………………………………..……...
...…………………………………………………………………………………………
4. Nội dung các phần thuyết minh và tính toán:
Chương 1: Giới thiệu đề tài
Chương 2: Thiết kế hệ thống cơ khí
Chương 3: Thiết kế hệ thống điều khiển
Chương 4: Ứng dụng xử lý ảnh
Chương 5: Đánh giá và kết quả
5. Các bản vẽ, đồ thị:
Bản vẽ lắp tổng thể - 1 A0
Bản vẽ sơ đồ động – 1 A0
Bản vẽ lắp cụm khâu 3 – 1 A0
Bản vẽ lưu đồ thuật toán – 1 A0
Bản vẽ sơ đồ mạch điện – 1 A0
6. Họ tên người hướng dẫn: TS. Đặng Phước Vinh
7. Ngày giao nhiệm vụ đồ án: 01/02/2019.
8. Ngày hoàn thành đồ án: 01/06/2019.
Đà Nẵng, ngày 01 tháng 06 năm 2019.
Trưởng Bộ môn Người hướng dẫn
TS. Đặng Phước Vinh
DUT.LRCC
5. iv
LỜI NÓI ĐẦU
Trong thời kỳ khoa học công nghệ chiếm vị trí cực kỳ quan trọng như hiện nay thì
để hòa nhập với nền kinh tế thế giới ngành công nghiệp Việt Nam đang thay đổi một
cách nhanh chóng. Công nghệ và thiết bị hiện đại đang dần thay thế các thiết bị cũ kỹ,
công nghệ ngày càng được ứng dụng rộng rãi trong các cơ sở sản xuất để tạo ra các dây
chuyền bán tự động, tự động để nâng cao năng xuất, nâng cáo chất lượng sản phẩm.
Các dây chuyền tự động và robot đang được áp dụng vào ngành ngành công nghiệp
để thay thế con người trong các công việc việc với tốc độ nhanh và độ chính sác cao
hơn.
Với đồ án tốt nghiệp chuyên ngành cơ điện tử, nhóm đã chọn đề tài là: “Thiết kế
và chế tạo robot SCARA phân loại bánh răng”. Trong quá trình sản xuất bánh răng
sẽ không tránh khỏi xuất hiện của những bánh răng không đạt chất lượng (gãy răng, mẻ
răng, thiếu răng) mà những lỗi này người công nhân khó có thể phát hiện kịp thời trong
một dây chuyền tự động. Vì vậy, nhóm đã dùng xử lý ảnh để tối ưu hóa điều này.
Mặc dù được sự hướng dẫn nhiệt tình của thầy Đặng Phước Vinh, nhưng do công
nghệ còn hạn chế, kinh nghiệm thiết kế chưa trau dồi nhiều, tài liệu phục vụ cho công
việc thiết kế còn quá ít nên cũng không tránh khỏi những sai sót. Sau thời gian 3
tháng làm đề tài này bằng chính nổ lực của nhóm và được sự hướng dẫn của thầy Đặng
Phước Vinh, các thầy cô giáo và sự giúp đỡ của các bạn sinh viên khác trong khoa nhóm
đã hoàn thành xong đồ án này đúng thời gian quy định. Một lần nữa cho phép nhóm
gửi đến quý thầy cô cùng các bạn lòng biết ơn sâu sắc nhất.
Tác giả xin chân thành cảm ơn!
Đà Nẵng, ngày 01 tháng 06 năm 2019.
Sinh viên thực hiện
Đặng Công Anh Khoa
Nguyễn Tuấn Tú
DUT.LRCC
6. vi
CAM ĐOAN
Kính gửi: - Trường Đại học Bách khoa Đà Nẵng
- Khoa Cơ Khí
Tôi tên là: ĐẶNG CÔNG ANH KHOA
NGUYỄN TUẤN TÚ
Lớp: 14CDT2
Khoa: Cơ Khí
Đề tài: Thiết kế và chế tạo robot SCARA phân loại bánh răng.
Tác giả xin cam đoan nội dung của đồ án không phải sao chép bất cứ đồ án hay
công trình nào đã có trước đây. Mọi sự giúp đỡ cho việc thực hiện đồ án này đã được
cảm ơn, các thông tin trích dẫn trong đồ án đã được ghi nguồn gốc rõ ràng và được phép
công bố.
Sinh viên thực hiện:
Đặng Công Anh Khoa
Nguyễn Tuấn Tú
DUT.LRCC
7. vii
MỤC LỤC
Tóm tắt
Nhiệm vụ đồ án
Lời nói đầu
Cam đoan
Mục lục
Danh mục các hình vẽ
Danh sách ký hiệu, chữ viết tắt
Mở đầu
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI............................................................................2
1.1 Đặt vấn đề..........................................................................................................2
1.2 Các dạng hỏng bánh răng................................................................................2
1.3 Giải pháp đề ra và đánh giá ............................................................................2
1.4 Ý tưởng thiết kế robot cho hệ thống phân loại bánh răng ...........................3
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG CƠ KHÍ .......................................................8
2.1 Thiết kế băng tải...............................................................................................8
2.1.1 Phương án thiết kế ....................................................................................8
2.1.2 Phương án truyền động ............................................................................8
2.1.3 Tính toán thiết kế băng tải .......................................................................8
2.2 Thiết kế robot SCARA...................................................................................11
2.2.1 Giới thiệu robot SCARA.............................................................................11
2.2.3 Động học Robot SCARA.............................................................................16
CHƯƠNG 3 : THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN...........................................21
3.1 Sơ đồ hệ thống điện ........................................................................................21
3.1.1 Sơ đồ hệ thống chiếu sáng...........................................................................21
3.1.2 Sơ đồ kết nối hệ thống xử lý tín hiệu Camera...........................................22
3.2 Giới thiệu các phần tử trong hệ thống .............................................................23
3.2.1 Giới thiệu về Arduino Mega .......................................................................23
3.2.4 Một số phần tử khác trong mạch điện.......................................................27
3.2.4.1 Module hạ áp DC-DC LM2596............................................................27
DUT.LRCC
8. viii
3.2.4.3 Động cơ RC Servo SG-90......................................................................28
CHƯƠNG 4: ỨNG DỤNG XỬ LÝ ẢNH..................................................................29
4.1 Tổng quan về xử lý ảnh .....................................................................................29
4.1.1 Giới thiệu về xử lý ảnh ................................................................................29
4.1.2 Các công đoạn xử lý ảnh .............................................................................29
4.1.3 Một số khái niệm trong xử lý ảnh ..............................................................31
4.2 Ứng dụng vào đề tài ...........................................................................................33
4.2.1 Quá trình xử lý ảnh .....................................................................................33
4.2.1.1 Lưu đồ thuật toán của hệ thống...........................................................33
4.2.1.2 Lưu đồ thuật toán xử lý ảnh.................................................................35
CHƯƠNG 5: ĐÁNH GIÁ VÀ KẾT QUẢ.................................................................37
5.1 Đánh giá đề tài....................................................................................................37
5.2 Kết quả và hướng phát triển đề tài ..................................................................39
TÀI LIỆU THAM KHẢO..........................................................................................40
PHỤ LỤC 1 ....................................................................................................................1
PHỤ LỤC 2 ....................................................................................................................7
PHỤ LỤC 3 ....................................................................................................................1
PHỤ LỤC 4 ....................................................................................................................2
DUT.LRCC
9. ix
DANH SÁCH CÁC BẢNG, HÌNH ẢNH
Bảng 2. 1: Bảng thông số D-H của Robot Scara ..........................................................17
Bảng 3. 1: Bảng giá trị chân của vi điều khiển.............................................................24
Hình 1. 1 Mô hình hệ thống.............................................................................................3
Hình 1. 2 Robot có tọa độ Decac ....................................................................................4
Hình 1. 3 Robot dạng tọa độ trụ......................................................................................4
Hình 1. 4 Robot dạng tọa độ cầu.....................................................................................5
Hình 1. 5 Robot dạng khớp nối........................................................................................6
Hình 1. 6 Robot có cấu trúc động học vòng kín..............................................................6
Hình 2. 1 Biểu diễn băng tải và vật thể...........................................................................9
Hình 2. 2 Động cơ được chọn .......................................................................................10
Hình 2. 3 Hình ảnh 3D băng tải....................................................................................11
Hình 2. 4 Robot SCARA trong công nghiệp ..................................................................12
Hình 2. 5 Robot SCARA trong kỹ thuật tạo mẫu in 3D.................................................13
Hình 2. 6 Robot SCARA siết chặt vít.............................................................................13
Hình 2. 7 Robot SCARA lắp ráp ở vị trí ngược.............................................................14
Hình 2. 8 Robot SCARA gắp nhiều sản phẩm ...............................................................14
Hình 2. 9 Robot SCARA xếp đĩa....................................................................................15
Hình 2. 10 Hình ảnh 3D robot.......................................................................................15
Hình 2. 11 Robot Scara 4 bậc tự do ..............................................................................16
Hình 2. 12 Đặt hệ quy chiếu theo phương pháp D-H ...................................................17
Hình 2. 13 Tọa độ làm việc của robot...........................................................................20
Hình 3. 1 Sơ đồ kết nối mạch điện.................................................................................21
Hình 3. 2 Hệ thống chiếu sáng ......................................................................................22
Hình 3. 3 Sơ đồ kết nối hệ thống xử lý tín hiệu Camera ...............................................22
Hình 3. 4 Sơ đồ chân của bo mạch ARDUINO MEGA 2560........................................23
Hình 3. 5 Bộ điều khiển ramps 1.4................................................................................25
Hình 3. 6 Sơ đồ chân Driver A4988..............................................................................26
Hình 3. 7 Module hạ áp DC-DC LM2596.....................................................................27
Hình 3. 8 Động cơ Servo MG966R ...............................................................................27
Hình 3. 9 Động cơ RC Servo SG-90..............................................................................28
Hình 4. 1 Ảnh xám .........................................................................................................32
Hình 4. 2 Ảnh nhị phân..................................................................................................32
Hình 4. 3 Ảnh màu.........................................................................................................33
Hình 4. 4 Lưu đồ thuật toán của hệ thống.....................................................................34
Hình 4. 5 Lưu đồ thuật toán xử lý ảnh ..........................................................................35
Hình 5. 1 Hình ảnh thực tế của hệ thống ......................................................................37
Hình 5. 2 Giao diện ứng dụng xử lý ảnh trên Windows................................................38
DUT.LRCC
10. x
Hình 5. 3 Giao diện điều khiển robot bằng tay.............................................................38
DUT.LRCC
11. Thiết kế và chế tạo robot SCARA phân loại bánh răng
1
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
MỞ ĐẦU
Các hệ thống tự động hóa, robot đang dần thay thế các thiết bị cũ kỹ, công nghệ
ngày càng được ứng dụng rộng rãi trong các cơ sở sản xuất để tạo ra các dây chuyền bán
tự động, tự động để nâng cao năng xuất, nâng cáo chất lượng sản phẩm. Công nghiệp
đang ngày càng chính xác và nhanh chóng để đáp ứng xu thế hiện đại hóa. Các ngành
ngành công nghiệp đóng gói, dược phẩm cũng như trong lĩnh vực điện, điện tử,... là
những nghành đỏi hỏi sự chính xác cao trong kiểm tra đầu ra và để thay thế con người
trong việc sản xuất cũng như kiểm tra thành phẩm với tốc độ nhanh và độ chính sác cao.
Từ đó, các ngành kỹ thuật tự động, robotics, xử lý ảnh ra đời để đáp ứng nhu cầu và
không ngừng phát triển đề ngày càng hoàn thiện hơn. Trong đó, Robot SCARA được
ứng dụng đặc biệt rộng rãi trong các dây chuyền sản xuất, được thiết kế để đáp ứng
nhiều yêu cầu khác nhau
Để hoàn thành đồ án này ta cần hiểu và nắm rõ được cơ sở lý thuyết về phương
pháp phân tích, tính toán động học, tính toán công suất, kỹ thuật điện tử, kỹ thuật xử lý
ảnh. Ngoài ra, các kiến thức liên quan đến thiết kế cơ khí, mạch điện và lập trình vi
điều khiển cũng rất cần thiết để có thể hoàn thiện mô hình thực tể theo các tiêu chí ban
đầu.
DUT.LRCC
12. Thiết kế và chế tạo robot SCARA phân loại bánh răng
2
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
1.1 Đặt vấn đề
Quá trình kiểm tra chất lượng sản phẩm là một quá trình cực kỳ quan trọng trong
sản xuất sản phẩm, quá trình này đòi hỏi rất nhiều công sức của người lao động. Để kiểm
tra chất lượng cho một dây chuyền sản xuất bánh răng thì cần phải có rất nhiều công
nhân, việc kiểm tra đòi hỏi độ chính xác cao và tỉ mỉ, tuy nhiên thời gian làm việc trong
ngày là dài nên không tránh khỏi việc sai sót vì lý do chủ quan của công nhân. Đó là lý
do để các nhà máy nghĩ đến việc tự động hóa quá trình kiểm tra chất lượng bánh răng.
1.2 Các dạng hỏng bánh răng
Trong quy trình gia công, sản xuất bánh răng hẳn sẽ không tránh khỏi những vấn đề
làm cho bánh răng không đạt chất lượng. Các hư hỏng có thể là:
- Gãy hay mẻ răng: là hiện tượng bánh răng bị gãy răng hoặc răng bị mẻ không
đáp ứng tiêu chuẩn làm việc. Nguyên nhân chủ yếu do vật liệu phôi và trong
quá trình gia công dao bị mòn hoặc gãy làm hư hại tới bánh răng, hoặc lập
trình máy sai dẫn đến gia công sai.
- Tróc răng: là hiện tượng những mảnh sắt nhỏ bị bong ra khỏi bề mặt răng làm
cho răng yếu dần. Nguyên nhân do dao gia công bị mòn hoặc gãy, độ cứng
của phôi chưa đạt chuẩn hay vật liệu kém chất lượng làm hư hỏng trong quá
trình gia công bánh răng.
1.3 Giải pháp đề ra và đánh giá
Để tối hóa việc phân loại bánh răng, giảm thiểu sai sót của công nhân và tự động di
chuyển các bánh răng hỏng và bánh răng tốt sang các hộp riêng biệt thì việc sử dụng
cánh tay robot là cần thiết trong thời buổi hiện nay.
Ứng dụng công nghệ xử lý ảnh, camera được gắn phía trên băng tải di chuyển các
bánh răng đi ngang qua. Khi bánh răng tới vị trí của camera, máy tính sẽ phân tích hình
dạng của bánh răng, đếm số răng để so sánh với thông số sẵn có, đo đạc đường kính
trục… và đưa ra kết quả kiểm tra. Hệ thống xử lý ảnh giao tiếp với robot thông qua cổng
Serial để gửi tín hiệu điều khiển robot gắp bánh răng ra khỏi băng tải.
DUT.LRCC
13. Thiết kế và chế tạo robot SCARA phân loại bánh răng
3
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Mô hình hệ thống:
Hình 1. 1 Mô hình hệ thống
- Ưu điểm:
o Quy trình xử lý nhanh chóng và chính xác
o Loại bỏ được những vấn đề về nhân lực như: mệt mỏi khi làm việc, sai
sót trong lựa chọn.
o Điều khiển một cách dễ dàng và hiệu quả.
1.4 Ý tưởng thiết kế robot cho hệ thống phân loại bánh răng
Để việc gắp bánh răng hiệu quả thì cơ cấu của robot phải hợp lý và có năng suất
làm việc cao.
Yêu cầu đề ra: Lựa chọn loại cánh tay robot thích hợp thể hiện độ linh hoạt
trong phạm vi làm việc, cơ cấu cứng vững và tiết kiệm được chi phí chế tạo.
1.4.1 Phương án 1: Dạng Decac
Sử dụng 3 đường trượt vuông góc nhau trong không gian là các trục tọa độ X,Y,Z.
Robot chuyển động theo 3 trục tọa độ. Sử dụng các khớp tịnh tiến, phạm vi làm việc của
Robot được mở rộng theo hình chữ nhật
DUT.LRCC
14. Thiết kế và chế tạo robot SCARA phân loại bánh răng
4
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Hình 1. 2 Robot có tọa độ Decac
Ưu điểm:
- Di chuyển tay máy khá linh hoạt
- Phù hợp với hướng gắp từ trên xuống
Nhược điểm:
- Cơ cấu chưa cứng vững
- Khó thiết kế bộ truyền phù hợp
- Hoạt động rườm rà, tốn nhiều thời gian.
1.4.2 Phương án 2: Dạng hình trụ
Trục cơ bản là một trụ dọc, robot chuyển động lên xuống dọc theo trục.
Bằng cách chuyển động quay quanh trục, tịnh tiến dọc trục phạm vi làm việc của robot
được mở rộng theo một hình trụ bao quanh trục cơ bản.
Hình 1. 3 Robot dạng tọa độ trụ
DUT.LRCC
15. Thiết kế và chế tạo robot SCARA phân loại bánh răng
5
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Ưu điểm:
- Di chuyển tay máy khá linh hoạt
- Không phù hợp với hướng gắp từ trên xuống
Nhược điểm:
- Cơ cấu chưa cứng vững
- Khó thiết kế bộ truyền phù hợp
1.4.3 Phương án 3: Dạng hình cầu
Sử dụng các khớp lồng vào nhau giúp cho Robot có khả năng chuyển động lên hoặc
xuống theo chiều ngang của trục quay. Dạng đa khớp nối cho phép robot mở rộng
khoảng không gian làm việc theo hình cầu.
Hình 1. 4 Robot dạng tọa độ cầu
Ưu điểm:
- Di chuyển tay máy khá linh hoạt
- Không phù hợp với hướng gắp từ trên xuống
Nhược điểm:
- Cơ cấu chưa cứng vững
- Khó thiết kế bộ truyền phù hợp
- Hoạt động rườm rà, tốn nhiều thời gian.
1.4.4 Phương án 4: Dạng khớp nối
Tương tự như cánh tay con người, nó gồm 2 phần tử thẳng tương ứng với cánh tay
và cẳng tay. Các phần tử này được ghép nối với nhau bởi 2 khớp tương ứng với khớp
bả vai và khớp khủy tay. Cổ tay được nối với cẳng tay.
DUT.LRCC
16. Thiết kế và chế tạo robot SCARA phân loại bánh răng
6
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Hình 1. 5 Robot dạng khớp nối
Ưu điểm:
- Cơ cấu dễ thiết kế truyền động
- Phù hợp với hướng gắp từ trên xuống
- Cơ cấu cứng vững, chắc chắn
Nhược điểm:
- Phạm vi làm việc còn hạn chế
- Không phù hợp cho hướng gắp ngang
1.4.5 Phương án 5: Robot có cấu trúc động học là vòng kín
Là một chuỗi động học kín, ở đó mỗi khâu luôn luôn được liên kết với ít nhất 2
khâu khác.
Hình 1. 6 Robot có cấu trúc động học vòng kín
Ưu điểm:
- Di chuyển tay máy khá linh hoạt
- Phù hợp với hướng gắp từ trên xuống
- Tốn ít động cơ cho bộ truyền
DUT.LRCC
17. Thiết kế và chế tạo robot SCARA phân loại bánh răng
7
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Nhược điểm:
- Cơ cấu chưa cứng vững
- Phạm vi làm việc còn hạn chế cho với kích thước của robot
Kết luận: Có thể thấy phương án 4 và phương án 5 là phù hợp cho yêu cầu của
hệ thống, 2 robot điển hình cho 2 phương án này là robot SCARA và Delta. Tuy
nhiên phân tích sâu từng phương án nhóm quyết định chọn robot SCARA vì các
lý do sau:
- Phạm vi hoạt động của robot SCARA là lớn hơn robot Delta
- Hành trình trục Z (hướng từ trên xuống) của SCARA lớn hơn nhiều so
với Delta
- Việc thiết kế robot Delta phức tạp và tốn nhiều chi phí vì sử dụng các khớp
cầu rất khó để gia công.
DUT.LRCC
18. Thiết kế và chế tạo robot SCARA phân loại bánh răng
8
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG CƠ KHÍ
2.1 Thiết kế băng tải
Yêu cầu kĩ thuật:
- Vận tốc trên băng tải 3 m/phút.
- Chiều rộng băng tải 60 mm.
- Chiều dài băng tải 520 mm.
- Băng tải có bộ phận căng băng.
- Băng tải làm việc êm.
2.1.1 Phương án thiết kế
Chọn loại băng tải kiểu con lăn là phù hợp với yêu cầu của hệ thống, ưu điểm của loại
băng tải này:
- Số lượng pulley ở hai đầu ít.
- Thiết kế đơn giản.
- Vận hành tốt.
- Chi phí thấp.
2.1.2 Phương án truyền động
Chọn phương pháp Truyền động trực tiếp, kết hợp sử dụng động cơ có hộp giảm tốc tích
hợp.
Ưu điểm:
- Thích hợp với bộ truyền có tải trọng nhỏ.
- Chi phí chế tạo rẻ.
- Thiết kế đơn giản.
2.1.3 Tính toán thiết kế băng tải
1) chiều dài băng tải: L = 520 mm
2) Tính công suất động cơ
Công suất luôn là yếu tố cần phải xác định trước tiên khi tính toán chọn động cơ cho
băng tải. Công suất này là tổng hợp của 4 thành phần sau:
- Công suất cần thiết để chạy không tải
- Công suất cần thiết để di chuyển vật cần tải
- Công suất cần thiết để thắng lực ma sát
DUT.LRCC
19. Thiết kế và chế tạo robot SCARA phân loại bánh răng
9
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
- Công suất cần thiết để tăng tốc băng tải.
Để cho pulley truyền công suất cho băng tải thì tăng sự căng đai để cho phần đai
đi vào pulley nhiều hơn phần ra khỏi pulley. Để căng đai thì vận tốc của pulley truyền
động phải bằng hoặc lớn hơn vận tốc của bề mặt pulley tại chỗ tiếp xúc và vận tốc của
dây đai khi rời khỏi pulley thấp hơn một lượng bằng với lượng căng đai.
Việc tăng sự căng băng tải là hệ số ma sát giữa đai và pulley đủ để duy trì vận tốc
của băng tải bằng với vận tốc pulley. Vận tốc của phần băng tải bị động sẽ nhỏ hơn vận
tốc của phần băng tải chủ động do có sự trượt tương đối giữa băng tải và pulley.
Hình 2. 1 Biểu diễn băng tải và vật thể
Khối lượng băng tải: 0,3 kg
Khối lượng tải yêu cầu: 0,3 kg
Tổng khối lượng là m = 0,6 kg
Vận tốc yêu cầu là v = 3 m/phút = 0,05 m/s.
Hệ số ma sát giữa bề mặt và chi tiết là 0.3
Tải trọng cần thiết: F = mg + μmg = mg(1+ μ) = 0,6×9,81×(1+0,3) = 7,65 N
Lấy F = 10 N
Công suất cần thiết: P = F.v = 10×0,05 = 0,5 W
Công suất thực: Pt = P/ η = 0,5/(0,6×0,97) = 0,86 W, trong đó 0,6 là hiệu suất
của băng tải, 0,97 là hiệu suất bộ truyền bánh răng.
3) Tính tốc độ đầu ra của động cơ
Để phù hợp với thiết kế sử dụng thép hộp 20×20 mm chọn đường kính của tang
cuốn là D = 33 mm.
DUT.LRCC
20. Thiết kế và chế tạo robot SCARA phân loại bánh răng
10
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Tốc độ đầu ra của động cơ:
𝑛 =
𝑣
𝜋 × 𝐷
=
3.1000
3,14 × 33
= 28,95 (𝑣/𝑝) . 𝐿ấ𝑦 𝑛 = 29 (𝑣/𝑝)
Vì không có động cơ có tốc độ như vậy nên ta chọn động cơ có tốc độ lớn hơn
sau đó dùng phương pháp thay đổi điện áp để điều chỉnh tốc độ động cơ về tốc
độ cần thiết (sẽ trình bày ở phần điều chỉnh tốc độ băng tải).
Dựa vào catalog chọn động cơ loại TG-05R-SS có thông số:
Hình 2. 2 Động cơ được chọn
DUT.LRCC
21. Thiết kế và chế tạo robot SCARA phân loại bánh răng
11
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Hình 2. 3 Hình ảnh 3D băng tải
Động cơ chọn được có thông số:
- Tốc độ sau giảm tốc: n = 50,1 (v/p)
- Momen xoắn T = 196 mN.m
- Tỉ số truyền của hộp giảm tốc là i = 115.
2.2 Thiết kế robot SCARA
2.2.1 Giới thiệu robot SCARA.
2.2.1.1 Robot SCARA là gì?
Robot SCARA được phát triển lần đầu tiên vào năm 1980 tại Nhật Bản và tên
SCARA là viết tắt của “Selective Compliance Assembly Robot Arm - Cánh tay robot
lắp ráp tuân thủ chọn lọc”. Đặc điểm chính của robot SCARA là nó có 2 khớp liên kết,
theo một cách nào đó bắt chước cánh tay của con người mặc dù nó hoạt động trên một
mặt phẳng duy nhất, cho phép cánh tay mở rộng và gập lại vào các khu vực hạn chế
khiến nó phù hợp để tiếp cận bên trong vùng bị bạo hoặc chọn và đặt từ vị trí này sang
vị trí khác.
Robot SCARA thường có tối đa 4 trục (3 vòng quay và một tuyến tính Z).
DUT.LRCC
22. Thiết kế và chế tạo robot SCARA phân loại bánh răng
12
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Hình 2. 4 Robot SCARA trong công nghiệp
2.2.1.2 Ưu điểm và ngược điểm
- Ưu điểm:
o Robot SCARA được sử dụng phổ biến nhất cho các quá trình chọn và lắp ráp
trong trường hợp cần tốc độ và độ chính xác cao.
o Theo thiết kế, robot SCARA phù hợp với các ứng dụng có trường hoạt động
nhỏ và không gian sàn bị hạn chế, bố cục nhỏ gọn cũng giúp chúng dễ dàng
trong việc di dời và lắp đặt lại.
- Hạn chế:
o Do thiết kế nhỏ gọn nên chúng thường chỉ có khả năng mang tải trọng tương
đối nhẹ, thường lên tới 2 kg danh nghĩa (tối đa 10 kg).
o Vùng làm việc của robot SCARA thường có hình tròn, không phù hợp với
nhiều ứng dụng mà nhiều robot khác mang lại.
DUT.LRCC
23. Thiết kế và chế tạo robot SCARA phân loại bánh răng
13
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
2.2.1.3 Ứng dụng của robot SCARA trong công nghiệp
Robot SCARA có ứng dụng rộng rãi trong công nghiệp (chủ yếu), quy trình sản
xuất, trong y khoa hoặc lĩnh vực hàng không vũ trụ. Dưới đây là một số ứng dụng thực
tể của robot SCARA:
- Robot SCARA trong kỹ thuật tạo mẫu in 3D, cắt laser, CNC.
Hình 2. 5 Robot SCARA trong kỹ thuật tạo mẫu in 3D
- Công việc siết chặt vít bằng hệ thống robot SCARA
Hình 2. 6 Robot SCARA siết chặt vít
DUT.LRCC
24. Thiết kế và chế tạo robot SCARA phân loại bánh răng
14
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
- Lắp ráp sản phẩm với vị trí ngược.
Hình 2. 7 Robot SCARA lắp ráp ở vị trí ngược
- Gắp nhiều sản phẩm trong dây truyền
Hình 2. 8 Robot SCARA gắp nhiều sản phẩm
DUT.LRCC
25. Thiết kế và chế tạo robot SCARA phân loại bánh răng
15
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
- Robot SCARA xếp đĩa
Hình 2. 9 Robot SCARA xếp đĩa.
2.2.2 Ý tưởng ban đầu cho thiết kế của robot
Hình 2. 10 Hình ảnh 3D robot
DUT.LRCC
26. Thiết kế và chế tạo robot SCARA phân loại bánh răng
16
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
2.2.2.1 Chọn động cơ truyền động cho robot
Do cấu trúc của robot nên trải trọng của khâu 1 bằng tổng tải trọng trên các khâu
còn lại. Khối lượng tối đa mà robot có thể làm việc là 0,5 kg, khối lượng của các khâu
của robot là 0,5 kg.
Momen lớn nhất trên động cơ của khâu 1 là:
M = P×d/i = 1×9,8×0,255/16 = 0,16 Nm
Trong đó: i= 16 là tỉ số truyền của hộp giảm tốc bánh răng hành tinh
Công suất của động cơ được tính như sau:
- Chọn tốc độ của trục ra của hộp giảm tốc là 100 v/p => tốc độ trục ra của
động cơ là n = 100×16 = 1600 v/p
- Hiệu suất của ổ bi là ηổ = 0,9953
= 0,985
1 2 2x3,14x1600
0,12x 27
60x 60x0,985
n
P M M W
Chọn động cơ thỏa mãn tốc độ n > 1600 v/p, công suất P > 27 W
Vì vậy chọn động cơ bước KH4248-B95101 có thông số tốc độ quay và công suất
phù hợp với yêu cầu. Hơn nữa động cơ loại còn rất phổ biến trên thị trường nên ta chọn
luôn loại động cơ này cho các khâu sau vì nó sẽ đủ công suất cho các phần còn lại của
robot.
Thông số kỹ thuật:
+ Kích thước: Nema 17 × 42 × 42 mm
+ Công suất: 36 W
+ Góc quay nhỏ nhất: 1,80
+ Dòng điện định mức: 1.5 A
2.2.3 Động học Robot SCARA
2.2.3.1 Tính toán Động học robot SCARA
a. Động học thuận
Hình 2. 11 Robot Scara 4 bậc tự do
DUT.LRCC
27. Thiết kế và chế tạo robot SCARA phân loại bánh răng
17
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Từ hình 3.16 đặt hệ quy chiếu theo phương pháp D-H (Denavit-Hartenberg) ta các hệ
quy chiếu động được đặt tại các khâu và bộ thông số động học theo quy ước D-H được
bảng:
Hình 2. 12 Đặt hệ quy chiếu theo phương pháp D-H
Bảng 2. 1: Bảng thông số D-H của Robot Scara
Khâu θi αi ai di
1 θ1 0 a1 d1
2 θ2 180 a2 0
3 0 0 0 d3
4 θ4 0 0 d4
(*) Trong đó: d3, θ1, θ2, θ4 là biến khớp
Như vậy các ma trận biến đổi từ hệ i-1 về hệ i như sau:
cos sin cos sin cos a cos
sin cos cos cos cos a sin
0 sin cos
0 0 0 1
n
n
n
n
A
d
1 1
1
1
1
1 1
1 1 1
cos sin 0 a cos
sin cos 0 a sin
0 0 1
0 0 0 1
A
d
2 2
2
2
2 2
2 2 2
cos sin 0 a cos
sin cos 0 a sin
0 0 1 0
0 0 0 1
A
3
3
1 0 0 0
0 0 0
0 0 1
0
1
0 0 1
A
d
4
4
4
4 4
4
3
cos sin 0 0
sin cos 0 0
0 0 1
0 0 0 1
A
d d
DUT.LRCC
28. Thiết kế và chế tạo robot SCARA phân loại bánh răng
18
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Ma trận biến đổi thuần nhất mô tả hướng và vị trí của khâu thao tác so với
khâu cơ sở :
0 1 2 3
1 2 3 4
* * *
A A A A A
2 4 2 4 1 2 4 2 4 1 2 4 2 4 1 2 4 2 4 1 2 2 1 2 2 1 1
2 4 2 4 1 2 4 2 4 1 2 4 2 4 1 2 4 2 4 1 2 2 1 2 2 1 1
1 3 4
1
1
( ) ( ) ( ) ( ) 0 a a
( ) ( ) ( ) ( ) 0 a a
0 0 1
0 0 0 1
C C S S C S C C S S S C C S C S S C C S C C a S S C
C C S S S S C C S C S C C S S S S C C C C S a S C S
A
d d d
0 0 0 1
x x x
y y y
z z
y
z
x
z
n o p
p
p
a
n o a
A
n o a
2 4 1
2 4 1
cos( )
sin( )
0
x
y
z
n
n
n
0
0
1
x
y
z
a
a
a
2 4 1
2 4 1
sin( )
cos( )
0
x
y
z
o
o
o
2 2 1 1 1
2 2 1 1 1
1 3 4
cos( ) cos
sin( ) sin
( )
x
y
z
p a a
p a a
p d d d
b, Động học ngược
Ta có:
2 2 2 2 2 2
2 2 1 1 1 1 2 1 2 1
2 2 2 2
2 2 1 1 1 1 2 1 2 1
cos ( ) cos 2 cos cos( )
sin ( ) sin 2 sin sin( )
x y
p p a a a a
a a a a
2 2 2 2
2 1 1 2 2
2 cos
x y
p p a a a a
2 2 2 2
2 1
2
1 2
cos
2
x y
p p a a
a a
2
2 2
sin 1 cos
1 2 2 1 2 2 1
2 1 2 2 2 1 1
cos ( cos ) sin sin
cos sin ( cos )sin
x
y
p a a a
p a a a
1 2 2 1 2 2 1
2 2 2 2 2 2
1 2 1 2
2 2 1 2 1 1
cos ( cos ) sin sin
sin . sin sin
cos sin sin
cos cos
x
y
p a a a
a a a
a p
a a a a
DUT.LRCC
29. Thiết kế và chế tạo robot SCARA phân loại bánh răng
19
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
2 2 1 2 2
1 2 2
2 2 2 2 1
2 2 2 2 1 2 2
2 2
2 2 2 2 2 2 2 1
1
2 2 1 2 2 1
( cos ) sin
cos
( sin ) ( cos )
sin [( cos ) sin ]
sin cos ( sin ) ( cos )
sin
cos cos
x y
x
y
y
a a p a p
a a a
a a a p a
p
p a a a a
a a a a
2 2 1 2 2
1 2 2
2 2 2 2 1
2 2 2 2
1 2 2
2 2 2 2 1
( cos ) sin
cos
( sin ) ( cos )
cos sin
sin
( sin ) ( cos )
x y
y x
a a p a p
a a a
a p a p
a a a
2 2 1 2 2
1 2 2
2 2 2 2 1
2 2 1 2 2
1 2 2
2 2 2 2 1
( cos ) sin
cos
( sin ) ( cos )
( cos ) sin
sin
( sin ) ( cos )
x y
y x
a a p a p
a a a
a a p a p
a a a
2 2 1 2 2
1
2 2 2 2 1
( cos ) sin
tan
sin ( cos )
y x
y x
a a p a p
a p a a p
2 2 2 2
2 1
2
1 2
cos
2
x y
P P a a
M
a a
2 2
2 2
sin 1 cos 1
N M
2
2 1 2
1
2 2 1
4 1 2
3 1 4
arctan
( . ) . .
arctan
. . ( . )
y x
y x
z
N
M
a M a p a N p
a N p a M a p
d d d p
2.2.3.2Các thông số cơ bản của robot:
- Phạm vi hoạt động của các khâu:
+ -1270
< Ꝋ1 < 1270
+ -1330
< Ꝋ2 < 1330
+ 25 < d3 < 100
+ -1350
< Ꝋ4 < 1350
- Kích thước các khâu:
+ d1 = 250
+ d4 = 85
+ a1 = 130
DUT.LRCC
30. Thiết kế và chế tạo robot SCARA phân loại bánh răng
20
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
+ a2 = 125
- Tọa độ làm việc của robot:
Hình 2. 13 Tọa độ làm việc của robot
DUT.LRCC
31. Thiết kế và chế tạo robot SCARA phân loại bánh răng
21
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
CHƯƠNG 3 : THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN
3.1Sơ đồ hệ thống điện
Hình 3. 1 Sơ đồ kết nối mạch điện
3.1.1 Sơ đồ hệ thống chiếu sáng
*Hệ thống chiếu sáng:
Trong điều kiện làm việc ánh sáng thay đổi không đồng đều, sự xuất hiện của nhiễu
do lóa là không tránh khỏi. Vì vậy ta giải quyết vấn đề này bằng hộp che và chiếu sáng
bằng hệ thống led. Hệ thống đèn led sử dụng các led siêu sáng màu trắng để tạo nên
vòng chiếu sáng. Vì chi tiết bánh răng cần xử lý có tính chất đối xứng nên ta bố trí các
led thành dãy hình vuông sẽ dễ thực hiện nhất và đảm bảo được ánh sáng đồng đều cho
chi tiết.
DUT.LRCC
32. Thiết kế và chế tạo robot SCARA phân loại bánh răng
22
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Hình 3. 2 Hệ thống chiếu sáng
3.1.2 Sơ đồ kết nối hệ thống xử lý tín hiệu Camera
Hình 3. 3 Sơ đồ kết nối hệ thống xử lý tín hiệu Camera
DUT.LRCC
33. Thiết kế và chế tạo robot SCARA phân loại bánh răng
23
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Sơ đồ kết nối hệ thống gồm 4 phần chính:
Camera
Máy tính
Vi điều khiển
Động cơ
Sau khi khởi động, camera có nhiệm vụ nhận diện bánh răng, lấy hình ảnh gửi về
máy tính. Máy tính có nhiệm vụ phân tích xử lý rồi gửi tín hiệu về cho vi điều khiển qua
giao tiếp nối tiếp. Vi điều khiển gửi tín hiệu lên các động cơ để điều khiển băng tải và
cánh tay robot để phân loại các bánh răng.
3.2 Giới thiệu các phần tử trong hệ thống
3.2.1 Giới thiệu về Arduino Mega
- Arduino Mega 2560 sử dụng vi điều khiển Atmega 2560 cho số ngoại vi, các
chuẩn giao tiếp và số chân nhiều nhất, bộ nhớ rất lớn (256kb) có thể mở rộng
thêm số chân. Board có cấu trúc tương thích với các board mạch như Uno.Và sử
dụng điện áp 5VDC.
- Bên dưới là sơ đồ chân của bo mạch Arduino Mega 2560.
Hình 3. 4 Sơ đồ chân của bo mạch ARDUINO MEGA 2560
DUT.LRCC
34. Thiết kế và chế tạo robot SCARA phân loại bánh răng
24
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Thông số kĩ thuật
- Arduino Mega 2560 là một vi điều khiển hoạt động dựa trên chip ATmega2560.
- Vi điều khiển trung tâm ATmega 2560
- Arduino Mega 2560 sử dụng chip ATmega2560 của ATmel, bộ nhớ chương trình
lên đến 256kB trong đó có 8kB được sử dụng bởi bootloader. Với bộ nhớ chương
trình lớn, người dùng có thể viết nhiều chương trình phức tạp, điều khiển được
nhiều thiết bị hơn. Dung lượng RAM và EEPROM là 8kB và 4kB.
- 4 cổng nối tiếp:
Bảng 3. 1Bảng giá trị chân của vi điều khiển
Cổng serial Chân RX ChânTX
Serial 0 0 1
Serial 1 19 18
Serial 2 17 16
Serial 3 15 14
Thông số chính của mạch Arduino Mega 2560
- Vi điều khiển : ATmega 2560.
- Điện áp hoạt động : 5 V.
- Nguồn ngoài ( giắc tròn DC) 7 - 9 V. Không nên cấp nguồn 12 V vì sẽ gây
hỏng IC ổn áp.
- Số chân Digital: 54 (15 chân PWM).
- Số chân Analog: 16.
- Giao tiếp UART: 4 bộ UART.
- Giao tiếp SPI: 1 bộ (chân 50 đến chân 53) dùng với thư viện SPI của Ardunio
- Giao tiếp I2C: 1 bộ.
- Ngắt ngoài : 6 chân.
- Bộ nhớ Flash : 256 Kb, 8 Kb sử dụng cho Bootloader.
- SRAM: 8 Kb.
- Xung clock: 16 MHz.
DUT.LRCC
35. Thiết kế và chế tạo robot SCARA phân loại bánh răng
25
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
3.2.2 Board điều khiển động cơ Ramps 1.4
Hình 3. 5 Bộ điều khiển ramps 1.4
Mạch điều khiển máy in 3D RAMPS 1.4 là board mạch được sử dụng để điều khiển làm
robot, máy in 3D thông dụng nhất hiện nay, mạch có thể kết hợp với Arduino Mega
2560 và Các loại Driver Motor bước 16 chân như A4988, DRV8825,... để trở thành hệ
thống điện hoàn chỉnh điều khiển động cơ, máy in 3D, máy CNC,....
Thông số kỹ thuật:
- Tích hợp 3 ngõ ra Mosfet để điều khiển heatbed, fan và heater bằng PWM.
- Tích hợp cầu chì tự phục hồi 5 A bảo vệ toàn bộ hệ thống mạch.
- Tích hợp cầu chì tự phục hồi 11 A cho heatbed.
- Điều khiển được 5 động cơ bước qua 5 socket Driver, đặc biệt 2 socket dùng cho
2 động cơ bước ở trục Z nối song song, có jumper để điều chỉnh vi bước cho các
động cơ.
- Có ngõ ra cho giao tiếp I2C và SPI và kết nối với LCD, SD Card.
DUT.LRCC
36. Thiết kế và chế tạo robot SCARA phân loại bánh răng
26
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
3.2.3 Driver A4988
Hình 3. 6 Sơ đồ chân Driver A4988
A4988 là một bộ điều khiển DMOS cực nhỏ với bộ chuyển đổi và bảo vệ quá dòng.
A4988 có thể điều khiển được động cơ bước lưỡng cực với dòng điện lên đến 2A với
mỗi cuộn dây.
Dưới đây là một số tính năng chính của sản phẩm:
- Dễ dàng điều khiển hướng quay và số bước quay.
- 5 chế độ điều khiển: full step, half step, 1/4, 1/8, 1/16.
- Có thể điều chỉnh dòng tối đa thông qua một biến trở cho phép động cơ bước
hoạt động với công suất tối đa.
- Ngắt bảo vệ khi quá nhiệt, quá áp và quá dòng.
- Bảo vệ ngắn mạch.
Thông số kỹ thuật
- Điện áp hoạt động: 8 ~ 35 V.
- Dòng liên tục trên mỗi pha: 1 ~ 2 A.
- Điện áp logic: 3 - 5.5 V.
- Kích thước: 15,24 × 20,32 cm.
DUT.LRCC
37. Thiết kế và chế tạo robot SCARA phân loại bánh răng
27
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
3.2.4 Một số phần tử khác trong mạch điện
3.2.4.1 Module hạ áp DC-DC LM2596
Hình 3. 7 Module hạ áp DC-DC LM2596
Thông số kỹ thuật
Kích thước 43 x 21 x 14 mm
Điện áp đầu vào 3.2 - 40 V
Điện áp đầu ra 1.25 - 35 V
Dòng điện ra tối đa 3 A
Tần số xung PWM 64 kHz
Gợn đầu ra 30 mV
3.2.4.2 Động cơ Servo MG966R
Hình 3. 8 Động cơ Servo MG966R
DUT.LRCC
38. Thiết kế và chế tạo robot SCARA phân loại bánh răng
28
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Thông số kỹ thuật:
- Kích thước sản phẩm: 40,7 × 19,7 × 42.9 mm
- Tải trọng:
o 4.8V: 9.4 kg/cm,
o 6V: 11 kg/cm
- Tốc độ phản ứng:
o 4.8V: 0.17 s/ 60 độ
o 6V: 0.14 s/ 60 độ
- Điện áp làm việc: 4.8 - 7.2 V.
- Nhiệt độ làm việc: 0 ℃ -55 ℃.
- Trọng lượng: 55 g.
3.2.4.3 Động cơ RC Servo SG-90
Hình 3. 9 Động cơ RC Servo SG-90
Độ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.
Thông số kỹ thuật
- Kích thước: 23 × 12.2 × 29 mm.
- Trọng lượng: 9 gr .
- Điện áp hoạt động: 4.2 - 6 V .
- Nhiệt độ: 0 ℃ - 55 ℃.
- Tốc độ: 0.3 s/60 độ.
DUT.LRCC
39. Thiết kế và chế tạo robot SCARA phân loại bánh răng
29
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
CHƯƠNG 4: ỨNG DỤNG XỬ LÝ ẢNH
4.1 Tổng quan về xử lý ảnh
4.1.1 Giới thiệu về xử lý ảnh
Xử lý ảnh là một phân ngành trong xử lý số tín hiệu với tín hiệu xử lý là ảnh. Đây
là một phân ngành khoa học mới rất phát triển trong những năm gần đây. Xử lý
ảnh gồm 4 lĩnh vực chính: xử lý nâng cao chất lượng ảnh, nhận dạng ảnh, nén
ảnh và truy vấn ảnh. Sự phát triển của xử lý ảnh đem lại rất nhiều lợi ích cho cuộc
sống của con người.
Ngày nay xử lý ảnh đã được áp dụng rất rộng rãi trong đời sống như: photoshop,
nén ảnh, nén video, nhận dạng biển số xe, nhận dạng khuôn mặt, nhận dạng chữ
viết, xử lý ảnh thiên văn, ảnh y tế,....
Xử lý ảnh số là một lĩnh vực của tin học ứng dụng, bao gồm các phương pháp và
kỹ thuật biến đổi để truyền tải hoặc mã hóa các ảnh tự nhiên. Mục đích của xử lý
ảnh gồm:
- Biến đổi ảnh làm tăng chất lượng ảnh.
- Tự động nhận dạng ảnh, đoán nhận ảnh, đánh giá các nội dung của ảnh.
Nhận biết và đánh giá các nội dung của ảnh là sự phân tích một hình ảnh thành
những phần có ý nghĩa để phân biệt đối tượng này với đối tượng khác, dựa vào
đó ta có thể mô tả cấu trúc của hình ảnh ban đầu. Có thể liệt kê một số phương
pháp nhận dạng cơ bản như nhận dạng ảnh của các đối tượng trên ảnh, tách ảnh,
phân đoạn hình ảnh,... Kỹ thuật này được dùng nhiều trong y học (xử lý tế bào,
nhiễm sắc thể), nhận dạng chữ trong văn bản,...
4.1.2 Các công đoạn xử lý ảnh
1. Thu nhận ảnh
Đây là công đoạn đầu tiên mang tính quyết định đối với quá trình xử lý ảnh. Ảnh
đầu vào sẽ được thu nhận qua các thiết bị như camera, scanner.. tín hiệu này sẽ được số
hóa. Việc lựa chọn các thiết bị thu nhận ảnh sẽ phụ thuộc vào đặc tính của các đối tượng
cần xử lý. Các thông số quan trọng ở bước này là độ phân giải, chất lượng màu, dung
lượng bộ nhớ và tốc độ thu nhận ảnh của các thiết bị
DUT.LRCC
40. Thiết kế và chế tạo robot SCARA phân loại bánh răng
30
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
2. Tiền xử lý ảnh
– Là quá trình sử dụng các kỹ thuật xử lý ảnh để làm ảnh tốt lên theo mục đích sử
dụng.
– Mục đích:
Điều chỉnh độ chiếu sáng để khắc phục hậu quả của việc chiếu sáng không đều.
Giảm nhỏ thành phần nhiễu của ảnh tức là các đối tượng xuất hiện ngoài ý
muốn.
Hiệu chỉnh giá trị độ sáng giữa nền và đối tượng.
Chuẩn hoá độ lớn, màu, dạng của ảnh.
Điều chỉnh bộ lọc để khuyếch đại và nén các tần số.
3. Phân đoạn ảnh
– Là quá trình phân chia nội dung các đối tượng cần khảo sát ra khỏi ảnh.
– Phân chia các đối tượng tiếp giáp nhau.
– Phân tách các đối tượng riêng biệt thành các đối tượng con.
4. Biểu diển và mô tả
Kết quả của bước phân đoạn ảnh thường được cho dưới dạng dữ liệu điểm ảnh
thô, trong đó hàm chứa biên của một vùng ảnh, hoặc tập hợp tất cả các điểm ảnh thuộc
về chính vùng ảnh đó. Trong cả hai trường hợp, sự chuyển đổi dữ liệu thô này thành một
dạng thích hợp hơn cho việc xử lý trong máy tính là rất cần thiết. Quá trình tách các đặc
tính bao gồm việc chọn lựa cách biển diễn thích hợp cho một vùng ảnh và đưa ra phương
pháp mô tả dữ liệu đã được chuyển đổi để làm nổi bật các tính chất cần quan tâm.
5. Nhận dạng và nội suy ảnh
Nhận dạng ảnh là quá trình xác định ảnh. Quá trình này thường thu được bằng
cách so sánh với mẫu chuẩn đã được lưu từ trước. Còn quá trình giải thích là công đoạn
gán nghĩa cho một tập các đối tượng đã được nhận biết.
Trong thực tế, không phải bất kỳ một ứng dụng xử lý ảnh nào cũng bắt buộc phải tuân
theo tất cả các bước xử lý đã nêu trên, ví dụ như các ứng dụng chỉnh sửa ảnh nghệ thuật
thì chỉ dừng lại ở bước tiền xử lý. Một cách tổng quát thì những chức năng xử lý bao
gồm cả nhận dạng và giải thích thường chỉ có mặt trong hệ thống phân tích ảnh tự động.
DUT.LRCC
41. Thiết kế và chế tạo robot SCARA phân loại bánh răng
31
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
4.1.3 Một số khái niệm trong xử lý ảnh
1. Điểm ảnh
Một pixel hay điểm ảnh là một điểm vật lý trong một hình ảnh raster, hoặc một
khối màu là rất nhỏ và là đơn vị cơ bản nhất để tạo nên một bức ảnh kỹ thuật số.
Mỗi điểm ảnh là một mẫu của một hình ảnh ban đầu, nhiều điểm ảnh hơn thường
cung cấp đại diện chính xác hơn của bản gốc. Cường độ của mỗi điểm ảnh có thể
thay đổi. Hình ảnh trong hệ thống màu sắc, màu sắc thường là ba hoặc bốn đại
diện trong cường độ thành phần như màu đỏ, xanh lá cây, và màu xanh, hoặc màu
lục lam, đỏ tươi, màu vàng, và màu đen.
2. Mức xám của ảnh
Mức xám: Là kết quả của sự biến đổi tương ứng 1 giá trị độ sáng của 1 điểm ảnh
với 1 giá trị nguyên dương. Thông thường nó xác định trong [0, 255] tuỳ thuộc
vào giá trị mà mỗi điểm ảnh được biểu diễn. Các thang giá trị mức xám thông
thường: 16, 32, 64, 128, 256 (Mức 256 là mức phổ dụng. Lý do: từ kỹ thuật máy
tính dùng 1 byte (8 bit) để biểu diễn mức xám. Mức xám dùng 1 byte biểu diễn:
28
=256 mức, tức là từ 0 đến 255).
3. Độ phân giải của ảnh
Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một ảnh
số được hiển thị.
4. Phân loại ảnh
• Ảnh số (Digital image) là tập hợp hữu hạn các điểm ảnh.
• Ảnh có thể được biểu diễn dưới dạng một ma trận 2 chiều, mỗi phần tử của ma
trận tương ứng với một điểm ảnh (pixel).
• Ảnh có thể được định nghĩa là một hàm 2 chiều f(x, y), trong đó x và y là các tọa
độ trong không gian (spatial) hoặc mặt phẳng (plane), và độ lớn (amplitude) của
hàm f được gọi là độ sáng (intensity) hay độ xám (gray level) của ảnh tại điểm
đó.
Tùy theo giá trị dùng để biểu diễn điểm ảnh mà người ta phân ra 3 loại chính:
DUT.LRCC
42. Thiết kế và chế tạo robot SCARA phân loại bánh răng
32
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Ảnh xám (gray image): là ảnh mà tại mỗi điểm ảnh có một giá trị mức xám, giá trị
này nằm trong khoảng từ 0 tới 255, nghĩa là cần 8 bits (hay 1 byte) để biểu diễn mỗi
điểm ảnh này.
Hình 4. 1 Ảnh xám
Ảnh nhị phân (binary image): giá trị mỗi điểm ảnh là 0 hoặc 1, nghĩa là trắng hoặc
đen.
Hình 4. 2 Ảnh nhị phân
DUT.LRCC
43. Thiết kế và chế tạo robot SCARA phân loại bánh răng
33
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Ảnh màu (color image): là ảnh mà tại mỗi điểm là một cấu trúc gồm nhiều kênh
màu khác nhau (thường là 3 kênh màu).
Hình 4. 3 Ảnh màu
4.2 Ứng dụng vào đề tài
4.2.1 Quá trình xử lý ảnh
4.2.1.1 Lưu đồ thuật toán của hệ thống
DUT.LRCC
44. Thiết kế và chế tạo robot SCARA phân loại bánh răng
34
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Hình 4. 4 Lưu đồ thuật toán của hệ thống
*Nguyên lý hoạt động:
Khi hoạt động, bánh răng sẽ được thả trên băng tải, camera có nhiệm vụ nhận diện
và gửi hình ảnh bánh răng về máy tính để gửi tín hiệu cho vi điều khiển dừng băng tải,
sau đó máy tính xử lý kiểm tra chất lượng của bánh răng rồi gửi tín hiệu cho vi điều
khiển. Cánh tay robot SCARA sẽ gắp bánh răng hỏng và bánh răng tốt sang hai vị trí
khác nhau. Sau khi xử lý xong băng tải được khởi động trở lại. Chu trình lặp đi lặp lại
đến khi dừng chương trình.
DUT.LRCC
45. Thiết kế và chế tạo robot SCARA phân loại bánh răng
35
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
4.2.1.2 Lưu đồ thuật toán xử lý ảnh
Hình 4. 5 Lưu đồ thuật toán xử lý ảnh
DUT.LRCC
46. Thiết kế và chế tạo robot SCARA phân loại bánh răng
36
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Thiết lập camera:
private Capture myCmr;
myCmr = new Capture();
myCmr.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameWidth, 800);
myCmr.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameHeight, 600);
Tạo đối tượng myCmr thuộc lớp Capture để sử dụng các thuộc tính của lớp.
Sử dụng thuộc tính SetCaptureProperty để thay đổi các thông số của camera,
trong đó ta sử dụng FrameWidth và FrameHeight để thiết lập kích thước
khung hình thu vào.
Tiền xử lý:
Image<Gray, Byte> grayImg = img0.Convert<Gray, Byte>().SmoothMedian(3);
Image<Gray, Byte> binImg = grayImg.ThresholdBinary(new Gray(70), new Gray(255));
Sử dụng phương thức Convert<Gray,Byte>() để chuyển đổi không gian màu
cho ảnh khung hình đầu vào.
Phương thức SmoothMedian() được dùng để khử các nhiễu hạt.
Phương thức ThresholdBinary() để nhị phân ảnh theo ngưỡng cố định.
Phát hiện bánh răng bằng diện tích
Sử dụng phương thức CvInvoke.CountNonZero() đếm số lượng Pixel trắng
trong ảnh.
Cắt riêng phần bánh răng theo đường kính vòng chân
Sử dụng phương thức CvInvoke.FindContours() để tìm biên của bánh răng
Sử dụng phương thức CvInvoke.ContourArea() để tính diện tích của phần
bao trong các đường biên, dùng để loại bỏ các nhiễu lớn
Sử dụng phương thức CvInvoke.MinEnclosingCircle() để tìm đường tròn
nhỏ nhất bao quanh bánh răng
Sử dụng phương thức Draw() để vẽ đường tròn có tâm là tâm của đường tròn
bao ở trên và bán kính theo đường kính vòng chân nhập vào.
Trả về ảnh chỉ gồm các răng của bánh răng.
Đếm số răng
Sử dụng phương thức CvBlobDetector() để tìm phần răng và lưu vào đối
tượng blobs
Sử dụng phương thức FilterByArea() để lọc và xóa bỏ các blobs có diện tích
nằm ngoài phạm vi giới hạn.
DUT.LRCC
47. Thiết kế và chế tạo robot SCARA phân loại bánh răng
37
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
CHƯƠNG 5: ĐÁNH GIÁ VÀ KẾT QUẢ
5.1 Đánh giá đề tài
Phần đã đạt được
Chế tạo được băng tải đảm bảo các tiêu chí:
- Băng tải làm việc êm, có độ ồn thấp.
- Bộ phận căng đai giúp băng tải luôn hoạt động ổn định.
- Thiết kế có thẩm mĩ.
Chế tạo được robot SCARA đạt được các tiêu chí:
- Cứng vững, làm việc êm, hoạt động ổn định.
- Có tính thẩm mỹ và chi phí thấp.
Hình 5. 1 Hình ảnh thực tế của hệ thống
Thiết kế phần mềm giao diện trên Windows phù hợp với cấu hình của đa số máy
tính hiện nay
DUT.LRCC
48. Thiết kế và chế tạo robot SCARA phân loại bánh răng
38
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Hình 5. 2 Giao diện ứng dụng xử lý ảnh trên Windows
Hình 5. 3 Giao diện điều khiển robot bằng tay
Ứng dụng nhận diện được các bánh răng bị gãy răng và đếm được số răng cùng
với đo kích thước của lỗ trục.
Robot đã phân loại được bánh răng hỏng và tốt sang các hộp riêng biệt
DUT.LRCC
49. Thiết kế và chế tạo robot SCARA phân loại bánh răng
39
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
5.2 Kết quả và hướng phát triển đề tài
Những hạn chế
Trong phạm vi đồ án, đề tài đã có một số kết quả nhất định tuy nhiên vẫn còn
một số hạn chế sau:
- Phải tạm dừng băng tải trong thời gian xử lý bánh răng
- Chưa xử lý được nhiều loại bánh răng.
- Xác định đường kính trục chưa được thật sự chính xác.
- Chưa nhận diện được các bánh răng bị mẻ nhỏ.
Hướng phát triển đề tài
Trong thời gian đến, nhóm sẽ tiếp tục khắc phục những hạn chế nêu trên và
tiếp tục phát triển thuật toán nhận diện hiệu quả hơn, xử lý được nhiều loại bánh
răng hơn cũng như phát hiện được các bánh răng bị mẻ nhỏ.
DUT.LRCC
50. Thiết kế và chế tạo robot SCARA phân loại bánh răng
40
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
TÀI LIỆU THAM KHẢO
[1] Trịnh Chất, Lê Văn Uyển, Tính toán hệ dẫn động cơ khí tập 1, 2, NXB Giáo
Dục, Hà Nội, 2000.
[2] Phạm Đăng Phước, Robot Công Nghiệp, NXB Giáo Dục, Hà Nội, 2003.
[3] Nguyễn Hữu Lộc, Cơ sở thiết kế máy, NXB Khoa học-Kỹ thuật, Hà nội, 2006.
[4] Nguyễn Trọng Hiệp, Nguyễn Văn Lẫm, Thiết kế chi tiết máy, NXB Giáo Dục,
Hà Nội, 1999.
[5] http://www.emgu.com/wiki/index.php/Main_Page (truy cập: 02/2019)
[6] http://tutorialhunk.com/gear-quality-inspection-using-digital-image-
processing/
[7] http://www.Arduino.vn
[8] https://opencv-python-tutroals.readthedocs.io/en/latest/index.html
[9] https://www.theengineeringprojects.com/
DUT.LRCC
51. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
PHỤ LỤC 1
*Code Windows Form UI
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using System.Globalization;
using Emgu;
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.CV.Util;
using System.IO.Ports;
using System.Timers;
namespace _20_10_18_GearInspectionApp
{
public partial class GearInspection : Form
{
System.Timers.Timer procTimer = new System.Timers.Timer();
System.Timers.Timer stopTimer = new System.Timers.Timer();
System.Timers.Timer delayTimer = new System.Timers.Timer();
// timer define
private const int procTimerInterval = 1000;
private const int stopTimerInterval = 200;
private const int delayTimerInterval = 4200;
private float inDia = 38.75F; // inside diameter
private bool isFirst = true; // kiểm tra lần đầu tiên xử lý
private Capture myCmr;
private Mat frame = new Mat(); // khung hình
private Gear gear0 = new Gear(); // Tạo đối tượng thuộc Class Gear
private scara myScara = new scara();
public GearInspection()
{
InitializeComponent();
allTimerInit(); // khởi tạo các timer
cbbToolState.SelectedIndex = 1;
}
#region System timers
private void allTimerInit()
{
// khởi tạo timer xử lý từng BR
DUT.LRCC
52. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
procTimer.Interval = procTimerInterval;
procTimer.Elapsed += procTimer_Tick;
stopTimer.Interval = stopTimerInterval;
stopTimer.Elapsed += stopTimer_Tick;
delayTimer.Interval = delayTimerInterval;
delayTimer.Elapsed += pushTimer_Tick;
}
private void procTimer_Tick(object sender, EventArgs e)
{
procTimer.Enabled = false;
isFirst = true;
}
private void stopTimer_Tick(object sender, EventArgs e)
{
stopTimer.Enabled = false;
myCmr.Retrieve(frame);
using (Image<Bgr, Byte> capImg = frame.ToImage<Bgr, Byte>())
{
Image<Gray, Byte> preProcImg = gear0.PreProcess(capImg);
//pictureBox1.Image = preProcImg.Bitmap;
Image<Gray, Byte> teethOnlyImg = gear0.ROIcutter(preProcImg, inDia);
//ptbTeethOnly.Image = teethOnlyImg.Bitmap;
int num = gear0.gTeethCounter(teethOnlyImg);
ptbInf.Image = gear0.shaftDetect(capImg).Bitmap;
delayTimer.Enabled = true;
}
startConveyor();
}
private void pushTimer_Tick(object sender, ElapsedEventArgs e)
{
delayTimer.Enabled = false;
stopConveyor();
if (gear0.isGearGood() == false)
{
grabTheBadGear();
}
else if (gear0.isGearGood() == true)
{
grabTheGoodGear();
}
}
#endregion
#region COM ports Functions
private void serialPortInit()
{
//String[] portsName = SerialPort.GetPortNames();
//cbbPortsName.Items.AddRange(portsName);
//cbbPortsName2.Items.AddRange(portsName);
//cbbPortsName.SelectedIndex = 0;
//cbbPortsName2.SelectedIndex = 0;
}
DUT.LRCC
53. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
private void startConveyor()
{
if (mySerialPort1.IsOpen)
{
mySerialPort1.WriteLine("s");
}
}
private void stopConveyor()
{
if (mySerialPort1.IsOpen)
{
mySerialPort1.WriteLine("t");
}
}
//private void push()
//{
// if (mySerialPort.IsOpen)
// {
// mySerialPort.WriteLine("Push");
// }
//}
#endregion
#region All Camera Functions
//Khởi tạo camera
private void CameraInit()
{
myCmr = new Capture(0); // tạo camera ngoài
myCmr.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameWidth, 800); // Kích
thước khung hình
myCmr.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameHeight, 600); //
if (isCameraOpen())
{
myCmr.ImageGrabbed += ProcessFrame;
}
}
// xử lý khung hình
private void ProcessFrame(object sender, EventArgs e)
{
myCmr.Retrieve(frame);
ptbCamera.Image = frame.Bitmap;
using (Image<Bgr, Byte> capImg = frame.ToImage<Bgr, Byte>())
{
Image<Gray, Byte> preProcImg = gear0.PreProcess(capImg);
if (isFirst == true && gear0.isGearFound(preProcImg)== true)
//if (gear0.isGearFound(preProcImg) == true)
{
isFirst = false;
stopConveyor();
procTimer.Enabled = true;
stopTimer.Enabled = true;
}
}
}
//Kiểm tra camera đang mở
DUT.LRCC
54. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
private bool isCameraOpen()
{
if (myCmr != null)
{
return true;
}
return false;
}
// mở camera
private void OpenCamera()
{
if (isCameraOpen() == false) // camera đang đóng
{
CameraInit();
}
if (isCameraOpen())
{
myCmr.Start();
}
}
// đóng camera
private void CloseCamera()
{
if (myCmr != null)
{
myCmr.Stop();
}
}
#endregion
#region All Form Functions
// nút chạy băng tải
// nút dừng băng tải
// Khi mở form
private void GearInspection_Load(object sender, EventArgs e)
{
OpenCamera();
try
{
//cbbPortsName.SelectedIndex = 1;
//cbbPortsName2.SelectedIndex = 2;
//mySerialPort.PortName = cbbPortsName.Text;
//mySerialPort1.PortName = cbbPortsName2.Text;
mySerialPort.PortName = "COM5";
mySerialPort1.PortName = "COM8";
mySerialPort.Open();
mySerialPort1.Open();
startConveyor();
//MessageBox.Show("Controller connected!", "INFORMATION",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("No SerialPorts
found","WARNING",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
DUT.LRCC
55. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
// khi đóng form
private void GearInspection_FormClosed(object sender, FormClosedEventArgs e)
{
stopConveyor();
if (isCameraOpen())
{
CloseCamera();
}
if (mySerialPort.IsOpen)
{
mySerialPort.Close();
}
}
private void txtHome_Click(object sender, EventArgs e)
{
if (mySerialPort1.IsOpen)
{
mySerialPort1.WriteLine("home");
txtPostX.Text = "255";
txtPostY.Text = "0";
txtPostZ.Text = "142";
txtPostA.Text = "0";
txtPostTool.Text = "off";
}
}
#endregion
#region All Robot Functions
private void grabTheBadGear()
{
mySerialPort.WriteLine(myScara.positionToString(255, 0, 85, 0, "on")); // move
to grab the gear
Thread.Sleep(2500);
mySerialPort.WriteLine(myScara.positionToString(150, 50, 142, 0, "on")); //
move to badbox's position
Thread.Sleep(4500);
mySerialPort.WriteLine(myScara.positionToString(150, 50, 95, 0, "off")); //
release the gripper
Thread.Sleep(700);
mySerialPort.WriteLine(myScara.positionToString(255, 0, 142, 0, "off")); //
reset position
Thread.Sleep(3500);
startConveyor();
}
private void grabTheGoodGear()
{
mySerialPort.WriteLine(myScara.positionToString(255, 0, 85, 0, "on")); // move
to grab the gear
Thread.Sleep(2700);
mySerialPort.WriteLine(myScara.positionToString(150, 150, 142, 0, "on")); //
move to bad box position
Thread.Sleep(3500);
mySerialPort.WriteLine(myScara.positionToString(150, 150, 95, 0, "off")); //
release the gripper
Thread.Sleep(500);
mySerialPort.WriteLine(myScara.positionToString(255, 0, 142, 0, "off")); //
reset position
Thread.Sleep(3500);
startConveyor();
}
DUT.LRCC
56. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
#endregion
private void button1_Click(object sender, EventArgs e)
{
startConveyor();
}
private void button2_Click(object sender, EventArgs e)
{
stopConveyor();
}
private void button5_Click(object sender, EventArgs e)
{
try
{
double px = double.Parse(txtX.Text, CultureInfo.InvariantCulture);
double py = double.Parse(txtY.Text, CultureInfo.InvariantCulture);
double pz = double.Parse(txtZ.Text, CultureInfo.InvariantCulture);
double alpha = double.Parse(txtA.Text, CultureInfo.InvariantCulture);
string state = cbbToolState.Text;
mySerialPort.WriteLine(myScara.positionToString(px, py, pz, alpha, state));
txtPostX.Text = px.ToString();
txtPostY.Text = py.ToString();
txtPostZ.Text = pz.ToString();
txtPostA.Text = alpha.ToString();
txtPostTool.Text = state.ToString();
}
catch
{
MessageBox.Show("Error!");
}
}
private void button4_Click(object sender, EventArgs e)
{
if (mySerialPort.IsOpen)
{
mySerialPort.WriteLine(myScara.positionToString(255, 0, 142, 0, "off"));
// reset position
txtPostX.Text = "255";
txtPostY.Text = "0";
txtPostZ.Text = "142";
txtPostA.Text = "0";
txtPostTool.Text = "off";
}
}
private void pictureBox2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
DUT.LRCC
57. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
PHỤ LỤC 2
*Code Class Gear
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Emgu;
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.CV.Util;
using Emgu.CV.Cvb;
namespace _20_10_18_GearInspectionApp
{
class Gear
{
// các thuộc tính
private int gTeeth;
private int bTeeth;
private float shaftDiameter;
//public int areaarea;
// thuộc tính camera
float ratio = 0.0956F; //ratio = W/P Tỉ số xác định bằng thực nghiệm
//P: số pixel trên ảnh của vật; W: Kích thước thực của vật
//
//
//
// phương thức tiền xử lý
public Image<Gray, Byte> PreProcess(Image<Bgr, Byte> img0)
{
Image<Gray, Byte> grayImg = img0.Convert<Gray, Byte>().SmoothMedian(3);
Image<Gray, Byte> binImg = grayImg.ThresholdBinary(new Gray(70), new
Gray(255));
return binImg;
}
//
//
//
// Tìm biên, trả về vector
private VectorOfVectorOfPoint contoursFinder(Image<Gray, Byte> binImg)
{
VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();
Mat hierachy = new Mat();
CvInvoke.FindContours(binImg.Clone(), contours, hierachy,
Emgu.CV.CvEnum.RetrType.Tree, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
return contours;
}
//
//
//
// Vẽ đường biên của BR
private Image<Bgr, Byte> drawExContour(Image<Bgr, Byte> inputImg)
{
VectorOfVectorOfPoint myContours = new VectorOfVectorOfPoint();
DUT.LRCC
58. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Image<Bgr, Byte> exContourImg = inputImg.Clone();
myContours = this.contoursFinder(PreProcess(inputImg));
for (int i = 0; i < myContours.Size; i++) // lọc các đường biên của nhiễu
{
double area = CvInvoke.ContourArea(myContours[i]);
if (area < 100000)
{
myContours[i].Clear();
}
}
CvInvoke.DrawContours(exContourImg, myContours, -1, new MCvScalar(0, 255, 255),
5);
return exContourImg;
}
//
//
//
// Lọc các nhiễu, Cắt phần răng theo bán kính nhập vào, trả về ảnh vùng ROI
public Image<Gray, Byte> ROIcutter(Image<Gray, Byte> preProcImg, float inDia)
{
float radius = (inDia / 2) / ratio;
VectorOfVectorOfPoint myContours = new VectorOfVectorOfPoint();
Image<Gray, Byte> teethOnlyImg = new Image<Gray, Byte>(preProcImg.Width,
preProcImg.Height);
myContours = contoursFinder(preProcImg);
for (int i = 0; i < myContours.Size; i++) // lọc các đường biên của nhiễu
{
double area = CvInvoke.ContourArea(myContours[i]);
if (area < 100000)
{
myContours[i].Clear();
}
}
CvInvoke.DrawContours(teethOnlyImg, myContours, -1, new MCvScalar(255, 255,
255), -1); // vẽ lại bánh răng bằng đường biên ngoài của BR
myContours = contoursFinder(teethOnlyImg);
for (int i = 0; i < myContours.Size; i++)
{
CircleF minCircle = CvInvoke.MinEnclosingCircle(myContours[i]);
PointF mCenterPoint = minCircle.Center;
float mRadius = minCircle.Radius;
CircleF fillCircle = new CircleF(mCenterPoint, radius + 4); // cắt lớn hơn
bán kính
teethOnlyImg.Draw(fillCircle, new Gray(0), -1);
Rectangle rect = new Rectangle((int)(mCenterPoint.X - mRadius),
(int)(mCenterPoint.Y - mRadius), (int)(2 * mRadius), (int)(2 * mRadius));
teethOnlyImg.ROI = rect;
}
return teethOnlyImg;
}
//
//
//
// phương thức tìm số răng của phần BR đã cắt riêng lọc theo diện tích
public int gTeethCounter(Image<Gray, Byte> cutImg)
{
bTeeth = gTeeth = 0;
CvBlobs blobs = new CvBlobs();
CvBlobDetector detector = new CvBlobDetector();
detector.Detect(cutImg, blobs);
int aTeeth = blobs.Count;
blobs.FilterByArea(1500, 3000);
gTeeth = blobs.Count;
bTeeth = aTeeth - gTeeth;
return gTeeth;
}
DUT.LRCC
59. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
//
//
//
// phát hiện bánh răng trong vùng camera
public bool isGearFound(Image<Gray, Byte> frameImg)
{
//areaarea = 0;
Image<Gray, Byte> roiCut = frameImg.Clone();
roiCut.ROI = new Rectangle(200, 0, 400, 600);
int numOfWhitePx = CvInvoke.CountNonZero(roiCut); //return số px trắng
//areaarea = CvInvoke.CountNonZero(roiCut);
if (numOfWhitePx < 90000)
{
return false;
}
else return true;
}
//
//
//
// tìm đường tròn trục và cập nhật thông tin bánh răng lên ảnh
public Image<Bgr, Byte> shaftDetect(Image<Bgr, Byte> Img)
{
shaftDiameter = 0;
CircleF detectedCircle = new CircleF();
Image<Bgr, Byte> newImg = new Image<Bgr, Byte>(Img.Width, Img.Height);
//int radius;
Gray cannyThreshold = new Gray(100);
Gray accumulatorThreshold = new Gray(100);
double resolution = 8;
double minDistance = Img.Width;
int minRadius = 50;
int maxRadius = 80;
newImg = Img.Clone();
CircleF[] circles =
Img.Clone().Convert<Gray,Byte>().HoughCircles(cannyThreshold, accumulatorThreshold,
resolution, minDistance, minRadius, maxRadius)[0];
foreach (CircleF myCircle in circles)
{
detectedCircle = new CircleF(Point.Round(myCircle.Center),
myCircle.Radius);
newImg.Draw(detectedCircle,new Bgr(Color.Yellow) , 5);
shaftDiameter = 2 * myCircle.Radius * ratio;
}
newImg = drawExContour(newImg);
newImg.Draw("ShaftDia= " + shaftDiameter.ToString("0.0") + "mm", new Point(10,
30), Emgu.CV.CvEnum.FontFace.HersheyTriplex, 1.2, new Bgr(Color.White),2);
newImg.Draw("No.OfTeeth= " + gTeeth.ToString(), new Point(450, 30),
Emgu.CV.CvEnum.FontFace.HersheyTriplex, 1.2, new Bgr(Color.White), 2);
if (this.isGearGood())
{
newImg.Draw("Quality: GOOD", new Point(10, 75),
Emgu.CV.CvEnum.FontFace.HersheyTriplex, 1.2, new Bgr(Color.White), 2);
}
else
{
newImg.Draw("Quality: BAD", new Point(10, 75),
Emgu.CV.CvEnum.FontFace.HersheyTriplex, 1.2, new Bgr(Color.White), 2);
}
;
return newImg;
}
//
//
DUT.LRCC
60. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
//
// trả về BR good/Bad
public bool isGearGood()
{
if (bTeeth > 0)
{
return false;
}
return true;
}
}
}
DUT.LRCC
61. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
PHỤ LỤC 3
*Code class SCARA:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;
namespace _20_10_18_GearInspectionApp
{
class scara
{
private const double a1 = 130.00;
private const double a2 = 125.00;
private const double d1 = 250.00;
private const double d4 = 85.00;
public double cosT2;
public double sinT2;
public double T2;
public double T1;
public double d3;
public double T4;
public string home = "0,0,0,0,off,";
public string currStr = "";
// return a string to send
public string positionToString(double Px, double Py, double Pz, double Alpha,
string State){
cosT2 = Math.Round((Px * Px + Py * Py - a2 * a2 - a1 * a1) / (2 * a1 * a2), 2);
sinT2 = Math.Round(Math.Sqrt(1 - cosT2 * cosT2), 2);
T2 = Math.Round(Math.Atan2(sinT2, cosT2) * 180.0 / Math.PI, 2);
double top = Math.Round((a2 * cosT2 + a1) * Py - a2 * sinT2 * Px, 2);
double bot = Math.Round(a2 * sinT2 * Py + (a2 * cosT2 + a1) * Px, 2);
T1 = Math.Round(Math.Atan2(top, bot) * 180 / Math.PI, 2);
d3 = Math.Round(d1 - d4 - Pz, 2);
T4 = Math.Round(T1 + T2 - Alpha, 2);
string outStr = T1.ToString(CultureInfo.InvariantCulture) + "," +
T2.ToString(CultureInfo.InvariantCulture) + "," + (d3-
25).ToString(CultureInfo.InvariantCulture) + "," +
T4.ToString(CultureInfo.InvariantCulture) + "," + State + ",";
currStr = outStr;
return outStr;
}
}
}
DUT.LRCC
63. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
float a, b, c, d;
float prv_a, prv_b, prv_c;
bool ror = false;
void setup() {
// put your setup code here, to run once:
pinMode(CONVEYOR, OUTPUT);
initPort(); // initializing PWM port to control 2 Servo Motor
initMotor(120, 120, 250);
setDeg(SERVO1, 0); // init value for 2 servo
setDeg(SERVO0, 90);
Serial.begin(9600); // to getting data
Serial2.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
getData();
if (ror == true) {
cal(a, b, c, d); // tinh toan: deg -> step
//show();
motRun();
ror = false;
}
}
void initMotor(int xSpeed, int ySpeed, int zSpeed){
xstp.begin(xSpeed, uSTEP);
ystp.begin(ySpeed, uSTEP);
zstp.begin(zSpeed, uSTEP);
xstp.setEnableActiveState(LOW);
ystp.setEnableActiveState(LOW);
zstp.setEnableActiveState(LOW);
holdingMotor();
}
void holdingMotor(){
xstp.enable();
ystp.enable();
zstp.enable();
}
void releaseMotor(){
xstp.disable();
ystp.disable();
zstp.disable();
}
// Set toc do (RPM) cho cac dong co X,Y,Z
void setSpeedXYZ(int xSpeed, int ySpeed, int zSpeed){
xstp.setRPM(xSpeed);
ystp.setRPM(ySpeed);
zstp.setRPM(zSpeed);
}
// Chay robot ve VT ban dau
void robHome() {
Serial2.println("Homing....");
prv_a = 0;
prv_b = 0;
prv_c = 0;
setDeg(SERVO1, 60);
setSpeedXYZ(50, 50, 100);
while (digitalRead(Z_MIN_PIN) == 0) {
zstp.move(-20);
}
while (digitalRead(Z_MIN_PIN) != 0) {
zstp.move(20);
DUT.LRCC
64. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
}
while (digitalRead(Y_MIN_PIN) == 0) {
ystp.move(-20);
}
while (digitalRead(Y_MIN_PIN) != 0) {
ystp.move(20);
}
while (digitalRead(X_MIN_PIN) == 0) {
xstp.move(-20);
}
while (digitalRead(X_MIN_PIN) != 0) {
xstp.move(20);
}
setSpeedXYZ(100, 150, 250);
syncXY.move(degToStep(127)*ratioX,degToStep(133)*ratioY); //set zero point
(0,0,0,0,off) offset from Home point at teta1 = 127 deg, teta2 = 133deg
Serial2.println("Done!");
}
// chay cac dong co
void motRun() {
Serial.println("Running...");
if (n3 >= 0) {
syncXY.move(n1,n2);
setDeg(SERVO0, n4);
zstp.move(n3);
}
else {
zstp.move(n3);
setDeg(SERVO0, n4);
syncXY.move(n1,n2);
}
if (n5 == "on") {
setDeg(SERVO1, 180);
}
else if(n5 == "off") {
setDeg(SERVO1, 0);
}
Serial.println("Done!");
}
//for X,Y
int degToStep(float deg) {
return (int) (deg * 200 * uSTEP / 360);
}
//for only Z-Axis
int mmToStep(float mm) {
return (int) (mm * 200 * uSTEP / ratioZ);
}
//Tinh toan cac thong so
void cal(float ai, float bi, float ci, float di) {
n1 = (int)(degToStep(ai) * ratioX);
n2 = (int)(degToStep(bi) * ratioY);
n3 = mmToStep(ci);
n4 = map(di, -135, 135, 270, 0) * ratioR;
}
// hien thi thong so cac goc
void show() {
Serial.print("teta1 =");
Serial.println(a);
Serial.print("teta2 =");
DUT.LRCC
65. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
Serial.println(b);
Serial.print("d3 =");
Serial.println(c);
Serial.print("teta4 =");
Serial.println(d);
}
// doc du lieu tu Serial
void getData() {
while (Serial2.available() > 0) {
char inChr = Serial2.read();
if (inChr == 'h') {
robHome();
}
if (inChr == 's') {
digitalWrite(CONVEYOR, 1);
//Serial2.println("ok");
}
if (inChr == 't') {
digitalWrite(CONVEYOR, 0);
//Serial2.println("ok");
}
}
while (Serial.available() > 5) {
for (int i = 0; i < 5; i++) {
float temp = 0;
String inStr = Serial.readStringUntil(',');
if (inStr != "") {
ror = true;
switch (i) {
case 0:
temp = inStr.toFloat();
if (temp > X_MAX_DEG_PS) {
a = X_MAX_DEG_PS - prv_a;
prv_a = X_MAX_DEG_PS;
}
else if (temp < X_MAX_DEG_NG) {
a = X_MAX_DEG_NG - prv_a;
prv_a = X_MAX_DEG_NG;
}
else
{
a = temp - prv_a;
prv_a = temp;
}
temp = 0;
break;
case 1:
temp = inStr.toFloat();
if (temp > Y_MAX_DEG_PS) {
b = Y_MAX_DEG_PS - prv_b;
prv_b = Y_MAX_DEG_PS;
}
else if (temp < Y_MAX_DEG_NG) {
b = Y_MAX_DEG_NG - prv_b;
prv_b = Y_MAX_DEG_NG;
}
else
{
b = temp - prv_b;
prv_b = temp;
}
temp = 0;
DUT.LRCC
66. Thiết kế và chế tạo robot SCARA phân loại bánh răng
Sinh viên thực hiện: Đặng Công Anh Khoa Hướng dẫn: TS. Đặng Phước Vinh
Nguyễn Tuấn Tú
break;
case 2:
temp = inStr.toFloat();
if (temp > Z_MAX_VAL_PS) {
c = Z_MAX_VAL_PS - prv_c;
prv_c = Z_MAX_VAL_PS;
}
else
{
c = temp - prv_c;
prv_c = temp;
}
temp = 0;
break;
case 3:
d = inStr.toFloat(); break;
case 4:
n5 = inStr; break;
}
}
}
}
}
DUT.LRCC