QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh.pdf
1. ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CƠ KHÍ
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:
THIẾT KẾ VÀ CHẾ TẠO CÁNH TAY ROBOT
3 BẬC TỰ DO ỨNG DỤNG TRONG PHÂN
LOẠI SẢN PHẨM BẰNG XỬ LÝ ẢNH
Người hướng dẫn: TS. NGUYỄN DANH NGỌC
Sinh viên thực hiện: ĐẶNG HỮU TUYẾN
BÙI ĐĂNG QUÂN
Đà Nẵng, 2019
2. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 1
MỤC LỤC
Tóm tắt
Nhiệm vụ đồ án
Lời nói đầu và cảm ơn i
Lời cam đoan liêm chính học thuật ii
Mục lục iii
Danh sách các bảng biểu, hình vẽ và sơ đồ v
MỤC LỤC .......................................................................................................................1
CHƢƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI.......................................................................4
1.1 BỐI CẢNH THỰC HIỆN ĐỀ TÀI ...........................................................................4
1.2 MỤC TIÊU................................................................................................................6
CHƢƠNG 2 : THIẾT KẾ VÀ CHẾ TẠO KẾT CẤU CƠ KHÍ………………………16
2.1. THIẾT KẾ CÁNH TAY ROBOT ............................................................................7
2.1.1. Phân tích và lựa chọn cấu trúc cánh tay robot………………………... 7
2.1.2. Thông số kích thƣớc của cánh tay Robot……………………………. 8
2.1.3. Xây dựng phƣơng trình động học thuận………………………………9
2.1.4 Quỹ đạo chuyển động của Robot trong không gian………………….. 12
2.1.5. Thiết kế các bộ phận của cánh tay…………………………………… 12
2.1.5.1. Cơ cấu xoay cơ cấu chấp hành…………………………………….. 12
2.1.5.2. Cơ cấu hút………………………………………………………….. 13
2.1.5.3. Tính chọn động cơ cho cơ cấu…………………………………….. 13
2.1.5.4. Thiết kế 3D cho cánh tay robot 3 bậc tự do…………………………14
2.2. THIẾT KẾ BĂNG TẢI ..........................................................................................16
2.2.1. Tính chọn kích thƣớc băng tải………………………………………... 16
2.2.2. Thiết kế 3D cho băng tải………………………………………………17
2.2.2.1. Thiết kế khung băng tải…………………………………………….. 17
2.2.2.2. Gá động cơ băng tải……………………………………………….. 18
2.2.3. Lắp ráp băng tải………………………………………………………. 19
2.3. HỆ THỐNG CẤP PHÔI TỰ ĐỘNG......................................................................20
DUT.LRCC
3. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 2
2.4. MÔ HÌNH TỔNG QUAN CỦA HỆ THỐNG .......................................................20
CHƢƠNG 3:THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN ..................................................22
3.1 THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN..................................................................22
3.2. CÁC THÀNH PHẦN CHÍNH TRONG HỆ THỐNG ...........................................22
3.2.1. Vi điều khiển Arduino Nano …………………………………….22
3.2.2 Driver A4988 …………………………………………………………..24
3.2.3 Servo MG966R……. …………………………………………………...24
3.2.4. Cảm biến quang:……………………………………………………….25
3.2.5. Module giảm áp Lm2596……………………………………………...26
3.2.6 Công tắc hành trình…………………………………………………….27
3.3 SƠ ĐỒ NGUYÊN LÝ MẠCH ĐIỀU KHIỂN........................................................28
CHƢƠNG 4: XÂY DỰNG CHƢƠNG TRÌNH ĐIỀU KHIỂN....................................29
4.1. LƢU ĐỒ THUẬT TOÁN CHƢƠNG TRÌNH CHÍNH.........................................29
4.2. GIỚI THIỆU VỀ XỬ LÝ ẢNH VISUAL STUDIO..............................................30
4.2.1. Giới thiệu thƣ viện Emgu CV…………………………………………30
4.2.3. Quy trình xử lý ảnh…………………………………………………...31
4.2.4. Một số hàm xử lý trong Emgu Cv……………………………………. 32
KẾT LUẬN ...................................................................................................................36
TÀI LIỆU THAM KHẢO.............................................................................................38
CODE XỬ LÝ ẢNH : ...................................................................................................39
CODE ARDUINO.........................................................................................................46
DUT.LRCC
4. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 3
MỞ ĐẦU
Cơ điện tử là một trong những ngành kỹ thuật cao đang phát triển mạnh mẽ.
Robotics, là một trong những chuyên ngành kỹ thuật cơ điện tử, đang đƣợc ứng dụng
rộng rãi trên thế giới, đã thu hút đƣợc nhiều sự chú ý ở nƣớc ta. Để xây dựng nền sản
xuất hiện đại, chúng ta cần nhanh chóng ứng dụng và phát triển tự động hóa, nổi bật là
các sản phẩm Cơ điện tử nhƣ Robot, ô tô, …Đặt biệt trong số những sản phẩm đƣợc
ứng dụng rộng rải trong công nghiệp, thì robot 3 bậc tự do có tìm năng phát triển cao
trong nền công nghiệp vì lợi thế cót lõi của robot 3 bậc tự do là tốc độ, chính vì vậy
robot 3 bậc tự do vẫn bắt đƣợc vật thể dù băng tải không dừng điều này là một trong
các lợi thế giúp tăng tốc độ của dây chuyền sản xuất.Và trên cũng là mục tiêu cót lõi
của đề tài, xây dựng đƣợc mô hình robot 3 bậc tự do bắt vật thể trên băng tải dù băng
tải không dừng, ngoài ra còn có thể tạo robot 3 bậc tự do thực hiện chạy theo hành
trình có thể dạy học đƣợc.
Để có thể xây dựng đƣợc đề tài ta cần phải 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, động học ngƣợc và kỹ thuật xử lý ảnh,
đồng thời với các kiến thức liên quan đến tính toán thiết kế cơ khí, mạch điều khiển,
lập trình vi điều khiển cũng nhƣ công nghệ máy tính mới có thể đƣa những lý thuyết
cót lõi thành mô hình thực tế đáp ứng đƣợc các nguyên lý hoạt động đề ra.
DUT.LRCC
5. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 4
CHƢƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 Bối cảnh thực hiện đề tài
Theo ƣớc tính của Liên đoàn robot quốc tế (IRF), hiện nay trên thế giới có
khoảng 50% số lƣợng robot đƣợc sử dụng tại châu Á (trong đó Nhật Bản chiếm 30%),
32% ở châu Âu, 16% ở Bắc Mỹ, 1% ở Australia và 1% ở châu Phi.
Trong đó, robot đƣợc sử dụng trong các ngành chế tạo ôtô chiếm 33,2%, ngành
unseecified chiếm 25%, ngành điện-điện tử 9,9%, ngành hoá chất + cao su + nhựa
chiếm 9,4%, ngành chế tạo máy 4,3%, ngành điện tử viễn thông chiếm 2,5%, sản xuất
metal chiếm 3,7%, ngành sản xuất gỗ 2,5%, và các ngành khác là 10,3%.
Theo dự báo ,trên thế giới trong vòng 20 năm nữa mỗi ngƣời sẽ có nhu cầu sử dụng 1
robot nhƣ nhu cầu 1 máy tính PC hiện nay và robot sẽ là tâm điểm của một cuộc cách
mạng công nghệ lớn sau internet.Với xu thế này cùng với các ứng dụng truyền thông
khác của robot trong công nghiệp ,y tế,giáo dục đào tạo ,giải trí,và đặc biệt trong an
ninh quốc phòng thì thị trƣờng robot và các dịch vụ ăn theo robot sẽ vô cùng lớn.
Trong nghành cơ khí, robot đƣợc sử dụng nhiều trong công nghệ đúc, công
nghệ hàn, cắt kim loại, sơn, phun, phủ kim loại,tháo lắp vận chuyển phôi,lắp rắp sản
phẩm...
Hình 1.1: Robot hàn điểm trong nhà máy sản xuất xe hơi
Ngày nay, đã xuất hiện nhiều dây chuyền sản xuất tự động gồm các máy CNC
với robot công nghiệp,các dây chuyền đó đạt mức tự động hóa cao, mức độ linh hoạt
DUT.LRCC
6. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 5
cao...Ở đây các máy robot công nghiệp đƣợc điều khiển bằng cùng một hệ thống
chƣơng trình.
Ngoài các phân xƣởng nhà máy, kỹ thuật robot cũng đƣợc sử dụng trong việc
khai thác thềm lục địa và đại dƣơng, trong y học, sử dụng trong quốc phòng, trong
chinh phục vũ trụ, trong công nghiệp nguyên tử, trong các lĩnh vực xã hội....
Hình 1.2: Robot phun thuốc sinh học
Rõ ràng khẳ năng của robot trong một số điều kiện vƣợt hơn khẳ năng của con
ngƣời, do đó nó là phƣơng tiện hữu hiệu để tự động hóa, nâng cao năng suất lao động,
giảm nhẹ cho con ngƣời những công việc nặng nhọc và độc hại.Nhƣợc điểm lớn nhất
của robot là chƣa linh hoạt nhƣ con ngƣời. Trong dây chuyền sản xuất tự động, nếu có
một robot bị hỏng có thể làm ngừng hoạt động của cả dây chuyền, cho nên robot vẫn
luôn hoạt động dƣới sự giám sát của con ngƣời.
Ngày nay, Việt Nam đang là một nƣớc công nghiệp hóa, vì vậy việc sử dụng
robot trong công nghiệp là rất cần thiết để nâng cao năng suất lao động, giảm thiểu
đƣợc công ngƣời và có độ chính xác cao. Hiểu đƣợc tầm quan trọng của robot trong
đời sống hiện nay, nên nhóm sinh viên chúng em sẽ thực hiện đề tài “ Thiết kế và chế
tạo cánhtay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh “ với
mục tiêu sẽ xây dựng lên một mô hình minh họa đƣợc cách hoạt động của một cánh
tay robot trong việc phân loại sản phẩm kết hợp với phƣơng thức xử lý ảnh trên băng
tải. Đây là một đề tài thiết thực vì hiện nay việc ứng dụng xử lý ảnh trong công nghiệp
để thay thế cho các cảm biến thông thƣờng là rất quan trọng bởi độ chính xác cao hơn,
phản hồi tốt, ít nhiễu và dễ dàng lập trình. Ngoài ra việc vận chuyển sản phẩm trên
băng chuyền cũng mang lại những lợi ích nhƣ :
- Giảm thiểu sức ngƣời lao động
- Đạt đƣợc năng suất cao, hoạt động trong một thời gian dài
- Đạt đƣợc năng suất cao, hoạt động trong một thời gian dài
DUT.LRCC
7. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 6
1.2 Mục tiêu
Hình 1.3: Sơ đồ khối của hệ thống
Hệ thống sẽ có những thành phần chính sau :
- Một camera chụp ảnh vật phẩm
- Một băng tải đủ dài để vận chuyển sản phẩm
- Một cánh tay robot để đƣa vật vào các ô tƣơng ứng sau khi đã phân loại
- Máy tính và bộ điều khiển trung tâm để phân tích các dữ liệu từ camera và điều
khiển cánh tay robot
Bài toán đặt ra là thiết kế chế tạo mô hình cánh tay robot phân loại vật thể trên
băng chuyền. Vật thể có dạng hình tròn. Máy tính thông qua camera sẽ thu nhận hình
ảnh vật thể trên băng chuyền để xử lý cho ra các dữ liệu cần thiết về màu sắc rồi gửi
cho bộ điều khiển. Bộ điều khiển sẽ điều khiển các cơ cấu chấp hành bao gồm các
động cơ của tay máy, động cơ của băng tải, và các động cơ khác để đƣa đƣợc vật phẩm
vào các ô tƣơng ứng.
Một số phần mềm để nhóm sinh viên chúng em thực hiện đồ án :
- Phần mềm Solidwork : dùng để thiết kế 3D cho hệ thống
- Phần mềm Autocad : dùng để vẽ các chi tiết 2D, sử dụng trong việc cắt mica
- Phần mềm xử lý ảnh Visual Studio : dùng để xử lý các hình ảnh gởi về từ
camera
- Phần mềm Arduino : dùng để lập trình cho các cơ cấu chấp hành.
DUT.LRCC
8. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 7
CHƢƠNG 2 :
THIẾT KẾ VÀ CHẾ TẠO KẾT CẤU CƠ KHÍ
Về mặt truyền động và điều khiển robot đƣợc cấu tạo từ những khối cấu trúc cơ
khí hoạt động nhờ các cơ cấu tác động. Về mặt kết cấu robot đƣợc chế tạo rất khác biệt
nhau nhƣng chúng đƣợc xây dựng từ những thành phần cơ bản nhƣ tay máy, nguồn
cung cấp, bộ điều khiển. Trong đó tay máy là tập hợp các bộ phận và cơ cấu cơ khí
đƣợc thiết kế và hình thành các khối có chuyển động tƣơng đối với nhau. Vì vậy trong
chƣơng 2, chúng em sẽ đi thiết kế cơ khí toàn bộ hệ thống, bao gồm cánh tay robot,
băng tải và các bộ phận khác. Để thiết kế mô hình 2D cũng nhƣ 3D cho cánh tay robot
cũng nhƣ cho băng tải và các chi tiết khác trong hệ thống, tụi em sử dụng phần mềm
Solidwork và Autocad, vừa dễ thiết kế lại có nhiều chức năng hỗ trợ cho ngƣời dùng
rất tiện lợi.
2.1. Thiết kế cánh tay robot
2.1.1. Phân tích và lựa chọn cấu trúc cánh tay robot
Qua tìm hiểu các loại cánh tay robot thì nhóm quyết định thiết kế chế tạo cánh
tay robot 3 bậc tự do tọa độ cầu RRR. Đây là loại robot rất phổ biến trong công nghiệp
nhờ vào những ƣu điểm: ít tốn không gian, dễ dàng bố trí trong không gian làm việc,
độ khéo léo, linh hoạt cao, tầm hoạt động lớn, có thể nâng hạ tải trọng lớn. Tuy nhiên
nó có nhƣợc điểm là độ cứng vững theo phƣơng đứng thấp, độ chính xác giảm theo
tầm hoạt động. Cánh tay phải đạt đƣợc kích thƣớc, độ dài hợp lý để có thể vƣơn dài,
gắp vật phẩm trên băng tải và đƣa chúng vào các ô tƣơng ứng.
Hình 2.1: Cánh tay robot tọa độ cầu
DUT.LRCC
9. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 8
Hình 2.2: Cơ cấu robot 3 bậc tự do
Kết cấu của cánh tay robot 3 bậc tự do nhƣ sau :
- Đế xoay robot
- Khâu chuyển động để đƣa đầu hút đến vị trí cần hút vật
- Đầu hút để đƣa vật thể vào hộp
2.1.2. Thông số kích thước của cánh tay Robot
Từ các mục tiêu ở chƣơng 1, ta thiết kế đƣợc kích thƣớc cần có của cánh tay
robot 3 bậc tự do trong hệ thống để đáp ứng đƣợc yêu cầu của đề tài. Cánh tay robot
đƣợc cấu thành bởi các bộ phận sau:
- Tay máy là cơ cấu cơ khí gồm các khâu khớp. Chúng hình thành cánh tay để
tạo các chuyển động cơ bản, nhƣ là lên, xuống, xoay trái, phải.
- Nguồn động lực và hệ truyền động tạo chuyển động cho các khâu của tay máy,
sử dụng động cơ bƣớc, servo
Trong đề tài lần này, chúng em chọn vật liệu robot là mica dày 5mm vì vừa rẻ,
vừa dễ gia công, lại đẹp mắt, phù hợp với yêu cầu.
DUT.LRCC
10. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 9
Hình 2.3: Thông số kích thƣớc của cánh tay
2.1.3. Xây dựng phương trình động học thuận
Giả sử một robot có cấu hình đã biết: độ dài các thanh nối và góc quay của các
khớp hoặc độ dịch chuyển các khớp tịnh tiến. Bài toán động học thuân là tính toán vị
trí và hƣớng của cánh tay robot tƣơng ứng với cấu hình robot xác định
Xác định các hệ tọa độ:
Ta chọn hệ tọa độ O0 nhƣ hình vẽ.
DUT.LRCC
11. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 10
Hình 2.4: Thiết lập hệ toạ độ và các thông số cho robot.
Lập bảng thông số D-H:
Khâu i
i
ai di Khớp
1 *
1
900
0 0.049 R
2 *
2
0 0.204 0 R
3 0 0.12 0 R
Bảng 2.1: Bảng thông số D-H cho cánh tay robot
Xác định các ma trận Ai theo:
1
0
0
0
cos
sin
0
sin
sin
cos
cos
cos
sin
cos
sin
sin
cos
sin
cos
d
a
a
An
=
1
0
0
0
0 i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
d
C
S
S
a
S
C
C
C
S
C
a
S
S
C
S
C
Ta có:
1
0
0
0
0 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
d
C
S
S
a
S
C
C
C
S
C
a
S
S
C
S
C
A
1
0
0
0
0
1
0
0
0
1
1
1
1
1
1
1
1
1
d
S
a
C
S
C
a
S
C
(Với
90
1
, a1 = 0.265, d1=0.5, )
DUT.LRCC
12. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 11
1
0
0
0
0 2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
d
C
S
S
a
S
C
C
C
S
C
a
S
S
C
S
C
A
1
0
0
0
0
0
1
0
0
0
2
2
2
2
2
2
2
2
S
a
C
S
C
a
S
C
(Với
90
2
, a2= 0.23, d2 = 0, )
1
0
0
0
0 3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
d
C
S
S
a
S
C
C
C
S
C
a
S
S
C
S
C
A
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
3
d
(Với 0
3
, a3=0.12, d3 = 0.)
Xác định các ma trận 3
T
i
:
3
3
2
A
T
1
0
0
0
1
0
0
0
0
1
0
0
0
1
3
3
d
a
3
2
3
1
A
A
T
1
0
0
0
0
0
1
0
0
0
2
2
2
3
2
2
2
2
2
3
2
2
S
a
C
d
C
S
C
a
S
d
S
C
3
1
1
3
2
1
3
0
T
A
A
A
A
T
=
1
0
0
0
0
)
(
)
(
1
2
2
2
3
2
2
1
1
2
2
2
3
1
2
1
1
2
1
1
1
2
2
2
3
1
2
1
1
2
1
d
S
a
C
d
C
S
S
a
C
a
S
d
S
S
S
C
C
S
C
a
C
a
S
d
C
S
C
S
C
C
Thiết lập phƣơng trình động học:
3
0
1
0
0
0
T
p
a
s
n
p
a
s
n
p
a
s
n
z
z
z
z
y
y
y
y
x
x
x
x
Hệ phƣơng trình động học robot là:
x
n 2
1
C
C ,
y
n 2
1
C
S ,
z
n 2
S
x
s 1
S
y
s 1
C
z
s 0
x
a 2
1
S
C
y
a 2
1
S
S
z
a 2
C
DUT.LRCC
13. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 12
x
p 1
1
2
2
2
3
1 )
(
C
a
C
a
S
d
C
y
p 1
1
2
2
2
3
1 )
(
S
a
C
a
S
d
S
,
z
p 1
2
2
2
3 d
S
a
C
d
Với các giá trị:d1 = 0.049m , d3 = 0 , a1 = 0.0m , a2 = 0.204
Thay các số liệu vào hệ phƣơng trình động học trên ta đƣợc:
x
n 2
1
C
C ,
y
n 2
1
C
S ,
z
n 2
S ,
x
s 1
S ,
y
s 1
C
,
z
s 0
x
a 2
1
S
C ,
y
a 2
1
S
S ,
z
a 2
C
x
p 1
2
1 12
.
0
204
.
0
C
C
C
y
p 1
2
1 12
.
0
204
.
0
S
C
S ,
z
p 5
.
0
204
.
0 2
S
2.1.4 Quỹ đạo chuyển động của Robot trong không gian
Do có 3 khớp quay, và bị giới hạn bởi 2 công tắc hành trình ở 2 khớp 2 và 3. nên
không gian làm việc của robot là nửa dƣới của hình cầu.
Hình 2.5: Không gian làm việc của robot
2.1.5. Thiết kế các bộ phận của cánh tay
2.1.5.1. Cơ cấu xoay cơ cấu chấp hành
Ở đây ta dùng phƣơng pháp dẫn động bằng bánh răng , dễ dàng thiết kế nhƣng
lại kéo đƣợc lực lớn, tốc độ nhỏ, không gây rung giật, thích hợp với các cơ cấu nặng
DUT.LRCC
14. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 13
.
Hình 2.6: Bánh răng truyền động
2.1.5.2. Cơ cấu hút
Hình 2.7: Cơ cấu hút
Sử dụng giác hút kết hợp với động cơ hút chân không giúp tăng tốc độ gắp vật thể,
không làm vật thể bị biến dạng do lực kẹp.
2.1.5.3. Tính chọn động cơ cho cơ cấu
Khối lƣợng lớn nhất nhất mà robot có thể làm việc là 2kg => Khối lƣợng lớn
nhất trên mỗi cánh tay là 2kg. Từ phƣơng trình mômen theo thời gian đã xác lập phần
tĩnh học ta tìm đƣợc mômen lớn nhất trên mỗi động cơ của cánh tay là
M=N.d/i = 2×9.81×0.18/3= 1.18 N.m
DUT.LRCC
15. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 14
- Chọn tốc độ động cơ n = 1000 v/p.
+ 995
.
0
ô
:là hiệu suất ổ lăn
+ 97
.
0
br
: là hiệu suất của bộ truyền đai
trong đó: br
ô
.
= 0.96 là hiệu suất truyền động
P = M.w. =M.n.2.Π = 0.78*1000*2*3.14 = 85 W
Chọn động cơ thỏa n =1000 v/p và P >= 85 W
Vì tốc độ và công suất yêu cầu nhỏ nên ta ƣu tiên chọn loại động cơ phổ biến trên thị
trƣờng, có giá thành rẻ. Ta chọn động cơ bƣớc NIDEC SERVO KH42KM2R015E.
Hình 2.8: Động cơ bƣớc NIDEC SERVO KH42KM2R015E.
Thông số kĩ thuật: - Kích thƣớc mặt bích: 42x42 mm.
- Chiều dài thân: 50mm.
-Dòng chịu tải:1- 1.3A.
-Góc bƣớc: 1.8°/step
2.1.5.4. Thiết kế 3D cho cánh tay robot 3 bậc tự do
Nhóm sinh viên chúng em sử dụng phần mêm Solidwork để thiết kế 3D cho
cánh tay robot cũng nhƣ toàn hệ thống. Sử dụng phần Part để vẽ các biên dạng 3D của
từng chi tiết, sau đó dùng phần Assembly để lắp ráp các chi tiết lại thành một cánh tay
hoàn chỉnh. Phần này cũng dùng để kiểm tra xem các mối lắp có xung đột với nhau
hay không để khi ra thực tế có thể lắp nối lại dễ dàng.
DUT.LRCC
16. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 15
Hình 2.8 : Mô hình 3D cánh tay robot
Thông qua bản vẽ kích thƣớc và bản vẽ 3D mô hình cánh tay, chúng ta xuất các
chi tiết thành file 2D, sau đó đi cắt mica và về lắp cơ khí thành cánh tay robot 3 bậc tự
do hoàn chỉnh.
Hình 2.9: Cánh tay robot 3 bậc tự do thực tế
DUT.LRCC
17. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 16
2.2. Thiết kế băng tải
2.2.1. Tính chọn kích thước băng tải
Từ kích thƣớc cũng nhƣ vùng làm việc của cánh tay robot 3 bậc tự do, chúng em tính
chọn đƣợc kích thƣớc của băng tải cần có nhƣ sau :
- Chọn băng tải có kích thƣớc 1056×15
- Sử dụng động cơ DC giảm tốc 342IL – 47X có tốc độ động cơ nđc = 300 rpm
- Các bộ phận cơ khí đƣợc thiết kế với kích thƣớc theo bản vẽ
- Tốc độ băng tải
nbt=µ = 0.525× = 78.5 (mm/s)
Trong đó: µ: hiệu suất chung của hệ thống truyền động
µ = µnt ×µtv ×µ2
ol = 1×0.82×0.992
= 0.8
Hình 2.10: Kích thƣớc của băng tải
DUT.LRCC
18. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 17
Động cơ băng tải :
Hình 2.11: Động cơ giảm tốc 342IL – 47X
2.2.2. Thiết kế 3D cho băng tải
2.2.2.1. Thiết kế khung băng tải
Khung băng tải ta chọn chất liệu là nhôm định hình, dễ dàng lắp ráp và tháo gỡ,
vì vậy ta có thể chỉnh sửa theo yêu cầu đề tài một cách dễ dàng hơn.
Hình 2.12 : Ke góc nhôm định hình
DUT.LRCC
19. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 18
Các ke góc dùng để lắp các thanh nhôm lại với nhau một cách dễ dàng, không
cần phải dùng đến các mối hàn Nhôm định hình cho phép tháo lắp, sửa chữa dễ dàng,
không gây hƣ tổn đến vật liệu.
Hình 2.13: Mô hình 3D khung nhôm băng tải
2.2.2.2. Gá động cơ băng tải
Gá động cơ đƣợc in bằng chất liệu nhựa, dễ dàng chế tạo lắp ráp, chịu đƣợc lực
rung giật của động cơ
Hình 2.14: Gá động cơ băng tải
DUT.LRCC
20. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 19
2.2.3. Lắp ráp băng tải
Băng tải nhóm chúng em sử dụng loại cao su PVC 2mm, khó bị co giãn, không
sần sùi. Áp dụng biện pháp căng đai lên khung băng tải, căng đai làm sao cho miếng
su băng tải không đƣợc căng quá làm hƣ hải động cơ, cũng nhƣ không đƣợc trùng quá
sẽ không ổn định.
Hình 2.15: Cao su băng tải PVC 2mm
Từ các thiết kế trên, ta có đƣợc mô hình tổng thể của băng tải trong hệ thống :
Hình 2.16: Mô hình tổng thể của băng tải
DUT.LRCC
21. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 20
2.3. Hệ thống cấp phôi tự động
Đây là một hệ thống sẽ tự động cung cấp phôi lên băng tải mỗi khi có hiệu lệnh
từ vi điều khiển. Mỗi khi có tín hiệu từ arduino, động cơ servo sẽ quay một góc làm
cánh tay gạt phôi trên ống nƣớc vào băng tải.Vì vật phẩm trong hệ thống hình trụ tròn
có ф = 42 nên ta sẽ chọn ống cấp phôi hình trụ tròn có ф = 48
Hình 2.17: Hệ thống cấp phôi tự động
2.4. Mô hình tổng quan của hệ thống
Hình 2.18: Mô hình tổng quan của hệ thống
Mô hình bao gồm một băng tải, một cánh tay robot 3 bậc tự do, một hệ thống
cấp phôi tự động, hôp đen chứa camera và hai thanh điều hƣớng.
Khi bấm nút khởi động, hệ thống cấp phôi sẽ thả phôi lên băng tải từng phôi
một, phôi đi qua sẽ đƣợc camera chụp hình lại, qua hàng loạt các thuật toán lọc, sẽ biết
DUT.LRCC
22. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 21
đƣợc phôi màu gì từ đó gởi các kí tự tƣơng ứng xuống vi điều khiển để điều khiển
cánh tay robot 3 bậc tự do hút vật tại vị trí đã đƣợc định sẵn ( sau khi vật đƣợc đi qua
hai thanh điều hƣớng và dừng lại tại một điểm cố định ) sau đó thả vật vào các ô tƣơng
ứng.
DUT.LRCC
23. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 22
CHƢƠNG 3:THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN
3.1 Thiết kế hệ thống điều khiển
Hình 3.1 Sơ đồ khối hệ thống
Camera chụp ảnh đối tƣợng cần xử lí.
Máy tính(CPU) nhận dữ liệu từ bộ điều khiển và dữ liệu ảnh từ camera để tiến
hành xử lý ảnh tìm ra màu sắc của vật, đồng thời cũng nhận các tín hiệu và chƣơng
trình từ ngƣời vận hành.
Bộ điều khiển thực hiện việc truyền nhận dữ liệu điều khiển từ máy tính và các
cảm biến để điều khiển đến các driver điều khiển động cơ để thực hiện điều khiển góc
quay cho động cơ và gửi xung điều khiển servo. Bộ điều khiển còn thực hiện nhận các
tín hiện phản hồi của các công tắc hành trình, nút nhấn để thực hiện các chức năng
đƣợc đề ra cho bộ điều khiển.
Bộ điều khiển trung tâm sau khi nhận các tín hiệu về màu sắc vật phẩm từ máy tính
thông qua giao tiếp UART và tín hiệu của các công tắc hành trình, sẽ điều khiển các
động cơ bƣớc và động cơ đầu hút chân không để hút và thả vật vào các ô tƣơng ứng.
Bộ điều khiển trung tâm sau khi nhận tín hiệu từ cảm biến sẽ cho động cơ băng tải
dừng lại và tiếp tục quay khi cánh tay robot thực hiện xong chu trình của 1 màu. Đồng
thời động cơ servo sẽ hoạt động khi bộ điều khiển nhận đƣợc tín hiệu của cảm biến và
cánh tay robot thực hiện gắp thả vật phẩm xong.
3.2. Các thành phần chính trong hệ thống
3.2.1. Vi điều khiển Arduino Nano
DUT.LRCC
24. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 23
Hình 3.2: Module Arduino Nano
Thông số kỹ thuật:
- Thiết kế chuẩn kích thƣớc, chân Arduino Nano
- Firmware: Arduino Nano.
- IC chính: ATmega328P-AU
- IC nạp và giao tiếp UART: CH340
- Điện áp cấp: 5VDC cổng USB hoặc 6-9VDC chân Raw
- Mức điện áp giao tiếp GPIO: TTL 5VDC
- Dòng GPIO: 40mA
- Số chân Digital: 14 chân, trong đó có 6 chân PWM
- Số chân Analog: 8 chân (hơn Arduino Uno 2 chân)
- Flash Memory: 32KB (2KB Bootloader)
- SRAM: 2KB.
- EEPROM: 1KB.
- Clock Speed: 16Mhz.
- Tích hợp Led báo nguồn, led chân D13, LED RX, TX.
- Tích hợp IC chuyển điện áp 5V LM1117.
- Kích thƣớc: 18.542 x 43.
DUT.LRCC
25. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 24
3.2.2 Driver A4988
Hình 3.3: Driver A4988
A4988 là một trình điều khiển vi bƣớc để điều khiển động cơ bƣớc lƣỡng cực có
bộ dịch tích hợp để vận hành dễ dàng. Điều này có nghĩa là chúng ta có thể điều khiển
động cơ bƣớc chỉ với 2 chân từ bộ điều khiển của chúng ta hoặc một chân để điều
khiển hƣớng quay và chân kia để điều khiển các bƣớc.
Driver cung cấp năm độ phân giải bƣớc khác nhau: bƣớc đủ, ½ bƣớc, ¼ bƣớc, 1/8
bƣớc và 1/16 bƣớc. Ngoài ra, nó có một biến trở để điều chỉnh đầu ra hiện tại, tắt khi
nhiệt độ quá cao và bảo vệ dòng điện chéo. Nguồn vào của nó là từ 3 đến 5,5 V và
dòng điện tối đa trên mỗi pha là 2A nếu đƣợc làm mát bổ sung tốt hoặc dòng điện liên
tục 1A mỗi pha mà không cần tản nhiệt hoặc làm mát
3.2.3 Servo MG966R
Động cơ servo đƣợc thiết kế cho những hệ thống hồi tiếp vòng kín. Tín hiệu ra
của động cơ đƣợc nối với một mạch điều khiển. Khi động cơ quay, vận tốc và vị trí sẽ
đƣợc hồi tiếp về mạch điều khiển này. Nếu có bầt kỳ lý do nào ngăn cản chuyển động
quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chƣa đạt đƣợc vị trí mong
muốn. Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt đƣợc điểm chính xác.
Động cơ servo kết hợp cùng với cặp bánh răng giúp điều khiển góc quay của cơ
cấu chấp hành theo ý muốn.
Động cơ Servo MG966R là động cơ có mô men xoắn lớn, chạy mƣợt mà, phù
hợp với những mô hình điều khiển có trọng tải lớn nhƣ cánh tay robot kim loại. Động
cơ Servo MG966R đƣợc nâng cấp từ MG995 6V / 11kg, đáp ứng đƣợc tốc độ và độ
chính xác cao.
DUT.LRCC
26. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 25
Thông số kỹ thuật:
- Kích thƣớc sản phẩm: 40,7 x19,7 x 42.9mm
- Sản phẩm Rally: 9.4kg / cm (4.8V), 11kg / cm ( 6V)
- Tốc độ phản ứng: 0.17 giây / 60° (4.8V) , 0.14 giây / 60° (6V)
- Điện áp làm việc: 4.8-7.2V
- Trọng lƣợng: 55g
Hình 3.4 : Động cơ servo MG996R
Động cơ servo MG996R chạy mƣợt mà, đáp ứng tín hiệu tốt, dùng trong hệ
thống cấp phôi tự động để cấp phôi cho băng tải mỗi khi có tín hiệu từ arduino.
3.2.4. Cảm biến quang:
Dùng để phát hiện vật thể trên băng tải, gởi tín hiệu về arduino để làm dừng
băng tải, điều khiển cánh tay hút vật thể, và kích hoạt động cơ servo cấp phôi cho hệ
thống.
DUT.LRCC
27. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 26
Hình 3.5 Cảm biến quang
Thông số kỹ thuật:
- Nguồn điện cung cấp: 6 ~ 36VDC.
- Khoảng cách phát hiện: 5 ~ 30cm.
- Có thể điều chỉnh khoảng cách qua biến trở.
- Dòng kích ngõ ra: 300mA.
- Ngõ ra dạng NPN cực thu hở giúp tùy biến đƣợc điện áp ngõ ra, trở treo lên áp
bao nhiêu sẽ tạo thành điện áp ngõ ra bấy nhiêu.
- Chất liệu sản phẩm: nhựa.
- Có led hiển thị ngõ ra màu đỏ.
- Kích thƣớc: 1.8cm (D) x 7.0cm (L).
3.2.5. Module giảm áp Lm2596
Hình 3.6 : Module LM2596
Mạch Giảm Áp LM2596 là module giảm áp có khả năng điều chỉnh
đƣợc dòng ra đến 3A. LM2596 là IC nguồn tích hợp đầy đủ bên trong. Tức là
khi cấp nguồn 12v vào module, sau khi giảm áp ta có thể lấp đƣợc nguồn 3A <
9v...nhƣ 5V hay 3.3V để cấp nguồn cho arduino.
- Module nguồn không sử dụng cách ly
- Nguồn đầu vào từ 4V - 35V.
- Nguồn đầu ra: 1V - 30V.
- Dòng ra Max: 3A
- Kích thƣớc mạch: 53mm x 26mm
- Đầu vào: INPUT +, INPUT-
- Đầu ra: OUTPUT+, OUTPUT-
DUT.LRCC
28. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 27
3.2.6 Công tắc hành trình
Hình 3.7: Công tắc hành trình
Công tắc hành trình là dạng công tắc dùng để giới hạn hành trình của các
bộ phận chuyển động, nó có cấu tao nhƣ các loại công tắc điện bình thƣờng,
nhƣng đƣợc thiết kế thêm cần tác động sao cho các bộ phận chuyển động dễ
dàng tác động vào nó làm tiếp điểm bên trong thay đổi các trạng thái. Và có
một sự khác biệt nữa là công tắc hành trình thƣờng là loại không duy trì trạng
thái, khi không còn tác động thì sẽ trở về lại vị trí ban đầu. Trên cần tác động
thƣờng có gắn một bánh xe để khi bị tác động không bị mài mòn, và dẫn động
dễ dàng hơn.
Vì là một loại công tắc nên nó có đầy đủ các bộ phận của một công tắc
điện bình thƣờng. Thế nhƣng có thêm 1 bộ phận đó là có thêm cần tác động.
Công tắc hành trình là loại công tắc có 3 chân. Chân COM, chân tạo với chân
COM thành tiếp điểm NC (thƣờng đóng), chân còn lại tạo với chân COM thành
tiếp điểm CO ( thƣờng mở).
Trong cánh tay robot, công tắc hành trình đƣợc dùng để xác định vị trí ban đầu
của robot. Bằng cách cho các cánh tay robot di chuyển đến khi chạm đến cả 3
công tắc hành trình thì dừng lại và quay về vị trí ban đầu đã đƣợc xác định
trƣớc.
DUT.LRCC
29. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 28
3.3 Sơ đồ nguyên lý mạch điều khiển
Hình 3.8: Sơ đồ nguyên lý mạch điều khiển
Thứ tự nối chân: các chân điều khiển (Step) của động cơ bƣớc 1,2,3 lần lƣợt
đƣợc nối với các chân 8, 11, 14 của Arduino Nano. Đây là các chân PWM của
Arduino Nano dùng để cấp xung điều khiển các động cơ bƣớc. Các chân điều khiển
hƣớng (Dir) của các động cơ bƣớc 1, 2, 3 đƣợc nối với các chân số 7, 10, 12 của
Arduino. Các chân Enable của động cơ bƣớc dùng để thay đổi trạng thái hoạt động của
các động cơ 1, 2, 3 đƣợc nối tƣơng ứng với các chân số 9, 12, 15. Điều khiển động cơ
của băng tải thông qua chân số 20. Động cơ hút chân không đƣợc điều khiển bởi chân
số 19 của Arduino Nano.
Nguồn cấp đầu vào là nguồn tổ ong 12VDC – 10A, thông qua module giảm áp
LM2596 để biến đổi điện áp đầu vào cung cấp cho Arduino Nano hoạt động.
DUT.LRCC
30. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 29
CHƢƠNG 4: XÂY DỰNG CHƢƠNG TRÌNH ĐIỀU KHIỂN
4.1. Lƣu đồ thuật toán chƣơng trình chính
Hình 4.1: Lƣu đồ thuật toán chƣơng trình chính
Khi khởi động động cơ sẽ chạy dò vị trí ban đầu bằng cách khi chạm vào công
tắt hành trình động cơ ấy sẽ dừng sao khi cả 3 công tắt hành trình đều đƣợc nhấn thì
Robot tiến hành xét vị rí ban đầu của nó, tạo cho 3 cánh vai của robot đều có phƣơng
trùng với phƣơng ngang và đặt vị trí đó làm gốc.
Lúc này, nhấn nút cho băng tải chạy, hệ thống cấp phôi tự động sẽ hoạt động, đƣa phôi
lên băng tải. Vật thể đi qua camera sẽ ghi hình lại, gởi về máy tính dùng các thuật toán
DUT.LRCC
31. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 30
xử lý ảnh, phân tích đƣợc màu sắc vật thể sau đó gởi tín hiệu về arduino. Khi có vật
phẩm trƣớc cảm biến sẽ gởi tín hiệu về arduino làm dừng băng tải, sau đó cánh tay
robot sẽ thực hiện việc hút và thả vật vào các ô tƣơng ứng, nếu nhƣ sản phẩm là màu
vàng thì cánh tay sẽ k hoạt động, băng tải tiếp tục chạy và hệ thống sẽ cấp phôi. Sau
khi thực hiện xong chu trình của một màu, hệ thống sẽ tự động cấp phôi và quá trình
của hệ thống lại tiếp tục.
4.2. Giới thiệu về xử lý ảnh Visual Studio
Microsoft Visual Studio là một môi trƣờng phát triển tích hợp (IDE) từ
Microsoft. Nó đƣợc sử dụng để phát triển chƣơng trình máy tính cho Microsoft
Windows, cũng nhƣ các trang web, các ứng dụng web và các dịch vụ web. Công cụ
tích hợp bao gồm một mẫu thiết kế các hình thức xây dựng giao diện ứng dụng, thiết
kế web, thiết kế lớp và thiết kế giản đồ cơ sở dữ liệu.
Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép trình biên
tập mã và gỡ lỗi để hỗ trợ (mức độ khác nhau) hầu nhƣ mọi ngôn ngữ lập trình. Các
ngôn ngữ tích hợp gồm có C,[4] C++ và C++/CLI (thông qua Visual C++), VB.NET
(thông qua Visual Basic.NET), C# (thông qua Visual C#) và F# (nhƣ của Visual
Studio 2010[5]). Hỗ trợ cho các ngôn ngữ khác nhƣ J++/J#, Python và Ruby thông qua
dịch vụ cài đặt riêng rẽ. Nó cũng hỗ trợ XML/XSLT, HTML/XHTML, JavaScript và
CSS.
Visual Studio có những điểm mạnh sau đây:
Hỗ trợ lập trình trên nhiều ngôn ngữ nhƣ C/C++, C#, F#, Visual Basic, HTML,
CSS, JavaScript. Phiên bảnVisual Studio 2015 có hổ trợ ngôn ngữ Python. Trong đề
tài này, nhóm sinh viên chúng em sử dụng ngôn ngữ lập trình C# vì nó có nhiều tài
liệu tham khảo, dễ sử dụng và lập trình.
- Visual Studio là một công cụ hỗ trợ việc Debug một cách mạnh mẽ, dễ dàng
nhất (Break Point, xem giá trị của biến trong quá trình chạy, hỗ trợ debug từng câu
lệnh).
- Giao diện Visual Studio rất dễ sử dụng đối với ngƣời mới bắt đầu.
- Visual Studio hỗ trợ phát triển ứng dụng desktop MFC, Windows Form,
Universal App, ứng dụng mobileWindows Phone 8/8.1, Windows 10, Android
(Xamarin), iOS và phát triển website Web Form, ASP.NET MVC và phát triển
Microsoft Office.
- Visual Studio hỗ trợ kéo thả để xây dựng ứng dụng một cách chuyên nghiệp,
giúp các bạn mới bắt đầu có thể tiếp cận nhanh hơn.
- Visual Studio cho phép chúng ta tích hợp những extension từ bên ngoài nhƣ
Resharper (hổ trợ quản lý và viết mã nhanh cho các ngôn ngữ thuộc .Net), hay việc cài
đặt thƣ viện nhanh chóng thông qua Nuget.
- Visual Studio đƣợc sử dụng đông đảo bởi lập trình viên trên toàn thế giới.
4.2.1. Giới thiệu thư viện Emgu CV
DUT.LRCC
32. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 31
Thƣ viện EmguCV là một một thƣ viện xử lý ảnh mạnh dành riêng cho ngôn
ngữ C#. Thƣ viện này cho phép gọi đƣợc chức năng của OpenCV là từ .NET. Thƣ viện
EmguCV tƣơng thích ngôn ngữ nhƣ: C#, VB, VC++, Iron Python,… Thƣ viện này có
thể chạy trên Windows, Linux, Mac OS X, iOS, Android và Window Phone.
Ƣu điểm của thƣ viện EmguCV:
- EmguCV đƣợc viết hoàn toàn bằng C#. Nó có thể chạy trên bất kỳ nền tảng hỗ
trợ nào bao gồm iOS, Android, Window Phone, Hệ điều hành Mac OS X và Linux.
- EmguCV sử dụng đƣợc nhiều loại ngôn ngữ khác nhau.
- Nhận dạng ảnh: nhận dạng khuôn mặt, các vật thể,…
- Xử lý ảnh: khử nhiễu, điều chỉnh độ sáng,…
- Nhận dạng cử chỉ.
- Sự lựa chọn để sử dụng hình ảnh lớp hoặc trực tiếp gọi chức năng từ OpenCV.
4.2.3. Quy trình xử lý ảnh
Quy trình xử lý ảnh tuân theo quy trình sau:
- Lấy ảnh từ camera.
- Chuyển ảnh màu BGR sang ảnh HSV (Hue, Satution, Value).
- Lấy ảnh HSV chuyển sang ảnh nhị phân (ảnh đen trắng).
- Hình thái học ảnh (lọc nhiễu, nhòe).
- Tìm đƣờng viền của ảnh đen trắng.
Từ các bƣớc trên, ta có đƣợc lƣu đồ thuật toán xử lý ảnh:
DUT.LRCC
33. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 32
Hình 4.2: Lƣu đồ thuật toán chƣơng trình xử lý ảnh
4.2.4. Một số hàm xử lý trong Emgu Cv
Từ lƣu đồ thuật toán trên, chúng em đã hình dung ra đƣợc trình tự lập trình cho
một chƣơng trình xử lý ảnh phân loại sản phẩm bằng màu sắc. Hiện nay, thƣ viện
Emgu Cv hỗ trợ chúng em rất nhiều trong phần lập trình, dƣới đây là các hàm xử lý
tiêu biểu chúng em sử dụng trong đề tài:
Mở Camera
Capture = new Capture();
Capture.Start();
Chụp ảnh
Image_src = capture.QueryFrame();
- Image_src : ảnh sau khi chụp
- QueryFrame(): hàm chụp ảnh
DUT.LRCC
34. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 33
Chuyển ảnh màu BGR sang ảnh HSV
CvInvoke.CvtColor(Image_src,Image_Hsv,ColorConversion.Bgr2Hsv);
- Image_src: ảnh input BGR.
- Image_hsv: ảnh output HSV.
Lấy vùng của không gian màu HSV
CvInvoke.InRange(Image_Hsv,Lower,Upper,Image_Color);
Chức năng: lọc vùng không gian màu HSV (Lower, Upper) cần thiết trong ảnh HSV.
- Image_Hsv: ảnh input HSV.
- Lower: điểm không gian màu HSV min.
- Upper: điểm không gian màu HSV max.
- Image_Color: ảnh Output sau khi lấy vùng không gian màu HSV.
Chuyển sang ảnh nhị phân
CvInvoke.Threshold(Image_Input,Image_Out,threshvalue,maxthresh,ThresholdType.
Binary);
- Image_Input: ảnh vào.
- Image_Output: ảnh ra.
- ThreshValue: giá trị ngƣỡng.
- Maxthresh: giá trị ngƣỡng lớn nhất.
- ThresholdType.Binary: kiểu nhị phân.
Hình thái học ảnh (lọc nhiễu, nhòe)
CvInvoke.MorphologyEx(thresh,thresh,MorphOp.Erode,structuringElement1,newPoin
t(-1,-1),1, BorderType.Default, new MCvScalar(0, 0, 0));
CvInvoke.MorphologyEx(thresh,thresh, MorphOp.Dilate, structuringElement2, new
Point(-1, - 1), 1, BorderType.Default, new MCvScalar(0, 0, 0));
Tìm đƣờng viền của ảnh đen trắng
CvInvoke.FindContours(Input_ImageGray,Contours,hier,RetrType.List,ChainApproM
ethod.ChainApproxSimple);
- Input_ImageGray: ảnh đen trắng đầu vào.
- Contours: Đƣờng viền sau khi tìm đƣợc.
Hình ảnh kết quả xử lý ảnh :
DUT.LRCC
35. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 34
.
Hình 4.3: Kết quả nhận diện màu đỏ
Hình 4.4: Kết quả nhận diện màu vàng
DUT.LRCC
36. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 35
Hình 4.5: Kết quả nhận diện màu xanh dƣơng
DUT.LRCC
37. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 36
KẾT LUẬN
Kết quả:
- Hệ thống sát với những mục đích, yêu cầu đặt ra ở đầu báo cáo
- Thiết kế chế tạo thành công mô hình cánh tay robot 3 bậc tự do
- Phân loại màu chính xác, gắp đƣợc vật thể trên băng tải
Hình 4.6: Hệ thống ngoài thực tế
Thông số kĩ thuật:
- Nguồn cung cấp : 12VDC
- Loại robot : R-R-R
- Khối lƣợng robot: 2.5 kg
- Khối lƣợng vật thể tối đa có thể gắp đƣợc: 260g
- Tốc độ băng chuyền: 78.5 mm/s
Nhƣợc điểm:
- Khung robot bằng nhựa nên độ cứng vững kém, làm hạn chế tốc độ và giảm độ
chính xác của robot.
- Tốc độ xử lý ảnh chậm do phần cứng yếu và kĩ năng lập trình còn kém
Hƣớng phát triển đề tài:
- Thiết kế chế tạo các chi tiết cánh tay bằng kim loại để tăng độ cứng vững.
DUT.LRCC
38. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 37
- Tạo giao diện điều khiển trên Raspberry Pi, kết nối mạng internet để có thể điều
khiển từ xa
- Thay đổi chƣơng trình điều khiển theo đƣờng để mở rộng khả năng ứng dụng
của robot nhƣ robot phun sơn, hàn…
- Tăng số màu nhận diện
- Nhận diện thêm hình dáng và kích thƣớc của vật
- Gắp vật thể không cần dừng băng tải
Do kiến thức còn hạn hẹp và thời gian ngắn nên nhóm chỉ thiết kế chế tạo đƣợc mô
hình cánh tay robot. Tuy không thể áp dụng vào thực tế sản xuất nhƣng mô hình này
có thể giúp cho việc học tập dễ dàng trực quan hơn, hiểu rõ hơn về cách thức hoạt
động và khả năng ứng dụng Robot công nghiệp
DUT.LRCC
39. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 38
TÀI LIỆU THAM KHẢO
[1]. Tính toán thiết kế hệ dẫn động cơ khí - tập 1 - Trịnh Chất, Lê Văn Uyển – NXB
Giáo dục 2003.
[2]. Tính toán thiết kế hệ dẫn động cơ khí - tập 2 - Trịnh Chất, Lê Văn Uyển – NXB
Giáo dục 2003.
[3]. Robot công nghiệp – Phạm Đăng Phƣớc - NXB xây dựng 2007.
[4]. The 3 bậc tự do Parallel Robot: Kinematics Solutions Robert L. Williams II,
Ph.D., williar4@ohio.edu Mechanical Engineering, Ohio University, October 2016.
[5]. “Robot công nghiệp” - GS.TSKH. Nguyễn Thiện Phúc - NXB Khoa Học và Kỹ
Thuật
[6]. “Kỹ thuật ngƣời máy và Robot công nghiệp” - TS. Lê Hoài Quốc - NXB ĐH
Quốc gia Tp.HCM
[7]. Ứng dụng và xử lý ảnh trong thực tế với thƣ viện OpenCv C#/C++ - Nguyễn Văn
Long-http://dulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/the-loai-
khac/file_goc_769882.pdf – 05/06/2019
DUT.LRCC
40. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 39
Code xử lý ảnh :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;
using Emgu.CV.UI;
using Emgu.CV.CvEnum;
using Emgu.CV.Util;
namespace DoAnThayVinh
{
public partial class Form1 : Form
{
Capture capture;
Image<Bgr, byte> AnhNguon;
Mat cap;
Mat Cap1;
int Count1 = 0;
int Count2 = 0;
int Count3 = 0;
int SoLuong = 0;
Mat src;
public Form1()
{
InitializeComponent();
}
private void capture_ImageGrabbed(object sender, EventArgs e)
{
try
DUT.LRCC
41. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 40
{
cap = new Mat();
capture.Retrieve(cap);
}
catch
{
}
}
private void button3_Click(object sender, EventArgs e)
{
groupBoxcam.Visible = true;
groupBoxinfo.Visible = false;
groupBoxSanpham.Visible = false;
groupBox3mau.Visible = true;
pictureBox2.Visible = true;
pictureBox3.Visible = false;
pictureBox4.Visible = false;
pictureBox5.Visible = false;
try
{
if (capture == null)
{
capture = new Capture();
}
capture.ImageGrabbed += capture_ImageGrabbed;
capture.Start();
timer1.Enabled = true;
}
catch { }
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
Cap1 = null;
src = capture.QueryFrame();
FindColor();
timer1.Enabled = true;
}
private void FindColor()
{
DUT.LRCC
42. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 41
Mat ImgHsv = new Mat(src.Size, DepthType.Cv8U, 3);
Mat Red = new Mat(src.Size, DepthType.Cv8U, 1);
Mat Yellow = new Mat(src.Size, DepthType.Cv8U, 1);
Mat Blue = new Mat(src.Size, DepthType.Cv8U, 1);
CvInvoke.CvtColor(src, ImgHsv, ColorConversion.Bgr2Hsv);
ScalarArray Yellow_Lower = new ScalarArray(new MCvScalar(19, 0,
192));
ScalarArray Yellow_Upper = new ScalarArray(new MCvScalar(53, 250,
255));
ScalarArray Red_Lower = new ScalarArray(new MCvScalar(126, 68,
139));
ScalarArray Red_Upper = new ScalarArray(new MCvScalar(188, 224,
255));
ScalarArray Blue_Lower = new ScalarArray(new MCvScalar(93,
129, 251));
ScalarArray Blue_Upper = new ScalarArray(new MCvScalar(110, 255,
255));
MCvScalar Red_Color = new MCvScalar(0, 0, 255);
MCvScalar Yellow_Color = new MCvScalar(0, 255, 255);
MCvScalar Blue_Color = new MCvScalar(255, 0, 0);
CvInvoke.InRange(ImgHsv, Red_Lower, Red_Upper, Red);
CvInvoke.InRange(ImgHsv, Yellow_Lower, Yellow_Upper, Yellow);
CvInvoke.InRange(ImgHsv, Blue_Lower, Blue_Upper, Blue);
morphops(Red, Red);
morphops(Yellow, Yellow);
morphops(Blue, Blue);
CvInvoke.GaussianBlur(Red, Red, new Size(13, 13), 1.5, 0, BorderType.Default);
CvInvoke.GaussianBlur(Yellow,Yellow,newSize(13, 13), 1.5, 0, BorderType.Default);
CvInvoke.GaussianBlur(Blue, Blue, new Size(13, 13), 1.5, 0, BorderType.Default);
FindContours_Object(Red, src, Red_Color, "Red");
FindContours_Object(Yellow, src, Yellow_Color, "Yellow");
FindContours_Object(Blue, src, Blue_Color, "Blue");
pictureBox1.Image = src.Bitmap;
}
}
private void FindContours_Object(Mat Img_FindContour, Mat drawing,
MCvScalar Color, string Text)
{
int dem = 0;
DUT.LRCC
43. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 42
bool tinhtoan = false;
Mat hier = new Mat();
VectorOfVectorOfPoint Contours = new VectorOfVectorOfPoint();
CvInvoke.FindContours(Img_FindContour,Contours,hier,RetrType.External,
ChainApproxMethod.ChainApproxSimple);
VectorOfVectorOfPoint Contour_poly = new VectorOfVectorOfPoint(Contours.Size);
Rectangle maxRec = new Rectangle();
Rectangle BoundRect = new Rectangle();
double VungHT = 0;
double VungMax = 0;
for (int i = 0; i < Contours.Size; i++)
CvInvoke.ApproxPolyDP(Contours[i],Contour_poly[i],CvInvoke.ArcLength(Contours
[i], true) * 0.1, true);
VungHT = CvInvoke.ContourArea(Contour_poly[i], false);
if (VungHT > 10000)
{
VungMax = VungHT;
BoundRect = CvInvoke.BoundingRectangle(Contour_poly[i]);
}
maxRec = BoundRect;
dem++;
}
temp = dem;
tinhtoan = Calutate(maxRec);
int h = src.Height;
int m = src.Width;
int x_MAX = ((h / 2 ) +120);
int y_MAX = ((m / 2) + 90);
CvInvoke.Line(drawing, new Point(0, x_MAX), new Point(src.Width, x_MAX), new
MCvScalar(0, 0, 0), 5, LineType.EightConnected);
CvInvoke.Line(drawing, new Point(0, y_MAX), new Point(src.Width, y_MAX), new
MCvScalar(0, 0, 0), 5, LineType.EightConnected);
if (tinhtoan == true)
{
if (Text == "Red")
{
if (serialPort.IsOpen == true)
{
serialPort.WriteLine("1");
SoLuong++;
DUT.LRCC
44. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 43
Count1++;
label8.Text = Count1.ToString();
pictureBox3.Visible = true;
pictureBox2.Visible = false;
pictureBox4.Visible = false;
pictureBox5.Visible = false;
}
}
else if (Text == "Blue")
{
if (serialPort.IsOpen == true)
{
serialPort.WriteLine("2");
SoLuong++;
Count3++;
label10.Text = Count3.ToString();
pictureBox4.Visible = true;
pictureBox3.Visible = false;
pictureBox2.Visible = false;
pictureBox5.Visible = false;
}
}
else if (Text == "Yellow")
{
if (serialPort.IsOpen == true)
{
serialPort.WriteLine("3");
SoLuong++;
Count2++;
label9.Text = Count2.ToString();
pictureBox5.Visible = true;
pictureBox4.Visible = false;
pictureBox3.Visible = false;
pictureBox2.Visible = false;
}
}
label20.Text = SoLuong.ToString();
}
CvInvoke.Rectangle(drawing, maxRec, Color, 10, LineType.EightConnected, 0);
CvInvoke.PutText(drawing, Text, new Point((maxRec.X + maxRec.Width / 2 - 30),
DUT.LRCC
45. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 44
(maxRec.Y + maxRec.Height / 2)), FontFace.HersheyTriplex, 1, Color, 1,
LineType.EightConnected, false);
}
private bool Calutate(Rectangle Rect)
{
int x = Rect.X + Rect.Width / 2;
int y = Rect.Y + Rect.Height / 2;
Point Center = new Point(x, y);
int h = src.Height;
int m = src.Width;
int x_MAX = ((h / 2) + 120);
int y_MAX = ((m / 2) + 90 );
if (Rect.Width * Rect.Height > 1000)
{
if ((y >= x_MAX) && (y <= y_MAX))
{
return true;
}
}
return false;
}
private void Form1_Load(object sender, EventArgs e)
{
string[] comlist = SerialPort.GetPortNames();
COM.Items.AddRange(comlist);
COM.Enabled = true;
KETNOI.Enabled = true;
NGATKETNOI.Enabled = false;
groupBoxcam.Visible = false;
}
private void KETNOI_Click(object sender, EventArgs e)
{
if (COM.Text == "")
{
MessageBox.Show("Vui long chon cong Com", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
DUT.LRCC
46. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 45
serialPort.PortName = COM.Text;
serialPort.Open();
COM.Enabled = false;
KETNOI.Enabled = false;
NGATKETNOI.Enabled = true;
}
catch
{
MessageBox.Show("Không the ket noi cong Com", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void NGATKETNOI_Click(object sender, EventArgs e)
{
serialPort.Close();
COM.Enabled = true;
KETNOI.Enabled = true;
NGATKETNOI.Enabled = false;
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
groupBoxinfo.Visible = true;
groupBoxcam.Visible = true;
groupBoxSanpham.Visible = true;
}
private void button4_Click(object sender, EventArgs e)
{
groupBoxinfo.Visible = false;
groupBoxSanpham.Visible = true;
groupBox3mau.Visible = false;
groupBoxcam.Visible = true;
}
}
}
DUT.LRCC
47. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 46
Code Arduino
#include <Servo.h>
Servo SV ;
#define CTHT1 A5
#define CTHT2 A4
#define CTHT3 A3
#define BT A0
#define VAL A1
int spd = 6;
int mau;
void setup() {
pinMode(A5,INPUT_PULLUP);
pinMode(A4,INPUT_PULLUP);
pinMode(A3,INPUT_PULLUP);
Serial.begin(9600);
SV.attach(13);
SV.write(35);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT); digitalWrite(12,1);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT); digitalWrite(9,1);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT); digitalWrite(6,1);
//
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(2,INPUT_PULLUP);
pinMode(3,INPUT_PULLUP);
HA1(50);
while(digitalRead(CTHT2) == 1){
NANG1(2);
}
XOAYTRAI(50);
while(digitalRead(CTHT1) == 1){
XOAYPHAI(2);
}
NANG2(50);
DUT.LRCC
48. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 47
while(digitalRead(CTHT3) == 1){
HA2(2);
}
while(digitalRead(2) == 1){}
}
void loop() {
digitalWrite(BT,1);
CAPPHOI();
while(analogRead(A7)>200){
if(Serial.available()){
char data = Serial.read();
if(data == '1'){
mau =1;
}
if(data == '2'){
mau =2;
}
if(data == '3'){
mau =3;
}
}
}
digitalWrite(BT,0);
if(mau == 1){
GAPA();
mau = 0;
}
if(mau == 2){
GAPB();
mau=0;
}
if(mau == 3){
mau = 0;
}
}
void GAPB(){
NANG2(62);
HA1(145);
delay(500);
while(digitalRead(CTHT2) == 1){
DUT.LRCC
49. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 48
NANG1(2);
}
delay(300);
while(digitalRead(CTHT3) == 1){
HA2(2);
}
delay(300);
XOAYTRAI(125);
delay(300);
NANG2(40);
delay(300);
HA1(90);
delay(300);
digitalWrite(VAL,1);
delay(500);
digitalWrite(VAL,0);
// quay ve
while(digitalRead(CTHT2) == 1){
NANG1(2);
}
delay(300);
while(digitalRead(CTHT3) == 1){
HA2(2);
}
delay(300);
while(digitalRead(CTHT1) == 1){
XOAYPHAI(2);
}
}
void GAPA(){
NANG2(62);
HA1(145);
delay(500);
while(digitalRead(CTHT2) == 1){
NANG1(2);
}
delay(300);
while(digitalRead(CTHT3) == 1){
HA2(2);
}
DUT.LRCC
50. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 49
delay(300);
XOAYTRAI(220);
delay(300);
NANG2(20);
delay(300);
HA1(90);
delay(300);
digitalWrite(VAL,1);
delay(500);
digitalWrite(VAL,0);
// quay ve
while(digitalRead(CTHT2) == 1){
NANG1(2);
}
delay(300);
while(digitalRead(CTHT3) == 1){
HA2(2);
}
delay(300);
while(digitalRead(CTHT1) == 1){
XOAYPHAI(2);
}
}
void CAPPHOI(){
for(int i = 35 ; i <= 135; i++){
SV.write(i); delay(10);
}
SV.write(35);
}
void NANG2(int stp){
digitalWrite(12,0);
digitalWrite(10,0);
for(int i = 0; i < stp; i++){
digitalWrite(11,1);
delay(spd);
digitalWrite(11,0);
delay(spd);
}
}
void HA2(int stp){
DUT.LRCC
51. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 50
digitalWrite(12,0);
digitalWrite(10,1);
for(int i = 0; i < stp; i++){
digitalWrite(11,1);
delay(spd);
digitalWrite(11,0);
delay(spd);
}
}
void NANG1(int stp){
digitalWrite(9,0);
digitalWrite(7,1);
for(int i = 0; i < stp; i++){
digitalWrite(8,1);
delay(spd);
digitalWrite(8,0);
delay(spd);
}
}
void HA1(int stp){
digitalWrite(9,0);
digitalWrite(7,0);
for(int i = 0; i < stp; i++){
digitalWrite(8,1);
delay(spd);
digitalWrite(8,0);
delay(spd);
}
}
void XOAYTRAI(int stp){
digitalWrite(6,0);
digitalWrite(4,1);
for(int i = 0; i < stp; i++){
digitalWrite(5,1);
delay(spd/2);
digitalWrite(5,0);
delay(spd/2);
}
digitalWrite(6,1);
}
DUT.LRCC
52. Thiết kế và chế tạo cánh tay robot 3 bậc tự do ứng dụng trong phân loại sản phẩm bằng xử lý ảnh
GVHD :T.S Nguyễn Danh Ngọc
SVTH : Bùi Đăng Quân
Đặng Hữu Tiến 51
void XOAYPHAI(int stp){
digitalWrite(6,0);
digitalWrite(4,0);
for(int i = 0; i < stp; i++){
digitalWrite(5,1);
delay(spd/2);
digitalWrite(5,0);
delay(spd/2);
}
digitalWrite(6,1);
}
DUT.LRCC