BỘ GIÁO DỤC & ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
--------------------------------
ĐỒ ÁN TỐT NGHIỆP
NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG
ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG DÂY CHUYỀN
PHÂN LOẠI ĐAI ỐC ỨNG DỤNG XỬ LÝ ẢNH
GVHD: THS. VÕ ĐỨC DŨNG
SVTH: NGUYỄN VĂN TÀI 15141273
NGUYỄN MINH ĐỨC 15141135
Tp. Hồ Chí Minh - 6/2019
TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT
105 trang |
Chia sẻ: huong20 | Ngày: 13/01/2022 | Lượt xem: 428 | Lượt tải: 0
Tóm tắt tài liệu Đồ án Thiết kế và thi công dây chuyền phân loại đai ốc ứng dụng xử lý ảnh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
T NAM
KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o----
Tp. HCM, ngày 20 tháng 6 năm 2019
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: Nguyễn Văn Tài MSSV: 15141273
Nguyễn Minh Đức MSSV: 15141135
Chuyên ngành: Kỹ thuật điện tử - truyền thông Mã ngành: 141
Hệ đào tạo: Đại học chính quy Mã hệ: 1
Khóa: 2015 Lớp: 15141DT2C
I. TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG DÂY CHUYỀN PHÂN LOẠI
ĐAI ỐC ỨNG DỤNG XỬ LÝ ẢNH
II. NHIỆM VỤ
1. Các số liệu ban đầu:
Mô hình dây chuyền phân loại đai ốc ứng dụng xử lý ảnh sử dụng động cơ DC
12V, khung xây dựng bằng nhôm định hình, camera sử dụng là loại webcam C270,
vi điều khiển sử dụng STM32F103C8T6, phần xử lý ảnh dùng máy vi tính. Giao
tiếp giữa máy tính và vi điều khiển qua IC PL2303 dựa trên giao tiếp UART.
Chương trình xử lý ảnh trên máy tính viết bằng ngôn ngữ C++ dựa trên bộ thư viện
mã nguồn mở OpenCV và được tạo giao diện bằng phần mềm QT Creator.
2. Nội dung thực hiện:
- Tìm hiểu cách thức hoạt động của các hệ thống phân loại dùng xử lý ảnh.
- Tìm hiểu chuẩn giao tiếp UART, động cơ DC, cảm biến hồng ngoại, encoder.
- Tìm hiểu về vi điều khiển STM32F103C8T6.
- Thiết kế và thi công mô hình dây chuyền phân loại.
- Thiết kế và thi công mạch điện cho hệ thống.
- Viết chương trình xử lý ảnh trên máy tính dùng phần mềm QT Creator.
- Viết chương trình điều khiển cho vi điều khiển STM32F103C8T6
- Chạy thử nghiệm mô hình, chỉnh sửa và hoàn thiện hệ thống.
- Thực hiện viết luận văn báo cáo.
- Tiến hành báo cáo đề tài tốt nghiệp.
III. NGÀY GIAO NHIỆM VỤ: 18/2/2019
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 20/6/2019
V. HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS. Võ Đức Dũng
CÁN BỘ HƯỚNG DẪN BM. ĐIỆN TỬ CÔNG NGHIỆP – Y
SINH
i
TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o----
Tp. HCM, ngày 18 tháng 02 năm 2019
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên 1: Nguyễn Minh Đức Lớp: 15141DT2C MSSV: 15141135
Họ tên sinh viên 2: Nguyễn Văn Tài Lớp: 15141DT2C MSSV: 15141273
Tên đề tài: THIẾT KẾ VÀ THI CÔNG DÂY CHUYỀN PHÂN LOẠI
ĐAI ỐC ỨNG DỤNG XỬ LÝ ẢNH
Xác nhận
Tuần/ngày Nội dung
GVHD
Tuần 1 - Gặp GVHD để nghe phổ biến yêu cầu làm đồ
án, tiến hành chọn đề tài, GVHD tiến hành xét
(18/02 - 24/02) duyệt đề tài.
Tuần 2
- Viết đề cương tóm tắt nội dung đồ án.
(25/02 - 03/03)
Tuần 3 - Tìm hiểu tổng quan và phương thức hoạt động
của các Module STM32f103c8t6, Camera
(04/03 - 10/03)
- Tìm hiểu về công nghệ xử lý ảnh
Tuần 4 - Tìm hiểu và nghiên cứu điều khiển động cơ và
khí nén dùng STM32f103c8t6.
(11/03 - 17/03)
- Tìm hiểu kết nối Camera để thu thập hình ảnh
Tuần 5 - Tìm hiểu và nghiêm cứu giao tiếp Uart giữa máy
(18/03 - 24/03) tính và STM32f103c8t6.
Tuần 6 - 7 - Tìm hiểu cách lập trình và ngôn ngữ viết cho xử
(25/03 - 07/04) lý ảnh
ii
Tuần 8 - Mô phỏng mạch, kiểm tra và cân chỉnh mạch.
(08/04 - 14/04) - Vẽ PCB.
Tuần 9 - 10 - Tiến hành thi công mạch.
(15/04 - 28/04) - Kiểm tra mạch thi công.
Tuần 11
- Kiểm tra và cải tiến hệ thống
(29/04 - 05/05)
Tuần 12 – 13
- Viết báo cáo những nội dung đã làm.
(06/05 - 19/05)
Tuần 14 - Hoàn thiện báo cáo và gởi cho GVHD để xem
(20/05- 26/05) xét góp ý lần cuối trước khi in và báo cáo.
Tuần 15 - Nộp quyển báo cáo và báo cáo đề tài.
(27/05 - 02/06) - Thiết kế Slide báo cáo.
GV HƯỚNG DẪN
(Ký và ghi rõ họ và tên)
iii
LỜI CAM ĐOAN
Đề tài này là do nhóm tự thực hiện, dựa vào một số đề tài trước đó cũng như các
tài liệu tham khảo và không sao chép từ tài liệu hay công trình đã có trước đó.
TP. Hồ Chí Minh, ngày 20/6/2019
Người thực hiện đề tài
Nguyễn Văn Tài Nguyễn Minh Đức
iv
LỜI CẢM ƠN
Lời đầu tiên, nhóm thực hiện đề tài xin gửi lời cảm ơn chân thành đến thầy
Võ Đức Dũng - giảng viên khoa Điện-Điện tử, đã theo sát hỗ trợ và hướng dẫn nhóm
một cách chi tiết trong quá trình thực hiện đề tài. Thầy luôn hỗ trợ hết mình, giải đáp
thắc mắc, chỉ ra sai sót cũng như gợi ý những phương án thực hiện sao cho khả thi và
dễ tiếp cận nhất.
Trong quá trình thực hiện Đồ án tốt ngiệp chúng em đã nhận được sự giúp đỡ
và ủng hộ của các thầy, cô trong khoa Điện-Điện tử. Sự hỗ trợ của các thầy, cô đã
góp phần không nhỏ giúp chúng em hoàn thành đề tài này.
Nhóm đề tài cũng xin cảm ơn các bạn sinh viên trong khoa Điện-Điện tử đã
nhiệt tình giúp đỡ, hỗ trợ nhóm, chia sẻ kinh nghiệm. Những đóng góp của các bạn
luôn được nhóm tiếp nhận và xem xét kĩ lưỡng.
Cuối cùng, nhóm xin cảm ơn chân thành và sâu sắc đến những người thân đặc
biệt là quý phụ huynh - những người luôn bên cạnh hỗ trợ hết mình về tài chính cũng
như tinh thần trong suốt quá trình học tập cũng như thực hiện đề tài này.
Dù đã cố gắng và nỗ lực tuy nhiên với những hạn chế về kiến thức và kinh
nghiệm, đề tài không thể tránh được còn nhiều thiếu sót. Nhóm mong nhận được sự
đóng góp, nhận xét để của các thầy, cô và bạn bè để có thể hoàn thiện đề tài hơn
Xin chân thành cảm ơn!
Người thực hiện đề tài
Nguyễn Văn Tài Nguyễn Minh Đức
v
MỤC LỤC
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP ......................................................................... ii
LỜI CAM ĐOAN .............................................................................................................................. iv
LỜI CẢM ƠN ..................................................................................................................................... v
LIỆT KÊ HÌNH ............................................................................................................................... viii
LIỆT KÊ BẢNG ................................................................................................................................. x
TÓM TẮT .......................................................................................................................................... xi
Chương 1. TỔNG QUAN ................................................................................................................... 1
1.1 ĐẶT VẤN ĐỀ .................................................................................................................... 1
1.2 MỤC TIÊU VÀ GIỚI HẠN ................................................................................................ 2
1.3 NỘI DUNG NGHIÊN CỨU ............................................................................................... 2
1.4 GIỚI HẠN........................................................................................................................... 3
1.5 BỐ CỤC .............................................................................................................................. 3
Chương 2. CƠ SỞ LÝ THUYẾT ........................................................................................................ 5
2.1. TỔNG QUAN VỀ XỬ LÝ ẢNH ........................................................................................ 5
2.1.1. Giới thiệu về ảnh số .................................................................................................... 5
2.1.2. Phương pháp thu nhận ảnh .......................................................................................... 6
2.1.3. Giới thiệu về thư viện OpenCV và camera Logitech C270 ........................................ 6
2.1.4. Điều chỉnh độ sáng và độ tương phản ......................................................................... 7
2.1.5. Lọc nhiễu ảnh .............................................................................................................. 8
2.2. TÌM ĐƯỜNG BIÊN CỦA ẢNH ...................................................................................... 13
2.3. GIAO TIẾP UART ........................................................................................................... 15
2.4. VI ĐIỀU KHIỂN STM32F103C8T6 ................................................................................ 17
2.4.1. Tổng quan ................................................................................................................. 17
2.4.2. Cấu trúc hệ thống ...................................................................................................... 18
2.4.3. Tìm hiểu GPIO .......................................................................................................... 21
2.4.4. Timer và PWM .......................................................................................................... 23
2.5. ĐỘNG CƠ DC .................................................................................................................. 25
2.6. ENCODER ........................................................................................................................ 26
2.7. CẢM BIẾN HỒNG NGOẠI ............................................................................................. 29
Chương 3. TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG .................................................................... 31
3.1. THIẾT KẾ SƠ ĐỒ KHỐI ................................................................................................. 31
3.2. TÍNH TOÁN THIẾT KẾ MẠCH ..................................................................................... 32
3.2.1. Khối vi điều khiển và giao tiếp máy tính .................................................................. 32
vi
3.2.2. Khối cảm biến và encoder ......................................................................................... 35
3.2.3. Khối công suất điều khiển tải .................................................................................... 35
3.2.4. Khối nguồn ................................................................................................................ 39
3.2.5. Mạch PCB ................................................................................................................. 41
3.2.6. Sơ đồ nguyên lý toàn mạch ....................................................................................... 43
3.3. TÍNH TOÁN THIẾT KẾ MÔ HÌNH ................................................................................ 44
3.3.1. Cơ cấu cấp phôi ......................................................................................................... 44
3.3.2. Băng tải ..................................................................................................................... 46
3.3.3. Cơ cấu phân loại ........................................................................................................ 46
3.3.4. Hộp điện .................................................................................................................... 49
Chương 4. THI CÔNG HỆ THỐNG ................................................................................................ 50
4.1. GIỚI THIỆU ..................................................................................................................... 50
4.2. THI CÔNG MẠCH ĐIỆN ................................................................................................ 50
4.2.1. Linh kiện sử dụng trong mạch điện ........................................................................... 50
4.2.2. Lắp ráp và kiểm tra mạch điện .................................................................................. 51
4.3. THI CÔNG MÔ HÌNH ..................................................................................................... 52
4.3.1. Vật liệu, linh kiện sử dụng ........................................................................................ 52
4.3.2. Các bước thi công ..................................................................................................... 53
4.4. LẬP TRÌNH HỆ THỐNG ................................................................................................. 57
4.4.1. Lưu đồ giải thuật cho vi điều khiển ........................................................................... 57
4.4.2. Lưu đồ giải thuật cho chương trình xử lý ảnh ........................................................... 63
4.4.3. Phần mềm QT Creator .............................................................................................. 65
4.4.4. Trình biên dịch Keil µVision 5 ................................................................................. 70
Chương 5. KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ ........................................................................ 75
Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ...................................................................... 81
6.1. KẾT LUẬN ....................................................................................................................... 81
6.2. HƯỚNG PHÁT TRIỂN .................................................................................................... 81
TÀI LIỆU THAM KHẢO ................................................................................................................. 82
PHỤ LỤC .......................................................................................................................................... 83
vii
LIỆT KÊ HÌNH
Hình Trang
Hình 2. 1 Các bước xử lý ảnh ..................................................................................... 5
Hình 2. 2 Hình ảnh Webcam Logitech C270 .............................................................. 7
Hình 2. 3 Một mặt nạ lọc kích thước 3x3 ................................................................... 9
Hình 2. 4 Ví dụ về phần tử trung vị .......................................................................... 10
Hình 2. 5 Các hướng xét giá trị ................................................................................. 15
Hình 2. 6 Sơ đồ cấu trúc các khối của STM32F103C8T6 ........................................ 18
Hình 2. 7 Sơ đồ nguồn xung clock của STM32F103C8T6 ...................................... 20
Hình 2. 8 Thanh ghi cấu hình chức năng chân GPIO của port ................................. 22
Hình 2. 9 Thanh ghi đọc giá trị ngõ vào ................................................................... 23
Hình 2. 10 Thanh ghi chọn giá trị ngõ ra của port .................................................... 23
Hình 2. 11 Động cơ GA25 ........................................................................................ 26
Hình 2. 12 Đĩa encoder tương đối kiểu quay ............................................................ 28
Hình 2. 13 Hình ảnh encoder quang 100 xung ......................................................... 28
Hình 2. 14 Led phát hồng ngoại ................................................................................ 29
Hình 2. 15 Kí hiệu đi-ốt quang ................................................................................. 29
Hình 2. 16 Kí hiệu transistor quang .......................................................................... 30
Hình 2. 17 Cảm biến hồng ngoại E18-D80NK ......................................................... 30
Hình 3. 1 Sơ đồ khối của hệ thống. ........................................................................... 31
Hình 3. 2 Sơ đồ mạch vi điều khiển .......................................................................... 33
Hình 3. 3 Mạch chuyển USB UART PL2303 ........................................................... 34
Hình 3. 4 Cổng domino kết nối cảm biến và encoder ............................................... 35
Hình 3. 5 Sơ đồ kết nối cảm biến và encoder ........................................................... 35
Hình 3. 6 Sơ đồ mạch công suất điều khiển động cơ DC dùng PWM...................... 36
Hình 3. 7 Sơ đồ mạch công suất điều khiển động cơ DC bằng relay ....................... 37
Hình 3. 8 Sơ đồ mạch công suất điều khiển servo .................................................... 38
Hình 3. 9 Sơ đồ mạch công suất điều khiển led rọi .................................................. 38
Hình 3. 10 Sơ đồ mạch led báo trạng thái các tải ..................................................... 39
Hình 3. 11 Sơ đồ mạch nguồn ................................................................................... 41
Hình 3. 12 Hình ảnh mạch PCB ................................................................................ 41
Hình 3. 13 Hình ảnh 3D của mạch in mặt trên ......................................................... 42
Hình 3. 14 Hình ảnh 3D của mạch in nhìn nghiêng .................................................. 42
Hình 3. 15 Sơ đồ nguyên lý toàn mạch ..................................................................... 43
Hình 3. 16 Hình ảnh con lăn thiết kế ........................................................................ 44
Hình 3. 17 Hình ảnh bánh răng thiết kế .................................................................... 45
Hình 3. 18 Mặt trước puly ......................................................................................... 46
Hình 3. 19 Trục phụ của đĩa quay ............................................................................. 47
Hình 3. 20 Puly trục đĩa ............................................................................................ 48
Hình 3. 21 Sơ đồ nối dây hộp điện ............................................................................ 49
viii
Hình 4. 1 Mạch sau khi hàn linh kiện ....................................................................... 51
Hình 4. 2 Hình ảnh bánh răng thực tế ....................................................................... 53
Hình 4. 3 Hình ảnh cơ cấu cấp phôi sau khi thi công ............................................... 53
Hình 4. 4 Băng tải mặt bên........................................................................................ 54
Hình 4. 5 Băng tải mặt trên ....................................................................................... 54
Hình 4. 6 Cảm biến hồng ngoại phát hiện phôi ........................................................ 55
Hình 4. 7 Hộp camera và khung đĩa quay ................................................................. 55
Hình 4. 8 Cơ cấu gạt phôi ......................................................................................... 56
Hình 4. 9 Encoder và puly truyền động cho đĩa quay ............................................... 56
Hình 4. 10 Mô hình nhìn từ phía trước ..................................................................... 57
Hình 4. 11 Mô hình nhìn từ trên xuống .................................................................... 57
Hình 4. 12 Lưu đồ chương trình chính ...................................................................... 58
Hình 4. 13 Lưu đồ hàm khởi tạo GPIO ..................................................................... 59
Hình 4. 14 Lưu đồ hàm khởi tạo UART ................................................................... 60
Hình 4. 15 Lưu đồ hàm xử lý PWM ......................................................................... 61
Hình 4. 16 Lưu đồ hàm điều khiển Servo ................................................................. 62
Hình 4. 17 Lưu đồ hàm nhận dữ liệu ........................................................................ 63
Hình 4. 18 Lưu đồ chương trình chính xử lý ảnh ..................................................... 64
Hình 4. 19 Cửa sổ làm việc của QT Creator ............................................................. 66
Hình 4. 20 Giao diện khởi động QT Creator ............................................................ 67
Hình 4. 21 Cửa sổ tạo New Project ........................................................................... 67
Hình 4. 22 Đặt tên và chọn đường dẫn lưu project ................................................... 68
Hình 4. 23 Giao diện chương trình sau khi tạo project mới ..................................... 68
Hình 4. 24 Thêm đường dẫn thư viện OpenCV vào project ..................................... 69
Hình 4. 25 Giao diện lập trình UI của QT Creator ................................................... 69
Hình 4. 26 Biểu tượng trình biên dịch Keil µVision 5 ............................................. 70
Hình 4. 27 Giao diện của trình biên dịch Keil µVision 5 ......................................... 70
Hình 4. 28 Thư viện cho STM32F1 .......................................................................... 71
Hình 4. 29 Cây thư mục chứa project ....................................................................... 71
Hình 4. 30 Tạo project mới ....................................................................................... 72
Hình 4. 31 Menu dùng để chọn chip STM32F103C8 ............................................... 72
Hình 4. 32 Cửa sổ cấu hình cho project .................................................................... 73
Hình 4. 33 Tạo thư mục main.c................................................................................. 74
Hình 4. 34 Cây thư mục của project ......................................................................... 74
Hình 5. 1 Cấp nguồn cho mô hình ............................................................................ 75
Hình 5. 2 Giao diện chương trình xử lý ảnh trên máy tính ....................................... 75
Hình 5. 3 Đai ốc từ lồng cấp phôi rơi xuống băng tải ............................................... 76
Hình 5. 4 Đai ốc sau khi được chụp bởi camera ....................................................... 77
Hình 5. 5 Các đai ốc từ băng tải tới đĩa phân loại ..................................................... 77
Hình 5. 6 Thanh gạt đai ốc đạt yêu cầu ..................................................................... 78
ix
Hình 5. 7 Servo gạt vật không đạt yêu cầu ............................................................... 78
Hình 5. 8 Các hình chụp được lưu lại trong thư mục ................................................ 79
LIỆT KÊ BẢNG
Bảng Trang
Bảng 3. 1 Bảng cấu hình chế độ nạp của vi điều khiển ............................................ 33
Bảng 3. 2 Điện áp hoạt động và dòng tiêu thụ của một số linh kiện ........................ 40
Bảng 4. 1 Danh sách các linh kiện ............................................................................ 50
Bảng 4. 2 Các linh kiện, vật liệu được sử dụng trong mô hình ................................ 52
x
TÓM TẮT
Ứng dụng thị giác máy vào đời sống và sản xuất là một điều tất yếu hiện nay
nhằm giúp tăng năng suất và đảm bảo sự tin cậy, chính vì vậy nhằm tiếp cận các kiến
thức mới và theo kịp sự phát triển của kỹ thuật, nhóm quyết định thực hiện đề tài
“Thiết kế và thi công dây chuyền phân loại đai ốc ứng dụng xử lý ảnh”, đây là mô
hình phân loại sản phẩm. Hoạt động của mô hình dựa trên nguyên lý xử lý tín hiệu số
(hình ảnh) với ngôn ngữ lập trình C++ và thư viện OpenCV nhằm phân biệt các đai
ốc không đúng kích thước, sau đó chuyển tín hiệu về cho mạch điện trung tâm xử lý
điều khiển các cơ cấu chấp hành. Mục tiêu của đề tài là thi công một mô hình dây
chuyền có thể phân loại các đai ốc kích cỡ khác nhau. Việc xử lý hình ảnh được máy
tính đảm nhiệm nhằm đảm bảo tốc độ xử lý. Chương trình xử lý được viết thành phần
mềm có giao diện để trực quan và dễ quản lý.
xi
Chương 1. TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ
Công nghiệp ngày càng phát triển, các nhà máy được xây dựng khắp nơi. Trong các
nhà máy thì dây chuyền tự động hóa cũng ngày càng phổ biến, thay thế cho việc sử dụng
nhân công, giảm công sức bỏ ra nhưng lại đạt được hiệu quả cao hơn. Đi kèm với các
dây truyền sản xuất tự động luôn là vấn đề phân loại sản phẩm. Đây là vấn đề không
mới và có mặt ở hầu hết mọi nhà máy nó không chỉ giúp tiết giảm nhân lực mà còn giúp
đảm bảo chất lượng của sản phẩm trước khi xuất xưởng.
Phân loại sản phẩm có nhiều cách, tùy vào yếu tố cần phân loại và sản phẩm mà
ta có thể chọn lựa cách thức phù hợp như phân loại theo kích thước, theo màu sắc, theo
hình dạng, theo lỗi Trong đó phân loại theo sản phẩm lỗi là phức tạp nhất tuy nhiên
đây cũng là vấn đề xuất hiện ở tất cả các dây chuyền sản xuất. Để có thể phân loại theo
sản phẩm lỗi ta có thể sử dụng thị giác máy tính cụ thể là phương pháp xử lý hình ảnh,
với phương pháp này có thể xử lý nhanh và chính xác các lỗi mà ngay cả mắt thường
cũng khó nhận biết, với những sản phẩm nhiều chi tiết, các lỗi phức tạp thì ta cần kết
hợp với các phương pháp như mạng nơ-ron, học máy để xử lý đạt được hiệu quả [1-
2].
Hiện nay đã có nhiều nghiên cứu về phân loại sản phẩm dùng thị giác máy mà cụ thể
là xử lý ảnh, các công ty cũng cho ra đời nhiều loại smart camera tích hơp sẵn bộ xử lý
hình ảnh ứng dụng cho công nghiệp. Tuy nhiên giá thành các camera này là rất cao và
chỉ phù hợp cho các nhà máy lớn với những dây chuyền hiện đại. Ngoài ra cũng đã có
nhiều đề tài của sinh viên nghiên cứu về ứng dụng xử lý ảnh hoặc về điều khiển động
cơ, dây chuyền. Phan Văn Phương và Trần Trí Tâm nghiên cứu đề tài “Ứng dụng xử lý
ảnh cảnh báo tài xế ngủ gật” sử dụng thư viện OpenCV lập trình trên nền tảng Window
và Linux (kit Raspberry) để cảnh báo tài xế ngủ gật qua việc xử lý hình chụp để xác
định tài xế nhắm hay mở mắt, có cảnh báo nếu tài xế ngủ gật [3]. Phan Trọng Thuật và
Nguyễn Văn Đúng thực hiện đề tài “Phân loại sản phẩm dùng camera” qua đó nghiên
cứu các phương thức ứng dụng xử lý ảnh để phân loại đối tượng [4]. Lê Quốc Nhật và
Châu Thái Bảo thực hiện “Nhận dạng thứ tự màu cho cáp kết nối trong công nghiệp
dùng xử lý ảnh”, sử dụng thư viện OpenCV và phần mềm Visual Studio 2013 (C++) để
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 1
nhận diện thứ tự màu cho dây cáp kết nối, hệ thống có giao diện thống kê thông số màu,
kiểm tra sai số so với màu chuẩn [5]. Trần Thanh Sang và Trần Mạnh Hùng thực hiện
đề tài “Thiết kế hệ thống nhận dạng biển số xe” từ đó đưa ra những phương pháp phát
hiện biển số xe dựa trên việc xử lý hình ảnh [6]. Lê Doãn Thắng với đề tài “Thiết kế thi
công bộ điều khiển máy chạy bộ điện” đã nghiên cứu kit STM32F103VET6 và sử dụng
kit này để điều khiển tốc độ động cơ động cơ DC của máy chạy bộ [7].
Với mục đích nghiên cứu, học hỏi và áp dụng những kiến thức đã được học về xử lý
ảnh, vi điều khiển, điện tử cơ bản, chúng em quyết định thực hiện đề tài “Thiết kế và
thi công dây chuyền phân loại đai ốc ứng dụng xử lý ảnh”. Dây chuyền sử dụng vi điều
khiển trung tâm là STM32F103C8T6, cảm biến hồng ngoại, động cơ DC, USB camera
để lấy ảnh, đèn led chiếu sáng mẫu, máy tính với hệ điều hành Window để xử lý ảnh sử
dụng thư viện mã nguồn mở OpenCV. Dây chuyền có thể phân loại các đai ốc bị sai
kích thước, bị lệch tâm, bị méo. Các thông số của dây chuyền có thể cài đặt và giám sát
qua phần mềm trên máy tính. Ưu điểm của việc sử dụng USB camera kết hợp máy tính
cùng bộ xử lý dùng vi điều khiển là giá thành rẻ, nhỏ gọn, có thể thực hiện, vận hành và
sửa chữa dễ dàng. [8]
1.2 MỤC TIÊU VÀ GIỚI HẠN
Thiết kế và thi công một dây chuyền có thể phân loại đai ốc ứng dụng xử lý ảnh dùng
thư viện mã nguồn mở OpenCV viết trên ngôn ngữ C++. Dây chuyền có thể phân loại
các đai ốc bị sai kích thước, bị méo. Các thông số của dây chuyền có thể cài đặt và giám
sát qua phần mềm trên máy tính sử dụng hệ điều hành Window. Máy tính sẽ giao tiếp
với vi điều khiển thông qua giao tiếp UART.
1.3 NỘI DUNG NGHIÊN CỨU
- Tìm hiểu cách thức hoạt động của các hệ thống phân loại dùng xử lý ảnh.
- Tìm hiểu chuẩn giao tiếp UART, động cơ DC, cảm biến hồng ngoại, encoder.
- Tìm hiểu về vi điều khiển STM32F103C8T6.
- Thiết kế và thi công mô hình dây chuyền phân loại.
- Thiết kế và thi công mạch điện cho hệ thống.
- Viết chương trình xử lý ảnh trên máy tính dùng phần mềm QT Creator.
- Viết chương trình điều khiển cho vi điều khiển STM32F103C8T6
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 2
- Chạy thử nghiệm mô hình, chỉnh sửa và hoàn thiện hệ thống.
- Thực hiện viết luận văn báo cáo.
- Tiến hành báo cáo đề tài tốt nghiệp.
1.4 GIỚI HẠN
- Sử dụng USB Camera để thu nhận ảnh và dùng máy tính PC hoặc laptop trên hệ
điều hành Window để xử lý hình ảnh thu được.
- Dây chuyền phân loại đai ốc lục giác loại M10 độ dày 8mm, khoảng các giữa 2
đỉnh đối diện là 18.9mm, khoảng cách giữa 2 cạnh đối diện là 17mm với các đai
ốc có kích thước khác
- Dây chuyền chỉ dừng ở mức mô hình, kích thước nhỏ.
- Dây chuyền sử dụng động cơ giảm tốc DC 12V
1.5 BỐ CỤC
Chương 1: TỔNG QUAN.
Trình bày, đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các
giới hạn thông số và bố cục đồ án.
Chương 2: CƠ SỞ LÝ THUYẾT.
Giới thiệu các cơ sở lý thuyết gồm lý thuyết về xử lý ảnh, các linh kiện và thiết bị sử
dụng để thiết kế hệ thống và trình bày các chuẩn truyền, giao thức.
Chương 3: TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG.
Thiết kế sơ đồ khối của hệ thống, đưa ra sơ đồ nguyên lí của các khối trong hệ thống
và thực hiện việc tính toán thiết kế.
Chương 4: THI CÔNG HỆ THỐNG.
Trình bày về thiết kế lưu đồ, đưa ra giải thuật và viết chương trình. Quá trình thi công
mạch điện, mô hình hệ thống hoàn chỉnh.
Chương 5: KẾT QUẢ - NHẬN XÉT - ĐÁNH GIÁ.
Đưa ra kết quả đạt được sau khi thi công mô hình, rút ra những nhận xét, đánh giá
toàn bộ hệ thống.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 3
Chương 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.
Trình bày những kết luận về hệ thống những phần đã làm và chưa làm, đồng thời nêu
ra hướng phát triển cho hệ thống
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 4
Chương 2. CƠ SỞ LÝ THUYẾT
2.1. TỔNG QUAN VỀ XỬ LÝ ẢNH
Xử lý ảnh là quá trình xử lý số tín hiệu ở đây là tín hiệu hình ảnh. Hiện nay xử lý
ảnh đang phát triển rất mạnh mẽ, vì ứng dụng của nó rất rộng và hữu íc...ộ cổ góp và chổi than tiếp xúc cổ góp, điều này giúp cấp điện cho
động cơ kể cả khi động cơ quay. Vì là bộ phận tiếp xúc nên sau một thời gian chổi quét
sẽ bị mài mòn và cần phải thay thế. Động cơ DC thường có tốc độ cao, đáp ứng nhanh
kích thước nhỏ gọn, momen cao dù ở tốc độ nhỏ nên được sử dụng phổ biến trong các
mô hình, các máy móc, thiết bị, đồ gia dụng, dùng khởi động các động cơ xe
Dòng điện chạy qua động cơ được tính như sau:
푉푁𝑔푢ồ푛−푉đ𝑖ệ푛 độ푛𝑔
퐼Độ푛푔 푐ơ = (2.10)
푅푃ℎầ푛 ứ푛𝑔
Công suất động cơ được tính như sau:
푃độ푛푔 푐ơ = 퐼Độ푛푔 푐ơ ∗ 푉đ𝑖ệ푛 độ푛푔 (2.11)
Trong đó 푉đ𝑖ệ푛 độ푛푔 là sức điện động của rotor sinh ra khi quay.
푅푃ℎầ푛 ứ푛푔 là điện trở nội của các cuộn dây.
Dòng điện khi khởi động của động cơ thường bằng 4-7 lần dòng điện hoạt động
định mức, khi tính toán dòng cho động cơ cần chú ý đến dòng khởi động để đảm bảo an
toàn cho mạch điện.
Phương pháp điều khiển động cơ DC
Để điều khiển động cơ DC thì phương pháp phổ biến nhất là điều khiển điện áp
rotor vì tốc độ quay của động cơ DC sẽ tỉ lệ thuận với điện áp nguồn. Chiều quay có
thể điều khiển bằng các thay đổi chiều dòng điện đi vào động cơ.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 25
Để điều khiển điện áp DC cấp cho động cơ ta có thể dùng phương pháp thay đổi
thời gian cấp điện - 푡푂푁, nghĩa là dòng điện được đóng và ngắt liên tục để qua đó thay
đổi điện áp trung bình. Để làm được điều này ta cần dùng các phần tử chuyển mạch có
điều khiển như transistor hoặc MOSFET. Giả sử điện áp cấp là 24V và thời gian 푡푂푁 là
50% thì điện áp trung bình là 12V. Phương pháp này được gọi là phương pháp điều biến
độ rộng xung (pulse width modulation- PWM). Tùy vào công suất động cơ mà ta chọn
loại linh kiện chuyển mạch cho phù hợp.
Trong đề tài, nhóm sử dụng động cơ DC có bộ giảm tốc loại GA25 có các thông
số như sau:
- Điện áp hoạt động trong khoảng 6 - 18V, điện áp định mức 12V
- Tốc độ sau bộ giảm tốc 17rpm
- Dòng không tải 50mA, dòng có tải là 240mA
- Momen xoắn khi có tải là 14kg.cm
Hình 2. 11 Động cơ GA25
2.6. ENCODER
Encoder ở các hệ thống điều khiển tự động là bộ phận để đo lường dịch chuyển
thẳng hoặc góc, đồng thời chuyển đổi vị trí góc/vị trí thẳng mà nó ghi nhận được thành
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 26
tín hiệu nhị phân. Chính nhờ những tín hiệu nhị phân này mà hệ thống vi tính cho ta biết
được vị trí chính xác.
Cấu tạo và nguyên lý hoạt động.
Nguyên lý cơ bản của encoder, đó là một đĩa tròn xoay, quay quanh trục. Trên
đĩa có các lỗ (rãnh). Dùng một đèn led để chiếu lên mặt đĩa. Khi đĩa quay, chỗ không có
lỗ, đèn led không chiếu xuyên qua được, chỗ có lỗ (rãnh), đèn led sẽ chiếu xuyên qua.
Khi đó, phía mặt bên kia của đĩa, đặt một con mắt thu. Với các tín hiệu có hoặc không
có ánh sáng chiếu qua, thì ghi nhận được đèn led có chiếu qua lỗ hay không.
Như vậy là encoder sẽ tạo ra các tín hiệu xung vuông và các tín hiệu xung vuông
này được cắt từ ánh sáng xuyên qua lỗ. Nên tần số của xung đầu ra sẽ phụ thuộc vào tốc
độ quay của tấm tròn đó. Đối với encoder nhóm đang dùng thì nó có 2 tín hiệu ra lệch
pha nhau 90. Hai tín hiệu này có thể xác định được chiều quay của động cơ.
Phân loại.
Ecoder được phân hai loại chính:
- Encoder tuyệt đối: sử dụng đĩa theo mã nhị phân hoặc mã Gray.
- Encoder tương đối: có tín hiệu tăng dần hoặc theo chu kỳ.
Ecoder tuyệt đối.
Encoder kiểu tuyệt đối có kết cấu gồm những phần sau: Bộ phát ánh sáng, đĩa mã
hóa (có chứa dải băng mang tín hiệu), một bộ thu ánh sáng nhạy với ánh sáng phát ra.
Đĩa mã hóa ở encoder tuyệt đối được chế tạo từ vật liệu trong suốt, người ta chia
mặt đĩa thành các góc đều nhau và các đường tròn đồng tâm.
Ecoder tương đối.
Về cơ bản thì Encoder kiểu tương đối đều giống nhau, chỉ khác ở đĩa mã hóa. Ở
encoder tương đối thì đĩa mã hóa gồm 1 dải băng tạo xung. Ở dải băng này được chia
làm nhiều lỗ bằng nhau và cách đều nhau (có thể chất liệu trong suốt để ánh sáng chiếu
qua).
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 27
Hình 2. 12 Đĩa encoder tương đối kiểu quay
Khi đĩa quay và ánh sáng chiếu được 1 lỗ thì bộ thu nhận được tín hiệu từ đèn LED thì
encoder sẽ ghi nhận giá trị lên 1 biến đếm.
Dựa vào tìm hiểu và nghiên cứu nhóm sử dụng Ecoder quang vì lý do thông dụng dễ
dùng và giá thành thì hợp lý.
Hình 2. 13 Hình ảnh encoder quang 100 xung
- Cấu tạo.
+ Đường kính ngoài: 22mm
+ Đường kính lỗ: 3.5mm
+ Độ dày: 0.3 mm
+ Chất liệu: Thép hợp kim
+ Điện áp cung cấp: 5V (3.3V)
+ Kết nối: Màu đỏ 5V, Đen GND, 2 dây còn lại là 2 kênh A, B có thể được kết nối
trực tiếp với vi điều khiển. (hoặc dùng trở kéo lên 10k)
+ Tín hiệu ra: 5Vp-p hai pha tín hiệu đầu ra.
+ Số xung là 100
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 28
2.7. CẢM BIẾN HỒNG NGOẠI
Cảm biến hồng ngoại gồm một led phát hồng ngoại và một đi-ốt quang hoặc một
transistor quang, tia hồng ngoại được phát ra với tần số nhất định bước sóng thường là
940nm, khi có vật cản trên đường truyền của led phát nó sẽ phản xạ vào led thu hồng
ngoại.
Led phát hồng ngoại có cấu tạo như led thông thường tuy nhiên thay vì phát ra
ánh sáng nhìn thấy được thì led phát hồng ngoại sẽ phát ra bức xạ hồng ngoại không
nhìn thấy được. Bề ngoài của led hồng ngoại tương tự như các led phổ biến với hai cực
anode và cathode.
Hình 2. 14 Led phát hồng ngoại
Bộ phận thu thu hồng ngoại- thường được gọi là led thu hồng ngoại vì hình dạng
giống như một con led của nó, có thể là loại đi-ốt quang (photodiode) hoặc transitor
quang (photo transistor).
Với loại đi-ốt quang, khi có ánh sáng hồng ngoại có bước sóng nằm trong khoảng
phát hiện của nó với cường độ đủ lớn sẽ làm đi-ốt dẫn. Đi-ốt quang có các đặc điểm như
một đi-ốt thông thường tuy nhiên điều kiện để nó cho dòng đi qua là có ánh sáng chiếu
vào, tùy vào loại đi-ốt quang mà có bước sóng kích khác nhau.
Hình 2. 15 Kí hiệu đi-ốt quang
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 29
Với loại transistor quang cực B được để hở và đóng gói sao cho photon ánh sáng
có thể lọt vào, khi có ánh sáng hồng ngoại có bước sóng nằm trong khoảng phát hiện
của transistor với cường độ đủ lớn sẽ làm transistor dẫn. Transistor quang có các đặc
điểm như một transistor thông thường tuy nhiên điều kiện để nó dẫn là có ánh sáng chiếu
vào, tùy vào mỗi loại transistor quang mà có một bước sóng kích khác nhau. Khi sử
dụng phototransistor cần chú ý chọn điện trở phân cực cho phù hợp. Các mạch phân cực
tương tự như các transitor thông thường
Hình 2. 16 Kí hiệu transistor quang
Trong đề tài nhóm sử dụng cảm biến vật cản hồng ngoại E18-D80NK có các
thông số như sau:
- Điện Áp sử dụng: 5V DC.
- Dòng tiêu thụ: 20mA.
- Khoảng cách phát hiện vật: 3 - 80cm.
- Cách kết Nối:
+ Dây Màu Nâu: 5V DC.
+ Dây Màu Xanh Dương: GND.
+ Dây Màu Đen: Tín hiệu NPN thường mở.
- Chiều Dài Dây: 1m.
- Khoảng cách phát hiện vật có thể điều chỉnh bằng biến trở tinh chỉnh sau cảm
biến
Hình 2. 17 Cảm biến hồng ngoại E18-D80NK
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 30
Chương 3. TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG
3.1. THIẾT KẾ SƠ ĐỒ KHỐI
Khi bắt đầu hoạt động, có tín hiệu báo bắt đầu từ máy tính truyền qua, mạch sẽ điều
khiển đèn led rọi, động cơ cấp phôi, động cơ băng tải và động cơ đĩa tách hoạt động. Dây chuyền
có một cảm biến hồng ngoại, cảm biến được đặt ở trước camera nếu phát hiện ốc sẽ gửi tín hiệu
về vi điều khiển từ đó vi điều khiển truyền dữ liệu cho máy tính thông qua khối giao tiếp uart,
sau đó máy tính sẽ gửi dữ liệu trả về cho vi điều khiển là vật có bị lỗi hay không, nếu vật lỗi thì
vi điều khiển sẽ điều khiển servo loại vật lỗi ra. Khối nguồn có ba mức điện áp 12V, 5V và
3.3V cấp cho các tải công suất, vi điều khiển, cảm biến và encoder.
Hình 3. 1 Sơ đồ khối của hệ thống.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 31
Chức năng các khối
- Khối vi điều khiển trung tâm: Điều khiển các tải như động cơ DC, Servo, đèn led
đồng thời nhận tín hiệu từ cảm biến.
- Khối giao tiếp với máy tính: Giúp truyền và nhận tín hiệu từ máy tính đến vi điều
khiển và ngược lại.
- Khối cảm biến: Giúp phát hiện đai ốc
- Khối encoder: Đo tốc độ động cơ để điều khiển chính xác.
- Khối điều khiển động cơ cấp phôi: Điều khiển động cơ cấp phôi
- Khối điều khiển động cơ băng tải: Điều khiển động cơ băng tải
- Khối điều khiển động cơ đĩa tách: Điều khiển động đĩa tách phôi quay chính xác
- Khối điều khiển led rọi: Điều khiển led chiếu sáng vật giúp camera xử lý hiệu
quả.
- Khối điều khiển động cơ servo: Điều khiển servo gạt vật lỗi
- Khối nguồn: Cấp nguồn cho mạch điện và các tải
- Khối camera xử lý ảnh: Thu hình ảnh và truyền về cho máy tính xử lý
- Khối phần mềm xử lý ảnh: Xử lý hình ảnh được thu từ camera và ra tín hiệu điều
khiển cho mạch điện.
3.2. TÍNH TOÁN THIẾT KẾ MẠCH
Mạch điện của hệ thống được tính toán và thiết kế sao cho phù hợp với mục đích
của đề tài là điều khiển các tải động cơ, led và giao tiếp với máy tính bằng UART. Tất
cả các khối trong mạch, trừ phần mạch chuyển mức điện áp TTL, đều được thiết kế trên
một mạch điện hoàn chỉnh.
3.2.1. Khối vi điều khiển và giao tiếp máy tính
Mạch sử dụng vi điều khiển STM32F103C8T6 kiểu chân LQFP 48, thạch anh
8MHz. Điện áp sử dụng là 3.3V, có nút nhấn reset được kéo lên 3.3V bằng trở 10k, điện
trở này có tác dụng hạn dòng đi vào chân reset của vi điều khiển khi nút nhấn được nhấn
xuống, một tụ gốm có giá trị 0.1uF được mắc song song với nút nhấn để lọc nhiễu do
hiện tượng rung phím gây ra. Hai chân BOOT0 và BOOT1 (tương ứng chân 44 và 20
của vi xử lý) là các chân chọn chế độ nạp của vi điều khiển, các chân này được mắc nối
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 32
tiếp với hai điện trở 100k và có thể kéo lên 3.3V hoặc kéo xuống GND bằng các cầu nối
do người dùng chọn. Để chọn chế độ nạp ta có thể cấu hình các chân dựa theo bảng 3.1
Hình 3. 2 Sơ đồ mạch vi điều khiển
Bảng 3. 1 Bảng cấu hình chế độ nạp của vi điều khiển
Chân chọn chế độ nạp Chế độ nạp
BOOT1 BOOT0
x 0 Main Flash memory
0 1 System memory
1 1 Embedded SRAM
Như bảng 3.1, STM32F103C8T6 có 3 chuẩn nạp là:
- Main flash memory: Đây là chuẩn nạp code thông thường của vi điều khiển (dùng
các mạch nạp như STlink, Jlink.) để sử dụng nó chân BOOT0 sẽ được nối GND
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 33
nếu không nối các mạch nạp sẽ không nhận dạng được chip và sẽ bị báo lỗi không
tìm thấy vi điều khiển.
- System memory: Đây là chuẩn nạp code đặc biệt của vi điều khiển thông qua
những chương trình nạp mà nhà sản xuất cung cấp. Tùy vào dòng vi xử lý mà có
các cách nạp khác nhau như: UART, SPI, USB, I2C, Ở STM32F103C8T6 chuẩn
nạp này chỉ được áp dụng ở UART1 trên hai chân PA9, PA10. Điều kiện là chân
BOOT0 nối lên nguồn 3.3V và chân BOOT1 nối xuống GND. Lúc này ta có thể
nạp code qua 2 chân TX, RX của UART1.
- Embedded SRAM: Chuẩn này cho phép truy cập địa chỉ SRAM nội bên trong vi
điều khiển. Điều kiện sử dụng là chân BOOT0 nối nguồn 3.3V và chân BOOT1
nối 3V3.
Trong mạch, vi xử lý được nạp thông qua các chân SWDIO và SWCLK tương
ứng các chân PA13 và PA14 sử dụng chuẩn nạp Main flash memory bằng bộ nạp
STlink, các chân được nối ra header để có thể kết nối với bộ nạp dễ dàng.
Để giao tiếp với máy tính, đề tài sử dụng ic giao tiếp uart qua cổng USB PL2303
với mạch được thiết kế sẵn giúp đơn giản và dễ sử dụng.
Hình 3. 3 Mạch chuyển USB UART PL2303
Mạch được ra các chân TX, RX và GND để có thể kết nối với mạch chuyển
PL2303 thông qua header, khi sử dụng chân TX và RX trên mạch được kết nối lần lượt
với RX và TX của PL2303 và chân GND của hai mạch được nối chung để đồng bộ mức
tín hiệu. Trên mạch còn có 2 led báo trạng thái trền và nhận dữ liệu.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 34
3.2.2. Khối cảm biến và encoder
Cảm biến và encoder sử dụng nguồn 5VDC, cảm biến hồng ngoại 1 kết nối với
chân PB12, cảm biến hồng ngoại 2 kết nối với chân PA1, encoder kết nối với chân PA7
của vi điều khiển. Các chân từ vi điều khiển được nối ra một cổng domino 5 chân để có
thể kết nối với cảm biến và encoder dễ dàng trong đó có 2 chân cấp nguồn VCC = 5V
và GND cùng 3 chân tín hiệu.
Hình 3. 4 Sơ đồ kết nối cảm biến và encoder
Hình 3. 5 Cổng domino kết nối cảm biến và encoder
3.2.3. Khối công suất điều khiển tải
Tải gồm 3 động cơ DC giảm tốc, 1 động cơ servo và 1 bộ led rọi, trong đó có 2
động cơ DC sử dụng phương pháp điều điều chế độ rộng xung (PWM), 1 động cơ DC
điều khiển trực tiếp, động cơ servo điều khiển bằng phương pháp điều xung. Mạch tải
được cách ly với phần điều khiển bằng opto.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 35
Mạch điều khiển động cơ dùng phương pháp điều chế độ rộng xung (phương
pháp PWM)
Hình 3. 4 Sơ đồ mạch công suất điều khiển động cơ DC dùng PWM
Mạch được cách li với phần vi điều khiển bởi opto PC817. Với dòng của led phát
là 20mA tại điện áp 1.4V và điện áp ra của vi điều khiển là 3.3V thì ta có thể chọn các
điện trở 푅2 푣à 푅7 trên mạch theo công thức sau:
3.3푉−푉푙푒푑 3.3푉−1.4푉
푅 = = = 95Ω vậy chọn điện trở R2 = R7 =100Ω.
퐼푙푒푑 20푚퐴
Tín hiệu ngõ ra của opto được đưa đến chân G của MOSFET để điều khiển
MOSFET đóng hay ngắt. Trong mạch MOSFET được mắc theo kiểu cầu phân áp. Với
V+ là 12V. Với dòng hoạt động khi có tải của động cơ tại 12V là 240mA, giả sử dòng
khởi động gấp 7 lần dòng hoạt động, ta có dòng qua MOSFET lúc khởi động là 1.680A.
Mạch sử dụng MOSFET IRF540 có các thông số như sau:
- Điện áp đánh thủng VDS = 100V
- Dòng tải tối đa ID = 28A tại 25˚C
- Điện áp VGS = ±20V
Chọn ID = 16A ta tính toán các điện trở như sau:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 36
Dựa vào datasheet của IRF540 ta có VTh(max) = 4V, ID(on) = 17A tại
VGS(on) = 10V nên ta có:
ID(on) 17 17
k = 2 = 2 =
(VGS(on)−VTh) (10−4) 36
Từ đó ta tính được dòng ID như sau:
17
I = k(V − V )2 = (V − 4)2 = 16A => V ≈ 9.8A
D GS Th 36 GS GS
Khi opto dẫn, coi dòng IC = IE, điện áp tại cực G của MOSFET:
V+∗R1
VGS = với V+ sử dụng trong mô hình là 12V thì ta có:
R1+R5
12∗R1
VGS = = 9.8V => R1 ≈ 4.9R5, chọn R1 = 10kΩ, R5 = 2.2kΩ
R1+R5
Vậy R1 = R10 = 10 kΩ, R5 = R8 = 2.2 kΩ
Các domino J1 và J7 giúp kết nối hai động cơ vào mạch.
Mạch điều khiển động cơ bằng relay
Hình 3. 5 Sơ đồ mạch công suất điều khiển động cơ DC bằng relay
Mạch được cách li với phần điều khiển bằng opto PC817, tín hiệu ra của opto sẽ
được dùng để kích transistor 2N3904, transistor sẽ điều khiển cuộn dây relay, đi-ốt
1N4007 bảo vệ tránh dòng ngược sinh ra từ cuộn dây relay, relay được kích thông qua
2N3904 vì dòng tải tối đa của opto PC817 chỉ là 50mA nhưng dòng tiêu thụ của cuộn
dây relay có thể lên tới 100mA.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 37
Thông số các điện trở được tính toán như sau:
Điện trở 푅11 = 100Ω được tính như mạch trước.
Transistor 2N3904 có ℎ퐹퐸 từ 100 đến 300, được mắc theo kiểu định dòng, với
dòng tiêu thụ định mức của relay là 37.5mA, điện trở cuộn dây của relay là
푅퐶= 320Ω thì ta có thể tính các giá trị điện trở phân cực cho transistor như sau:
+ 푅퐵 = 푅12 ≤ ℎ퐹퐸(푚𝑖푛) ∗ 푅퐶= 100 ∗ 320=32kΩ, chọn 푅퐵 = 푅12 = 10푘Ω
푉퐸
+ Chọn 푉퐸 = 1/10 ∗ 푉+= 1,2v => 푅퐸 = 푅13 =
퐼퐸
푉퐸 1.2
Coi như 퐼퐸 = 퐼퐶 thì ta có 푅퐸 = = = 32Ω chọn 푅퐸 = 푅13 = 27Ω
퐼퐶 0.0375
Mạch điều khiển led rọi và RC servo
Hình 3. 8 Sơ đồ mạch công suất điều khiển led rọi
Hình 3. 9 Sơ đồ mạch công suất điều khiển servo
Mạch điều khiển RC servo và điều khiển led rọi tương tự như nhau chỉ khác ở
phần tín hiệu vào, cũng tương tự như các mạch trước hai mạch này đều được cách li bởi
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 38
opto PC817 tuy nhiên phần điều khiển tải sử dụng transistor công suất TIP41C. Thông
số các linh kiện được tính cụ thể như sau:
Hai điện trở R14 và R17 tính toán như các mạch trước có giá trị 100Ω. Transistor
TIP41C có hFE từ 15 đến 75, được mắc theo kiểu định dòng, với dòng tiêu thụ định mức
của RC servo và led 750mA thì ta có thể chọn các giá trị điện trở phân cực cho transistor
như sau:
Với ICmin = 750mA
+ Chọn RB = 220Ω
V+−VBE 12−0.7
Với hFEmin = 15, ta có ICmin = hFEmin ∗ = 15 ∗ = 0.75A
RB RB
=> RB = 226Ω , chọn RB = 220Ω.
Vậy chọn R15 = R18 = 220Ω.
Ngoài ra mỗi tải đều có một led báo trạng thái hoạt động, các led này được mắc
song song với các led phát của opto (chân 1,2 của opto PC817) và đều có một trở 100Ω
để hạn dòng, sơ đồ mạch như sau:
Hình 3. 10 Sơ đồ mạch led báo trạng thái các tải
3.2.4. Khối nguồn
Mạch sử dụng nguồn 12V, trong mạch có ba mức áp khác nhau là áp cho tải; áp
cho cảm biến, encoder và RC servo; áp cho vi điều khiển tương ứng là 12V, 5V và 3.3V.
Chính vì điều này mạch cần sử dụng hai ic hạ áp. Dòng tiêu thụ của các linh kiện trong
mạch được liệt kê trong bảng 3.2
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 39
Bảng 3. 2 Điện áp hoạt động và dòng tiêu thụ của một số linh kiện
Stt Tên linh kiện Số Điện áp hoạt Dòng tối đa 1 Tổng dòng
lượng động (V) linh kiện (A) (A)
1 Động cơ DC 3 12 1.680 5.04
2 Led rọi 1 12 0.2 0.2
3 Servo SG90 1 5 0.55 0.55
4 Cảm biến 1 5 0.1 0.1
5 Encoder 1 5 0.05 0.05
6 Relay 1 12 0.1 0.1
7 Led báo trạng thái 9 3.3 0.02 0.18
8 Opto 5 3.3 0.02 0.1
9 STM32F103C8T6 1 3.3 0.05 0.05
Dòng toàn mạch 6.37
Các linh kiện khác như tụ, điện trở, MOSFET, transistorkhông được liệt kê ở
bảng trên do dòng tiêu thụ nhỏ và có thể bỏ qua.
Với nguồn 12V, nhóm sử dụng bộ nguồn xung 12V- 10A có sẵn trên thị trường.
Nguồn 12V này sẽ được hạ áp xuống 5V bằng IC LM2596 - 5V điện áp 5V này được
đưa đến ngõ vào của IC AMS1117 – 3.3V. Sử dụng hai mức điện áp như vậy có hai lợi
ích trước hết là tạo điện áp 5V cho các linh kiện cần sử dụng, thứ hai là tạo điện áp ngõ
vào phù hợp cho IC AMS1117 vì IC này chỉ có giới hạn điện áp ngõ vào là 8.7V, dòng
cung cấp của IC là 1A. Đối với IC LM2596 - 5V các thông số như sau: chịu được dòng
tải 3A và điện áp ngõ vào tối đa 40V.
Nguồn điện được cấp cho mạch bằng một cầu nối điện, cực dương của nguồn
được nối qua một cầu chì để bảo vệ quá tải. các tụ C8, C9 có tác dụng lọc và ổn định
nguồn trước và sau khi ổn áp, đi-ốt D1 và cuộn cảm L1 được chọn dựa theo datasheet.
Điện áp 5V tại chân 2 của LM2596 được đưa tới chân 3 của AMS1117, ngõ vào và ngõ
ra của IC này cũng có các tụ lọc C6 và C7. Ngõ ra 3.3V còn có một led để báo trạng thái
với điện trở hạn dòng R19 = 100Ω. Mạch được vẽ dựa theo gợi ý của datasheet các IC.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 40
Hình 3. 11 Sơ đồ mạch nguồn
3.2.5. Mạch PCB
Mạch in PCB được vẽ bằng phần mềm Altium Designer 16.0, mạch được vẽ 2
lớp, đường dây nhỏ nhất được vẽ là 10mil (0.254mm) đây là các đường dây tín hiệu từ
vi điều khiển, các đường công suất được vẽ lớn hơn là 60mil. Mạch được phủ GND ở
cả hai lớp để chống nhiễu, các linh kiện được sắp xếp phù hợp với mục đích, chức năng.
Sau khi thiết kế, mạch được đặt gia công. Sau đó nhóm tự hàn các linh kiện.
Hình 3. 12 Hình ảnh mạch PCB
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 41
Hình 3. 13 Hình ảnh 3D của mạch in mặt trên
Hình 3. 14 Hình ảnh 3D của mạch in nhìn nghiêng
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 42
3.2.6. Sơ đồ nguyên lý toàn mạch
Hình 3. 15 Sơ đồ nguyên lý toàn mạch
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 43
3.3. TÍNH TOÁN THIẾT KẾ MÔ HÌNH
3.3.1. Cơ cấu cấp phôi
Để cấp phôi cho hệ thống nhóm sử dụng một ống hình trụ, đặt nằm ngang trên
bốn con lăn và quay đều theo một hướng, bên trong thành ống có các cánh để đưa phôi
lên băng tải khi ống quay, khi ống trụ quay các cánh sẽ đưa phôi lên tới một góc nhất
định phôi sẽ rơi ra đúng vị trí băng tải. Ống trụ có hai tấm chắn hai đầu bằng mica dày
10mm, hai tấm này có đường lính lớn hơn ống trụ và sẽ tiếp xúc với các con lăn để giúp
việc quay dễ dàng hơn. Toàn bộ mô hình nằm trên một khung nhôm định hình kích
thước 90 x 35cm
Lồng quay chứa phôi
Ở đây sử dụng một chiếc lồng trụ tròn chứa phôi có đường kính 14cm, dài 18cm,
bên trong được gắn các cánh có chiều dài bằng độ dài lồng. Hai mặt lồng sẽ được gắn
hai tấm mica để hỗ trợ quay trên con lăn, hai tấm này được thiết kế bằng phần mềm
autocad và được cắt mica dày 10mm, đường kính hai tấm là 14.4cm, tâm của hai tấm
được khoét lỗ đường kính 6cm. Khi chiếc lồng quay tròn thì những cánh sẽ có nhiệm vụ
đưa phôi lên trên và sau đó rớt xuống băng tải. Cho phép băng tải đưa phôi đến vị trí đĩa
quay.
Con lăn
Để lồng có thể quay ổn định thì nhóm sử dụng theo cơ cấu con lăn. Bốn con lăn
sẽ được gắn trên 2 thanh trục 8mm kết hợp với bốn bạc đạn. Bố trí sao cho phù hợp với
hai mặt của lồng chứa. Con lăn sẽ giúp lồng quay tròn một cách chắc chắn và ổn định
hơn. Mỗi con lăn có hai hình tròn đồng tâm, đường kính lần lượt là 3cm và 2cm, các
con lăn được vẽ bằng phần mềm SketchUp và được in 3d.
Hình 3. 16 Hình ảnh con lăn thiết kế
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 44
Bánh răng và động cơ
Để có thể làm cho lồng quay tròn. Nhóm đã nghiên cứu và tìm hiểu nhiều cách.
Sau đó đã chọn theo cơ cấu bánh răng vuông góc. Phương án này khá hiệu quả, dễ thi
công và tiết kiệm chi phí.
Cơ cấu bánh răng gồm hai phần chính. Một bánh răng to đường kính 10cm sẽ
được gắn ở đế lồng cấp phôi, một bánh răng nhỏ đường kính 5cm sẽ được gắn trên động
cơ. Dựa vào thực tế và tính toán nhóm sử dụng phần mềm SolidWorks để vẽ theo kích
cỡ đã được tính toán trước đó và được in 3D.
Bánh răng nhỏ được gắn vào một động cơ DC giảm tốc GA25 tốc độ 17
vòng/phút và cố định trên một tấm mica, tấm mica có độ dày 5mm và kích thước
19x11cm, trên tấm mica này cũng gắn một đầu của hai thanh trục con lăn, tấm mica
được cố định với khung bằng một thanh nhôm định hình 20x20mm dài 27cm, một tấm
có kích thước tương tự được đặt ở đầu kia của lồng. Động cơ có gắn bánh răng được
điều chỉnh sao cho hai bánh răng vuông góc với nhau một góc 900 và các răng khớp
nhau khi quay.
Hình 3. 17 Hình ảnh bánh răng thiết kế
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 45
3.3.2. Băng tải
Băng tải có nhiệm vụ vận chuyển phôi tới đĩa tách phân loại. Băng tải có chiều dài
35cm, rộng 4cm, mặt dưới có răng và quay theo một chiều, chuyển động nhờ một động
cơ DC giảm tốc, trên băng tải có thanh giới hạn kích thước để gạt phôi. Mục đích là để
sao cho trên băng tải phôi được sắp xếp theo một hàng. Điều này sẽ giúp dễ dàng xử lý
cho phần tách phôi. Khung băng tải sử dụng nhôm định hình 40x20mm dài 35cm, băng
tải là dây cuaroa rộng 4cm, hai đầu băng tải có hai puly giúp băng tải quay trơn tru và
không bị vướng vào khung. Để băng tải chuyển động nhóm dùng động cơ DC giảm tốc
GA25 tốc độ 17 vòng/phút, động cơ được gắn một puly đường kính 3.5cm có răng khớp
với băng tải, puly này được vẽ trên dựa theo kiểu răng và bề rộng băng tải. Động cơ
được cố định trên một tấm mica dày 5mm kích thước 19x11cm, khung băng tải cũng
được cố định với tấm mica này, sau đó tấm mica sẽ được gắn với khung hệ thống bằng
các thanh nhôm định hình 20x20mm. Các chi tiết như puly, gá puly, gá động cơ được
thiết kế bằng phần mềm Solidwork và được in 3d.
Hình 3. 16 Mặt trước puly
3.3.3. Cơ cấu phân loại
Cơ cấu phân loại gồm một đĩa tròn bằng mica và một động cơ để quay đĩa. Đĩa
được quay với tốc độ xác định và có liên hệ với tốc độ của băng tải. Bên cạnh đĩa có
cảm biến hồng ngoại để phát hiện vật đi qua. Một camera được gắn ở sau cảm biến, khi
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 46
phôi từ băng tải tới đĩa được tách riêng ra và nếu cảm biến phát hiện phôi thì sau một
khoảng thời gian camera sẽ chụp lại hình ảnh của phôi để xử lý.
Đĩa quay
Đĩa quay là một đĩa tròn bằng mica đường kính 25cm dày 3mm. Sau khi phôi được
đưa lên băng tải. Băng tải có nhiệm vụ dẫn chuyền phôi xuống đĩa quay để phân tách
phôi. Đĩa quay được thiết kế một trục phụ ở tâm và một thanh ren ϕ=8mm gắn ở tâm
của trục phụ cũng là tâm của đĩa quay, trục phụ gắn với đĩa bằng 4 ốc M3, mục đích của
việc dùng trục phụ là để tăng độ dày tiếp xúc với trục giúp đảm bảo đĩa quay ổn định
không bị đảo lắc. Thanh ren trục sẽ được gắn với một động cơ có nhiệm vụ làm cho đĩa
quay tròn. Đĩa tròn được vẽ bằng phần mềm Corel và được cắt mica, trục phụ được thiết
kế bằng phần mềm SketchUp và được in 3d.
Hình 3. 17 Trục phụ của đĩa quay
Sắp xếp phôi
Để phôi lên đĩa theo một vị hợp lý để camera có thể dễ dàng chụp lại hình để xử lý
với độ chính xác cao nhất. Nhóm đã gắn thêm một thanh gạt trên băng tải để phôi được
đưa đến vị trí muốn đến trên đĩa quay.
Cảm biến
Cảm biến hồng ngoại được gắn ở trên khung, phía trên của đĩa sao cho vừa đủ để
phát hiện được đai ốc. Khi có phôi chạy qua, cảm biến bắt được tín hiệu và sẽ truyền tín
hiệu đến cho camera bắt đầu chụp để ta có hình ảnh rõ ràng và cân đối nhất giúp có thể
dễ dàng xử lý.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 47
Camera
Một camera Logitech C270 được bố trí trong một hộp kín xung quang và có đèn
led để rọi vào sản phẩm. Camera đặt thằng đứng vuông góc để có thể chụp thẳng phôi
trên đĩa quay. Khi nhận được tín hiệu từ cảm biến camera sẽ tiến hành chụp hình lại và
máy tính sẽ xử lý hình ảnh vừa được chụp.
Động cơ Servo
Sau khi hệ thống camera đã chụp lại phôi và đưa về máy tính xử lý. Nếu không đạt
yêu cầu đã đề ra trước đó thì máy tính sẽ truyền tín hiệu thông qua PL2303 đến bộ vi xử
lý và vi xử lý sẽ điều khiển Servo. Khi nhận được tín hiệu động cơ Servo sẽ quay để đẩy
phôi bị lỗi ra khỏi đĩa.
Ecoder
Hệ thống sẽ được trang bị một Ecoder để có để dễ dàng đọc tốc độ của động cơ.
Từ tốc độ động cơ đọc được ta tiến hành điều chỉnh sao tốc độ động cơ sao cho phù hợp
để camera có thể chụp những tấm hình rõ nét nhất và tiến hành xử lý. Ngoài ra nó còn
hỗ trợ để động cơ Servo có thể đẩy phôi khỏi dĩa quay tốt nhất.
Puly truyền động và dây curoa
Để kéo trục quay ta sử dụng cơ cấu truyền động. Thông qua hai puly và dây curoa
kéo trục. Một động cơ sẽ được thiết kế gắn với một puly đường kính 2cm. Sau đó puly
được gắn với một dây curoa kết nối với puly đã được gắn trên thanh trục trước đó. Vì
tốc độ chụp của camera không đáp ứng được tốc độ nên cần phải giảm tốc độ của đĩa
quay bằng cách tăng kích thước puly gắn với đĩa. Chính vì vậy nhóm đã tự vẽ trên
SolidWorks và in 3d puly này để có được kích thước mong muốn là 10cm.
Hình 3. 20 Puly trục đĩa
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 48
3.3.4. Hộp điện
Để đảm bảo an toàn và yêu cầu thẩm mĩ, mạch điện được đặt trong một hộp điện
bằng nhựa, mặt ngoài hộp có đèn báo nguồn, công tắc bật nguồn và nút nhấn khẩn cấp
thường đóng, tất cả đều dùng điện 220V. Dòng điện cấp cho bộ nguồn sẽ đi qua công
tắc và nút khẩn cấp, đồng thời nối song song với đèn. Khi bật công tắc và nút nhấn được
nhả thì nguồn sẽ được cấp cho mạch nếu một trong hai điều kiện trên không thỏa nguồn
điện sẽ ngắt.
Hình 3. 21 Sơ đồ nối dây hộp điện
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 49
Chương 4. THI CÔNG HỆ THỐNG
4.1. GIỚI THIỆU
Sau quá trình tính toán, thiết kế và thử nghiệm các phương án khác nhau nhóm
tiến hành thi công hệ thống. Để đảm bảo mạch điện chính xác và đạt yêu cầu thẩm mĩ
nhóm đã đặt gia công mạch, khung mô hình được dùng nhôm định hình để dễ dàng thi
công và hiệu chỉnh cũng như đảm bảo độ chắc chắn. Các bộ phận không thể mua nhóm
đã tự thiết kế và in 3d để phù hợp với mô hình như các bộ bánh răng, con lăn,
Chương này sẽ trình bày cụ thể các bước thi công hệ thống, các linh kiện, vật liệu
sử dụng và giải thích chương trình.
4.2. THI CÔNG MẠCH ĐIỆN
4.2.1. Linh kiện sử dụng trong mạch điện
Để thi công mạch điện, nhóm sử dụng các linh kiện được liệt kê ở bảng sau
Bảng 4. 1 Danh sách các linh kiện
STT Tên linh kiện Số lượng Giá trị/ đặc điểm Kiểu chân
1 STM32F103C8T6 1 LQFP 48
2 Thạch anh 1 8Mhz Smd-
3 Nút nhấn 1 smd
4 Led đơn 8 Màu đỏ smd
5 LM2596 1 5V TO-263
6 AMS1117 1 3.3V SOT- 223
7 Cầu chì 1 10A
8 Opto PC817 5 TO-220
9 Relay 1 10A 5 chân
10 IRF540 2 TO-220
11 TIP41C 2 TO-220
12 2N3904 1 SOT23
13 Cuộn cảm 1 33mH ssmd
14 Đi-ốt 1N5822 2 smd
15 Tụ điện 220uF 2 50V Smd-ALU-F
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 50
16 Tụ điện 10uF 2 16V Smd- 3216
17 Tụ điện 10nF 4 Không phân cực Smd- 3216
18 Điện trở 100Ω 13 Smd- 0805
19 Điện trở 10kΩ 4 Smd- 0805
20 Điện trở 100kΩ 2 Smd- 0805
21 Điện trở 220Ω 2 Smd- 0805
22 Điện trở 2.2kΩ 2 Smd- 0805
23 Điện trở 27Ω 1 Smd- 0805
24 Domino 2 6 5.08mm
25 Domino 5 1 5.08mm
26 Hàng rào đực 1 2.54mm
4.2.2. Lắp ráp và kiểm tra mạch điện
Mạch điện được vẽ hai lớp, có cả hai loại linh kiện là loại chân cắm và loại chân
dán, được phủ một lớp mực UV màu xanh dương (trừ các vị trí để hàn) để tránh oxi hóa,
tên linh kiện được in màu trắng. Sau khi hàn các linh kiện, mạch giống như đã mô phỏng.
Hình 4. 1 Mạch sau khi hàn linh kiện
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 51
4.3. THI CÔNG MÔ HÌNH
Mô hình có thể chia làm 3 phần chính là cơ cấu cấp phôi, băng tải và cơ cấu phân
loại. Các phần nằm trên một khung nhôm định hình. Vì điều kiện kinh phí có hạn cũng
như khả năng hạn chế về thiết kế cơ khí nên nhóm sử dụng vật liệu chính là nhôm định
hình, nhựa in 3d, mica và foam để thi công mô hình. Một số chi tiết được tận dụng từ
những đồ vật có sẵn, tuy nhiên mô hình đã thể hiện được ý tưởng của nhóm về một dây
chuyền có thể hoạt động trong thực tế.
4.3.1. Vật liệu, linh kiện sử dụng
Các linh kiện, vật liệu sử dụng trong mô hình:
Bảng 4. 2 Các linh kiện, vật liệu được sử dụng trong mô hình
Stt Tên linh kiện Số lượng Thông số
1 Cảm biến hồng ngoại 1 5V
2 Servo SG90 1
3 Động cơ giảm tốc 3 12V, 17rpm
4 LED rọi 1 12V
5 Module encoder 1 5V, 100 xung
6 Nguồn tổ ong 1 12V, 10A
7 Nhôm 20x40 1.6m
8 Nhôm 20x20 2m
9 Con lăn 4 In 3D
10 Bánh răng 2 In 3D
11 Puly 5
12 Thanh ren 3 8mm
13 Hộp phôi...GHIỆP- Y SINH 62
4.4.2. Lưu đồ giải thuật cho chương trình xử lý ảnh
Chương trình xử lý ảnh được viết bằng ngôn ngữ C++ dùng các hàm của thư viện
OpenCV. Phần này sẽ trình bày về lưu đồ của chương trình xử lý ảnh và truyền dữ liệu
qua cổng usb. Chương trình được viết dựa trên các hàm sự kiện. Chương trình có thể
chia làm hai phần chính là phần trao đổi dữ liệu và phần thứ hai là khi nhấn nút START
lúc này hệ thống sẽ bắt đầu chạy.
Hình 4. 17 Lưu đồ hàm nhận dữ liệu
Hàm nhận dữ liệu phải đảm bảo luôn sẵn sàng để nhận dữ liệu trả về. Đầu tiên sẽ
đọc dữ liệu nhận được sau đó tìm kiếm ký tự đó có trong dữ liệu nhận được hay không
ở đây là kí tự ‘d’, khi đó nếu đúng là có kí tự ‘d’ thì chương trình sẽ đổi trạng thái cờ
báo lên mức 1. Nếu không có kí tự ‘d’ thì hàm sẽ thực hiện lại từ đầu.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 63
Hình 4. 18 Lưu đồ chương trình chính xử lý ảnh
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 64
Chương trình chính xử lý ảnh ban đầu sẽ kiểm tra biến flag, đây là biến thay đổi
khi cảm biến hồng ngoại phát hiện vật, flag=1 nghĩa là có vật lúc này chương trình sẽ
kiểm tra camera có được kết nối hay không. Sau đó sẽ chụp ảnh và thực hiện các bước
xử lý ảnh gồm chuyển về ảnh xám, lọc ảnh bằng bộ lọc Gauss, tìm biến các đường biên
trong ảnh bằng hàm findContours trong thư viện OpenCV. Tiếp theo chương trình sẽ vẽ
các đường tròn bao nhỏ nhất ứng với các đường biên tìm được, sau đó xác định đường
tròn bao lớn nhất đây chính là đường bao của đai ốc. Sau khi có được đường bao lớn
nhất này ta sẽ kiểm tra kích thước với các giá trị được rút ra từ thực nghiệm nếu nhỏ hơn
60 và lớn hơn 45 thì là vật không đạt; nếu lớn hơn 63 là vật đạt yêu cầu. Sau đó sẽ gửi
kí tự tương ứng với vật lỗi hay không cho vi điều khiển và hiển thị thông báo ra màn
hình. Cuối cùng sẽ gán biến flag =0.
4.4.3. Phần mềm QT Creator
Qt là một khung ứng dụng đa nền tảng để tạo nên các giao diện đồ họa người
dùng, chủ yếu với các cửa sổ. Qt được viết bằng C++ và được thiết kế để sử dụng trong
C++. Tuy nhiên, hiện nay chúng ta đã có thể dùng thư viện này với nhiều ngôn ngữ khác
như Java hay Python, vv Qt Creator là một IDE rất được ưa chuộng khi dùng với ngôn
ngữ C++. QT hỗ trợ rất mạnh trong lập trình giao diện (GUI), tương tác với Database,
Graphics.
Điểm nổi bật của Qt Creator:
- Cross-platform, nó có thể chạy trên nhiều nền tảng: Mac, Linux, Windows.
- Có giao diện lập trình đẹp, thân thiện và dễ sử dụng
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 65
Hình 4. 19 Cửa sổ làm việc của QT Creator
Cửa sổ làm việc của QT Creator có thể chia thành 4 vùng như sau
Vùng 1: Thanh công cụ
Vùng 2: Vùng soạn thảo chương trình.
Vùng 3: Chứa cấu trúc thư mục của project: giúp quản lý các tập tin, các chương
trình con trong project.
Vùng 4: Thanh chức năng: chứa các nút chức năng như build, debug, run của
project.
Một project QT viết bằng C++ thường gồm các phần cơ bản sau
- File khai báo project: đây là file chứa các khai báo về project như các chương
trình có trong project, các thư viện, đường dẫn sau khi build chương trìnhFile
này có đuôi .pro
- Các file header: nằm trong thư mục “Headers” chứa các khai báo của các chương
trình có trong project, các file này có đuôi .h
- Các file chương trình: nằm trong thư mục “Source” đây là các chương trình có
trong project, các file này có đuôi .cpp
- Các file giao diện: một project có thể có một hoặc nhiều giao diện khác nhau,
chúng có đuôi .ui và nằm ở thư mục “Forms”.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 66
- Các file khác: như hình ảnh, biểu tượng, file âm thanh, tất cả chúng nằm trong
thư mục “Resources”
Để tạo một chương trình xử lý ảnh dùng thư viện Opencv bằng QT Creator ta làm như
sau:
B1: Khởi động QT Creator, chọn New Project
Hình 4. 20 Giao diện khởi động QT Creator
B2: Cửa sổ New Project hiện ra, chọn kiểu project là application với khởi tạo ban
đầu là Widgets.
Hình 4. 21 Cửa sổ tạo New Project
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 67
B3: Đặt tên và chọn đường dẫn lưu project, nhấn Next tiếp tục sau đó nhấn Finish
để hoàn tất tạo project mới.
Hình 4. 22 Đặt tên và chọn đường dẫn lưu project
B4: New Project sẽ có các file như hình. Để có thể sử dụng OpenCV ta cần thêm
đường dẫn thư viện vào trong file .pro
Hình 4. 23 Giao diện chương trình sau khi tạo project mới
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 68
Hình 4. 24 Thêm đường dẫn thư viện OpenCV vào project
B5: Nhấp đúp vào file có đuôi .ui, một cửa sổ hiện ra, vùng 1 là thanh công cụ sử
dụng bằng cách kéo- thả. Khu vực 2 là màn hình sẽ hiển thị. Các object trong file
cần được đặt tên cho dễ kiểm soát chúng được thể hiện ở vùng 3, các thuộc tính
của object được cài đặt ở vùng 4.
Hình 4. 25 Giao diện lập trình UI của QT Creator
Bây giờ ta có thể sử dụng thư viện OpenCV và lập trình với QT Creator để tạo ra
một chương trình độc lập và có giao diện tùy ý.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 69
4.4.4. Trình biên dịch Keil µVision 5
Keil µVision 5 là phần mềm hỗ trợ cho người dùng lập trình cho các dòng vi điều
khiển như Atmel, AVR, ST,... Keil µVision 5 giúp người dùng soạn thảo và biên dịch
chương trình thành ngôn ngữ máy để nạp vào vi điều khiển.
Hình 4. 26 Biểu tượng trình biên dịch Keil
Màn hình làm việc của Keil C – hình 4.17,µVision bao 5g ồm các vùng với chức năng như sau:
Vùng 1: Vùng soạn thảo. Đây là nơi ta sẽ soạn thảo chương trình.
Vùng 2: Cửa sổ Project, giúp quản lý các thành phần có trong Project.
Vùng 3: Cửa sổ Build Output. Hiển thị các thông tin trong quá trình biên dịch,
các lỗi cũng như dung lượng của chương trình.
Vùng 4: Thanh công cụ và chức năng
Hình 4. 27 Giao diện của trình biên dịch Keil µVision 5
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 70
Để tạo một project lập trình cho chip STM32F103C8T6 sử dụng bộ thư viện chuẩn
của hãng ST ta làm theo các bước sau:
B1: Tải bộ thư viện chuẩn Std_Peripheral của hãng ST và các file hỗ trợ thiết bị.
Khi tải về và giải nén ta được hai thư mục như hình 4.18
Hình 4. 28 Thư viện cho STM32F1
B2: Tạo một thư mục chứa project, trong thư mục này tạo thêm 2 thư mục con là
lib và project sau đó ta copy bộ thư viện vừa tải về vào thư mục lib. Trong thư
mục project tạo thư mục con là keil.
Hình 4. 29 Cây thư mục chứa project
B3: Khởi động phần mềm Keil µVision5 chọn New µVision Project, đặt tên cho
project và chọn lưu tại thư mục keil đã tạo trước đó
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 71
Hình 4. 30 Tạo project mới
B4: Chọn dòng chip chúng ta sử dụng
Hình 4. 31 Menu dùng để chọn chip STM32F103C8
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 72
B5: nhấp chuột phải vào Target 1 chọn Option for Target để cài đặt project.
Cài đặt Create hex file tại tab Output. Chuyển sang task C/C++ ta làm như sau
- Trong ô define điền:
+ USE_STDPERIPH_DRIVER: Sử dụng thư viện peripheral của ST
+ STM32F10X_MD: Sử dụng chip medium destiny (STM32F103C8T6 là chíp
medium destiny)
- Tích ô C99: Sử dụng chuẩn biên dịch C99.
- Trỏ tất cả đường dẫn tới folder chưa file và thư viện biên. dịch như CMSIS,
StdPeriph_Driver inc, src.
Trong tab Debug chọn loại mạch nạp sử dụng ở đây dùng loại ST-link.
Hình 4. 32 Cửa sổ cấu hình cho project
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 73
B6: Tạo file main.c bằng cách chọn File-> New và lưu ở thư mục project
Hình 4. 33 Tạo thư mục main.c
B7: Nhấp chuột phải vào tên project chọn Add Group lúc này ta có 2 thư mục
con trong project. Chuột phải vào một thư mục con bất kì chọn Manage Project
Item, một cửa sổ hiện ra cho phép ta sửa tên thư mục ta đổi hai thư mục thành lib
và user rồi Add File vào đó. Thư mục lib chứa các file thư viện mà ta cần dùng,
còn thư mục user ta add các file như hình sau.
Hình 4. 34 Cây thư mục của project
Sau khi làm các bước trên thì tiến hành build project để chương trình liên kết các file
vào project. Sau đó ta có thể lập trình trên hàm main.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 74
Chương 5. KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ
Sau khi thực hiện xong đồ án tốt nghiệp, kết quả nhóm thu được đã gần đạt như yêu
cầu đề ra. Nhóm đã hoàn thành được một mô hình dây chuyền có thể hoạt động cơ bản
như mong muốn, có thể phát hiện và phân loại các loại đai ốc kích cỡ khác nhau.
Hình 5. 1 Cấp nguồn cho mô hình
Để bắt đầu hoạt động dây chuyền, ta kết nối dây camera và dây usb TTL với máy
tính, kiểm tra nút nhấn khẩn cấp có đang được nhấn hay không, nếu có thì xoay nút nhấn
để nhả về trạng thái thường đóng, sau đó gạt công tắc nguồn sang phải lúc này đèn nguồn
sẽ sáng báo hiệu có điện cho hệ thống.
Hình 5. 2 Giao diện chương trình xử lý ảnh trên máy tính
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 75
Sau khi bật nguồn và kết nối các dây, ta khởi động phần mềm và chọn nút kết nối
ở góc trên bên trái màn hình để máy tính giao tiếp được với vi điều khiển. Sau đó nhấn
nút START để hệ thống hoạt động. Phần mềm có hiển thị mức lấy ngưỡng, số sản phẩm
lỗi, hình ảnh khi chưa xử lý và hình ảnh sau khi xử lý.
Hình 5. 3 Đai ốc từ lồng cấp phôi rơi xuống băng tải
Các đai ốc từ lồng quay cấp phôi rơi xuống băng tải một cách lộn xộn, ngẫu nhiên
chính vì vậy cần có cơ cấu gạt để cho các đai ốc nằm đúng vị trí. Khi đi qua cơ cấu này,
các đai ốc sẽ nằm đúng kiểu cần thiết điều này giúp cho khâu phân loại được dễ hơn.
Đai ốc từ băng tải sau khi đi qua cơ cấu gạt sẽ tới đĩa quay. Tại cuối của băng tải có
một cần gạt giúp điều chỉnh vị trí của đai ốc trên đĩa quay. Trên hình 5.4, đĩa quay theo
chiều kim đồng hồ, các đai ốc sẽ theo cần gạt đến đúng vị trí cần thiết để camera có thể
chụp được ảnh.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 76
Hình 5. 4 Các đai ốc từ băng tải tới đĩa phân loại
Hình 5. 5 Đai ốc sau khi được chụp bởi camera
Đĩa quay sẽ đưa đai ốc đến vị trí camera để chụp và xử lý ảnh. Cảm biến hồng
ngoại đặt ngay trước camera sẽ giúp phát hiện đai ốc và sau một khoảng thời gian camera
sẽ chụp ảnh và xử lý.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 77
Hình 5. 6 Servo gạt vật không đạt yêu cầu
Sau khi được camera chụp và máy tính xử lý, các đai ốc không đạt yêu cầu, có
kích thước nhỏ, thì sẽ bị Servo gạt sang một bên, các đai ốc đạt yêu cầu sẽ không bị gạt.
Hình 5. 7 Thanh gạt đai ốc đạt yêu cầu
Các đai ốc đạt yêu cầu sẽ đi qua Servo và tới một thanh gạt lắp ở sau Servo, tại đây
đai ốc sẽ bị gạt ra khỏi đĩa quay. Như vậy hai loại ốc đã được phân loại riêng biệt.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 78
Hình 5. 8 Các hình chụp được lưu lại trong thư mục
Sau khi camera chụp các hình được lưu lại trong một thư mục và được đặt tên theo
thời gian chụp với định dạng tên là “Anh_giờ_phút_giây.jpg”. Điều này giúp kiểm tra
và quản lý việc xử lý ảnh nếu cần thiết.
Sau quá trình làm việc và nghiên cứu nhóm đã đạt được một số kết quả sau:
Có thể lập trình cho vi điều khiển STM32F103C8T6
Với xu hướng xử dụng các dòng vi điều khiển lõi ARM với chi phí rẻ và hiệu suất cao
và STM32F103C8T6 là một trong số đó nhóm đã có kiến thức cơ bản về dòng vi điều
khiển này và có thể mở rộng ra các loại vi điều khiển tương tự
Có thể tính toán, thiết kế và vẽ mạch điện.
Tính toán, thiết kế và vẽ mạch là những yêu cầu không thể thiếu của một người học điện
tử, sau khi thực hiện đề tài, nhóm đã biết vận dụng những kiến thức đã học để tính toán
và thiết kế các mạch công suất theo yêu cầu. Có thể vẽ mạch điện PCB phù hợp với các
tiêu chuẩn và đảm bảo thẩm mĩ.
Biết cách lập trình phần mềm ứng dụng có giao diện bằng QT Creator
Qua quá trình làm việc nhóm đã có kiến thức cơ bản đủ để tạo một ứng dụng có thể
chạy trên máy tính và có giao diện thân thiện với người dùng giúp người sử dụng được
dễ dàng.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 79
Có thể giao tiếp giữa máy tính và vi điều khiển
Giao tiếp giữa vi điều khiển và máy tính là một yêu cầu thường gặp trong thực tế và
sau khi thực hiện đề tài, nhóm đã nắm rõ các kiến thức cần thiết để giao tiếp giữa các
thiết bị.
Hiểu và có thể sử dụng thư viện OpenCV cho việc xử lý ảnh
Thư viện OpenCV là một thư viện nền tảng và phổ biến cho việc lập trình xử lý ảnh,
giúp việc xử lý nhanh chóng và dễ dàng. Nhóm đã tìm hiểu được cách sử dụng và các
kiến thức cơ bản khi sử dụng thư viện OpenCV giúp việc hiểu rõ nguyên lý và ứng dụng
khi mở rộng ra các thư viện khác hoặc các nền tảng xử lý ảnh khác.
Hệ thống sau khi hoàn thành hoạt động vẫn còn thiếu sót và chưa thực sự ổn định, có
tình trạng phân loại bị sai, nguyên nhân do camera sử dụng vẫn chưa đáp ứng tốt yêu
cầu của hệ thống nên việc xử lý phân loại chưa được tốt nhất. Ngoài ra về mặt thẩm mĩ
còn nhiều chi tiết chưa tốt.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 80
Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1. KẾT LUẬN
Sau một thời gian nghiên cứu và làm việc chăm chỉ thì nhóm đã cơ bản đạt được những
mục tiêu đề ra:
Viết được chương trình xử lý ảnh trên máy tính có giao diện.
Nhận dạng được các đai ốc có kích thước khác nhau.
Giao tiếp từ máy tính tới vi điều khiển ổn định và chính xác.
Các bộ phận cơ khí hoạt động tương đối tốt.
6.2. HƯỚNG PHÁT TRIỂN
Đề tài vẫn còn nhiều thiếu sót vì vậy nhóm đề xuất một số hướng để phát triển thêm:
- Thay thế webcam bằng một loại camera có tốc độ chụp nhanh hơn giúp xử lý
hình ảnh ở tốc độ cao hơn.
- Nghiên cứu thêm các thuật toán hiệu quả hơn trong việc phát hiện lỗi.
- Thiết kế mạch phù hợp với môi trường công nghiệp, các tiêu chuẩn trong công
nghiệp.
- Hoàn thiện phần mềm trên máy tính để có thể đóng gói và sử dụng một cách hoàn
chỉnh.
- Cải tiến các cơ cấu cơ khí để hoạt động được hiệu quả và phù hợp với yêu cầu
của thực tế.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 81
TÀI LIỆU THAM KHẢO
[1] Nguyễn Đình Phú, “Giáo trình vi xử lý”, Trường ĐHSPKT, Tp.HCM, 2013.
[2] Nguyễn Đình Phú, “Giáo trình: Thực hành vi điều khiển - ARM STM32”, Trường
ĐHSPKT, Tp.HCM, 2014.
[3] Phan Văn Phương, Trần Trí Tâm, “Ứng dụng xử lý ảnh cảnh báo tài xế ngủ gật”,
Đồ án tốt nghiệp, Trường ĐHSPKT Tp. HCM, 2014.
[4] Phan Trọng Thuật, Nguyễn Văn Đúng, “Phân loại sản phẩm dùng camera”, Đồ án
tốt nghiệp, Trường ĐHSPKT Tp. HCM, 2014.
[5] Lê Quốc Nhật, Châu Thái Bảo, “Nhận dạng thứ tự màu cho cáp kết nối trong công
nghiệp dùng xử lý ảnh”, Đồ án tốt nghiệp, Trường ĐHSPKT Tp. HCM, 2016.
[6] Trần Thanh Sang, Trần Mạnh Hùng, “Thiết kế hệ thống nhận dạng biển số xe”, Đồ
án tốt nghiệp, Trường ĐHSPKT Tp. HCM, 2014.
[7] Lê Doãn Thắng, “Thiết kế thi công bộ điều khiển máy chạy bộ điện”, Đồ án tốt
nghiệp, Trường ĐHSPKT Tp. HCM, 2015.
[8] T.Lê, ” Dùng webcam phân loại sản phẩm”, nld.com.vn, 8/2008.
[9] Nguyễn Đình Phú, Nguyễn Trường Duy, “Giáo Trình: Kỹ Thuật Số”, Nhà xuất bản
ĐH Quốc Gia Tp.HCM, 2013.
[10] Trần Thu Hà, Trương Thị Bích Ngà, Nguyễn Thị Lưỡng, Bùi Thị Tuyết Đan, Phù
Thị Ngọc Hiếu, Dương Thị Cẩm Tú, “Giáo Trình: Điện tử cơ bản”, Nhà xuất bản ĐH
Quốc Gia Tp.HCM, 2013.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 82
PHỤ LỤC
1. CHƯƠNG TRÌNH VI ĐIỀU KHIỂN
Hàm main.c
#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
USART_InitTypeDef UART_InitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
uint32_t encoder_pulse1=0; // khai bao bien doc encoder
uint32_t count_temp1=0, count_test=0;
uint32_t count_recent1 =0, count_update1=0;
float motor_speed1=0;
uint16_t data;
uint8_t fail;
uint8_t a[5];
uint8_t number;
void GPIO_Configuration(void);
void Delay_ms(uint16_t time);
void TIM4_TIME(void); // timer4 dem thoi gian do toc do
void TIM1_PWM(void);// pwm dung timer1 dieu khien dong co
void TIM2_ENCODER_Configuration(void);//doc gia tri encoder dung
timer2,3
void UART_Configuration (void); //cau hinh cho UART
void TIM3_SERVO(void);
int main(void)
{
GPIO_Configuration();
UART_Configuration();
TIM4_TIME();
TIM1_PWM();
TIM2_ENCODER_Configuration();
TIM3_SERVO();
TIM_SetCompare2(TIM3,520);
while (1)
{
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12)==0)//tin hieu cam
bien
{
if(USART_GetITStatus(USART2, USART_IT_TXE)== RESET)
{
Delay_ms(25);
USART_SendData(USART2,0x64);
}
if(fail==1)
{
Delay_ms(1600);
TIM_SetCompare2(TIM3,1400);
Delay_ms(300);
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 83
TIM_SetCompare2(TIM3,520);
if(USART_GetITStatus(USART2,USART_IT_TXE)== RESET)
USART_SendData(USART2,0x65);
fail=0;
}
}
}
}
void GPIO_Configuration(void)
{
/*Cap clock cho các port*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed =
GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode =
GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed =
GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed =
GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode =
GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin =
GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed =
GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin =
GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed =
GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void Delay_ms(uint16_t time)
{
uint32_t time_n=time*12000;
while(time_n!=0){time_n--;}
}
/*Cấu hình giao tiếp UART*/
void UART_Configuration (void)
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 84
{
/*Cấp clock cho USART và port A*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
/* Cấu hình các chân TX và RX*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; // chân TX của UART2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //chân RX của UART2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*Cau hinh USART*/
UART_InitStructure.USART_BaudRate = 9600;
UART_InitStructure.USART_WordLength = USART_WordLength_8b;
UART_InitStructure.USART_StopBits = USART_StopBits_1;
UART_InitStructure.USART_Parity = USART_Parity_No;
UART_InitStructure.USART_HardwareFlowControl=
USART_HardwareFlowControl_None;
UART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART2, &UART_InitStructure);
/* Cấu hình ngắt UART */
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
USART_ClearFlag(USART2, USART_IT_RXNE);
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
/* Cho phep UART hoat dong */
USART_Cmd(USART2, ENABLE);
}
/*Cấu hình TIMER4 đếm thời gian*/
void TIM4_TIME(void)
{
RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM4 , ENABLE);
/*cấu hình TIM4*/
TIM_TimeBaseInitStructure.TIM_Period = 99; // delay 10ms
TIM_TimeBaseInitStructure.TIM_Prescaler = (7200 - 1);//1khz
TIM_TimeBaseInitStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseInitStructure);
/* Cấu hình ngắt UART */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_ClearFlag(TIM4, TIM_FLAG_Update);
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 85
TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM4, ENABLE);
}
/*Cấu hình PWM với TIMER1 điều khiển động cơ*/
void TIM1_PWM(void)
{
/*Cấp clock cho TIMER1 và port A*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8| GPIO_Pin_9;// 2 motor
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*cấu hình TIM1*/
TIM_TimeBaseInitStructure.TIM_Prescaler =7;
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_Period = 899;
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStructure);
/*Cấu hình PWM1*/
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
/*PWM Channel 1*/
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
/*PWM Channel 2*/
TIM_OC2Init(TIM1, &TIM_OCInitStructure);
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_OCMode_PWM1);
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable);
/*cho phép PWM_TIM1 hoạt động*/
TIM_Cmd(TIM1, ENABLE);
TIM_CtrlPWMOutputs(TIM1, ENABLE);
}
/*Cấu hình TIMER2 đếm xung encoder*/
void TIM2_ENCODER_Configuration(void)
{
TIM_ICInitTypeDef TIM_ICInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 86
/* cấu hình TIM2*/
TIM_TimeBaseInitStructure.TIM_Prescaler=0;
TIM_TimeBaseInitStructure.TIM_Period=0xFFFF;
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
TIM_ICInitStructure.TIM_Channel=TIM_Channel_1 | TIM_Channel_2;
TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Falling;
TIM_ICInitStructure.TIM_ICFilter=15;
TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;
TIM_ICInit(TIM2, &TIM_ICInitStructure);
TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12,
TIM_ICPolarity_Falling, TIM_ICPolarity_Falling);
TIM_SetCounter(TIM2, 0);
TIM_Cmd(TIM2, ENABLE);
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/*Cấu hình TIMER3 điều khiển Servo*/
void TIM3_SERVO(void)
{
/*Cấp xung clock cho TIMER3 và port A*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; // servo
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*Tao xung tan so 50hz dieu khien servo*/
TIM_TimeBaseInitStructure.TIM_Prescaler =99;
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_Period = 14399;
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);
/*Cấu hình PWM*/
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
/*PWM Channel 2*/
TIM_OC2Init(TIM3, &TIM_OCInitStructure);
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 87
TIM_SelectOCxM(TIM3, TIM_Channel_2, TIM_OCMode_PWM1);
TIM_CCxCmd(TIM3, TIM_Channel_2, TIM_CCx_Enable);
TIM_Cmd(TIM3, ENABLE);
TIM_CtrlPWMOutputs(TIM3, ENABLE);
}
Chương trình ngắt
/* Hàm ngắt UART*/
void USART2_IRQHandler(void)
{
uint16_t data;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
data = USART_ReceiveData(USART2);
if(data==0x61) // Start he thong chay- ki tu 'a'
{
GPIO_SetBits(GPIOA,GPIO_Pin_12);
GPIO_SetBits(GPIOA,GPIO_Pin_11);
TIM_SetCompare1(TIM1,170);
TIM_SetCompare2(TIM1,150);
}
else if(data==0x62) // Stop he thong- ki tu 'b'
{
GPIO_ResetBits(GPIOA,GPIO_Pin_12);
GPIO_ResetBits(GPIOA,GPIO_Pin_11);
TIM_SetCompare1(TIM1,0);
TIM_SetCompare2(TIM1,0);
}
else if(data==0x63)// co vat loi- ki tu 'c'
{
fail=1;
}
}
}
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 88
/* Hàm ngắt TIMER4*/
void TIM4_IRQHandler(void)
{
if (TIM_GetFlagStatus(TIM4, TIM_FLAG_Update)==SET)
{
TIM_ClearFlag(TIM4, TIM_FLAG_Update);
encoder_pulse1 = 500000000 + TIM_GetCounter(TIM2) +
65536*count_temp1;
count_recent1 = encoder_pulse1;
if (count_recent1 > count_update1)
{motor_speed1 = (float)(count_recent1 –
count_update1)*6000/100;}
else if (count_recent1 < count_update1)
{motor_speed1 = 0- (float)(count_update1 –
count_recent1)*6000/100;}
else {motor_speed1 = 0;}
count_update1 = count_recent1;
}
}
/* Hàm ngắt TIMER2*/
void TIM2_IRQHandler(void)
{
uint16_t timer_temp1;
if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update)==SET)
{
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
timer_temp1 = TIM2->CNT;
if (timer_temp1 == 65535)
count_temp1--;
if (timer_temp1 == 0)
count_temp1++;
}
}
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 89
2. CHƯƠNG TRÌNH XỬ LÝ ẢNH
Hàm nhận dữ liệu
void MainWindow::readData()
{
const QByteArray data = m_serial->readAll();
if (data.size() == 0)
{
qDebug() << "Arrived data: 0";
}
else
{
for (int i = 0; i < data.size(); i++)
{
if (data.at(i))
{
m_ui->dataGet->insertPlainText(QString(data.at(i)));
}
}
const char* t = strstr(data, "d");
if(t != nullptr)
{
m_ui-> dataSend-> insertPlainText("ok");
flag=true;
}
const char* r = strstr(data, "e");
if(r != nullptr)
fail++;
}
}
Chương trình chính
void MainWindow::on_StartBtn_clicked()
{
using namespace cv;
using namespace std;
if(video.isOpened())
{
m_ui->StartBtn->setText("Start");
video.release();
writeData("b");
return;
}
if(!video.open(1))
{
QMessageBox::critical(this,"Camera Lỗi");
return;
}
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 90
m_ui->StartBtn->setText("Stop");
writeData("a");
Mat frame,img;
Mat canny_output;
while(video.isOpened())
{
video >> frame;
if(!frame.empty())
{
cvtColor(frame,frame,CV_RGB2GRAY);
QImage qimg(frame.data,frame.cols,frame.rows,
QImage::Format_Indexed8);
pixmap.setPixmap( QPixmap::fromImage(qimg));
m_ui->IMG_1->fitInView(&pixmap, Qt::KeepAspectRatio);
Mat threshold_output;
vector > contours;
vector hierarchy;
if(flag==1)
{
QTime ct = QTime::currentTime();
QString fileName=("G:/DATotNgiep/capture/Anh_"+
ct.toString("hh-mm-ss")+".jpg");
GaussianBlur(frame,img,Size(3, 3), 2); //loc anh
threshold(img,threshold_output,
m_SettingSystem.Thresh,255,THRESH_BINARY);
findContours( threshold_output, contours,
hierarchy, CV_RETR_TREE,
CV_CHAIN_APPROX_SIMPLE, Point(0,0));
// Draw contours
vector > contours_poly(contours.size());
vectorcenter(contours.size());
vectorradius(contours.size());
for(unsigned int i=0;i <contours.size();i++)
{
approxPolyDP(Mat(contours[i]), contours_poly[i], 3,
true);
minEnclosingCircle(contours_poly[i], center[i],
radius[i]);
}
Mat drawing = Mat::zeros(threshold_output.size(), CV_8UC3);
float max=radius[0];
for (unsigned int i = 0; i< contours.size(); i++)
{
if ((contourArea(contours[i]) > 1000) &&
(contourArea(contours[i]) < 8000))
{
drawContours(drawing, contours_poly, int(i),
Scalar(255,0,255), 3, 8, vector(), 0, Point());
circle(drawing, center[i], int(radius[i]),
Scalar(255,255,255), 2, 8, 0);
if (max < radius[i])
max = radius[i];
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 91
}
}
if(max45)
{
writeData("c");
m_ui->lbl_Capture-> setText("FAIL");
}
else if(max>63)
{
writeData("d");
m_ui->lbl_Capture-> setText("PASS");
}
QImage imdisplay(drawing.data, drawing.cols, drawing.rows,
QImage::Format_RGB888);
m_ui->lEd_NumberFalse->setText(QString("%1").arg(fail));
pixmap2.setPixmap( QPixmap::fromImage(imdisplay));
m_ui->IMG_2->fitInView(&pixmap2, Qt::KeepAspectRatio);
flag=false;
}
void MainWindow::on_Thresh_slider_valueChanged(int value)
{
m_ui-> lbl_Thresh_Value-> setText(QString("%1").arg(value));
m_SettingSystem.Thresh=value;
}
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 92
Các file đính kèm theo tài liệu này:
- do_an_thiet_ke_va_thi_cong_day_chuyen_phan_loai_dai_oc_ung_d.pdf