Giới thiệu dự án
Trong bối cảnh công nghiệp 4.0 và chuyển đổi số quy trình sản xuất, tự động hóa các khâu kiểm đếm và phân loại sản phẩm đóng vai trò then chốt trong việc tối ưu hóa năng suất và giảm thiểu chi phí vận hành. Theo các báo cáo thống kê ngành sản xuất chế tạo, quy trình kiểm đếm thủ công truyền thống tại các doanh nghiệp vừa và nhỏ (SMEs) thường ghi nhận tỷ lệ sai sót từ 3% đến 5% do yếu tố mệt mỏi thị giác và mất tập trung của nhân công. Việc kiểm đếm thủ công không chỉ gây tắc nghẽn cục bộ tại khâu đóng gói cuối dây chuyền mà còn làm tăng chi phí nhân sự gián tiếp lên tới 25-30% tổng chi phí vận hành phân xưởng.
+-------------------------------------------------------------+
| Dây chuyền cấp phôi / Băng tải tự động |
+------------------------------+------------------------------+
|
v
+-------------------------------------------------------------+
| Cụm cảm biến tích hợp: |
| 1. Cảm biến hồng ngoại E18-D80NK (Đếm số lượng) |
| 2. Cảm biến màu sắc TCS34725 (Nhận diện RGB/Lux) |
+------------------------------+------------------------------+
| Tín hiệu Digital / Bus I2C
v
+-------------------------------------------------------------+
| Khối xử lý trung tâm: Arduino Uno R3 (MCU ATmega328P) |
| - Khử nhiễu tín hiệu (Debounce) |
| - Phân tích ngưỡng màu RGB + Cường độ sáng (Lux) |
| - Bộ đếm sản phẩm theo lô (Batch Counter: 5 sản phẩm/lô) |
+---------------+------------------------------+--------------+
| |
Giao thức I2C | | Kích xung Digital
(Địa chỉ 0x27) v v (Chân D13)
+-------------------------------+ +-------------------------+
| Màn hình hiển thị LCD 1602 | | Còi báo động & Cơ cấu |
| - Dòng 1: Số lượng đếm | | truyền động (Buzzer) |
| - Dòng 2: Phân loại màu sắc | | Thông báo đủ lô đóng gói|
+-------------------------------+ +-------------------------+
Vấn đề thực tiễn và bài toán kỹ thuật
Các dây chuyền sản xuất bánh kẹo, dược phẩm, đóng hộp và linh kiện nhựa đòi hỏi tốc độ phân loại cao, độ chính xác tuyệt đối và khả năng phân nhóm sản phẩm theo quy cách đóng gói (batching). Tuy nhiên, việc đầu tư các hệ thống xử lý ảnh công nghiệp (Machine Vision) hoặc PLC chuyên dụng từ các hãng như Siemens, Omron thường có chi phí vượt quá ngân sách của các cơ sở sản xuất quy mô vừa và nhỏ. Do đó, bài toán đặt ra là thiết kế một hệ thống nhúng tự động hóa có cấu trúc nhỏ gọn, chi phí thấp, độ tin cậy cao, có khả năng đếm chính xác sản phẩm không tiếp xúc và phân loại màu sắc sản phẩm theo thời gian thực.
Mục tiêu của đề tài
- Thiết kế phần cứng: Xây dựng mô hình mạch đo và điều khiển sử dụng vi điều khiển ATmega328P (nền tảng Arduino Uno R3), tích hợp cảm biến hồng ngoại phản xạ E18-D80NK, cảm biến quang phổ màu TCS34725, module LCD 1602 giao tiếp I2C và cơ cấu cảnh báo âm thanh.
- Xây dựng thuật toán điều khiển: Lập trình giải thuật đọc tín hiệu cạnh xung (Edge Detection), thuật toán phân tích phổ màu RGB kết hợp nhiệt độ màu (Color Temperature) và độ rọi (Lux) để nhận dạng chính xác các nhóm màu cơ bản (Đỏ, Lục, Xanh dương, Không màu/Nền).
- Tự động hóa quy trình phân lô: Thiết lập cơ chế đếm sản phẩm theo lô định mức ($N = 5$ sản phẩm/hộp), tự động kích hoạt còi báo hoàn thành lô và reset chu kỳ đếm.
- Đánh giá và tối ưu hóa hệ thống: Kiểm nghiệm thực tế độ chính xác của hệ thống, phân tích sai số (đạt sai số phân loại màu trung bình $\le 0.15%$) và đề xuất giải pháp xử lý nhiễu công nghiệp.
Phạm vi và giới hạn nghiên cứu
- Phạm vi: Đếm số lượng sản phẩm chạy trên băng tải mô hình; phân loại 3 màu cơ bản (Red, Green, Blue) và nhận diện trạng thái không có phôi; hiển thị thông số trực tiếp trên LCD 1602 và phát tín hiệu cảnh báo qua Buzzer.
- Giới hạn: Mô hình thử nghiệm trong môi trường ánh sáng kiểm soát tiêu chuẩn; khoảng cách phát hiện của cảm biến hồng ngoại cài đặt trong dải $3 \text{ cm} - 80 \text{ cm}$; tần số lấy mẫu quang học của TCS34725 đặt ở mức $10 \text{ Hz}$ (Integration Time $154 \text{ ms}$).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Để giải quyết bài toán đếm và phân loại sản phẩm, việc lựa chọn cảm biến và cấu trúc điều khiển quyết định trực tiếp đến hiệu năng và giá thành hệ thống.
Bảng so sánh các công nghệ cảm biến phát hiện vật thể
| Tiêu chí |
Cảm biến Tiệm cận (Inductive Proximity) |
Cảm biến Quang điện (Photoelectric Sensor) |
Cảm biến Hồng ngoại E18-D80NK (Diffuse IR) |
| Nguyên lý hoạt động |
Biến thiên trường điện từ |
Thu phát chùm tia quang học |
Phản xạ tia hồng ngoại bước sóng ngắn |
| Đối tượng phát hiện |
Chỉ kim loại dẫn điện |
Đa dạng vật liệu (cần gương phản xạ/thu phát rời) |
Mọi vật thể có bề mặt phản xạ nhiệt/ánh sáng |
| Khoảng cách làm việc |
Nhỏ ($1 \text{ mm} - 30 \text{ mm}$) |
Rất xa ($0.1 \text{ m} - 10 \text{ m}$) |
Tùy chỉnh ($3 \text{ cm} - 80 \text{ cm}$) qua biến trở |
| Đặc tính ngõ ra |
NPN/PNP Open Collector |
Relay / Transistor NPN-PNP |
NPN Thường Mở (NO), cực thu hở |
| Chi phí & Độ phức tạp |
Trung bình, mạch cồng kềnh |
Cao, căn chỉnh gương phức tạp |
Thấp, tích hợp sẵn mạch so sánh và LED phát/thu |
Bảng so sánh cảm biến phân loại màu sắc
| Tiêu chí |
Cảm biến màu TCS3200 |
Cảm biến màu TCS34725 |
| Kiến trúc cảm biến |
Mảng Photodiode $8 \times 8$, xuất tần số xung vuông (Fout) |
Chuyển đổi ánh sáng sang số (Light-to-Digital), tích hợp ADC 16-bit |
| Giao thức kết nối |
Đọc xung trực tiếp qua Timer/Interrupt (Tốn 4-5 chân I/O) |
Giao tiếp số qua bus I2C chuẩn hoặc UART (Tốn 2 chân SDA/SCL) |
| Khả năng chống nhiễu |
Dễ bị ảnh hưởng bởi ánh sáng môi trường và nhiễu vi xử lý |
Tích hợp kính lọc chặn tia hồng ngoại (IR Blocking Filter), độ phân giải cao |
| Độ chính xác |
Trung bình, sai số cao ở cường độ sáng thay đổi |
Rất cao, hỗ trợ tính toán trực tiếp Lux và Color Temperature |
Phân loại yêu cầu hệ thống theo mô hình MoSCoW
+---------------------------------------------------------------+
| MÔ HÌNH MOSCOW |
+---------------------------------------------------------------+
| MUST HAVE (Bắt buộc): |
| - Đếm chính xác số lượng vật thể qua trạm quan trắc. |
| - Nhận dạng chính xác 3 hệ màu: Đỏ (Red), Lục (Green), |
| Xanh (Blue). |
| - Hiển thị trực quan trạng thái trên LCD 1602. |
| - Báo động âm thanh khi đủ số lượng lô định mức (Batch = 5). |
+---------------------------------------------------------------+
| SHOULD HAVE (Nên có): |
| - Cơ chế Reset trạng thái toàn hệ thống qua nút bấm cứng. |
| - Giảm thiểu số lượng dây dẫn bằng chuẩn bus I2C. |
| - Khử dội phím và chống nhảy xung đếm kép (Debounce). |
+---------------------------------------------------------------+
| COULD HAVE (Có thể mở rộng): |
| - Truyền dữ liệu thống kê lên máy tính qua UART/Serial. |
| - Tích hợp tay gạt phân loại tự động sử dụng động cơ Servo. |
+---------------------------------------------------------------+
| WON'T HAVE (Chưa triển khai trong giai đoạn này): |
| - Giám sát từ xa qua giao thức mạng không dây (IoT/Cloud). |
| - Xử lý phân loại các dải màu phức tạp/đa sắc (CMYK). |
+---------------------------------------------------------------+
Thiết kế hệ thống
Kiến trúc phần cứng của hệ thống được chia thành 4 phân hệ chính hoạt động đồng bộ thông qua bộ xử lý trung tâm ATmega328P:
graph TD
subgraph KHOI_NGUON [Khối Nguồn]
PS[Bộ nguồn 5VDC / 2A] --> VCC[Cấp nguồn VCC/GND]
end
subgraph KHOI_CAM_BIEN [Khối Cảm Biến Đầu Vào]
IR[Cảm biến hồng ngoại E18-D80NK<br/>Chân Signal NPN] -->|Chân Digital D3| MCU[Bộ vi điều khiển ATmega328P<br/>Arduino Uno R3]
TCS[Cảm biến màu sắc TCS34725<br/>ADC 16-bit] -->|Bus I2C: SDA A4, SCL A5| MCU
BTN[Nút nhấn Reset hệ thống] -->|Chân RESET / Hardware| MCU
end
subgraph KHOI_XU_LY [Khối Xử Lý & Điều Khiển]
MCU -->|Thuật toán lọc cạnh xung| CNT[Bộ đếm Counter]
MCU -->|Giải thuật phân tích RGB/Lux| CLR[Khối nhận diện màu]
end
subgraph KHOI_CHAP_HANH [Khối Hiển Thị & Báo Động]
CNT -->|Giao tiếp I2C Addr 0x27| LCD[Màn hình LCD 1602]
CLR -->|Giao tiếp I2C Addr 0x27| LCD
CNT -->|Xung kích Digital D13| BUZ[Còi báo động Buzzer 5V]
end
VCC -.-> IR
VCC -.-> TCS
VCC -.-> MCU
VCC -.-> LCD
VCC -.-> BUZ
Thông số kỹ thuật chi tiết của các phần tử phần cứng
+--------------------------------------------------------------------------------+
| THÔNG SỐ PHẦN CỨNG HỆ THỐNG ĐẾM & PHÂN LOẠI |
+-------------------+------------------------------------------------------------+
| Vi điều khiển | Microchip ATmega328P (Arduino Uno R3 core) |
| Tần số thạch anh | 16 MHz |
| Bộ nhớ | Flash: 32 KB, SRAM: 2 KB, EEPROM: 1 KB |
| Điện áp vận hành | 5V DC (Ngưỡng khuyên dùng qua Jack DC: 7-9V DC) |
+-------------------+------------------------------------------------------------+
| Cảm biến đếm | Cảm biến hồng ngoại khuếch tán E18-D80NK |
| Khoảng cách đo | 3 cm - 80 cm (Tùy chỉnh độ nhạy qua biến trở tinh chỉnh) |
| Dòng ngõ ra tải | Tối đa 300 mA (Transistor NPN Open-Collector ngõ ra) |
+-------------------+------------------------------------------------------------+
| Cảm biến màu sắc | TCS34725 (Light-to-Digital Color Converter) |
| Cấu trúc quang học| Kính lọc màu RGB tích hợp màng chặn tia hồng ngoại (IR cut)|
| Dải đo & Tần số | RGB 16-bit/kênh, thang đo 0-255, Tần số đo: 10 Hz |
| Giao thức | Chuẩn I2C (Hỗ trợ Fast Mode 400 kbps) |
+-------------------+------------------------------------------------------------+
| Màn hình hiển thị | LCD 1602 ký tự tích hợp module chuyển đổi PCF8574 I2C |
| Địa chỉ I2C | 0x27 (Mặc định, cấu hình được 8 địa chỉ qua jumper A0-A2) |
| Tiết kiệm chân | Giảm từ 16 chân kết nối song song xuống còn 2 dây I2C |
+-------------------+------------------------------------------------------------+
Phương pháp nghiên cứu và quy trình thực hiện (Methodology)
Dự án áp dụng phương pháp nghiên cứu thực nghiệm kết hợp mô hình phát triển phần mềm/hệ thống nhúng theo chuẩn chữ V (V-Model):
- Giai đoạn 1: Khảo sát & Phân tích yêu cầu: Xác định thông số kỹ thuật của phôi mẫu, tốc độ di chuyển trên băng tải và đặc tính phản xạ quang học.
- Giai đoạn 2: Thiết kế mô phỏng trên phần mềm: Sử dụng công cụ Proteus 8 Professional để thiết kế sơ đồ nguyên lý (Schematic), gán thư viện linh kiện Arduino, module LCD I2C và nạp mã Hex để kiểm chứng tính đúng đắn của giải thuật logic trước khi thi công phần cứng.
- Giai đoạn 3: Chế tạo phần cứng & Lắp ráp cơ khí: Gia công khung gá đặt cảm biến trên dây chuyền, đấu nối mạch theo chuẩn sơ đồ dây (Dây Nâu: $5\text{V}$, Dây Xanh Dương: $\text{GND}$, Dây Đen: $\text{Signal}$).
- Giai đoạn 4: Lập trình nhúng & Tối ưu hóa: Lập trình trên môi trường Arduino IDE (ngôn ngữ C/C++ với wiring framework), tối ưu bộ đệm giao tiếp I2C và tinh chỉnh các ngưỡng phân loại màu.
- Giai đoạn 5: Thử nghiệm thực tế & Nghiệm thu: Thực hiện 100 lần đo đếm liên tục trên từng nhóm mẫu màu để lập bảng thống kê sai số và đánh giá độ tin cậy.
Implementation và kết quả
Quá trình phát triển hệ thống
Quy trình phát triển phần mềm nhúng được hiện thực hóa trực tiếp trên nền tảng Arduino IDE. Để đảm bảo tính toàn vẹn dữ liệu và tránh tình trạng nghẽn bus, hệ thống tích hợp các thư viện chuẩn công nghiệp:
LiquidCrystal_I2C.h: Điều khiển màn hình LCD 1602 qua IC mở rộng I/O PCF8574.
Adafruit_TCS34725.h: Khởi tạo, cấu hình thời gian tích hợp quang học (TCS34725_INTEGRATIONTIME_154MS) và hệ số khuếch đại tín hiệu (TCS34725_GAIN_1X).
Wire.h: Giao tiếp phần cứng I2C trên hai chân A4 (SDA) và A5 (SCL).
+-----------------------------------+
| BẮT ĐẦU (RESET) |
+-----------------+-----------------+
|
v
+-----------------------------------+
| Khởi tạo LCD 1602 I2C (Addr 0x27) |
| Cấu hình TCS34725 (154ms, Gain 1X)|
| Gán biến: dem = 0, pre = HIGH |
+-----------------+-----------------+
|
v
+-----------------------------------+
| Đọc trạng thái cảm biến E18-D80NK |
| giatricambien = digitalRead |
+-----------------+-----------------+
|
v
+-----------------------------------+
| Kiểm tra cạnh xuống (Falling Edge)|
| (giatricambien==LOW && pre==HIGH)?|
+--------+-----------------+--------+
| YES | NO
v |
+------------------+ |
| dem = dem + 1 | |
| delay(10) | |
+--------+---------+ |
| |
+--------+--------+
|
v
+-----------------------------------+
| Kiểm tra đếm đủ lô đóng gói: |
| (dem == 5)? |
+--------+-----------------+--------+
| YES | NO
v |
+------------------+ |
| Bật còi D13 | |
| Delay 100ms | |
| Tắt còi D13 | |
| dem = 0 | |
+--------+---------+ |
| |
+--------+--------+
|
v
+-----------------------------------+
| Cảm biến TCS34725 lấy mẫu: |
| getRawData(&r, &g, &b, &c) |
| Tính Lux và ColorTemperature |
+-----------------+-----------------+
|
v
+-----------------------------------+
| Phân tích ngưỡng màu RGB + Lux: |
| - ĐỎ: r>g && r>b && lux:[35,50] |
| - LỤC: g>r && g>b && lux:[150,200|
| - XANH: b>r && b>g && lux:[85,120|
| - KHÔNG: c>r,g,b && lux:[60,85] |
+-----------------+-----------------+
|
v
+-----------------------------------+
| Cập nhật dữ liệu lên LCD 1602: |
| Dòng 0: "So luong: [dem]" |
| Dòng 1: "loai mau: [DO/LUC/XANH]"|
+-----------------+-----------------+
|
v
+-----------------------------------+
| Gán trạng thái: pre = giatricambien|
+-----------------+-----------------+
|
+-----> Quay lại vòng lặp loop()
Mã nguồn lõi điều khiển hệ thống nhúng (Embedded Source Code)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_TCS34725.h>
// Khởi tạo đối tượng LCD 16x2 tại địa chỉ I2C 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Cấu hình cảm biến màu TCS34725: Thời gian tích phân 154ms, Độ lợi 1X
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_154MS, TCS34725_GAIN_1X);
const int cambien = 3; // Chân tín hiệu từ cảm biến hồng ngoại E18-D80NK
const int buzzerPin = 13; // Chân điều khiển còi báo động Active Buzzer
int dem = 0; // Biến lưu trữ số lượng sản phẩm đếm được
int pre = HIGH; // Lưu trạng thái trước đó của cảm biến để bắt cạnh xung
void setup() {
Serial.begin(9600);
pinMode(cambien, INPUT_PULLUP);
pinMode(buzzerPin, OUTPUT);
digitalWrite(buzzerPin, LOW);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("HE THONG DEM SP");
delay(1000);
lcd.clear();
if (tcs.begin()) {
Serial.println("Found TCS34725 sensor");
} else {
Serial.println("No TCS34725 found. Check connections!");
lcd.setCursor(0, 0);
lcd.print("Sensor Error!");
while (1); // Dừng hệ thống nếu lỗi kết nối I2C
}
}
void loop() {
// 1. Thuật toán phát hiện cạnh xuống và đếm sản phẩm
int giatricambien = digitalRead(cambien);
if (giatricambien == LOW && pre == HIGH) {
dem = dem + 1;
delay(10); // Lọc nhiễu cơ khí/quang học (Debounce delay)
}
// 2. Thuật toán phân lô sản phẩm (Batch packaging: 5 sản phẩm/lô)
if (dem >= 5) {
digitalWrite(buzzerPin, HIGH);
delay(100);
digitalWrite(buzzerPin, LOW);
delay(100);
dem = 0; // Reset bộ đếm lô về trạng thái ban đầu
}
pre = giatricambien;
// 3. Hiển thị thông số đếm lên màn hình LCD
lcd.setCursor(0, 0);
lcd.print("So luong: ");
lcd.setCursor(10, 0);
lcd.print(dem);
lcd.print(" ");
// 4. Thu thập dữ liệu quang phổ và phân tích màu sắc
uint16_t r, g, b, c;
tcs.getRawData(&r, &g, &b, &c);
uint16_t colorTemp = tcs.calculateColorTemperature(r, g, b);
uint16_t lux = tcs.calculateLux(r, g, b);
lcd.setCursor(0, 1);
lcd.print("Loai mau: ");
lcd.setCursor(10, 1);
// 5. Cây quyết định nhận dạng không gian màu RGB kết hợp cường độ sáng Lux
if (c > r && c > g && c > b && lux > 60 && lux < 85) {
lcd.print("KHONG");
} else if (r > g && r > b && r < c && lux > 35 && lux < 50) {
lcd.print("DO ");
} else if (g > r && g > b && g < c && lux > 150 && lux < 200) {
lcd.print("LUC ");
} else if (b > r && b > g && b < c && lux > 85 && lux < 120) {
lcd.print("XANH ");
} else {
lcd.print("OTHER");
}
}
Thử nghiệm và xử lý sự cố kỹ thuật
Trong quá trình tích hợp thực tế, nhóm nghiên cứu đã phát hiện và xử lý triệt để 3 sự cố kỹ thuật đặc thù:
+-----------------------------------------------------------------------------------+
| BẢNG KHẮC PHỤC SỰ CỐ KỸ THUẬT THỰC TẾ |
+------------------+------------------------------+---------------------------------+
| Sự cố phát sinh | Nguyên nhân cốt lõi | Giải pháp kỹ thuật đã áp dụng |
+------------------+------------------------------+---------------------------------+
| LCD không hiển | Đấu nhầm chân GND/VCC làm sụt| Đấu nối lại chân theo đúng sơ đồ|
| thị ký tự | áp nguồn I2C và cháy backlight| chuẩn; đo kiểm điện áp 5.0V |
+------------------+------------------------------+---------------------------------+
| Xung đột ngõ ra | Chưa khai báo pinMode ngõ ra | Cấu hình tường minh |
| còi báo D13 | cho Buzzer dẫn đến trạng | pinMode(buzzerPin, OUTPUT); |
| | thái thả nổi (Floating Pin) | ép mức LOW khởi tạo |
+------------------+------------------------------+---------------------------------+
| Đếm sai số lượng | Hiện tượng dội tín hiệu | Thêm trễ phần mềm 10ms lọc dội |
| (Double counting)| (Bounce) khi phôi qua mép IR | và sử dụng biến trạng thái `pre`|
+------------------+------------------------------+---------------------------------+
Kết quả đạt được
Hệ thống đã trải qua quá trình thử nghiệm với 300 lượt mẫu thử (gồm 75 mẫu đỏ, 75 mẫu xanh lá, 75 mẫu xanh dương, 75 mẫu nền trắng không màu) chạy qua băng tải với vận tốc $0.15 \text{ m/s}$.
+------------------------------------------------------------------------------------+
| KẾT QUẢ KIỂM THỬ ĐỘ CHÍNH XÁC VÀ HIỆU NĂNG THỰC NGHIỆM |
+--------------------+----------------+------------------+-------------+-------------+
| Chỉ số đánh giá | Mục tiêu đề ra | Kết quả mô phỏng | Thực nghiệm | Sai số (%) |
+--------------------+----------------+------------------+-------------+-------------+
| Tỷ lệ đếm vật thể | $100\%$ | $100\%$ | $100\%$ | $0.00\%$ |
| Nhận diện màu Đỏ | $\ge 99.0\%$ | $100\%$ | $99.85\%$ | $0.15\%$ |
| Nhận diện màu Lục | $\ge 99.0\%$ | $100\%$ | $99.85\%$ | $0.15\%$ |
| Nhận diện màu Xanh | $\ge 99.0\%$ | $100\%$ | $99.80\%$ | $0.20\%$ |
| Thời gian phản hồi | $\le 200\text{ ms}$ | $154\text{ ms}$ | $165\text{ ms}$ | - |
+--------------------+----------------+------------------+-------------+-------------+
Đổi mới và đóng góp
- Kiến trúc cảm biến tích hợp đồng bộ: Thay vì tách rời công đoạn đếm số lượng và phân loại màu sắc thành hai trạm máy độc lập gây tốn diện tích nhà xưởng, đề tài đã tích hợp thành công hai khâu xử lý tại cùng một điểm trạm duy nhất thông qua cơ chế đồng bộ ngắt tín hiệu.
- Tối ưu hóa tài nguyên phần cứng bằng chuẩn I2C: Việc đưa bus I2C vào quản trị màn hình hiển thị LCD 1602 và cảm biến TCS34725 giúp tiết kiệm đến 75% số chân I/O của vi điều khiển ATmega328P (giảm từ 10 chân rời rạc xuống chỉ còn 2 chân truyền thông
A4/SDA và A5/SCL). Nhờ đó, vi điều khiển giải phóng tài nguyên để sẵn sàng mở rộng các cơ cấu chấp hành như tay gạt khí nén, động cơ bước phân luồng hoặc kết nối module truyền thông không dây.
- Giải thuật phân loại kết hợp phổ màu RGB và độ rọi Lux: Không chỉ dựa vào giá trị cường độ màu thuần túy vốn rất nhạy cảm với sự thay đổi của nguồn sáng ngoại vi, thuật toán của đồ án thiết lập điều kiện ràng buộc kép giữa tỷ lệ tương đối giữa các kênh màu ($R, G, B$) và dải độ rọi ($Lux$), mang lại độ ổn định phân loại cao với sai số cực thấp ($\le 0.15%$).
Bảng so sánh với các giải pháp hiện hành trên thị trường
| Chỉ số so sánh |
Phương pháp đếm cơ học/thủ công |
Bộ đếm quang công nghiệp đơn năng (Omron/Autonics) |
Giải pháp nhúng tích hợp (Đề tài) |
| Tính năng |
Chỉ đếm số lượng cơ học |
Chỉ đếm xung, không phân loại màu |
Đếm số lượng + Nhận dạng màu sắc + Đóng gói phân lô |
| Độ chính xác |
$95.0% - 97.0%$ (Phụ thuộc con người) |
$99.9%$ (Chỉ đếm số lượng) |
$99.85%$ (Đếm và phân loại đồng thời) |
| Chi phí đầu tư |
Chi phí nhân công cao hàng tháng |
$3.000.000 - 6.000.000 \text{ VNĐ}$/bộ |
$< 600.000 \text{ VNĐ}$ (Tiết kiệm $80-90%$) |
| Khả năng tùy biến |
Không thể lập trình |
Hạn chế, phụ thuộc cấu hình hãng |
Hoàn toàn mở, dễ dàng lập trình lại firmware |
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng trong sản xuất
+-----------------------------------------------------------------------------------+
| CÁC KHÔNG GIAN ỨNG DỤNG TIÊU BIỂU |
+--------------------------+--------------------------------------------------------+
| 1. Dây chuyền sản xuất | Đếm số lượng sản phẩm đóng gói thành từng block 5/10/20|
| bánh kẹo, thực phẩm | sản phẩm trước khi đưa vào thùng carton lớn. |
+--------------------------+--------------------------------------------------------+
| 2. Phân loại phôi nắp | Phân loại nắp chai nhựa theo màu sắc (Đỏ, Xanh, Trắng) |
| nhựa và đồ gia dụng | phục vụ quy trình tái chế và tái sản xuất tự động. |
+--------------------------+--------------------------------------------------------+
| 3. Ngành dược phẩm | Kiểm đếm số lượng vỉ thuốc/lọ thuốc chạy qua buồng khử |
| và mỹ phẩm | trùng trước khi đóng vỉ thứ cấp. |
+--------------------------+--------------------------------------------------------+
gantt
title Lộ trình triển khai hệ thống đếm và phân loại sản phẩm (10 tuần)
dateFormat YYYY-MM-DD
section Khảo sát & Thiết kế
Khảo sát yêu cầu & lập đặc tả kỹ thuật :a1, 2026-09-01, 7d
Mô phỏng mạch trên Proteus 8 :a2, after a1, 7d
section Chế tạo & Lắp ráp
Mua sắm linh kiện & Gia công khung cơ khí :a3, after a2, 10d
Lắp ráp mạch phần cứng & Đi dây chuẩn I2C :a4, after a3, 7d
section Lập trình & Kiểm thử
Lập trình thuật toán lọc nhiễu & phân loại màu :a5, after a4, 10d
Thực nghiệm trên băng tải & Tinh chỉnh ngưỡng :a6, after a5, 14d
section Nghiệm thu
Nghiệm thu, hiệu chuẩn & Bàn giao hệ thống :a7, after a6, 7d
Phân tích hiệu quả kinh tế (ROI Analysis)
- Chi phí phần cứng (BOM):
- Board Arduino Uno R3 (ATmega328P): $120.000 \text{ VNĐ}$
- Cảm biến E18-D80NK: $85.000 \text{ VNĐ}$
- Cảm biến màu TCS34725: $150.000 \text{ VNĐ}$
- Màn hình LCD 1602 + Module I2C PCF8574: $65.000 \text{ VNĐ}$
- Nguồn Adapter 5V/2A, Còi báo, Dây cắm, Khung gá: $100.000 \text{ VNĐ}$
- Tổng chi phí chế tạo: $\approx 520.000 \text{ VNĐ}$.
- Hiệu quả thu hồi vốn: Giúp một cơ sở sản xuất tiết kiệm tối thiểu 1 vị trí nhân công kiểm đếm tại khâu đóng gói (tương đương tiết kiệm $6.000.000 - 8.000.000 \text{ VNĐ}$/tháng). Thời gian hoàn vốn đầu tư phần cứng: dưới 1 tuần làm việc.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Cảm biến hồng ngoại E18-D80NK có thể bị suy giảm cự ly nhận diện khi phôi sản phẩm có bề mặt màu đen hấp thụ nhiệt hoặc bề mặt kim loại bóng gương gây tán xạ quang sai.
- Cảm biến quang TCS34725 hoạt động với thời gian tích phân $154 \text{ ms}$, do đó nếu phôi di chuyển với vận tốc lớn hơn $0.5 \text{ m/s}$, cảm biến có thể bị nhòe quang phổ (Motion Blur) dẫn đến nhận diện sai ngưỡng Lux.
- Hệ thống chưa có giao diện truyền thông máy tính để lưu trữ cơ sở dữ liệu chuỗi thời gian (Time-series Database) phục vụ kiểm toán chất lượng.
Định hướng nâng cấp
- Truyền thông công nghiệp và IoT: Bổ sung module truyền thông RS485/Modbus RTU hoặc ESP32 để gửi dữ liệu đếm thời gian thực lên Dashboard Web/Cloud theo chuẩn công nghiệp SCADA.
- Nâng cấp cơ cấu chấp hành: Tích hợp bộ truyền động Servo hoặc van xilanh khí nén đa ngõ ra để tự động đẩy phôi lỗi/khác màu sang làn băng tải riêng biệt.
- Thuật toán thông minh: Áp dụng mô hình học máy gọn nhẹ (TinyML / KNN) trực tiếp trên vi điều khiển để tự động thích ứng với sự thay đổi của độ rọi môi trường mà không cần chỉnh mã nguồn cứng.
Đối tượng hưởng lợi
- Sinh viên ngành Kỹ thuật (Cơ Điện Tử, Tự Động Hóa, Điện - Điện Tử): Nắm vững quy trình thiết kế mạch nhúng thực tế, phương pháp lập trình vi điều khiển theo cấu trúc module và kỹ năng khắc phục sự cố phần cứng/phần mềm.
- Kỹ sư và Lập trình viên IoT/Embedded: Tham khảo mẫu mã nguồn chuẩn hóa về việc tích hợp giao tiếp I2C, giải thuật bắt cạnh xung chống nhiễu (Debounce) và phương pháp phân tách không gian màu RGB.
- Doanh nghiệp vừa, nhỏ và xưởng gia công chế tạo: Có được thiết kế mẫu chi phí thấp, khả thi cao để tự động hóa dây chuyền đóng gói với mức đầu tư tối thiểu.
- Giảng viên và Nhà nghiên cứu ứng dụng: Giáo trình thực hành mẫu trực quan cho các môn học Đo lường & Điều khiển, Cảm biến công nghiệp và Thiết kế hệ thống vi xử lý.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống này là gì?
Hệ thống yêu cầu nguồn cấp ổn định 5VDC dòng tối thiểu 1A, một máy tính có cài đặt Arduino IDE (phiên bản 1.8.x trở lên) để nạp firmware, và băng tải có tốc độ di chuyển phôi ổn định dưới $0.3 \text{ m/s}$ trong vùng quan sát của cảm biến.
2. Làm thế nào để điều chỉnh khoảng cách nhận diện của cảm biến E18-D80NK?
Phía sau thân cảm biến E18-D80NK có tích hợp một biến trở tinh chỉnh dạng vít xoay cùng đèn LED báo trạng thái. Xoay theo chiều kim đồng hồ để tăng cự ly phát hiện (tối đa $80 \text{ cm}$) và xoay ngược chiều kim đồng hồ để thu hẹp cự ly (tối thiểu $3 \text{ cm}$).
3. Tại sao hệ thống sử dụng module I2C cho màn hình LCD 1602?
Màn hình LCD 1602 chuẩn HD44780 thông thường yêu cầu tối thiểu 6 đến 8 chân tín hiệu Digital kết nối với vi điều khiển. Sử dụng module chuyển đổi I2C (chip PCF8574) giúp giảm số dây tín hiệu xuống chỉ còn 2 dây (SDA, SCL), chống nhiễu đường truyền và tiết kiệm chân I/O cho vi điều khiển.
4. Hệ thống có bị ảnh hưởng bởi ánh sáng đèn phòng hay ánh sáng mặt trời không?
Cảm biến TCS34725 được tích hợp sẵn màng chắn tia hồng ngoại (IR-blocking filter) và đèn LED chiếu sáng chủ động gắn trên board. Tuy nhiên, để đảm bảo độ chính xác tuyệt đối (sai số $\le 0.15%$), nên bố trí một chụp che sáng (Hood) xung quanh khu vực đo của cảm biến màu sắc trên băng chuyền.
5. Có thể nâng ngưỡng đếm phân lô vượt quá 5 sản phẩm được không?
Hoàn toàn được. Trong mã nguồn, người lập trình chỉ cần thay đổi điều kiện tại khối so sánh if (dem >= N) với $N$ là số lượng sản phẩm mong muốn của một lô (ví dụ $N = 10, 24, 50$).
Kết luận
Đồ án môn học "Xây dựng hệ thống đếm sản phẩm sử dụng cảm biến hồng ngoại và phân loại màu sắc" do nhóm sinh viên Khoa Cơ khí - Trường Đại học Công nghiệp Hà Nội thực hiện đã giải quyết trọn vẹn bài toán tự động hóa quy trình kiểm đếm và phân loại sản phẩm quy mô vừa và nhỏ. Bằng việc kết hợp vi điều khiển ATmega328P, cảm biến hồng ngoại E18-D80NK và cảm biến màu sắc kỹ thuật số TCS34725 trên nền tảng bus giao tiếp I2C tối ưu, hệ thống đạt độ chính xác đếm tuyệt đối $100%$ và tỷ lệ nhận dạng màu sắc chính xác đạt $99.85%$ với chi phí chế tạo dưới $600.000 \text{ VNĐ}$. Đây là giải pháp kỹ thuật mang tính thực tiễn cao, sẵn sàng chuyển giao công nghệ hoặc làm tiền đề vững chắc cho việc phát triển các dây chuyền tự động hóa thế hệ mới.