GIỚI THIỆU
Tính cấp thiết của đề tài
Trong thời đại hiện đại, sự phát triển của khoa học kỹ thuật và kỹ thuật điện tử đã làm cho hệ thống điều khiển tự động trở thành yếu tố quan trọng trong nhiều lĩnh vực, bao gồm khoa học kỹ thuật, quản lý và công nghiệp tự động hóa Việc hiểu và áp dụng điều khiển tự động một cách hiệu quả là cần thiết để đóng góp vào sự phát triển toàn cầu của khoa học kỹ thuật, đặc biệt trong lĩnh vực kỹ thuật điều khiển tự động.
Dựa trên trải nghiệm tham quan các doanh nghiệp sản xuất, chúng tôi nhận thấy nhiều quy trình tự động hóa, đặc biệt là trong việc phân loại nông sản và thực phẩm thông qua công nghệ xử lý ảnh.
Sau khi nghiên cứu và tham khảo các đề tài trước đó, nhóm chúng tôi đã chọn đề tài "Thiết kế và xây dựng hệ thống băng tải phân loại cà chua theo màu sắc và khối lượng".
Ý nghỉa khoa học và thực tiễn của đề tài
Nhóm nghiên cứu đã thiết kế thành công hệ thống phân loại cà chua dựa trên màu sắc và khối lượng, đạt được sự hoàn thiện về cơ điện tử Hệ thống này tích hợp hiệu quả cơ khí, điện tử và tin học, đóng vai trò quan trọng trong đào tạo, nghiên cứu và ứng dụng Đề tài sẽ góp phần phát triển ngành khoa học và ứng dụng thực tế trong các nhà máy sản xuất.
Hệ thống này nổi bật với sự ổn định trong hoạt động, tính linh hoạt và khả năng điều chỉnh thông số đầu vào dễ dàng thông qua lập trình điều khiển Đặc biệt, nó đạt độ chính xác cao trong phân loại cà chua.
Mục tiêu nghiên cứu của đề tài
Mô hình đã được thiết kế thành công với đầy đủ các yếu tố cần thiết như tính thẩm mỹ, độ chắc chắn và khả năng hoạt động ổn định Nó có khả năng mô phỏng toàn bộ các chức năng của một hệ thống thực tế.
Hệ thống phân loại sản phẩm dựa trên màu sắc và khối lượng, hiển thị số lượng sản phẩm trên màn hình Nó sử dụng băng chuyền để thực hiện quá trình phân loại và cho phép cài đặt mức độ khối lượng Ngoài ra, hệ thống còn có khả năng điều khiển và giám sát thông qua màn hình cảm ứng.
Đối tượng và phạm vi nghiên cứu
Nắm vững kiến thức về lựa chọn và phân loại cà chua là rất quan trọng, đồng thời cần hiểu rõ ứng dụng của công nghệ xử lý ảnh trong việc phân tích và phân loại sản phẩm hiệu quả.
Tiếp cận và tìm hiểu về việc sử dụng Arduino và quá trình lập trình Arduino trong một ứng dụng thực tế
Khám phá và nghiên cứu về máy tính nhúng Raspberry
Kết hợp các thiết bị và linh kiện điện tử thành một mô hình hoàn chỉnh bằng cách lắp ráp chúng lại với nhau.
Phương pháp nghiên cứu
Việc áp dụng tri thức đã học vào thiết kế và chế tạo mô hình thực tế giúp đảm bảo tính khả thi trong các tình huống thực tế Bằng cách tích hợp kiến thức từ các nguồn thông tin bên ngoài vào quá trình tính toán và thiết kế, chúng ta có thể tối ưu hóa hiệu suất hoạt động của băng tải.
Thực hiện mô phỏng với sản phẩm thực tế và tải trọng thực tế để đánh giá độ hoàn thiện và khả thi của dự án.
Kết cấu của Đồ án tốt nghiệp
Đồ án tốt nghiệp bao gồm 6 chương Trong đó:
Chương 2 trình bày tổng quan về đề tài
Chương 3 nói về cơ sở lý thuyết của các lĩnh vực liên quan
Chương 4 đề cập đến phương hướng và cách giải quyết vấn đề
Chương 5 thực hiện thiết kế và tính toán
Chương 6 trình bày đến phần chạy thử nghiệm mô hình thực tế và đưa ra kết quả
TỔNG QUAN NGHIÊN CỨU ĐỀ TÀI
Tổng quan về hệ thống phân loại cà chua
Sau khi thu hoạch, cà chua cần trải qua quá trình phân loại đa giai đoạn trước khi đưa ra thị trường Quá trình này bao gồm việc chuyển cà chua đến hệ thống phân loại qua băng tải, nơi chúng được phân loại dựa trên các tiêu chí như kích thước, trọng lượng và màu sắc Mục tiêu là lựa chọn những quả cà chua có chất lượng tốt nhất, đáp ứng nhu cầu của người tiêu dùng.
Hình 2 1: Phân loại cà chua sau khi thu hoạch
Nguyên tắc phân loại cà chua
2.2.1 Phân loại theo kích thước
Phân loại cà chua theo kích thước tạo sự đồng đều và hấp dẫn cho sản phẩm, đáp ứng sở thích của người tiêu dùng Tuy nhiên, phương pháp này không đảm bảo chất lượng và không giúp phân biệt giữa cà chua chín và chưa chín.
Hình 2 2: Dây chuyền phân loại cà chua theo kích thước
2.2.2 Phân loại theo màu sắc
Phân loại cà chua theo màu sắc không chỉ giúp đảm bảo chất lượng mà còn đơn giản hóa quá trình bảo quản, đồng thời cung cấp thông tin về thời gian bảo quản thích hợp Mặc dù không đảm bảo sự đồng đều và hấp dẫn như các phương pháp phân loại khác, phân
Hình 2 3: Dây chuyền phân loại cà chua theo màu sắc
2.2.3 Phân loại theo khối lượng
Phân loại cà chua theo khối lượng nhằm đảm bảo sự đồng đều trong sản phẩm sau khi lựa chọn Nguyên tắc này dựa trên việc đo đạc khối lượng của quả cà chua Tuy nhiên, giống như các phương pháp phân loại khác, việc phân loại theo khối lượng không đảm bảo chất lượng của quả sau khi được phân loại.
Hình 2 4: Dây chuyền phân loại cà chua theo khối lượng
Tổng quan về phương pháp xử lý ảnh
Lĩnh vực xử lý ảnh đang nổi lên như một ngành khoa học và công nghệ tiềm năng với tốc độ phát triển nhanh chóng Mặc dù còn mới mẻ so với nhiều lĩnh vực khác, nhưng nó đã thúc đẩy sự ra đời của các trung tâm nghiên cứu và ứng dụng, cùng với sự phát triển của các máy tính chuyên dụng cho xử lý ảnh.
Xử lý ảnh là lĩnh vực ứng dụng công nghệ nhằm nâng cao và chỉnh sửa hình ảnh thu được từ các thiết bị như máy ảnh và webcam Công nghệ này đã được áp dụng và phát triển trong nhiều lĩnh vực quan trọng, mang lại giá trị và hiệu quả cao trong việc cải thiện chất lượng hình ảnh.
Trong lĩnh vực quân sự: xử lý và nhận dạng hình ảnh quân sự
Trong lĩnh vực giao tiếp người máy, các công nghệ như nhận dạng hình ảnh, xử lý âm thanh và đồ họa đóng vai trò quan trọng Trong an ninh và bảo mật, nhận diện khuôn mặt, vân tay và mẫu mắt được sử dụng để tăng cường an toàn Cuối cùng, trong lĩnh vực giải trí, trò chơi điện tử đã trở thành một phần không thể thiếu, mang lại trải nghiệm phong phú cho người dùng.
Trong lĩnh vực y tế: xử lý ảnh y sinh, chụp X-quang, MRI
Phương pháp xử lý ảnh bắt đầu từ việc nâng cao chất lượng và phân tích hình ảnh, với ứng dụng đầu tiên vào những năm 1920 khi ảnh được truyền từ Luân Đôn đến New York Các vấn đề chính trong nâng cao chất lượng ảnh bao gồm phân bố mức sáng và độ phân giải Sự phát triển mạnh mẽ trong lĩnh vực này diễn ra vào khoảng năm 1955, đặc biệt sau Thế chiến II, khi công nghệ máy tính tiến bộ nhanh chóng, tạo điều kiện cho xử lý ảnh số Đến năm 1964, máy tính đã có khả năng xử lý và nâng cao chất lượng ảnh từ mặt trăng và vệ tinh Ranger 7.
Từ năm 1964, Mỹ đã không ngừng phát triển các phương pháp xử lý, nâng cao chất lượng và nhận dạng ảnh, bao gồm việc làm nổi đường biên và lưu trữ ảnh Việc áp dụng trí tuệ nhân tạo, như mạng nơ-ron nhân tạo và các thuật toán xử lý hiện đại, cùng với công cụ nén ảnh, đã mang lại nhiều kết quả khả quan trong lĩnh vực này.
Trong quá trình xử lý ảnh, bước đầu tiên là thu nhận ảnh tự nhiên từ thế giới bên ngoài thông qua các thiết bị như Camera và máy chụp ảnh Trước đây, ảnh được thu qua Camera là ảnh tương tự, nhưng với sự phát triển công nghệ, ảnh màu và đen trắng hiện được chuyển trực tiếp thành ảnh số, giúp thuận tiện cho các bước xử lý tiếp theo Ngoài ra, ảnh cũng có thể được quét từ vệ tinh thông qua máy quét ảnh.
Hình 2 5: Các bước cơ bản trong xử lý ảnh
2.3.1 Thu nhận ảnh (Image Acquisition) Ảnh có thể được thu nhận thông qua máy ảnh màu hoặc đen trắng Thông thường, ảnh thu được từ máy ảnh là dạng ảnh tương tự (sử dụng camera ống kiểu CCIR với tần số quét 1/25, tức mỗi ảnh được quét thành 25 dòng) Ngoài ra, cũng có loại máy ảnh đã số hóa (như cảm biến CCD - Charge-Coupled Device) sử dụng photodiode để đo cường độ sáng tại từng điểm ảnh
Máy ảnh thông thường sử dụng phương pháp quét dòng để tạo ra hình ảnh hai chiều Chất lượng hình ảnh thu được phụ thuộc vào thiết bị và các yếu tố môi trường như ánh sáng và phong cảnh.
2.3.2 Tiền xử lý ảnh (Image processing)
Khi ảnh được thu nhận, thường gặp phải tình trạng nhiễu và độ tương phản thấp Do đó, cần thực hiện các bước tiền xử lý để cải thiện chất lượng hình ảnh Quá trình tiền xử lý chủ yếu nhằm loại bỏ nhiễu và tăng cường độ tương phản, giúp ảnh trở nên rõ nét hơn.
Phân đoạn ảnh là quá trình tách biệt hình ảnh đầu vào thành các vùng riêng biệt nhằm phục vụ cho việc phân tích và nhận dạng Ví dụ, trong siêu thị, phân đoạn ảnh giúp nhận dạng chữ hoặc mã vạch trên sản phẩm để thực hiện phân loại Đây là giai đoạn phức tạp và đầy thách thức trong xử lý ảnh, dễ gây ra lỗi và ảnh hưởng đến độ chính xác của quá trình nhận dạng.
2.3.4 Biểu diễn ảnh (Image Representation)
Các điểm ảnh trong vùng ảnh được phân đoạn kết hợp với mã liên kết của các vùng lân cận để tạo thành phần sau phân đoạn Việc chuyển đổi dữ liệu này thành dạng phù hợp là cần thiết cho quá trình xử lý bằng máy tính Trích xuất đặc trưng (Feature Extraction) là quá trình lựa chọn các thuộc tính để biểu diễn ảnh, trong đó các đặc tính được mô tả dưới dạng thông tin định lượng, giúp phân biệt đối tượng này với các đối tượng khác trong ảnh.
2.3.5 Nhận dạng ảnh và nội suy ảnh (Image Recognition and Interpretation)
Nhận dạng ảnh là quá trình xác định và xử lý hình ảnh để trích xuất thông tin cụ thể, thường thông qua việc so sánh hình ảnh đầu vào với các mẫu chuẩn đã được học trước đó Nội suy là quá trình suy luận và đưa ra kết quả dựa trên thông tin đã được nhận dạng.
Một dãy số và các dấu gạch ngang trên phong bì thư có thể được chuyển đổi thành số điện thoại Có nhiều phương pháp phân loại ảnh khác nhau, và theo lý thuyết về nhận dạng ảnh, các mô hình toán học của ảnh được phân loại thành hai loại cơ bản.
+ Nhận dạng dựa trên các tham số
+ Nhận dạng dựa trên cấu trúc
Hiện nay, nhiều ứng dụng trong khoa học và công nghệ áp dụng các phương pháp nhận dạng đối tượng như nhận dạng ký tự (bao gồm chữ in, chữ viết tay và chữ ký điện tử), nhận dạng văn bản, nhận dạng vân tay, nhận dạng mã vạch và nhận dạng khuôn mặt.
2.3.6 Cơ sở tri thức (Knowledge Base)
Ảnh là một đối tượng phức tạp với nhiều yếu tố như đường nét, độ sáng, dung lượng điểm ảnh và nhiễu từ môi trường thu ảnh Để xử lý và phân tích ảnh hiệu quả, cần đơn giản hóa các phương pháp toán học, giúp quá trình trở nên tiện lợi hơn và mô phỏng cách con người tiếp nhận và xử lý ảnh Hiện nay, nhiều phương pháp đã áp dụng trí tuệ nhân tạo để tương tự hóa quy trình xử lý của con người, từ đó nâng cao việc khai thác cơ sở tri thức trong lĩnh vực này.
CƠ SỞ LÝ THUYẾT
Lập trình Arduino
Arduino là một bo mạch vi điều khiển được phát triển vào năm 2005 bởi một nhóm giáo sư và sinh viên người Ý, nhằm mục đích cảm nhận và điều khiển nhiều đối tượng khác nhau Bo mạch này có khả năng thực hiện nhiều tác vụ, bao gồm thu thập tín hiệu từ cảm biến và điều khiển các thiết bị như đèn, động cơ Hơn nữa, Arduino còn có khả năng kết nối với nhiều module khác nhau như module đọc thẻ từ, ethernet shield và sim900A, giúp mở rộng khả năng ứng dụng của nó.
Arduino là một nền tảng phần cứng bao gồm board mạch được thiết kế dựa trên vi xử lý AVR Atmel 8 bit hoặc ARM Atmel 32 bit Hiện tại, có tổng cộng 6 phiên bản phần cứng của Arduino, trong đó Arduino Uno và Arduino Mega là hai phiên bản phổ biến nhất và được sử dụng rộng rãi.
Phần mềm được sử dụng để lập trình cho bo mạch Arduino được gọi là Arduino IDE
Cổng USB trên bo mạch Arduino không chỉ cho phép tải mã lập trình từ máy tính lên chip điều khiển, mà còn đóng vai trò là cổng giao tiếp serial, giúp truyền dữ liệu giữa chip và máy tính một cách hiệu quả.
Jack nguồn cung cấp điện cho Arduino, là lựa chọn cần thiết khi thực hiện các dự án ngoài trời Mặc dù cổng USB có thể được sử dụng để cấp nguồn, nhưng trong nhiều trường hợp, nguồn điện với mức điện áp từ 9V đến 12V là cần thiết để đảm bảo hiệu suất tối ưu.
Hàng header trên bo mạch Arduino có các chân số từ 0 đến 12, phục vụ cho việc truyền và nhận tín hiệu số Ngoài ra, bo mạch còn có chân đất (GND) và chân điện áp tham chiếu (AREF).
Hàng header thứ hai chủ yếu liên quan đến các chân nguồn và đất
Hàng header thứ ba là các chân được sử dụng để nhập và xuất các tín hiệu analog, để đọc thông tin từ các thiết bị cảm biến
Chip điều khiển AVR đóng vai trò là bộ xử lý trung tâm trên bo mạch Arduino, với mỗi phiên bản Arduino sử dụng một loại chip AVR khác nhau Chẳng hạn, Arduino Uno sử dụng chip ATMega328 làm bộ điều khiển.
Hình 3 2: Cấu tạo của Arduino
3.1.3 Các loại Arduino phổ biến
Khác với nhiều board mạch lập trình trước đây, Arduino cho phép nạp mã chỉ bằng cáp USB mà không cần phần cứng đặc biệt Ngoài ra, phần mềm Arduino IDE sử dụng phiên bản đơn giản của ngôn ngữ lập trình C++, giúp người dùng dễ dàng tiếp cận và lập trình.
15 trình học lập trình trở nên đơn giản hơn Dưới đây là một số loại Arduino phổ biến mà chúng ta có thể tổng hợp:
1 Arduino Uno Đây là board đơn giản nhất và rất thích hợp cho những người mới bắt đầu khám phá lĩnh vực này Nó có tổng cộng 14 chân dữ liệu số, trong đó có 6 chân đầu vào ở mức điện áp 5V, có khả năng phân giải lên đến 1024 mức, hoạt động ở tốc độ 16MHz và có thể được cấp nguồn từ 7V đến 12V Kích thước của board này là 5,5x7cm
Bao gồm có đến 20 chân, trong đó có 7 chân có thể phát PWM Loại này có thiết kế khá nhỏ gọn, kích thước chỉ 5x2cm
Arduino Nano là loại board nhỏ nhất với kích thước chỉ 2x4cm, dễ dàng lắp đặt Board này tích hợp vi điều khiển ATmega328P, tương tự như Arduino UNO.
4 Arduino Pro Đây là một thiết kế mới mẻ khi chân số không có sẵn, tùy vào số chân bạn sử dụng để gắn trực tiếp và giúp tiết kiệm được khoảng không lớn, ta thường thấy hai loại có nguồn 3.3V và 5V
Chân số lên đến 64, 14 chân có thể phát PWM, 4 cổng truyền tiếp cùng kích thước khá lớn 5x10cm
Bảng mạch này không có cổng USB để lập trình, mà được thiết kế với một chip điều khiển nhỏ Nó sử dụng kết nối qua COM ảo và có khả năng kết nối với chuột và bàn phím.
Board mạch Lily Pad Arduino là công nghệ dệt điện tử có thể đeo được, được phát triển bởi Leah Sang Buechley và thiết kế bởi dòng Lea Leah cùng SparkFun Mỗi board được thiết kế độc đáo với các miếng kết nối lớn, tạo điều kiện thuận lợi cho việc tích hợp vào các sản phẩm thời trang và đồ dùng hàng ngày.
Arduino này tích hợp I/O, nguồn và bảng cảm biến chuyên dụng cho hàng dệt may điện tử, với một mặt sau mịn màng cho phép khâu vào quần áo bằng chỉ.
Board mạch RedBoard Arduino có thể lập trình dễ dàng qua cáp USB Mini-B bằng Arduino IDE, tương thích với Windows 8 mà không cần thay đổi cài đặt bảo mật Với thiết kế phẳng ở mặt sau và sử dụng chip USB hoặc FTDI, nó rất thuận tiện cho việc triển khai trong các dự án Chỉ cần cắm board, chọn tùy chọn Arduino UNO trong menu, và bạn đã sẵn sàng để tải lên chương trình RedBoard có thể được điều khiển qua cáp USB thông qua giắc cắm thùng.
Ngoài ra, còn có thể kể đến: Arduino Diecimila, Arduino Duemilanove, Arduino Due, v.v
Arduino có nhiều ứng dụng phong phú trong cuộc sống hàng ngày và trong việc phát triển các thiết bị điện tử chất lượng cao, bao gồm các lĩnh vực như tự động hóa, điều khiển thiết bị, và phát triển sản phẩm sáng tạo.
Lập trình nhúng Raspberry Pi
3.2.1 Khái niệm về Raspberry Pi
Raspberry Pi là một máy tính nhỏ gọn, có kích thước tương đương với iPhone và giá khoảng 35 USD, chạy trên hệ điều hành Linux Được phát triển bởi tổ chức phi lợi nhuận Raspberry Pi Foundation, chương trình này nhằm mục đích giảng dạy tin học cho trẻ em và khuyến khích việc sử dụng máy tính cho các tác vụ tùy chỉnh Raspberry Pi được sản xuất bởi ba công ty gốc.
(OEM): Sony, Qsida và Egoman, và được phân phối chính bởi Element14, RS Components và Egoman
Dự án Raspberry Pi ban đầu được phát triển nhằm cung cấp một máy tính giá rẻ và dễ lập trình cho sinh viên, nhưng đã thu hút sự quan tâm từ nhiều đối tượng người dùng khác nhau Raspberry Pi sử dụng chip SoC Broadcom BCM2835, một chip xử lý di động mạnh mẽ và nhỏ gọn, tích hợp CPU, GPU, bộ xử lý âm thanh/video và nhiều tính năng khác, tất cả trong một thiết kế tiết kiệm năng lượng.
Raspberry Pi không thể thay thế hoàn toàn máy tính để bàn hoặc laptop do kiến trúc ARM BCM2835 không hỗ trợ mã x86/x64, vì vậy không thể chạy hệ điều hành Windows Tuy nhiên, Raspberry Pi có khả năng chạy Linux, cung cấp các tiện ích như trình duyệt web và môi trường desktop Đây là một thiết bị đa năng với linh kiện phần cứng giá rẻ, rất phù hợp cho các hệ thống điện tử, dự án tự làm (DIY), và thiết lập hệ thống tính toán giá rẻ phục vụ cho việc học và trải nghiệm lập trình.
Hình 3 12: Sơ đồ cấu tạo Raspberry Pi
Raspberry Pi có hai phiên bản chính là Model A và Model B, với mức giá lần lượt là 25$ và 35$ Trong đó, Model B được ưa chuộng hơn cả, nhờ vào các thành phần phần cứng và cổng giao tiếp đa dạng.
+ SoC (System on a Chip) hoạt động ở tốc độ 700MHz và bộ nhớ RAM 512MB 1 cổng HDMI để xuất âm thanh/video số
+ 1 cổng video RCA để xuất video analog
+ Jack headphone stereo 3.5mm để xuất âm thanh analog
+ 2 cổng USB 1 đầu đọc thẻ nhớ SD để tải hệ điều hành
+ 1 cổng Ethernet LAN để kết nối mạng 1 giao diện GPIO (General Purpose Input/Output) để tương tác với các thiết bị ngoại vi
Model A cũng tương tự như Model B, tuy nhiên có một số khác biệt như sau:
+ Không có cổng Ethernet, vì vậy người dùng cần sử dụng bộ chuyển đổi USB Wi-
Fi hoặc Ethernet nếu muốn kết nối mạng
+ RAM có dung lượng 256MB
3.2.3 Hệ điều hành và phần mềm
Raspberry Pi hỗ trợ nhiều hệ điều hành Linux, nhưng Ubuntu không được hỗ trợ chính thức do CPU sử dụng kiến trúc ARMv6 Một số bản phân phối Linux nhúng phổ biến cho Raspberry Pi bao gồm Raspbian, Pidora, openSUSE, OpenWRT và OpenELEC Raspbian, phiên bản Linux dựa trên Debian với giao diện LXDE, cung cấp đầy đủ trình duyệt web, trình phát media và nhiều công cụ khác, giúp người dùng sử dụng Raspberry Pi như một máy tính cá nhân.
Hình 3 13: Hệ điều hành Raspbian b Raspbmc
Phiên bản Raspbian này đã loại bỏ giao diện LXDE và thay thế bằng XBMC, mang lại trải nghiệm người dùng mượt mà hơn Với độ phân giải 720P cho giao diện, Raspberry Pi được tối ưu hóa với CPU 1GHz, RAM 500MB, DSP 250, và GPU 450, cho phép đạt tốc độ khung hình trên 60fps, có thể lên tới 80fps khi tắt Vsync Hỗ trợ nhiều định dạng và codec phim, tuy nhiên codec VC-1 và MPEG2 yêu cầu phí mở khóa, nhưng hầu hết phim HD hiện nay không sử dụng các codec này Âm thanh được hỗ trợ đầy đủ từ DTS-HD Master, DTS, Dolby, MP3, ACC, nhưng để trải nghiệm âm thanh 5.1, cần có receiver Raspberry Pi cũng có khả năng phát phim từ nhiều nguồn như NFS, samba, USB, HDD (3TB), UPNP và nhiều nguồn khác.
Hình 3 14: Hệ điều hành Raspbmc
Cảm biến trọng lượng Loadcell
Loadcell là thiết bị đo lực tạo ra tín hiệu điện tỷ lệ với lực đo được, được sử dụng phổ biến trong các ứng dụng cân Tùy thuộc vào khả năng đo lường của từng loại loadcell, có nhiều loại khác nhau phù hợp với nhu cầu Trong lĩnh vực kỹ thuật, loadcell được ứng dụng đa dạng trong các hệ thống cần xác định khối lượng hoặc lực, và tín hiệu điện từ loadcell sẽ được gửi đến bộ xử lý để xử lý tiếp.
Hình 3 15: Tổng quan về Loadcell
Load Cell khí nén là một thiết bị đo lường khối lượng hoạt động dựa trên nguyên lý khí nén Cấu trúc của nó bao gồm một màng co dãn được gắn vào bề mặt, giúp xác định chính xác trọng lượng cần đo.
Bộ điều chỉnh không khí giúp kiểm soát lưu lượng khí đến hệ thống và thiết bị đo áp suất Khi một vật được đặt lên loadcell, bộ điều chỉnh tự động điều chỉnh để tạo ra lực cân bằng với trọng lượng của vật đó.
Lượng không khí cần thiết để cân bằng với trọng lượng của vật sẽ được đo, và thiết bị đo áp suất sẽ chuyển đổi thông tin này thành tín hiệu điện tương ứng.
Hình 3 17: Loadcell khí nén b Load Cell thủy lực:
Cảm biến thủy lực là thiết bị đo lường chất lỏng như nước hoặc dầu, hoạt động tương tự như loadcell khí nén nhưng sử dụng áp suất của chất lỏng thay vì khí.
Khi tải trọng được đặt lên bề mặt cân, piston tạo ra áp suất lên chất lỏng bên trong Áp suất của chất lỏng tăng theo tỉ lệ với lực (khối lượng) được áp dụng.
Sau khi áp suất được điều chỉnh, bạn có thể xác định chính xác lực hoặc khối lượng đặt lên loadcell thủy lực
Các thông số áp suất có thể được hiển thị như máy đo áp suất truyền thống hoặc được chuyển đổi thành tín hiệu điện thông qua cảm biến áp suất Cảm biến này có thể là loadcell điện dung, giúp đo lường chính xác và hiệu quả.
Loadcell loại điện dung hoạt động dựa trên nguyên lý lưu trữ điện Cấu tạo của nó bao gồm hai tấm phẳng song song, trong đó các tấm này mang điện và khí tích đủ điện sẽ được lưu trữ giữa chúng.
Khả năng chứa điện của hai tấm phẳng phụ thuộc vào độ rộng giữa chúng Khi tải được đặt lên tấm phẳng, khe hở giữa các tấm sẽ bị thu hẹp, dẫn đến sự thay đổi trong điện dung Từ đó, có thể tính toán được khối lượng.
Hình 3 19: Loadcell điện dung d Loadcell biến dạng kế
Loadcell biến dạng kế là loại cảm biến phổ biến, hoạt động dựa trên nguyên lý thay đổi điện trở khi bị biến dạng Điện trở này tỉ lệ thuận với ứng suất hoặc độ biến dạng, giúp tính toán chính xác lực tác động Đặc điểm tuyến tính của điện trở từ biến dạng kế cho phép chuyển đổi lực thành trọng lượng một cách hiệu quả.
Hình 3 20: Loadcell biến dạng kế
Cấu trúc của loadcell biến dạng kế bao gồm bốn cảm biến biến dạng được lắp ghép theo dạng mạch cầu Mạch cầu này giúp đo điện trở không xác định bằng cách cân bằng hai cảm biến, trong đó có một thành phần không xác định Nhờ vậy, nó cho phép đo chính xác đến từng phần nhỏ nhất, đạt độ chính xác cao (mini gam).
Hình 3 21: Cấu tạo Loadcell biến dạng kế
Các phần mềm sử dụng
Hình 3 22: Giao diện khởi động Protues
Proteus là phần mềm mô phỏng mạch điện tử, tích hợp thiết kế mạch và lập trình điều khiển cho các vi điều khiển phổ biến như MCS-51, PIC, AVR và nhiều loại vi điều khiển khác.
Proteus là phần mềm mô phỏng mạch điện tử được phát triển bởi Lancenter Electronics, cung cấp khả năng mô phỏng cho hầu hết các linh kiện điện tử phổ biến Phần mềm này đặc biệt chú trọng vào việc hỗ trợ các vi điều khiển (MCU) như PIC, 8051 (MCS-51), AVR và Motorola.
Proteus là bộ công cụ chuyên dụng cho mô phỏng mạch điện tử, bao gồm hai chương trình chính: ISIS để mô phỏng mạch và ARES cho thiết kế mạch in Với khả năng mô phỏng mạnh mẽ và đa dạng, Proteus hỗ trợ nhiều loại Vi Điều Khiển phổ biến như PIC, giúp người dùng dễ dàng thiết kế và kiểm tra các mạch điện tử.
8051, dsPIC, AVR, HC11, MSP430, ARM7/LPC2000 và nhiều loại vi điều khiển khác
Proteus là một công cụ thiết kế và mô phỏng mạch điện tử đáng tin cậy, hỗ trợ nhiều giao tiếp như I2C, SPI, CAN, USB và Ethernet, đồng thời có khả năng mô phỏng hiệu quả cả mạch số và mạch tương tự Với hơn 12 năm nghiên cứu và phát triển, ISIS đã thu hút hơn 12.000 người dùng toàn cầu, nổi bật với khả năng mô phỏng hoạt động của các hệ vi điều khiển mà không cần phần mềm phụ trợ Ngoài ra, ISIS còn cho phép xuất file sang ARES hoặc các phần mềm vẽ mạch in khác, giúp hoàn thiện quy trình thiết kế sản phẩm và hệ thống điện tử.
Trong lĩnh vực giáo dục, ISIS nổi bật với hình ảnh mạch điện đẹp mắt, cho phép người dùng tùy chỉnh đường nét và màu sắc mạch điện theo các mẫu thiết kế Ngoài ra, ISIS còn sở hữu nhiều khả năng khác, mang lại trải nghiệm học tập phong phú và sáng tạo cho người sử dụng.
+ Tự động sắp xếp đường mạch và vẽ điểm giao đường mạch
+ Dễ dàng chọn đối tượng và thiết lập thông số cho đối tượng
+ Xuất file thống kê linh kiện cho mạch
Chương trình hỗ trợ xuất ra file Netlist tương thích với các phần mềm thiết kế mạch in phổ biến, cho phép thiết kế mạch điện lớn với hàng ngàn linh kiện thông qua các công cụ quản lý hiệu quả Bên cạnh đó, nó còn cho phép thiết kế theo cấu trúc, giúp tổ chức và quản lý dự án mạch điện một cách hợp lý và dễ dàng.
+ Khả năng tự động đánh số linh kiện
Qt là bộ thư viện đa nền tảng chuyên phát triển giao diện đồ họa người dùng, đặc biệt cho các ứng dụng cửa sổ Ban đầu được viết bằng C++, Qt hiện nay hỗ trợ nhiều ngôn ngữ lập trình khác như Java và Python.
Qt không chỉ là một thư viện mà là một framework đa năng, cung cấp nhiều công cụ hữu ích cho lập trình Mặc dù Qt chủ yếu được phát triển để tạo ra các ứng dụng giao diện người dùng, nhưng tính năng của nó không chỉ giới hạn ở đó.
Qt bao gồm nhiều "module" (thư viện con) khác nhau, trong đó chúng ta có thể tìm thấy nhiều tính năng đa dạng như:
+ Module GUI: Sử dụng để tạo các cửa sổ và giao diện người dùng Đây là thành phần chính mà giáo trình tập trung giảng dạy
+ Module OpenGL: Hỗ trợ tạo cửa sổ hiển thị đồ họa 3D được quản lý bằng
+ Module vẽ: Cho phép người dùng tự thiết kế hình dạng các cửa sổ 2D
+ Module mạng: Cung cấp các công cụ để thao tác với hệ thống mạng, hỗ trợ tạo ứng dụng tán gẫu, tải tệp tin, vv
+ Module SVG: Cho phép tạo hình ảnh và minh họa vectơ, tương tự như flash
+ Module script: Hỗ trợ quản lý các ngôn ngữ kịch bản như Javascript để thêm các tính năng vào ứng dụng
+ Module XML: Hỗ trợ thao tác với các tệp tin có cấu trúc theo XML một cách hiệu quả
+ Module SQL: Cho phép truy cập vào các cơ sở dữ liệu như MySQL, Oracle,
Qt là một framework đa nền tảng, hỗ trợ phát triển ứng dụng cho di động, máy tính bảng, máy tính cá nhân và hệ thống nhúng, cùng nhiều nền tảng khác.
Hình 3 24: QT đa nền tảng
PHƯƠNG HƯỚNG VÀ CÁC GIẢI PHÁP
Tổng quan về mô hình
Hình 4 1: Sơ đồ tổng quát
Buồng chụp ảnh của đầu băng tải được thiết kế kín nhằm giảm thiểu ảnh hưởng của ánh sáng môi trường trong quá trình chụp ảnh Buồng chụp được trang bị camera và đèn chiếu sáng lắp đặt phía trên Dưới băng chuyền, có một bàn cân kết nối với cảm biến loadcell để đo khối lượng cà chua khi chúng di chuyển qua Bên cạnh buồng chụp, cảm biến tiệm cận (cảm biến 0) được sử dụng để phát hiện cà chua khi chúng đi qua buồng chụp.
Cảm biến tiệm cận 01 được lắp đặt gần động cơ gạt 01 để phát hiện cà chua khi chúng đi qua thùng chứa 01 Tương tự, cảm biến tiệm cận 02 cũng được lắp gần động cơ gạt, đảm bảo quá trình thu hoạch diễn ra hiệu quả.
Cảm biến 02 giúp phát hiện cà chua khi chúng đi qua vị trí thùng chứa 02 Cuối băng tải, cảm biến vật cản 03 xác định cà chua khi chúng đến vị trí cuối cùng và rơi vào thùng chứa số 03.
Giao diện - Màn hình cảm ứng
Cảm biến vật cản Động cơ gạt Động cơ băng tải
Các cảm biến đầu vào bao gồm cảm biến vật cản hồng ngoại, cảm biến trọng lượng Loadcell
Arduino sẽ là trung tâm xử lý, nhận tín hiệu từ cảm biến và Raspberry Qua thuật toán điều khiển, Arduino sẽ phát tín hiệu cho các cơ cấu chấp hành.
Cơ cấu chấp hành bao gồm động cơ DC cho băng tải và động cơ Servo để gạt sản phẩm Raspberry được sử dụng như bộ xử lý ảnh và máy chạy giao diện, giúp tối ưu hóa quy trình vận hành.
Camera thu thập hình ảnh cho Raspberry xử lý
Màn hình cảm ứng là nơi người dùng giao tiếp với hệ thống thông qua giao diện điều khiển.
Thiết kế phần cứng
4.2.1 Lựa chọn thiết bị và linh kiện a Arduino nano
Chức năng: xử lý tín hiệu từ các cảm biến và điều khiển hoạt động của các thiết bị ngoại vi
Thông số kỹ thuật được thiết kế theo đúng chuẩn chân, kích thước của Arduino Nano chính hãng
+ IC nạp và giao tiếp USB UART FT232RL
+ Điện áp cấp: 5VDC cổng USB hoặc 6-9VDC chân Raw
+ Mức điện áp giao tiếp GPIO: TTL 5VDC
+ Số chân Digital: 14 chân, trong đó có 6 chân PWM
+ Số chân Analog: 8 chân (hơn Arduino Uno 2 chân)
+ Flash Memory: 32KB (2KB Bootloader)
+ Tích hợp Led báo nguồn, led chân D13, LED RX, TX
+ Tích hợp IC chuyển điện áp 5V LM1117
Chức năng: đóng vai trò làm trung tâm xử lý ảnh và chạy giao diện Thông số kỹ thuật:
+ Chipset Broadcom BCM2837 chạy ở tốc độ 1,2 GHz
+ Bộ vi xử lý bốn nhân 64-bit ARM Cortex-A53
+ Bluetooth 4.1 (Năng lượng Cổ điển & Thấp)
+ Bộ xử lý đa phương tiện Videocore IV® lõi kép
+ Đầu nối microUSB cho nguồn điện 2,5 A
+ 1 cổng kết nối video / âm thanh HDMI
+ Đầu nối video / âm thanh RCA 1 x
+ Đầu nối hiển thị DSI
+ Khe cắm thẻ nhớ microSD
Chức năng: thu thập thông tin hình ảnh cho Raspberry xử lý
+ Camera Raspberry Pi V2 8MP dùng cho máy tính nhúng Raspberry Pi + Cảm biến IMX219 từ Sony
+ Độ phân giải camera: 3280 x 2464 pixel stills
+ Độ phân giải video: HD 1080p30, 720p60 and 640x480p90 video + Kích thước: 25mm x 23mm x 9mm
+ Giao diện: CSI d Màn hình cảm ứng 3.5 inch
Hình 4 6: Màn hình cảm ứng 3.5 inch
Chức năng: hiện thị thông tin và giao tiếp với người dùng
+ Kích thước màn hình LCD: 2.8 inch
+ Diện tích hiển thị: 57.6mm * 47.2mm
+ Độ sâu màu: 16-bit (65K màu)
+ Điện áp làm việc: 3.3V hoặc 5V
+ Một điện áp đèn nền: 3.3V
+ Loại màn hình cảm ứng: điện trở, màn hình cảm ứng kính + Kich thước module: 51mm * 82.6mm
+ Kích thước: 8.8x5cm e Động cơ L298
Chức năng: điều khiển bật tắt động cơ băng tải
+ Sử dụng IC công suất L298N (ST NEW)
+ Điện áp tín hiệu 5V/ 0mA-36mA
+ Điện áp hoạt động động cơ 5V-35V
+ Dòng điều khiển động cơ 2A/1 mạch cầu H
+ Nhiệt độ hoạt động -20 tới +135
+ Công suất đầu ra 1 cầu H 25W
+ Kích thước 43*43*27mm f Cảm biến loadcell 1kg
Hình 4 8: Cảm biến loadcell 1kg
Chức năng: đo khối lượng của vật
+ Dùng điện trở 10k kéo lên cho giao tiếp I2C
+ Dải đo: -40 … + 125 ° C cho nhiệt độ cảm biến chịu được và -70 … + 380 ° C cho nhiệt độ đối tượng đo
+ Độ chính xác cao 0,5 ° C so với nhiệt độ rộng (0 … + 50 ° C cho cả hiệu chuẩn
Ta và To) Độ chính xác cao (y tế)
+ Giao diện kỹ thuật số tương thích SMBus
+ Đầu ra PWM có thể tùy chỉnh để đọc liên tục g Cảm biến vật cản hồng ngoại IR01
Hình 4 9: Cảm biến vật cản hồng ngoại IR01
Chức năng: kiểm tra vật cản
+ Điện áp sử dụng: 3.3~5vDC
+ Nhận biết vật cản bằng ánh sáng hồng ngoại
+ Tích hợp biến trở chỉnh khoảng cách nhận biết vật cản + Kích thước: 3.2 x 1.4cm h USB to com PL2303
Hình 4 10: USB to com PL2303
Chức năng: kết nối giữa Raspberry và Arduino
+ Điện áp 5V DC cấp trực tiếp từ cổng USB
+ Ngõ ra dạng UART gồm 2 chân TX, RX
+ Các chân gồm: GND, TX, RX, VCC, 3.3V
+ Với 3 led trên board: led báo nguồn, led RX, led TX + Kích thước 15 x 31 mm i Modul ổn áp 5V USB
Hình 4 11: Module ổn áp 5V USB
Chức năng: Hạ áp từ 12V xuống 5V cho Raspberry, Arduino và các cảm biến sử dụng Thông số kỹ thuật
+ Mạch giảm áp xung hiệu suất cao tần số 125Khz
+ Đầu vào tối đa: 6 - 36VDC
+ Đầu ra cố định: 5VDC - 3A
+ Đầu ra có dạng USB, 2 cổng USB
+ Kích thước: 59x21x17mm j Nguồn Adapter 12V-2A
Chức năng: cấp nguồn cho bộ điều khiển, các cảm biến và động cơ servo
+ Điện áp đầu vào: 100V~ 240V | 50/60Hz ± 15%
+ Bảo vệ: quá tải, quá áp, ngắn mạch
+ Làm mát: bằng đối lưu không khí tự do
+ Tuân thủ an toàn: CCC/FCC/CE
+ Nhiệt độ bảo quản: -20 ~ 60°C k Nguồn Adapter 12V-1A
Chức năng: cấp nguồn cho bộ điều khiển, các cảm biến và động cơ servo
+ Điện áp đầu vào: 100V~ 240V | 50/60Hz ± 15%
+ Bảo vệ: quá tải, quá áp, ngắn mạch
+ Làm mát: bằng đối lưu không khí tự do
+ Tuân thủ an toàn: CCC/FCC/CE
Chức năng: cấp chuyển động cho băng tải
+ Trọng Lượng: 150g n Thẻ nhớ 32GB StanDick
Hình 4 15: Thẻ nhớ 32GB StanDick
Chức năng: lưu trữ hệ điều hành và là bộ nhớ lưu trữ dữ liệu của Raspberry PI Thống số kỹ thuật:
+ Nhiệt độ lưu trữ: -40°C (-40°F) đến 85°C (185°F)
+ Nhiệt độ hoạt động: -25°C (-13°F) đến 85°C (185°F)
Hình 4 16: Sơ đồ kết nối
Nguồn nuôi cho bộ điều khiển sử dụng adapter 9VDC – 2A sẽ được chuyển qua module giảm áp Buck để hạ xuống 5V, cung cấp điện cho Raspberry Pi, màn hình cảm ứng và camera.
Nguồn 9VDC – 2A được giảm áp xuống còn 5V qua IC ổn áp 7805 (U2) để cung cấp cho động cơ Servo, trong khi Arduino nhận nguồn nuôi trực tiếp từ nguồn 9V này vào chân V- in.
Arduino và Raspberry Pi có thể kết nối với nhau qua một USB chuyển mạch, cụ thể là USB PL2303, giúp chuyển đổi mức logic từ giao tiếp USB sang UART.
Các jump cắm kết nối với cảm biến và động cơ Servo được bố trí ở rìa ngoài của mạch in giúp dễ dàng kết nối.
Thiết kế phần mềm
4.3.1 Bảng phân công tín hiệu
Loại ngõ Ký hiệu Địa chỉ Chú thích
Input CB0 D13 Cảm biến vật cản tại buồng chụp
CB1 D12 Cảm biến vật cản tại thùng 1
CB2 D11 Cảm biến vật cản tại thùng 2
LOADCELL A0, A1 Cảm biến đo khối lượng
Ouput OUT1 D7 Chân số 1 điều khiển động cơ băng tải
OUT2 D8 Chân số 2 điều khiển động cơ băng tải
SV1 D9 Động cơ Servo gạt cà chua số 1
SV2 D10 Động cơ Servo gạt cà chua số 2
Bảng 4 1: Bảng phân công tín hiệu
Hệ thống được điều khiển và giám sát thông qua màn hình cảm ứng
Bắt đầu hoạt động bằng cách nhấn nút Start, sau đó băng tải sẽ chạy
Cà chua được đặt lên đầu băng tải và khi chúng đi qua buồng chụp, cảm biến vật cản CB0 sẽ phát hiện
Băng tải sẽ dừng lại và camera sẽ chụp ảnh để gửi về Raspberry Pi để tiến hành phân tích màu sắc
Sau khi hoàn thành phân tích màu, Raspberry Pi sẽ truyền đạt kết quả đến Arduino Bên cạnh đó, cảm biến loadcell sẽ thực hiện việc đo khối lượng cà chua, và tín hiệu này sẽ được khuếch đại bởi module Hx711 trước khi gửi đến Arduino.
Sau 2 giây dừng, băng tải tiếp tục chạy
Khi cà chua chín nhẹ được phát hiện qua cảm biến CB1, động cơ SV1 sẽ tự động gạt cà chua xuống thùng chứa số 1, đồng thời số lượng cà chua chín nhẹ sẽ được tăng thêm 1.
Khi cà chua chín nặng được phát hiện bởi cảm biến CB2, động cơ SV2 sẽ tự động gạt cà chua xuống thùng chứa số 2, đồng thời số lượng cà chua chín nặng sẽ được tăng thêm 1.
Nếu là quả xanh, cà chua sẽ được đưa xuống cuối băng tải và rơi vào thùng chứa số
3 Số lượng quả xanh sẽ được đếm thêm 1
Khai báo nang = 0, nhe = 0, xanh = 0
Chạy băng tải Nhấn Start?
Dừng băng tải Đọc khối lượng Đọc màu sắc
Hình 4 18: Lưu đồ thuật toán 1
Hình 4 19: Lưu đồ thuật toán 2
CB0 Cảm biến vật cản tại buồng chụp, = 1 : có vật cản
CB1 Cảm biến vật cản tại thùng 1 chứa quả chín nhẹ, = 1 : có vật cản
Cảm biến CB2 tại thùng 2 có khả năng phát hiện vật cản, giúp xác định trọng lượng của quả chín nặng và nhẹ Nó lưu trữ số lượng quả chín nhẹ, quả chín nặng và quả chín xanh, đảm bảo việc quản lý và theo dõi hiệu quả trong quá trình thu hoạch.
Bảng 4 2: Giải thích ký hiệu trên lưu đồ thuật toán
ĐỀ XUẤT CÔNG NGHỆ TÍNH TOÁN, THIẾT KẾ
Thiết kế cơ khí
5.1.1 Tính toán và thiết kế băng tải
Hình 5 1: Mô hình băng tải
Trọng lượng trái cà chua lớn nhất = 0,25kg
Trọng lượng dây đai băng tải = 0,2kg
Ta có hệ số ma sát giữa vật liệu tấm trên cùng (nhựa kỹ thuật) và vật liệu đường ray dẫn hướng là à=0,15 (phụ lục II)
Ta chọn hệ số ma sỏt : à=0,15 Đường kính trục băng tải D = 34mm
Tốc độ yêu cầu của băng tải V = 2150 mm/phut
Tốc độ quay trục băng tải N1 = 𝑉
𝜋×34 ≈ 20 vòng/phút (2) Chọn tỉ số truyền = 1 => Tốc độ quay hộp số N = N1 = 20 vòng/phút
1000 = 0.9675 𝑤 (3) Vậy ta chọn loại động cơ có tốc độ vòng quay 20 vòng/phút và công suất > 0.9675w
Chọn động cơ giảm tốc 12V RPM LS220 có công suất 12W và tốc độ quay 20 vòng/phút
5.1.2 Tính toán chọn động cơ Servo
Nhiệm vụ của động cơ Servo trong mô hình là thực hiện một góc quay 60 0 để đưa cần gạt đến vị trí gạt quả trên băng tải
Tốc độ quay yêu cầu: 0.8s/60 0
Khối lượng cần gạt: m = 0.15 kg
Chiều dài cần gạt: l = 12.8 cm
Momen quán tính vật thể quay:𝐽 1 = 𝑚×𝑑 2
Momen quán tính bộ phận chuyển động: :𝐽 2 = 𝑚×𝑑 2
0.8 = 1.308 𝑟𝑎𝑑/𝑠 (6) Momen xoắn của động cơ: 𝑇 = 𝐽 2 𝑎 = 6.144 × 1.308 = 8.036 𝑘𝑔 𝑐𝑚 (7)
Vậy ta chọn động cơ RC Servo MG996R có momen xoắn 9.4-11 kg.cm
(Thư viện dùng cho động cơ Servo MG996R tra phụ lục II)
Hình 5 2: Động cơ servo MG996R
5.1.2 Bản vẽ các hình chiếu của mô hình a Hình chiếu đứng
Hình 5 3: Bản vẽ hình chiếu đứng
Hình 5 4: Hình chiếu đứng của mô hình
Hình 5 5: Bản vẽ hình chiếu bằng
Hình 5 6: Hình chiếu bằng của mô hình
Hình 5 7: Mô hình hoàn chỉnh mặt trước
Hình 5 8: Mô hình hoàn chỉnh mặt sau
Thiết kế giao diện
Bước 1: Khởi tạo giao diện
Mở phần mềm QT Designer lên và chọn new, chọn Main Window để khởi tạo giao diện
Hình 5 9: Giao diện QT Designer
Vào Property Editor hay đổi kích thước cho phù hợp bằng cách thay đổi thông số mục Width và Height trong bảng Qwidget
Sau khi thay đổi xong ta được giao diện với nền xám
Thay đổi màu nền cho giao diện bằng cách kích chuột phải vào nền, chọn Change Style Sheet
Bảng lựa chọn hiện ra Tại Add Color chọn background-color
Chọn màu sắc mong muốn
Bước 2 Tạo tiêu đề cho giao diện
Tạo bản nền cho mục tiêu đề Tại mục Display Widgets chọn label
Thêm một label hiển thị text là tên của hệ thống với màu sắc trùng với màu của bảng nền
Hình 5 16: Tên tiêu đề đã được đặt
Bước 3 Tạo khung phân tách các phần trong giao diện
Thêm lable để tạo khung phân tách các vùng trong giao diện
Hình 5 17: Tạo thêm khung cho giao diện
Thêm 3 khung nữa và thay đổi kích thước và màu sắc các khung cho phù hợp với nền trong StyleSheet
Hình 5 18: Các khung trong giao diện đã tạo
Bước 4 Thêm các bảng hiển thị hình ảnh
Thêm một label hiển thị hình ảnh camera, chỉnh sửa tên và kích thước, màu sắc, vị trí cho bảng hiển thị này trong mục Property Editor.
Kết quả được bảng hiển thị hình ảnh từ camera
Hình 5 19: Label hiển thị hình ảnh từ camera
Tương tự thêm một label hiển thị kết quả xử lý ảnh
Hình 5 20: Label hiển thị kết quả xử lý ảnh
Bước 5 Thêm các bảng hiển thị thông số
Thêm một label hiển thị loại quả, đặt tên và kích thước, vị trí thích hợp
Copy thêm một bảng và chỉnh sửa lại tên trại mục name để làm bảng hiển thị khối lượng
Tương tự ta thêm các bảng hiển thị số lượng quả và đặt các nhãn tên bên trên chúng Hoàn thành thêm các bảng hiển thị
Hình 5 21: Giao diện cơ bản
Bước 6 Thêm các nút nhấn và thanh cài đặt khối lượng
Tại mục Input Widgets chọn Horizontal Slider để tạo thanh trượt cài đặt khối lượng
Chọn giá trị min max tại mục QAbstracSlider
Hoàn thành thêm thanh cài đặt khối lượng
Thêm một Label bên cạnh thanh cài đặt để hiển thị khối lượng cài đặt
Hình 5 24: Giao diện sau khi cài thanh đặt khối lượng
Tại mục Buttons chọn Push Button để tạo nút nhấn
Thay đổi màu sắc trong Style Sheet
Chỉnh text và kích thước như các Label ở trên cho phù hợp, hoàn thành việc thêm nút nhấn “Start/Stop”
Tương tự hêm nút “Đặt” để xác nhận cài đặt khối lượng phân loại
Tiếp tục thêm nút “Thoát” để thoát giao diện Hoàn thành giao diện giám sát và điều khiển
Hình 5 26: Giao diện hoàn chỉnh
Xác định màu sắc cà chua bằng xử lý ảnh
Bước 1 Chụp mẫu Đặt cà chua tại điểm xử lý trong buồng chụp, thiết lập ánh sáng chuẩn với trong quá trình hoạt động
Tiến hành chụp ảnh và lưu lại kết quả, thay các quả khác và chụp lại hình ảnh
Hình 5 27: Hình ảnh cà chua được đưa vào
Bước 2: Đọc màu sắc nền và tiến hành cắt nền Cắt lấy vùng ảnh trung tâm
Hình 5 28: Vùng ảnh trung tâm
Sử dụng chương trình hiển thị màu sắc để xác định màu nền bằng cách di chuyển chuột đến các vị trí khác nhau và đọc màu sắc tại những điểm đó.
Hình 5 29: Đọc giá trị màu của phần nền
Xác định nhiều điểm khác nhau và tiến hành ước lượng giá trị min max không gian màu của vùng nền
Bước 3: Tách lấy vùng nền, vùng không phải nền sẽ là quả và được bôi đen
Hình 5 30: Tách lấy vùng ảnh nền Đảo ngược lại vùng ảnh nền để tạo mặt nạ lấy vùng ảnh quả
Hình 5 31: Đảo lấy vùng ảnh quả
Nhân ảnh mặt nạ với ảnh đầu vào để được ảnh tách lấy quả
Hình 5 32: Vùng ảnh quả được tách
Để đọc giá trị Red trung bình trong không gian RGB của ảnh, cần lưu ý rằng các điểm màu đen với không gian màu (0,0,0) sẽ không được tính vào kết quả.
Thay quả xanh và và xác định giá trị Read
Hình 5 33: Tiến hành các bước trên quả xanh
Quả chín có giá trị gần đúng R = 150, trong khi quả xanh có giá trị R = 4 Hai giá trị này sẽ dao động khác nhau giữa các loại quả Do đó, khoảng xác định sẽ nằm giữa hai giá trị này, với quả xanh có giá trị nhỏ hơn 100 và quả chín lớn hơn 100.
Thời gian xử lý ảnh tính được là time = 0.05s
CHẾ TẠO THỬ NGHIỆM – ĐÁNH GIÁ
Tổng quan mô hình
Hình 6 1: Tổng quan mô hình thực tế
Mô hình có kích thước Dài x Rộng x Cao = 60cm x 40cm x 30cm
Vật liệu sử dụng làm khung là nhôm định hình và các tấm mica độ dày 5mm, 3mm
Bên trên các thùng chứa được đặt các máng trượt giúp cà chua lăn xuông mà không bị dập
Màn hình điều khiển giám sát được đặt ở mặt trên của bộ điều khiển, giúp dễ dàng thao tác và giám sát
Sử dụng hai nguồn cấp cho hệ thống: nguồn 9VDC – 2A cho phần điều khiển và động cơ servo, và nguồn 9VDC – 1A riêng cho động cơ băng tải nhằm giảm thiểu nhiễu từ động cơ DC đến mạch điều khiển.
Thực nghiệm hệ thống
Để cài đặt khối lượng cà chua, hãy điều chỉnh thanh trượt và nhấn nút “Đặt” để xác định khối lượng phân loại Sau đó, đặt cà chua lên đầu băng tải và nhấn nút Start để khởi động hệ thống, băng tải sẽ bắt đầu hoạt động.
Khi đến buồng chụp hệ thống tiến hành chụp ảnh phân tích màu sắc và đọc khối lượng quả
Hình 6 2: Đưa cà chua qua cảm biến và chụp ảnh
Hình 6 3: Thông tin quả cà chua 1 trên màn hình
Hình 6 4: Cần gạt đưa quả cà chua vào thùng số 1
Quả này nặng 57g, nhẹ hơn 60g nên được phân loại là quả chín nhẹ Khi quả đi qua cảm biến CB1, động cơ số 1 sẽ gạt quả xuống thùng chứa số 1, làm tăng số lượng quả chín nhẹ thêm 1.
Hình 6 5: Thông tin quả cà chua 2 trên màn hình
Quả chín nặng 76g, vượt quá khối lượng cài đặt 60g, được phân loại là quả chín nặng Khi quả đi qua cảm biến CB2, động cơ sẽ gạt số 2, đưa quả xuống máng phân loại, đồng thời tăng số lượng quả chín nặng thêm 1.
Hình 6 6: Cần gạt đưa quả cà chua vào thùng số 2 Đưa quả xanh lên băng tải Phân tích màu sắc tại buồng chụp
Hình 6 7: Quả cà chua đi qua cảm biến trên băng tải
Hình 6 8: Thông tin quả cà chua xanh trên màn hình
Quả xanh được đưa xuống cuối băng tải đi qua cảm biến CB3 và rơi xuống thùng chứa số 3, số lượng quả xanh được đếm lên 1
Hình 6 9: Quả cà chua xanh được đưa xuống thùng số 3
Kết quả và đánh giá quá trình chạy thử nghiệm trên mô hình thật:
+ Các cảm biến hồng ngoại hoạt động tốt
+ Thuật toán điều khiển chạy đúng theo yêu cầu đặt ra
+ Độ nhạy của hệ thống tốt, ngay lập tức thực hiện các lệnh khi có tín hiệu đầu vào
+ Làm việc ổn định, đạt đầy đủ các yêu cầu đề ra
Nhóm nghiên cứu đã thành công trong việc thiết kế hệ thống phân loại cà chua theo màu sắc và khối lượng, góp phần nâng cao kiến thức về ứng dụng cơ khí, điện tử và tin học Kết quả nghiên cứu có thể làm tài liệu tham khảo cho các nghiên cứu tiếp theo trong lĩnh vực phân loại sản phẩm Hệ thống này cũng có thể được sử dụng trong đào tạo sinh viên, giúp họ hiểu rõ hơn về hoạt động của hệ thống cơ điện tử Trong công nghiệp, hệ thống phân loại cà chua giúp tăng hiệu suất và độ chính xác, tiết kiệm thời gian, giảm lỗi phân loại và nâng cao chất lượng sản phẩm Đề tài còn áp dụng công nghệ IoT để điều khiển và giám sát hệ thống từ xa, mang lại sự linh hoạt và tiện lợi trong quản lý, đồng thời tăng cường tự động hóa trong quy trình sản xuất.
Tăng tốc độ xử lý: Mục tiêu là cải thiện tốc độ xử lý của hệ thống để tăng năng suất sản xuất
Xây dựng một hệ thống hoàn thiện cho nhà máy sản xuất cà chua bằng cách nghiên cứu và phát triển kết cấu cơ khí, mạch điều khiển và động cơ Đồng thời, áp dụng công nghệ IoT để nâng cao tính linh hoạt và khả năng giám sát từ xa của hệ thống.
❖ Kết luận và đề nghị
Sau một thời gian nghiên cứu và tìm hiểu về đề tài "Thiết kế và chế tạo băng tải phân loại cà chua theo màu sắc và khối lượng", nhóm chúng em đã hoàn thành dự án Trong quá trình thực hiện, chúng em đã tích cực làm việc và áp dụng kiến thức từ các môn học liên quan.
+ Trang bị thêm kiến thức về phân loại cà chua, ứng dụng của xử lý ảnh trong bài toán phân loại sản phẩm
+ Tìm hiểu về Arduino và cách lập trình Arduino trong một ứng dụng thực tế
+ Tìm hiểu về máy tính nhúng Raspberry
+ Biết được cách sử dụng các thiết bị trong một đề tài phân loại sản phẩm
Trong khoảng thời gian thực hiện đề tài có một số nội dung em chưa thể tối ưu do nhiều lí do khác nhau
Mặc dù mô hình đã hoàn thiện, vẫn còn nhiều sai sót cần khắc phục Chúng em rất mong nhận được sự hướng dẫn và nhận xét từ thầy/cô để tiến xa hơn, không chỉ dừng lại ở đồ án tốt nghiệp mà còn phát triển trong tương lai.
Trong quá trình hoàn thiện mô hình cho Đồ án tốt nghiệp, chúng em sẽ tập trung vào việc nâng cao khả năng điều khiển và tính đồng bộ giữa các linh kiện Việc hoàn thiện không chỉ dừng lại ở phần điều khiển mà còn bao gồm cả thiết kế, nhằm đảm bảo tính hiệu quả và tối ưu cho toàn bộ hệ thống.
[1] Tống Văn On, Hoàng Đức Hải - Họ vi điều khiển 8051 - NXBLao động- Xã hội; Xuất bản năm 2009
[2] TS Nguyễn Tất Bảo Thiện, KS Phạm Quang Huy - Lập trình hệ thống nhúng với Raspberry – NXB Thanh niên
[3] Hoàng Trang, Bùi Quốc Bảo - Lập trình hệ thống nhúng - NXB Đại học quốc gia TP
[4] Huỳnh Đắc Thắng - Kỹ thuật số thực hành - NXB KH-KT; Hà Nội 2006
[5] Phan Minh Thanh, Hồ Viết Bình – Giáo trình Công nghệ chế tạo máy – NXB Đại học quốc gia TP HCM 2013
[6] Th.S Nguyễn Trần Minh Nguyệt, KS Phạm Quang Huy - Xử lý ảnh với Arduino và Raspberry - NXB Thanh niên; TP HCM 30-5-2020
[7] Nguyễn Hồng Thái – Giáo trình SolidWorks
[8] Trường Kỹ Thuật Công Nghiệp Việt Nam-Hàn Quốc - Cảm biến III – NXB Lao Động-
[9] TS Trần Minh Sơn, TS Lê Hoàng Minh, KS Phạm Quang Huy – Lập trình Arduino với IOT Hệ vạn vật kết nối – NXB Thanh niên
[10] TS Quách Thanh Hải, Th.S Lê Nguyễn Hồng Phong, KS Phạm Quang Huy – Giáo trình điện tử công suất Mạch biến đổi điện áp – NXB Thanh niên
[11] Nguyễn Đình Phú, Phạm Ngọc Anh – Giáo trình Vi xử lý – NXB Đại học quốc gia
[12] PGS.TS Nguyễn Ngọc Phương, PGS.TS Nguyễn Trường Thịnh – Sổ tay hệ thống Cơ điện tử - NXB Đại học quốc gia TP HCM 2016
Lê Thanh Đạo, Huỳnh Thị Thu Hiền và Phạm Quang Huy đã biên soạn cuốn sách "Vẽ, Mô phỏng, Lập trình vi xử lý và vi điều khiển với Proteus", xuất bản bởi NXB Đại học quốc gia TP HCM vào năm 2019 Cuốn sách cung cấp kiến thức sâu rộng về việc sử dụng phần mềm Proteus trong việc thiết kế và mô phỏng các mạch điện tử, cũng như lập trình cho vi xử lý và vi điều khiển Đây là tài liệu hữu ích cho sinh viên và những người đam mê công nghệ điện tử, giúp nâng cao kỹ năng thực hành và lý thuyết trong lĩnh vực này.
PHỤ LỤC I Code lập trình Arduino
HX711 scale(A1, A0); float hieuchinh = 1; float zero; float cannang; int m = 0, m_set = 0;
String dataa = ""; char mang[30]; char *token1, *token2, *token3, *token4; int loai = 0, st = 0, i = 0; int cng = 0, cnh = 0, xanh = 0, runn = 0;
To set up the system, initialize the input pins for four buttons (CB1 to CB4) with pull-up resistors and configure two output pins (L1 and L2) to low Calibrate the scale with a specific scale factor of 1771.01f and perform a tare operation to zero the scale Calculate the weight by adjusting the raw reading with a correction factor, and convert it to an integer Attach two servos to pins 9 and 8, and set their positions based on a variable 'thu' Finally, display the data through the GUI.
*******************// void serialEvent() { while (Serial.available()) { dataa = Serial.readStringUntil('\n'); dataa.toCharArray(mang, 20); token1 = strtok(mang, "|"); token2 = strtok(NULL, "|");
String st2(token2); if (st1 == "a") st = st2.toInt(); else if (st1 == "b") m_set = st2.toInt(); else if (st1 == "c") loai = st2.toInt();
*******************// void Auto() { if (st == 1) { digitalWrite(L2, HIGH); if (digitalRead(CB1) == 0) { delay(400); digitalWrite(L2, LOW); delay(1000); runn = 1; gui_du_lieu(); doc(6);
76 delay(1000); runn = 0; gui_du_lieu(); while (digitalRead(CB1) == 0) { digitalWrite(L2, HIGH); delay(200);
} if (loai == 0) { if (m < m_set) { if (digitalRead(CB2) == 0) { servo1.write(gat); delay(5000); servo1.write(thu); cnh++; delay(200); gui_du_lieu();
} else { if (digitalRead(CB3) == 0) { servo2.write(gat); delay(5000); servo2.write(thu); cng++; delay(200);
} else { if (digitalRead(CB3) == 0) { while (digitalRead(CB3) == 0) { delay(500);
} else { digitalWrite(L2, LOW); doc(1); gui_du_lieu(); delay(200);
*******************// void doc(int lan) { for (i = 0; i < lan; i++) { cannang = scale.get_units(1) - zero;
Code lập trình Raspberry from PyQt5 import QtWidgets,uic from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel,
QVBoxLayout from PyQt5 import QtCore from PyQt5.QtGui import QIcon, QPixmap, QFont from PyQt5.QtCore import QTimer, QTime, Qt
This article discusses the integration of various Python libraries for developing a computer vision application using PyQt5 It highlights the use of libraries such as OpenCV for image processing, NumPy for numerical operations, and imutils for video stream handling Additionally, it covers the importance of modules like PIL for image manipulation and serial for communication with external devices The content emphasizes the significance of importing necessary components from PyQt5 for creating a user-friendly interface, as well as the use of datetime for time-related functionalities in the application.
# - ser = serial.Serial('/dev/ttyUSB0',9600)
#ser = serial.Serial('COM1',baudrate = 9600, timeout = 1) print(ser.name) vs = VideoStream(src=0).start() cp = 0 m_save = 0; m = 0; cng = 0; cnh = 0; xanh = 0; mang = []*10
The function `Time()` initializes several global variables, including `status_str`, `temp_str`, `temp`, `status`, and various measurement variables like `m`, `cng`, `cnh`, and `xanh` It retrieves the current slider value through `call.Slider.value()` and updates the corresponding labels to display the values of `m_set`, `m`, `cng`, `cnh`, and `xanh` in grams.
# Đọc ảnh từ camera frame = vs.read() frame = cv2.flip(frame,1)
# chỉnh kích thước ảnh để tăng tốc độ xử lý frame = imutils.resize(frame, width`0)
To display images on a label in sequence, similar to a video, convert the frame into a QImage using the specified dimensions and format Then, create a QPixmap from the QImage and set it on the label using `call.lb_im.setPixmap(pix)` This process is initiated when the state variable `st` equals zero.
81 call.STASTO.setStyleSheet("background-color: rgb(255, 0, 0)") elif st == 1: call.STASTO.setStyleSheet("background-color: rgb(85, 255, 0)")
To receive data, check if the serial input is available; if so, read a line from the serial port Decode the data and remove any trailing newline characters Display the decoded data on the screen and split it by the "|" delimiter Assign the first element to variable 'm' and convert subsequent elements into integers: 'cng', 'cnh', 'xanh', and 'runn' If 'runn' equals 1, proceed with the next steps.
To process the image, first, read it using OpenCV and define a region of interest by slicing the frame Next, specify the minimum and maximum color thresholds to create a mask that isolates specific colors in the image Apply a binary inverse threshold to the mask to enhance the contrast, and then use a bitwise AND operation to extract the desired features from the original image Finally, convert the processed image into a QImage format for further use or display.
82 pix2 = QPixmap.fromImage(img2) call.lb_im_2.setPixmap(pix2) dem = 0
'''for y in range(0,343): for x in range(0,429): px = final[y][x]
R = R + px[2] if px[0] != 0 or px[1] != 0 or px[2] != 0: dem = dem + 1'''
#3print ("dem = ",dem) x = 0 y = 0 for i in range(0,5780): px = final[y][x]
R = R + px[2] if px[0] != 0 or px[1] != 0 or px[2] != 0: dem = dem + 1 if x < 425: x = x + 5 else :
TB = R/dem if TB > 100: loai = 0 else : loai = 1
# - runn = 0 ser.write(b'c') ser.write(b'|'); ser.write(str(loai).encode()) ser.write(b'\r\n') if loai == 0: call.lb_mau.setText("QUẢ CHÍN") else: call.lb_mau.setText("QUẢ XANH")
# -# def thoat(): call.close() exit(app.exec())
84 ser.write(b'|') ser.write(str(m_set).encode()) ser.write(b'\r\n') ser.flush()
# -# def stasto(): global st st = st + 1 if st >= 2: st = 0 ser.write(b'a') ser.write(b'|') ser.write(str(st).encode()) ser.write(b'\r\n') ser.flush()
# -# def doc_mau(): global loai loai = 1
# -# app=QtWidgets.QApplication([]) call=uic.loadUi("AUTO.ui") call.THOAT.clicked.connect(thoat) call.DAT.clicked.connect(dat) call.STASTO.clicked.connect(stasto)
85 call.timer = QTimer() call.timer.timeout.connect(Time) call.timer.start(50) call.show() app.exec()
PHỤ LỤC II Bảng tra hệ số ma sát
Thư viện dùng cho Động cơ Servo MG996R
Servo myservo; // create servo object to control a servo void setup() { myservo.attach(9,600,2300); // (pin, min, max)
} void loop() { myservo.write(0); // tell servo to go to a particular angle delay(1000); myservo.write(90); delay(500); myservo.write(135); delay(500); myservo.write(180); delay(1500);