Đồ án Thiết kế và thi công dây chuyền phân loại đai ốc ứng dụng xử lý ảnh

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

pdf105 trang | Chia sẻ: huong20 | Ngày: 13/01/2022 | Lượt xem: 428 | Lượt tải: 0download
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:

  • pdfdo_an_thiet_ke_va_thi_cong_day_chuyen_phan_loai_dai_oc_ung_d.pdf
Tài liệu liên quan