- Bố cục Chương 2: Cơ sở lý thuyết - Tổng quan về xử lý ảnh - Những vấn đề trong xử lý ảnh - Giới thiệu phần mềm lập trình xử lý ảnh - Giới thiệu về Arduino Mega2560 - Phương pháp phân l
TỔNG QUAN
Giới thiệu đề tài
Ngày nay, việc ứng dụng khoa học công nghệ hiện đại ngày càng phổ biến và có nhiều tiến bộ vượt bậc Để những chiếc máy tự động xuất hiện ở nhiều nhà máy, công ty tại Việt Nam với những khả năng: phân loại, kết hợp,… Do đó, nhu cầu về nguồn lao động có thể điều khiển, lập trình, thao tác là rất lớn Sự kiểm soát của người vận hành đối với người thao tác là rất quan trọng Nhiều trường đại học trên cả nước đã đưa robot công nghiệp vào chương trình giảng dạy và thậm chí còn có chuyên ngành nghiên cứu robot ở các nước tiên tiến Tuy nhiên, việc thực hành các máy thao tác công nghiệp ở nước ta còn khiêm tốn do chi phí lắp đặt cao Hiện nay, người ta sử dụng các cảm biến khác nhau với khả năng khác nhau để phân loại sản phẩm theo ý muốn, chẳng hạn như cảm biến phân loại theo màu sắc, hình dạng, Những cảm biến này có cài đặt và vận hành đơn giản, nhưng nó có thể dễ dàng gây nhiễu Để giải quyết vấn đề này, đồng thời giúp vận dụng được những kiến thức đã học về board Arduino cùng với LabVIEW, vốn hiểu biết về điện tử và công nghệ xử lý ảnh cùng với sự đồng ý của giáo viên hướng dẫn – thầy Tưởng Phước Thọ, nhóm em chọn đề tài: “Thiết kế và thực nghiệm phần mềm phân loại nhãn chai nước bằng camera”
Hình 1.1: Dây chuyền sản xuất nước đóng chai
Dây chuyền sản xuất nước đóng chai trong phòng thí nghiệm Robot
Nhằm bám sát với các hệ thống sản xuất nước đóng chai công nghiệp, với sự hỗ trợ của GVHD đề tài được nhóm thực hiện trên dây chuyền sản xuất nước đóng chai PET 500ml tại phòng thí nghiệm Robot khoa Cơ Khí Chế Tạo Máy trường Đại học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Trên dây chuyền phân loại nước đóng chai gồm có băng tải 2m được vận hành, điều khiển tốc thông qua biến tần (Sinamics V20) có nhiệm vụ vận chuyển các chai nước sang khâu đóng gói Ở giữa băng tải là trạm phân loại sản phẩm lỗi với 1 bên là hệ thống nhận dạng, xử lý, phân loại sản phẩm bằng các cảm biến, hệ thống đẩy sản phẩm bằng xilanh điều khiển bởi van điện từ Bên còn lại là băng tải đặt vuông góc với dây chuyền chính, nhận và vận chuyển các sản phẩm lỗi được phân loại tại trạm
Hình 1.2: Băng chuyền vận chuyển sản phẩm
Hình 1.3: Trạm phân loại sản phẩm
Hình 1.4: Đối tượng phân loại, chai PET 500 ml
Mục tiêu đề tài
Đề tài “Thiết kế và thử nghiệm phần mềm phân loại nhãn chai nước bằng camera” là mô hình phân loại sản phẩm theo màu sắc Dựa trên ngôn ngữ lập trình LabVIEW và được thực hiện trên kit Arduino Mega
Nội dung nghiên cứu
Đề tài “Thiết kế và thử nghiệm phần mềm phân loại nhãn chai nước bằng Camera” có những nội dung sau:
- NỘI DUNG 1: Tìm hiểu về LabVIEW và Arduino Mega
- NỘI DUNG 2: Tổng quan về xử lý ảnh
- NỘI DUNG 3: Thiết kế mô hình
- NỘI DUNG 4: Viết chương trình
- NỘI DUNG 5: Chạy thử nghiệm và điều chình phần mềm, phần cứng để tối ưu, sử dụng dễ dàng
- NỘI DUNG 6: Viết báo cáo thực hiện
- NỘI DUNG 7: Đánh giá kết quả thực hiện.
Đối tượng nghiên cứu
- Các khối xử lý ảnh trên phần mềm LabVIEW
Giới hạn đề tài
- Ngôn ngữ lập trình LabVIEW
- Phân loại với chai nước PET 500ml
- Phân loại chai nước trên băng chuyền dài 2m hoạt động độc lập
- Thiết kế và thử nghiệm phần mềm phân loại nhãn chai nước.
Bố cục
Nội dung đề tài gồm các phần sau:
CƠ SỞ LÝ THUYẾT
Tổng quan về xử lý ảnh
Xử lý ảnh là lĩnh vực hết hợp giữa khoa học và công nghệ Mặc dù nó còn khá mới mẻ so với nhiều ngành khoa học khác, nhưng tốc độ phát triển của nó đang diễn ra vô cùng nhanh chóng Xử lý ảnh đã kích thích sự phát triển của các trung tâm nghiên cứu và ứng dụng, đặc biệt là máy tính chuyên dụng cho việc xử lý ảnh
Xử lý ảnh áp dụng các kỹ thuật để tăng cường và xử lý hình ảnh thu thập từ các thiết bị như máy ảnh, webcam… Đây là một lĩnh vực quan trọng và đã được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau:
- Lĩnh vực quân sự: Xử lý và nhận dạng hình ảnh quân sự
- An ninh và bảo mật: Nhận dạng khuôn mặt, vân tay, mắt…
- Giải trí: Trò chơi điện tử
- Y tế: Xử lý ảnh y sinh, chụp X-quang, MRI…
Các phương pháp xử lý hình ảnh bắt nguồn từ những mục đích sử dụng chính, bao gồm việc nâng cao chất lượng và phân tích hình ảnh Việc sử dụng tài liệu đầu tiên là để nâng cao hình ảnh được truyền từ London đến New York trong những năm 1920 Các vấn đề nâng cao hình ảnh thường liên quan đến việc phân bổ mức độ sáng và độ phân giải của hình ảnh giải thưởng ảnh Việc cải thiện chất lượng hình ảnh được bắt đầu vào những năm 1955 Điều này có thể là do sự gia tăng nhanh chóng của máy tính sau Thế chiến thứ hai, tạo điều kiện thuận lợi cho sự phát triển của xử lý hình ảnh kỹ thuật số Đến năm 1964, máy tính đã có khả năng phân tích và nâng cao hình ảnh từ mặt trăng và vệ tinh Ranger 7 của Hoa Kỳ, bao gồm cả đường đại dương và việc bảo tồn hình ảnh Từ năm 1964-1968, các phương pháp xử lý, nâng cao chất lượng, nhận dạng hình ảnh ngày càng phổ biến Các phương pháp của trí tuệ nhân tạo như mạng nơ-ron nhân tạo, thuật toán xử lý nâng cao và công cụ nén hình ảnh ngày càng phổ biến và có tác dụng tích cực [1]
Sau đây, chúng ta sẽ thảo luận về các bước cần thiết trong quá trình xử lý hình ảnh Đầu tiên, những hình ảnh tự nhiên về thế giới xung quanh chúng ta được thu thập
7 thông qua các thiết bị như máy ảnh và máy ảnh tĩnh ghi lại hình ảnh Trước đây, hình ảnh thu được qua camera thường là hình ảnh analog (Camera truyền hình CCIR) Gần đây, với sự phát triển của công nghệ, ảnh màu hoặc đen trắng được bắt nguồn từ phối cảnh của máy ảnh, sau đó được chuyển đổi trực tiếp thành ảnh kỹ thuật số, sau đó có thể được xử lý Ngoài ra, hình ảnh cũng có thể được thu từ vệ tinh thông qua hệ thống thu thập hình ảnh [1] Dưới đây là mô tả các bước cơ bản trong xử lý ảnh:
Hình 2.1: Các bước cơ bản xử lý ảnh
Sơ đồ này bao gồm các thành phần sau:
2.1.1 Thu nhận ảnh (Image Acquisition)
Hình ảnh có thể được ghi lại qua màn hình màu hoặc màn hình đen trắng Thông thường, hình ảnh thu được từ camera là hình ảnh analog (đặc biệt, camera tiêu chuẩn CCIR có tần số 1/25, mỗi hình ảnh gồm 25 dòng) Ngoài ra, máy ảnh kỹ thuật số sử dụng CCD làm loại photodiod có các pixel tạo ra ánh sáng ở mỗi vị trí [1]
Camera hường sử dụng phương pháp quét dòng để tạo ra hình ảnh 2D Chất lượng hình ảnh thu được từ quá trình ghi và các yếu tố môi trường (bao gồm cả ánh sáng và cảnh quan) phụ thuộc vào thiết bị được sử dụng và không gian sẵn có
2.1.2 Tiền xử lý (Image processing)
Sau khi thu được hình ảnh, hình ảnh có thể bị nhiễu và độ tương phản thấp Do đó, điều quan trọng là phải kết hợp hình ảnh vào bộ tiền xử lý để nâng cao chất lượng
Mục đích chính của bộ tiền xử lý là giảm nhiễu và tăng cường độ tương phản, điều này sẽ giúp làm rõ và nâng cao hình ảnh [1]
2.1.3 Phân đoạn (Segmentation) hay phân vùng ảnh
Phân vùng ảnh là một trong những nhánh quan trọng nhất của thị giác máy tính Đó là một quá trình lấy hình ảnh đầu vào và chia nó thành các vùng riêng biệt để phân tích và nhận dạng Ví dụ, để nhận dạng các chữ cái (hoặc mã vạch) trên phong bì thư, chúng ta phải phân tách các câu về địa chỉ hoặc tên người thành các từ, chữ cái, số (hoặc vạch) riêng biệt để xác định Đây là phần khó và phức tạp nhất trong quá trình xử lý ảnh, đồng thời cũng dễ dẫn đến sai sót, có thể ảnh hưởng xấu đến độ chính xác của ảnh Việc nhận dạng hình ảnh chủ yếu phụ thuộc vào bước này [1]
2.1.4 Biểu diễn ảnh (Image Representation)
Biểu diễn của hình ảnh là phần sau khi phân đoạn, chứa các pixel của vùng hình ảnh được phân đoạn cộng với các mã bổ sung trong các vùng được liên kết Việc chuyển đổi thông tin này thành dạng hữu ích là cần thiết cho quá trình xử lý tiếp theo của máy tính Trong quá trình này, chúng ta chọn các đặc điểm sẽ đại diện cho hình ảnh, các đặc điểm này được gọi là trích xuất đặc điểm Điều này liên quan đến việc nhận biết tính khác biệt của các đặc điểm của hình ảnh dưới dạng thông tin số hoặc như một phương tiện để phân biệt giữa các loại đối tượng trong không gian hình ảnh nhận được Ví dụ: khi nhận dạng các ký tự trên phong bì, chúng tôi mô tả các thuộc tính của từng ký tự khiến chúng trở nên khác biệt [1]
2.1.5 Nhận dạng và nội suy ảnh (Image Recognition and Interpretation)
Nhận dạng hình ảnh là hành động nhận dạng hình ảnh Thông thường, quy trình này được thực hiện bằng cách quan sát mô hình tiêu chuẩn mới so sánh với mô hình tiêu chuẩn đã học (hoặc lưu trữ) trước đó như thế nào Nội suy là quá trình xác định tầm quan trọng của một sự vật dựa trên nhận dạng của nó Ví dụ: một chuỗi số và dấu gạch ngang trên phong bì có thể được chuyển đổi thành mã điện thoại thông qua phép nội suy Có nhiều cách tiếp cận khác nhau để phân loại hình ảnh và các mô hình toán học phân loại hình ảnh được chia thành hai loại chính:
- Nhận dạng theo tham số
- Nhận dạng theo cấu trúc
Một số công cụ nhận dạng phổ biến trong khoa học công nghệ là: ứng dụng ký tự từ hư cấu vào thực tế (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng văn bản, nhận dạng văn bản Dấu vân tay, mã vạch, nhận dạng khuôn mặt người, [1]
2.1.6 Cơ sở tri thức (Knowledge Base)
Như đã đề cập trước đó, hình ảnh là một đối tượng phức tạp có nhiều thành phần, bao gồm nhiễu, độ sáng, dung lượng pixel và nhiều môi trường cho phép chụp ảnh Trong nhiều trường hợp, mọi người muốn mô phỏng quá trình chụp ảnh và phân tích hình ảnh theo cách nhân bản Trong quá trình xử lý và phân tích hình ảnh, việc sử dụng trí tuệ của con người có tác động tích cực đến việc tối ưu hóa quá trình tiếp nhận và xử lý hình ảnh Cơ sở kiến thức có tác động đáng kể trong việc giúp người dùng tìm hiểu và giải quyết các vấn đề liên quan đến ảnh một cách hiệu quả và dễ dàng [1]
Những vấn đề trong xử lý ảnh
Là đơn vị cơ bản nhất để tạo nên một bước ảnh kỹ thuật số Địa chỉ của pixel được coi là (x, y) với y là địa chỉ của byte tiếp theo Một bức ảnh kỹ thuật số, được tạo ra thông qua nhiếp ảnh hoặc phương pháp trực quan khác, bao gồm hàng nghìn hoặc hàng triệu pixel riêng lẻ Số lượng pixel trong một hình ảnh càng lớn thì độ chi tiết của nó càng lớn Một triệu pixel tương đương với 1 megapixel [1]
2.2.2 Ảnh số Ảnh số là một tập hợp hữu hạn các pixel có mức xám liên quan mô tả gần đúng với hình ảnh thực tế Số lượng pixel ảnh hưởng đến độ phân giải của hình ảnh Độ phân giải của hình ảnh càng cao thì các điểm của nó càng khác biệt, điều này dẫn đến sự thể hiện hình ảnh được nâng cao và chính xác hơn Hình ảnh là tín hiệu hai chiều, mô tả toán học của nó là f(x, y) trong đó x và y là hai thành phần ngang và dọc Các giá trị của f(x, y) tại bất kỳ vị trí nào cung cấp giá trị pixel tại vị trí đó của hình ảnh [1]
Mức xám của pixel là cường độ ánh sáng, được gán giá trị giả tại vị trí đó Không gian màu xám phổ biến: 16, 32, 64, 128, 256 Mức phổ biến nhất là 265, nghĩa là sử dụng 1 byte để biểu thị mức xám Trong đó:
Ảnh nhị phân: là ảnh có 2 cấp độ trắng và đen khác nhau, chỉ có 2 giá trị 0 và
1 và chỉ sử dụng 1 mặt nạ dữ liệu cho mỗi pixel [1]
Ảnh đen trắng: Là ảnh có hai tông màu: đen và trắng (không có màu nào khác) với các mức độ xám khác nhau ở các pixel [1]
Ảnh màu: Là bức tranh được kết hợp từ ba màu cơ bản để tạo nên một thế giới đầy màu sắc Thông thường, mọi người sử dụng 3 byte để mô tả các cấp độ màu, điều này có nghĩa là có khoảng 16,7 triệu cấp độ màu khác nhau [1]
2.2.4 Quan hệ giữa các điểm ảnh
Lân cận điểm ảnh: được nói một cách hài hước như là hàng xóm của cái điểm ảnh Có 2 loại lân cận cơ bản là lân cận 4 và lân cận 8
Hình 2.2: Lân cận 4 và lân cận 8
4 điểm ảnh lân cận 4 theo cột và hàng với tọa độ lần lượt là (x+1, y), (x-l y), (x, y+1), (x, y-1) ký hiệu là tập N4(p) 4 điểm ảnh lân cận 4 theo đường chéo có tọa độ lần lượt là (x+1, y+1), (x+1, y+1), (x-1, y+1), (x-1, y-1) ký hiệu là tập ND(p) Tập 8 điểm ảnh lân cận 8 là hợp của 2 tập trên: [1]
Liên kết ảnh: Các mối liên kết của ảnh được xem như là mối liên kiết của 2 điểm ảnh gần nhau, có 3 loại liên kết: liên kết 4, liên kết 8, lên kết m (liên kết hỗn hợp) Trong ảnh đa mức xám, ta có thể đặt V chứa nhiều giá trị như V= {tập con) Cho p có tọa độ (x, y) [1]
Liên kết 4: hai điểm ảnh p và q có giá trị thuộc về tập V được gọi là liên kết 4 của nhau nếu q thuộc về tập N4(p)
Liên kết 8: hai điểm ảnh p và q có giá trị thuộc về tập V được gọi là liên kết 8 của nhau nếu q thuộc về tập N8(p)
Liên kết m: hai điểm ảnh p và q có giá trị thuộc về tập V được gọi là liên kết M của nhau nếu thỏa 1 trong 2 điều kiện sau: q thuộc về tập N4(p), q thuộc về tập ND(p) và giao của hai tập N4(p), N4(q) không chứa điểm ảnh nào có giá trị thuộc V [1]
Hình ảnh nhận được thường bị hỏng nên việc giảm nhiễu bổ sung là cần thiết Các toán tử không gian được sử dụng trong nâng cao hình ảnh được phân loại theo mục đích của chúng: làm mịn đa chiều, giảm nhẹ ranh giới Để trộn hoặc phân biệt số lượng lớn, bộ xử lý tuyến tính (phương tiện, bộ xử lý thông thấp) hoặc bộ xử lý phi tuyến (trung vị, giả trung bình hoặc bộ xử lý đồng cấu) được sử dụng Từ góc độ bản chất của nhiễu (thường là tần số cao) và cơ sở của lý thuyết lọc tần số: các bộ lọc chỉ cho phép các tín hiệu có tần số cụ thể đi qua, do đó, nhiều người thường sử dụng các phương pháp lọc tần số thông thấp (trong bối cảnh tần số không gian) hoặc bộ lọc trung vị để kết hợp (trải rộng) Để nhấn mạnh các đường viền (tương ứng với tần số cao), các bộ lọc thông cao, bộ lọc Laplacian, được sử dụng Nhiều cách tiếp cận khác nhau Được chia thành hai loại: bộ tuyến tính hóa và bộ phi tuyến tính [1]
Làm trơn nhiều bằng lọc tuyến tính: Khi chụp ảnh có thể xuất hiện nhiều loại nhiễu vào quá trình xử lý ảnh, nên ta cần phải lọc nhiễu Gồm các phương pháp cơ bản lọc trung bình, lọc thông thấp, Ví dụ lọc trung bình: Với lọc trung bình, mỗi điểm ảnh được thay thế bằng trung bình trọng số của các điểm lân cận
Làm trơn nhiều bằng lọc phi tuyến: Các bộ lọc phi tuyển cũng hay được dùng trong kỹ thuật tăng cường ảnh Một số phương pháp lọc cơ bản bộ lọc trung vị, lọc ngoài Với lọc trung vị, điểm ảnh đầu vào sẽ được thay thế bởi trung vị các điểm ảnh còn lọc giả trung vị sẽ dùng trung bình cộng của hai giá trị "trung vị" (trung bình công của max và min) [1]
Lọc trung vị: Phương pháp này yêu cầu các giá trị pixel trong cửa sổ phải được sắp xếp theo thứ tự tăng dần hoặc giảm dần so với giá trị trung vị Độ lớn của số thường được chọn là số pixel lẻ trong cửa sổ
Lọc bên ngoài: Giả định rằng có ngưỡng cho nhiều cấp độ (có thể dựa trên thang màu xám) So sánh giá trị xám của một pixel với giá trị trung bình của tám pixel lân cận gần nhất Nếu độ lệch lớn hơn ngưỡng thì pixel này được coi là nhiễu Trong trường hợp này, hãy thay thế giá trị pixel bằng giá trị trung bình của 8 pixel xung quanh vừa được tính toán [1]
2.2.6 Phương pháp phát hiện biên
Biên là một trong những vấn đền ta cần quan tâm trong xử lý ảnh Vì ở giai đoạn phân đoạn ảnh chủ yếu dựa vào biên [1] Điểm biên: Một pixel được coi là điểm biên nếu cường độ hoặc màu sắc của nó thay đổi nhanh chóng hoặc đột ngột Ví dụ: trong ảnh 2 chiều, điểm đen được coi là điểm biên nếu điểm liền kề của nó có ít nhất một điểm trắng Đường biên (đường bao: boundary): một chuỗi các điểm biên liên tiếp tạo thành một ranh giới hoặc vòng cung [1] Ý nghĩa của đường biên trong xử lý: ý nghĩa đầu tiên của đường biên đặc điểm chung của vẻ đẹp cục bộ trong phân tích và nhận dạng ảnh Thứ hai, mọi người sử dụng đường viền để phân biệt các vùng màu xám (màu) Ngược lại, người ta cũng sử dụng các vùng hình ảnh để xác định vị trí các đường phân chia Đại dương: để hiểu tầm quan trọng của đường viền, hãy xem ví dụ sau: khi một nghệ sĩ muốn khắc họa một cá nhân nổi tiếng, nghệ sĩ chỉ cần phác họa một vài dòng ngắn gọn mà không cần vẽ hoàn chỉnh [1]
Do đó, phương pháp phát hiện ranh giới lý tưởng là nhận biết tất cả các ranh giới trong đối tượng Định nghĩa toán học của biển ở trên là nền tảng cho việc phát hiện các cạnh Khía cạnh quan trọng là sự khác biệt giữa các pixel thường nhỏ, trong khi sự khác biệt về độ sáng của các pixel thường đáng kể ở gần ranh giới Bắt đầu từ thời điểm này, người ta thường sử dụng hai phương pháp phát hiện cạnh khác nhau: phương pháp thứ nhất dựa trên đạo hàm bậc nhất, phương pháp thứ hai dựa trên hướng di chuyển Tách ranh giới bằng đạo hàm bậc hai: điều này được sử dụng trên một số loại phương trình vi phân bậc hai để tạo ra một ranh giới Hai dạng của phương pháp đạo hàm bậc hai đã được kiểm tra: phương pháp Laplace và phương pháp trực tiếp [1]
Giới thiệu về phần mềm lập trình xử lý ảnh
2.3.1 Giới thiệu NI LabVIEW (Laboratory Virtual Insrtumentation
LabVIEW là môi trường lập trình trực quan có thể được sử dụng để tạo các ứng dụng có giao diện chất lượng chuyên nghiệp một cách nhanh chóng và dễ dàng Hàng tỷ nhà khoa học và kỹ sư sử dụng LabVIEW để tạo ra các ứng dụng phức tạp, thử nghiệm và điều khiển trực quan và có cấu hình ký hiệu đơn giản Ngoài ra, LabVIEW có thể được tăng cường bằng nhiều cấu hình phần cứng và hệ điều hành khác nhau Trên thực tế, nền tảng LabVIEW được kết hợp với hàng nghìn thiết bị vật lý và có hàng trăm thư viện được phát triển trước hỗ trợ phân tích và trực quan hóa nâng cao, giúp bạn tạo các thiết bị ảo được Tùy chỉnh theo thông số kỹ thuật [2]
Bởi vì các công cụ LabVIEW mô phỏng giao diện và chức năng của các công cụ thực, chẳng hạn như máy hiện sóng và các công cụ đa chức năng, LabVIEW thường được coi là các công cụ ảo, (Virtual Instrument), thường gọi tắt là VI VI có Front Panel và Block Diagram Front Panel là giao diện người dùng Block Diagram là chương trình phía sau giao diện người dùng Sau khi bạn xây dựng Front Panel, bạn thêm mã (code) để điều khiển các đối tượng trên Front Panel bằng cách sử dụng các hình đồ họa đại diện cho các hàm Mã trên Block Diagram là mã dạng đồ họa, thường được biết đến là G code (mã G) hoặc Block Diagram code [2]
Khác với các ngôn ngữ lập trình dạng văn bản, chẳng hạn như C++ và Visual Basic, LabVIEW sử dụng các ký hiệu thay vì câu để tạo ứng dụng Trong lập trình dựa trên văn bản, thứ tự của các dòng lệnh xác định thứ tự chương trình sẽ được thực thi LabVIEW sử dụng cách tiếp cận đồ họa để lập trình dựa trên luồng dữ liệu Trong lập trình dựa trên đồ họa luồng dữ liệu, luồng dữ liệu qua các nút trên Sơ đồ khối xác định
18 thứ tự thực hiện chương trình Khả năng lập trình đồ họa và thực thi các luồng dữ liệu là điều khiến LabVIEW khác biệt so với các ngôn ngữ lập trình có mục đích chung khác [2]
Chương trình LabVIEW có các đặc điểm sau:
- Đồ họa và biên dịch
- Lập trình theo dạng dòng chảy dữ liệu hướng dữ liệu
- Đa mục tiêu và nhiều nền tảng
- Khả năng đa luồng Đồ họa và biên dịch
Trong khi được đại diện bằng đồ họa, với các biểu tượng và dây tín hiệu thay vì văn bản, mã G trên Block Diagram có đầy đủ các khái niệm lập trình như trong hầu hết các ngôn ngữ lập trình truyền thống Ví dụ, mã G có các loại cấu trúc dữ liệu, vòng lặp, xử lý sự kiện, biến, đệ quy, và lập trình hướng đối tượng LabVIEW tự động chuyển đổi mã G thành mã máy, cho phép các máy tính có bộ vi xử lý thực thi mã đó Bạn không phải chuyển đổi mã G thành một quy trình riêng biệt [3]
Dòng chảy dữ liệu và lập trình hướng sự kiện
Các chương trình của LabVIEW tuân theo mô hình luồng dữ liệu thay vì cách tiếp cận truyền thống thường được sử dụng trong các ngôn ngữ lập trình viết như C và C++ Luồng dữ liệu được điều khiển bởi dữ liệu hoặc phụ thuộc vào nó Luồng thông tin giữa các nút trong mã G là yếu tố quyết định thứ tự thực hiện [3]
Tính năng lập trình hướng sự kiện mở rộng môi trường lập trình dạng dòng chảy dữ liệu của LabVIEW cho phép người dùng tương tác trực tiếp với chương trình mà không cần hỏi vòng (polling) Lập trình hướng sự kiện cũng tạo điều kiện thuận lợi cho việc thực hiện các hành động không đồng bộ khác trên Block Diagram [3]
19 Đa mục tiêu và nhiều nền tảng
Với LabVIEW, bạn có thể sử dụng bộ xử lý đa lõi và phần cứng bổ sung khác, chẳng hạn như FPGA, có thể song song Thông thường, ta có thể tự động chuyển đổi các ứng dụng LabVIEW thành CPU có nhiều, bốn hoặc năm lõi mà không cần lập trình bổ sung [3]
Lập trình hướng đối tượng là phổ biến trong nhiều ngôn ngữ lập trình Nó tạo điều kiện thuận lợi cho việc biểu diễn một loạt các đối tượng tương tự nhưng không giống nhau thông qua một lớp đối tượng trong phần mềm LabVIEW cung cấp các công cụ và chức năng cho phép sử dụng lập trình hướng đối tượng trong mã G [3] Đa luồng và quản lý bộ nhớ
LabVIEW cho phép mã thực thi liên tiếp Các ngôn ngữ khác phải được quản lý thủ công để tận dụng các tài nguyên sẵn có Môi trường LabVIEW, bao gồm trình biên dịch và hệ thống thời gian chạy, tự động thực thi mã liên tiếp bất cứ khi nào có thể Thông thường, các chi tiết cụ thể của hệ thống thực thi ít quan trọng đối với bạn vì hệ thống hoạt động hiệu quả mà không cần sự can thiệp của con người Tuy nhiên, LabVIEW cũng cung cấp cho bạn các tùy chọn giúp nâng cao hiệu suất chương trình.
Giới thiệu về Arduino Mega 2560
Arduino Mega2560 là một bo mạch dựa trên bộ vi xử lý nhằm tạo điều kiện tương tác thuận tiện hơn giữa các ứng dụng hoặc môi trường Đoạn này chứa một bảng mạch nguồn miễn phí được thiết kế trên nền tảng vi điều khiển Atmega 2560 Model hiện tại có 1 cổng đầu vào USB, 16 kênh đầu vào analog, 54 giao diện analog kỹ thuật số có thể so sánh với nhiều thẻ mở rộng khác nhau [4]
2.4.2 Thông tin cấu hình Arduino Mega2560
Bảng 2.1: Bảng thông số Arduino Mega2560
Vi điều khiển ATmega2560 Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 Mhz
Dòng điện tiêu thụ 250mA Điện áp khuyên dùng 7-12V Điện áp giới hạn 6-20V
Dòng tối đa trên mỗi chân I/O 30mA
Dòng ra tối đa (5V) 500mA
Dòng ra tối đa(3.3V) 50mA
Bộ nhớ flash 256 Kb, 8 Kb sử dụng cho Bootloader
Cấu tạo chính của Arduino Mega2560 bao gồm các phần sau: [4]
Cổng USB: đây là loại cổng giao tiếp để ta nạp code từ PC lên vi điều khiển Đồng thời nó cũng là giao tiếp serial để truyền dữ liệu giữa vi điều khiển và máy tính
Jack nguồn: để chạy Arduino thì có thể lấy nguồn từ cổng USB ở trên hoặc một nguồn từ 9V đến 12V Với các chân điện như sau:
GND (Ground): cực âm của nguồn điện cấp cho Arduino Mega Khi dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau
5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA
3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA
Vin (Voltage Input): để cấp nguồn ngoài cho Arduino Mega, nổi cực dương của nguồn với chân này và cực âm của nguồn với chân GND
IOREF: điện áp hoạt động của vi điều khiển trên Arduino Mega có thể được đo ở chân này và nó luôn bằng 5V Mặc dù vậy không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn
RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ [2]
Hình 2.6: Sơ đồ chân Arduino Mega2560
RESET: Arduino Mega Mega 2560 có sẵn mạch reset với nút ấn để thiết lập lại hệ thống và chân này có thể được sử dụng khi kết nối các thiết bị khác để thiết lập lại bộ điều khiển
XTAL1, XTAL2: Thạch anh(16Mhz) được kết nối với xung clock cung cấp cho bộ điều khiển
AREF: Chân này được dùng khi sử dụng ADC để chuyển đổi tín hiệu với điện áp tham chiếu bên ngoài mà không muốn sử dụng điện áp tham chiếu nội bộ 1.1V hoặc 5V [4]
Chân số: Từ 0-53 (digital) có thể được sử dụng làm đầu vào hoặc đầu ra cho thiết bị được thiết lập bằng các hàm Mode (), digtalWrite (), digitalRead () [4] Ứng dụng:
Thiết bị đầu ra: Relay, LED, buzzer, LCD và các thiết bị khác
Thiết bị đầu vào: Nút ấn, cảm biến siêu âm, cần điều khiển và các thiết bị khác
Từ 0-15 (Analog) có thể được sử dụng như chân đầu vào tương tự cho bộ ADC, nếu không sử dụng nó hoạt động như chân digital bình thường Nó được thiết lập bởi các hàm pinMode () khai báo chân, analogRead () để đọc trạng thái chân và nhận giá trị kỹ thuật số cho tín hiệu analog Lưu ý phải cẩn thận để lựa chọn điện áp tham chiếu bên trong hoặc bên ngoài và chân Aref [4] Ứng dụng:
Thiết bị đầu vào: Cảm biến nhiệt độ, cảm biến (như ldr, irled và độ ẩm) và các thiết bị khác
Chân có Chức năng thay thế:
Chân SPI: Chân 22-SS, 23_SCK, 24-MOSI, 25-MISO
Các chân này được sử dụng cho giao tiếp nối tiếp với giao thức SPI để liên lạc giữa 2 thiết bị trở lên SPI cho phép bit phải được thiết lập để bắt đầu giao tiếp với các thiết bị khác [4] Ứng dụng:
Lập trình điều khiển AVR, giao tiếp với những người khác ngoại vi như LCD và thẻ SD
Chân 20 cho SDA và 21 cho SCK (Tốc độ 400khz) để cho phép liên lạc hai dây với các thiết bị khác Hàm được sử dụng là wire.begin() để bắt đầu chuyển đổi I2C, với wire.Read () để đọc dữ liệu i2c và wire.Write () để ghi dữ liệu i2c [4] Ứng dụng:
Thiết bị đầu ra: LCD và liên lạc giữa nhiều thiết bị với hai dây
Thiết bị đầu vào: RTC và các thiết bị khác
Chân 2-13 có thể được sử dụng như đầu ra PWM với hàm analogWrite () để ghi giá trị pwm từ 0-255 [4] Ứng dụng:
Thiết bị đầu ra: Điều khiển tốc độ của động cơ, ánh sáng mờ, pid cho hệ thống điều khiển hiệu quả
Chân này được sử dụng cho giao tiếp nối tiếp giữa bo mạch với máy tính hoặc hệ thống khác để chia sẻ và ghi dữ liệu Nó được sử dụng với hàm serialBegin () để cài đặt tốc độ truyền và bắt đầu truyền thông với serial.Println() để in mảng ký tự (mảng char) ra thiết bị khác [4] Ứng dụng:
Bộ điều khiển truyền thông và máy tính
Chân này được sử dụng để ngắt Để kích hoạt chân ngắt phải cài đặt bật ngắt toàn cục [4] Ứng dụng:
Bộ mã hóa vòng quay, nút bấm dựa trên ngắt và các nút khác
Chân 18 - 21,2,3 ngắt phần cứng được sử dụng cho các ứng dụng ngắt Ngắt phần cứng phải được bật với tính năng ngắt toàn cục để ngắt quãng từ các thiết bị khác [4] Ứng dụng:
Nhấn nút cho chương trình ISR, đánh thức bộ điều khiển bằng thiết bị bên ngoài như cảm biến siêu âm và các thiết bị khác
Arduino là một nền tảng nguồn mở được sử dụng để tạo các ứng dụng điện từ tương tác với các ứng dụng khác hoặc môi trường dễ dàng hơn
Arduino tương tự như một chiếc máy tính nhỏ, điều này cho phép người dùng thực hiện các dự án điện tử mà không cần thêm công cụ để nạp code [4]
Một số ứng dụng của Arduino trong đời sống:
- Làm Robot Arduino có thể đọc cảm biến, điều khiển động cơ Nó thường được sử dụng làm bộ phận trung tâm của nhiều loại robot
- Xây dựng hệ thống nhà thông minh, IOTs
- Điều khiển đèn tín hiệu giao thông, tạo hiệu ứng ánh sáng trên biển quảng cáo
- Điều khiển các thiết bị cảm biến ánh sáng, âm thanh
- Xây dựng hệ thống máy in 3D
Các ứng dụng khác của Arduino rất phong phú và đa dạng, tùy theo sự sáng tạo của người dùng [4]
THIẾT KẾ VÀ LẬP TRÌNH
Giới thiệu
Để thiết kế phần mềm phân loại nhãn chai nước, ta cần nghiên cứu, phân tích để chọn ra hướng xử lý phù hợp cũng như công cụ xử lý đảm bảo các yêu cầu cơ bản như sau:
- Đảm bảo phân loại chính xác trong thời gian dài
- Đảm bảo tốc độ xử lý nhanh
- Dễ sử dụng, tinh chỉnh sao cho phù hợp với yêu cầu thực tế.
Tính toán và thiết kế
3.2.1 Thiết kế sơ đồ khối hệ thống
Với giới hạn yêu cầu đề tài đưa ra, mô hình gồm bộ điều khiển trung tâm LabVIEW và Arduino Mega, khối thu tín hiệu hình ảnh tử bền ngoài là Camera, sau đó hoạt điều khiển hoạt động của xi lanh, nhóm tiến hành thiết kế sơ đồ khối hệ thống như sau:
Hình 3.1: Sơ đồ khối hệ thống
Chức năng của từng khối:
LabVIEW: có chức năng nhận tín hiệu hình ảnh từ khối thu tín hiệu hình ảnh, tiến hành xử lý hình ảnh và phân tích nhận dạng, trả kết quả, sau đó đưa ra mệnh lệnh cho Arduino Mega Ở đây ta sử dựng phần mềm LabVIEW được lập trình trực tiếp trên máy tính
Arduino: có chức năng nhận phát tín hiệu, là cầu nối của phần mềm Labview với các thiết bị ngoại vi như Sensor, relay, thực hiện các lệnh của LabVIEW cũng như gửi tín hiệu về Ở đây ta sử dụng bộ kit Arduino Mega2560
Hình 3.2: Khối xử lý Arduino
Khối Camera: Có chức năng thu thập tín hiệu hình ảnh từ thực tế chuyền về tín hiệu điện và gửi dữ liệu cho phần mềm LabVIEW Ở đây sử dụng Camera Webcam Logitech C270 HD 720p
Khối cảm biến: Có chức năng gửi tín hiệu điện cho khối xử lý khi có vật đi qua Ở đây sử dụng cảm biến SMC D-H7A1
Khối cơ cấu chấp hành khí nén: Hệ thống điều khiển khí nén sẽ thực hiện nhiệm vụ đưa sản phẩm lỗi ra khỏi băng tải để hoàn thành việc phân loại Hệ thống sẽ gồm 2 phần chính là xi lanh và van điện từ
Hình 3.5: Van điện từ và xilanh
3.2.2 Sơ đồ kết nối hệ thống a Khối xử lý
Giao thức truyền nhận dữ liệu giữa LabVIEW và Arduino
Giao thức kết nối bo mạch Arduino Mega với máy tính qua USB là thông qua chip USB-to-Serial CH430E trên bo mạch, cổng USB của máy tính sẽ chuyển thành tín hiệu nối tiếp sẽ kết nối với các chân TX và RX của bo mạch, điều này sẽ tạo điều kiện thuận lợi cho việc truyền và nhận dữ liệu giữa bo mạch và máy tính Đây cũng chính là quá trình chuyển chương trình từ máy tính sang bộ điều khiển Arduino Mega
Hình 3.6: Giao tiếp giữa máy tính và Arduino b Khối camera
Giao thức truyền nhận dữ liệu giữa LabVIEW và Camera Để thu thập ảnh và xử lý ảnh từ Camera trên phần mềm Labview, ta sử dụng 2 khối Vision Acquistion và Vision Assistant trong thư viện phần mềm Labview, với:
+ Vision Acquistion: cho phép người dung xây dựng chương trình thu nhận hình ảnh tử camera một các linh hoạt (kết nối không dây, có dây, Wifi, 3G …)
+ Vision Assistant: cho phép xây dựng chương trình xử lý và nhận dạng ảnh với các chương trình Color Matching – nhận dạng những đối tượng màu sắc, Color Location = nhận dạng đối tượng theo phân bố khu vực màu, Color Pattern Matching = nhận dạng theo mẫu đối tượng, Object Tracking – bám đối tượng …
Quá trình thu nhận ảnh, xử lý cũng như xuất tín hiệu điều khiển ta có thể hình dung qua các bước thể hiện như hình:
Hình 3.7: Các bước thu thập và xử lý ảnh trên phần mềm LabVIEW c Khối hệ thống điều khiển xilanh
Xi lanh khí nén là dạng cơ cấu vận hành sử dụng năng lượng được lưu trữ trong quá trình nén để tạo ra động năng Xi lanh khí nên hay còn được gọi là pen khí nén là các thiết bị cơ học tạo ra lực, thường kết hợp với chuyển động, và được cung cấp bởi khí nén (lấy từ máy nén khí thông thường) Để thực hiện chức năng của mình, xi lanh khí nén truyền một lực bằng cách chuyển năng lượng tiềm năng của khí nén vào động năng Điều này đạt được bởi khí nén có khả năng nở rộng, không có đầu vào năng lượng bên ngoài, mà chính nó xảy ra do áp lực được thiết lập bởi khí nén đang ở áp suất lớn hơn áp suất khí quyển Sự giãn nở không khí này làm cho piston di chuyển theo hướng mong muốn
Một khi được kích hoạt, không khí nén vào trong ống ở một đầu của piston và do đó, truyền tải lực trên piston Do đó, piston sẽ di dời (di chuyển) bằng khí nén
Hình 3.8: Xilanh khí nén Để xi lanh hoạt động được thì ta cần có van điện từ để điều khiển hành trình của pittong
Van điện từ còn được gọi với cái tên solenoid valve Đây là một thiết bị cơ điện, dùng để kiểm soát dòng chảy chất khí hoặc lỏng dựa vào nguyên lí chặn đóng mở do lực tác động của cuộn dây điện từ Đối với van điện từ thì tuỳ vào loại xilanh mà chúng ta có cách chọn cho phù hợp Và nhóm chọn van điện từ 5/2 cho đề tài này Van khí nén sẽ điều khiển bởi chân Digital của kit Arduino với Module Relay nối trung gian
Hình 3.9: Van điện từ khí nén 5/2 d Khối nguồn
Cuộn dây của van 5/2 sử dụng dòng 125mA do đó nhóm ta sử dụng nguồn 24V – 5A để cấp nguồn cho cuộn dây
Hình 3.10: Nguồn tổ ong 24VDC – 5A
Nguồn cấp cho cảm biến, Relay 5V
Các thiết bị này có điểm chung là đều hoạt động tốt với mức điện áp 5VDC, chỉ khác dòng điện hoạt động:
- Cảm biến SMC D-H7A1 hoạt động với dòng điện 10mA
- Relay 5V hoạt động với dòng điện cho phép qua tối đa Imax = 10A, dòng kích Ikich
Dòng điện tổng khoảng 15mA nên nhóm quyết định sử dụng trực tiếp nguồn 5V từ Arduino để cấp cho các thiết bị này
Sơ đồ kết nối toàn mạch
Hình 3.11: Sơ đồ kết nối toàn mạch
Trong đề tài này chúng ta sử dụng phần mềm Labview để nhận hình ảnh từ Camera và xử lý các thông số giúp nhận biết phân loại đúng đối tượng Bên cạnh đó, việc truyền nhận dữ liệu giữa Labview và Arduino sẽ giúp dễ dàng điều khiển các thiết bị ngoại vi
3.2.3 Truyền nhận dữ liệu giữa Labview và camera Để lấy khối hiển thị ảnh từ webcam ta làm theo các bước sau:
Functions Vision and Motion Vision Express Vision Acquistion
Hình 3.12: Khối hiển thị ảnh
Hình 3.13: Thiết lập nhận ảnh
- Sau khi chọn nguồn cấp ảnh bên phần viết code ta thu nhận được khối nhận ảnh (Vision Acquisition) một vòng lặp liên tục và phần hiển thị hình ảnh trên bảng hiển thị (Image Out)
Hình 3.14: Khối nhận ảnh và xuất ảnh
3.2.4 Lập trình giao tiếp giữa board Arduino và LabVIEW Để kết nối và làm việc với Arduino, trên LabVIEW cần phải cài đặt một bộ
Arduino VI Đây là những khối được phát triển trước có thể được sử dụng để giúp LabVIEW giao tiếp với các thiết bị bên ngoài Thông qua một loạt VI, LabVIEW có thể thu thập dữ liệu từ các chân Arduino và xử lý, kiểm soát hoặc hiển thị kết quả trên màn hình máy tính Do sự phổ biến và tính chất tiêu chuẩn hóa của Arduino, bộ Vis hiện nay đã có sẵn rộng rãi mà người dùng không cần phải tự lập trình [3]
Thông thường, khi viết giao diện cần có ngôn ngữ lập trình như C++, JAVA, C# hoặc các ngôn ngữ khác Ngoài ra, để giao tiếp với nền tảng Arduino, chúng ta phải viết mã C Với sự hỗ trợ của các VI của LabVIEW, chúng ta chỉ cần thiết kế giao diện, giao thức truyền thông sẽ được thực hiện thông qua các khối chức năng LINX trong các VIs [3]
Chức năng của từng khối hàm LINX:
- Chân Serial Port: Chỉ định cổng COM của thiết bị LINX kết nối
THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ
Thực nghiệm
Quá trình thực nghiệm được diễn ra như sau:
Khi khởi động chương trình, các chai nước sẽ lần lượt di chuyển liên tục trên băng tải cú chiều dài 2m Khi di chuyển được ẵ quóng đường chai nước sẽ giao với trạm phân loại chai nước thiếu nhãn, 1 bên là Camera cùng xi lanh, bên còn lại là băng tải vận chuyển những sản phẩm lỗi, nếu sản phẩm đạt yêu cầu sẽ được vận chuyển đến cuối băng tải tiếp tục cho khâu tiếp theo
Nhóm tiến hành thực nghiệm nhằm kiểm tra tính chính xác, ổn định của chương trình trong điều kiện phân loại sản phẩm trong nhiều điều kiện tốc độ băng tải khác nhau
Hình 4.1: Giao diện làm việc của phần mềm
Hình 4.2: Giao diện khi phát hiện sản phẩm đạt yêu cầu
Hình 4.3: Giao diện khi phát hiện sản phẩm lỗi
Kết quả
Để có kết quả khách quan nhất, nhóm thực hiện xử lý liên tiếp mỗi lượt 10 sản phẩm trong đó có 5 sản lỗi được sắp xếp thứ tự ngẫu nhiên Điều kiện làm việc trong môi trường có ánh sáng tốt, màu sắc của đối tượng thực nghiệm không có sự sai lệch Tốc độ băng tải trong thực nghiệm lần lượt là:
Trường hợp 1: Băng tải chạy với tốc độ 0.25 m/s
Bảng 5.1: Kết quả thực nghiệm trường hợp 1
Tổng sản phẩm Sản phẩm lỗi Độ chính xác (%)
Trường hợp 2: băng tải chạy với tốc độ 0.3 m/s
Bảng 5.2: Kết quả thực nghiệm trường hợp 2
Tổng sản phẩm Sản phẩm lỗi Độ chính xác (%)
Trường hợp 3: băng tải chạy với tốc độ 0.4 m/s
Bảng 5.3: Kết quả thực nghiệm trường hợp 3
Tổng sản phẩm Sản phẩm lỗi Tỉ lệ chính xác
Lần 5 10 4 90% Để các chai nước không đạt khi được xi lanh đẩy sang băng tải lỗi không bị đỗ, thời gian để xi lanh thực hiện hành trình là 1,2(s) Như vậy để quá trình phân loại được diễn ra liên tục, ổn định, các chai nước phải cách nhau một khoảng sao cho các lần phân loại sản phẩm cách nhau 1,5(s), đáp ứng được năng lực sản xuất tối đa trên lý thuyết của dây chuyền là 2400 chai/giờ Từ đó tính được khoảng cách S giữa các chai:
S = 𝒗 bt 𝒕 (𝒎) Với + 𝑣 bt : vận tốc băng tải (m/s) ph
+ 𝑡: khoảng thời gian xử lý ảnh giữa hai sản phẩm (t = 1,5s)