Giới thiệu dự án

Trong kỷ nguyên Công nghiệp 4.0, tự động hóa đóng vai trò cốt lõi trong việc nâng cao năng suất và đảm bảo tính đồng nhất của sản phẩm cơ khí chính xác. Theo các báo cáo thống kê ngành sản xuất phụ trợ, tỷ lệ phế phẩm trong khâu sản xuất linh kiện ốc vít, bu lông, đai ốc (fasteners) dao động từ 2% đến 5%. Nếu phụ thuộc hoàn toàn vào kiểm tra thủ công, yếu tố mệt mỏi thị giác của công nhân có thể dẫn đến sai sót kiểm định lên tới 15-20%, gây lãng phí chi phí nhân công và ảnh hưởng trực tiếp đến uy tín thương hiệu.

+-----------------------------------------------------------------------------+
|                               HỆ THỐNG PHÂN LOẠI                            |
|                                                                             |
| +-------------------+      +-------------------+      +-------------------+ |
| | Cấp phôi tự động  | ---> | Băng tải & Camera | ---> | Cơ cấu phân loại  | |
| | (Phễu rung/trục)  |      | (Logitech C270)   |      | (Đĩa xoay, Servo) | |
| +-------------------+      +-------------------+      +-------------------+ |
|                                      |                          ^           |
|                                      v                          |           |
|                            +-------------------+                |           |
|                            | Máy tính (OpenCV) | --(UART/USB)---+           |
|                            | & STM32F103C8T6   |                            |
|                            +-------------------+                            |
+-----------------------------------------------------------------------------+

Vấn đề thực tế (Problem Statement)

Các dây chuyền phân loại cơ học truyền thống dựa vào thanh gạt hoặc khe trượt cơ khí thường bị kẹt phôi, không thể phát hiện các lỗi biên dạng tinh vi như lệch tâm lỗ ren, móp cạnh lục giác, hay sai lệch kích thước dưới 1 mm. Trong khi đó, các giải pháp thị giác máy công nghiệp chuyên dụng (Industrial Smart Camera từ Cognex, Keyence) có chi phí đầu tư rất lớn (từ 3.000 USD đến 8.000 USD/hệ thống), vượt quá khả năng tài chính của các xưởng sản xuất vừa và nhỏ (SME) cũng như các mô hình nghiên cứu đào tạo kỹ thuật.

Mục tiêu của dự án

  1. Thiết kế và chế tạo mô hình phần cứng cơ điện tử đồng bộ gồm: cơ cấu cấp phôi, băng tải dẫn hướng, buồng chụp ảnh cách ly ánh sáng nhiễu, đĩa phân loại xoay và cơ cấu chấp hành gạt sản phẩm.
  2. Xây dựng mạch điều khiển trung tâm sử dụng vi điều khiển 32-bit STM32F103C8T6 kết hợp module giám sát vị trí bằng Encoder quang 100 xung và cảm biến hồng ngoại E18-D80NK.
  3. Phát triển thuật toán xử lý ảnh số thời gian thực trên nền tảng C++ và thư viện thị giác máy tính mã nguồn mở OpenCV, tối ưu hóa bộ lọc làm mịn và thuật toán tách biên Canny Edge Detection.
  4. Xây dựng phần mềm giao diện người dùng trực quan (GUI) bằng Qt Creator, cho phép hiển thị luồng video trực tiếp, thống kê số lượng sản phẩm đạt/lỗi, và thiết lập ngưỡng sai số dung sai.
  5. Kiểm định độ chính xác phân loại đối với đai ốc lục giác tiêu chuẩn M10 (chiều dày 8 mm, khoảng cách giữa hai đỉnh đối diện $e = 18.9\text{ mm}$, khoảng cách giữa hai cạnh phẳng đối diện $s = 17\text{ mm}$).

Phương pháp tiếp cận và biện luận giải pháp

Dự án áp dụng kiến trúc phân tầng xử lý lai (Hybrid Architecture):

  • Tầng tính toán thị giác cấp cao (High-level Machine Vision): Giao cho máy tính cá nhân (PC/Laptop) đảm nhiệm thông qua Camera Logitech C270 kết nối USB. Việc xử lý trên PC tận dụng năng lực tính toán đa nhân x86_64, giúp thuật toán xử lý ảnh đạt tốc độ khung hình cao (30 fps) mà không gây nghẽn cổ chai tính toán.
  • Tầng điều khiển thời gian thực cấp thấp (Low-level Real-time Control): Vi điều khiển STM32F103C8T6 (lõi ARM Cortex-M3, xung nhịp 72 MHz) chịu trách nhiệm kích hoạt PWM cho động cơ giảm tốc GA25 12V, đọc tín hiệu phản hồi từ encoder, thu thập tín hiệu kích hoạt từ cảm biến hồng ngoại và điều khiển động cơ servo gạt phôi với độ trễ phản hồi mức mili-giây.
  • Giao thức liên kết: Sử dụng cầu chuyển đổi PL2303 USB-to-UART với chuẩn giao tiếp UART cấu hình tốc độ Baudrate 115200 bps, đảm bảo truyền nhận dữ liệu điều khiển hai chiều tin cậy, chống mất gói tin.

Kết quả kỳ vọng và chỉ số đo lường (Measurable Metrics)

  • Tốc độ xử lý ảnh trích xuất đặc trưng: $< 45\text{ ms/khung hình}$.
  • Độ chính xác nhận dạng và phân loại đai ốc chuẩn M10: $\ge 95%$.
  • Tần suất phân loại của hệ thống cơ điện tử: $25 - 35\text{ sản phẩm/phút}$.
  • Sai số đo đạc kích thước hình học (khoảng cách cạnh/đỉnh): $\le \pm 0.3\text{ mm}$.

Phạm vi và giới hạn (Scope & Limitations)

  • Đối tượng kiểm định: Đai ốc lục giác tiêu chuẩn M10 và các mẫu lỗi nhân tạo (đai ốc biến dạng móp méo, đai ốc M8/M12 sai kích thước, đai ốc lệch tâm lỗ).
  • Giới hạn phần cứng: Mô hình cơ khí quy mô phòng lab, sử dụng nguồn cấp một chiều 12VDC/5VDC/3.3VDC; camera thu nhận ảnh 2D từ góc chiếu trực giao bên trên (Top-down view), chưa kiểm tra khuyết tật bước ren bên trong theo chiều sâu 3D.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí Phân loại thủ công Cảm biến tiệm cận/Quang học Smart Camera Công nghiệp (Cognex/Keyence) Giải pháp Đề tài (STM32 + OpenCV + Qt)
Chi phí đầu tư Thấp ban đầu, cao dài hạn (nhân công) Thấp (~1-2 triệu VNĐ) Rất cao (70-150 triệu VNĐ) Tối ưu (~2.5 - 3.5 triệu VNĐ)
Khả năng phát hiện lỗi biên dạng Phụ thuộc mắt người, dễ sai sót Kém (chỉ nhận biết có/không hoặc chiều cao) Xuất sắc (2D/3D inspection) Rất tốt (kiểm tra kích thước, méo, lệch tâm)
Tốc độ đáp ứng Chậm (10-15 sp/phút) Nhanh (>60 sp/phút) Rất nhanh (>120 sp/phút) Trung bình - Khá (30-45 sp/phút)
Khả năng tùy biến Không Rất thấp (cố định phần cứng) Đóng gói bản quyền, khó can thiệp sâu Mã nguồn mở C++, dễ nâng cấp thuật toán

Ma trận ưu tiên yêu cầu hệ thống (MoSCoW)

  • Must have (Bắt buộc): Nhận diện chính xác kích thước đai ốc M10 ($s = 17\text{ mm}$, $e = 18.9\text{ mm}$); tự động loại bỏ sản phẩm lỗi bằng cơ cấu servo; giao diện Qt hiển thị camera trực tiếp.
  • Should have (Cần có): Bộ đếm số lượng đạt/lỗi theo thời gian thực; cơ chế điều tốc PWM cho băng tải và đĩa quay dựa trên tín hiệu encoder; lưu trữ ảnh chụp sản phẩm lỗi vào thư mục log.
  • Could have (Có thể có): Khả năng tự động cân chỉnh độ sáng bằng phần mềm kết hợp vòng đèn LED chuyên dụng.
  • Won't have (Chưa thực hiện đợt này): Tái tạo biên dạng ren 3D bằng cảm biến laser; kết nối không dây qua Wi-Fi/Cloud.

Thiết kế hệ thống

graph TD
    A[Nguồn cấp 220VAC] --> B[Bộ nguồn xung 12VDC / 5VDC]
    B --> C[Mạch nguồn hạ áp 3.3V AMS1117]
    
    subgraph Sensing and Edge Detection
        D[Logitech C270 720p] -->|USB UVC Stream| E[Máy tính PC - Qt Creator / OpenCV]
        F[Cảm biến hồng ngoại E18-D80NK] -->|Tín hiệu ngắt mức thấp| G[MCU STM32F103C8T6]
        H[Encoder quang 100 xung] -->|Kênh A/B TIM2 Encoder Mode| G
    end

    subgraph Decision and Control
        E -->|UART Frame Command| I[Cầu USB-UART PL2303]
        I -->|RX/TX USART1| G
        G -->|PWM Driver TIP122 / Relay| J[Động cơ cấp phôi GA25 12V]
        G -->|PWM Driver| K[Động cơ băng tải GA25 12V]
        G -->|PWM Channel TIM1| L[Servo SG90 / MG995 gạt phôi]
        G -->|GPIO Control| M[Vòng LED chiếu sáng tập trung]
    end

Technology Stack và phiên bản chi tiết

  • Vi điều khiển: STM32F103C8T6 (ARM Cortex-M3, 64KB Flash, 20KB SRAM, 72MHz Clock).
  • Thư viện vi điều khiển: STM32 Standard Peripheral Libraries (SPL) v3.5.0.
  • Môi trường phát triển nhúng: Keil µVision IDE v5.25.
  • Mạch nạp & Debug: ST-Link V2 (Giao thức SWD: SWDIO, SWCLK).
  • Nền tảng xử lý ảnh: OpenCV C++ v3.4.x / v4.x (tối ưu hóa chỉ thị SIMD SSE/AVX).
  • Framework giao diện: Qt Framework v5.12 LTS / Qt Creator v4.8.
  • Giao tiếp phần cứng: UART (115200 bps, 8 Data bits, No Parity, 1 Stop bit).

Thiết kế giao thức truyền thông UART (Protocol Frame)

Để chống nhiễu trên đường truyền công nghiệp, dữ liệu giữa PC và STM32 được đóng gói theo khung truyền chuẩn 5-byte:

$$\text{Khung dữ liệu: } [\text{START: 0xAA}] \mid [\text{CMD: 1 Byte}] \mid [\text{DATA: 1 Byte}] \mid [\text{CHECKSUM: 1 Byte}] \mid [\text{STOP: 0x55}]$$

  • START / STOP: Byte cố định phân tách gói dữ liệu.
  • CMD: Mã lệnh (0x01: Phát hiện vật; 0x02: Kết quả Pass; 0x03: Kết quả Reject; 0x04: Khởi động/Dừng hệ thống).
  • DATA: Thông số bổ trợ (ví dụ: góc quay servo hoặc mã phân loại).
  • CHECKSUM: Tính bằng $(\text{CMD} \oplus \text{DATA})$ để kiểm tra tính toàn vẹn gói tin.

Phương pháp luận (Methodology)

Dự án áp dụng mô hình V-Model (Verification and Validation) kết hợp các pha phát triển lặp ngắn:

[Phân tích yêu cầu] ------------------------------> [Kiểm thử tích hợp hệ thống]
       \                                                   /
   [Thiết kế mạch & giải thuật] ------------> [Kiểm thử thuật toán & PCB]
             \                                     /
         [Thi công cơ khí & Code nhúng] -> [Kiểm thử đơn vị]
  • Tiến độ thực hiện (15 tuần):
    • Tuần 1 - 3: Khảo sát lý thuyết xử lý ảnh, cấu hình ngoại vi STM32, chốt yêu cầu kỹ thuật.
    • Tuần 4 - 7: Thiết kế mạch nguyên lý, vẽ mạch in PCB trên Altium Designer, lập trình thử nghiệm OpenCV.
    • Tuần 8 - 10: Thi công lắp ráp mô hình cơ khí (nhôm định hình, đĩa mica, băng tải PVC), hàn linh kiện PCB.
    • Tuần 11 - 13: Ghép nối toàn hệ thống, tinh chỉnh thuật toán lọc nhiễu và lập trình giao diện Qt.
    • Tuần 14 - 15: Thử nghiệm phân loại mẫu lớn, đánh giá sai số, hoàn thiện tài liệu luận văn.

Implementation và kết quả

Quá trình phát triển và thuật toán cốt lõi

Quy trình xử lý ảnh trên máy tính được thực hiện theo chuỗi đường ống dẫn dữ liệu (Image Processing Pipeline):

  1. Thu nhận ảnh (Acquisition): Webcam Logitech C270 chụp ảnh độ phân giải $1280 \times 720\text{ px}$ dưới ánh sáng đồng đều của vòng LED trắng.
  2. Tiền xử lý & Lọc nhiễu (Pre-processing): Chuyển đổi không gian màu từ BGR sang Grayscale (ảnh mức xám 8-bit, 256 mức độ sáng từ 0 đến 255). Áp dụng bộ lọc Gaussian làm mịn ảnh, triệt tiêu nhiễu muối tiêu và nhiễu cộng:

$$G(x, y) = \frac{1}{2\pi\sigma^2} \exp\left( -\frac{x^2 + y^2}{2\sigma^2} \right)$$

  1. Phát hiện biên cạnh (Canny Edge Detection):
    • Tính toán Gradient theo hai hướng trục $x$ và $y$ qua toán tử Sobel ($G_x, G_y$).
    • Xác định độ lớn và hướng của Gradient:

$$|G| = \sqrt{G_x^2 + G_y^2} \quad \text{và} \quad \theta = \arctan\left(\frac{G_y}{G_x}\right)$$

  • Khử các điểm không phải cực đại cục bộ (Non-maximum Suppression) theo 4 hướng ($0^\circ, 45^\circ, 90^\circ, 135^\circ$).
  • Lọc ngưỡng kép (Hysteresis Thresholding) với ngưỡng trên $T_{\text{high}} = 150$ và ngưỡng dưới $T_{\text{low}} = 50$.
  1. Trích xuất thông số hình học (Contour Analysis): Tìm đường bao (findContours) và tính diện tích, tâm hình học, đường kính nội tiếp và ngoại tiếp của đai ốc.

Đoạn mã nguồn xử lý ảnh cốt lõi (C++ / OpenCV trên Qt)

#include <opencv2/opencv.hpp>
#include <iostream>
#include <cmath>

struct NutFeatures {
    double outerDiameter; // Khoảng cách đỉnh e (mm)
    double innerDiameter; // Đường kính lỗ ren d (mm)
    double flatDistance;  // Khoảng cách cạnh phẳng s (mm)
    bool isValid;
};

NutFeatures analyzeNutGeometry(const cv::Mat& srcInput, double pixelToMmRatio) {
    NutFeatures result = {0.0, 0.0, 0.0, false};
    cv::Mat gray, blurred, edges;

    // 1. Chuyển sang ảnh xám và khử nhiễu Gauss kích thước kernel 5x5
    cv::cvtColor(srcInput, gray, cv::COLOR_BGR2GRAY);
    cv::GaussianBlur(gray, blurred, cv::Size(5, 5), 1.4);

    // 2. Tách biên Canny với ngưỡng động
    cv::Canny(blurred, edges, 50, 150, 3);

    // 3. Tìm tập hợp đường bao
    std::vector<std::vector<cv::Point>> contours;
    std::vector<cv::Vec4i> hierarchy;
    cv::findContours(edges, contours, hierarchy, cv::RETR_CCOMP, cv::CHAIN_APPROX_SIMPLE);

    if (contours.size() < 2) {
        return result; // Không đủ biên ngoài và lỗ trong
    }

    // Giả định đường bao lớn nhất là biên ngoài, đường bao con là lỗ ren
    int outerIdx = 0;
    double maxArea = 0;
    for (size_t i = 0; i < contours.size(); i++) {
        double area = cv::contourArea(contours[i]);
        if (area > maxArea) {
            maxArea = area;
            outerIdx = i;
        }
    }

    // Tính hình chữ nhật xoay bao kín nhỏ nhất (MinAreaRect)
    cv::RotatedRect minRect = cv::minAreaRect(contours[outerIdx]);
    double dim1 = minRect.size.width * pixelToMmRatio;
    double dim2 = minRect.size.height * pixelToMmRatio;
    result.flatDistance = std::min(dim1, dim2);
    result.outerDiameter = std::max(dim1, dim2);

    // Đánh giá đai ốc M10 tiêu chuẩn: s ~ 17.0mm (+/- 0.5mm), e ~ 18.9mm (+/- 0.6mm)
    if (std::abs(result.flatDistance - 17.0) <= 0.6 && 
        std::abs(result.outerDiameter - 18.9) <= 0.8) {
        result.isValid = true;
    }

    return result;
}

Đoạn mã nguồn điều khiển thời gian thực trên STM32 (C / Keil C SPL)

#include "stm32f10x.h"
#include "stm32f10x_tim.h"
#include "stm32f10x_usart.h"

// Cấu hình PWM Timer 1 điều khiển góc quay Servo gạt phôi
void TIM1_PWM_Servo_Init(uint16_t arr, uint16_t psc) {
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOA, ENABLE);

    // PA8: Kênh TIM1_CH1
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // Chu kỳ Timer cấp xung 50Hz (20ms) cho Servo: F_timer = 72MHz / (psc+1) / (arr+1)
    TIM_TimeBaseStructure.TIM_Period = arr; // arr = 19999
    TIM_TimeBaseStructure.TIM_Prescaler = psc; // psc = 71 -> 1MHz counter
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse = 1500; // Xung 1.5ms: Góc 90 độ (vị trí chờ)
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    TIM_OC1Init(TIM1, &TIM_OCInitStructure);

    TIM_CtrlPWMOutputs(TIM1, ENABLE);
    TIM_Cmd(TIM1, ENABLE);
}

// Hàm gạt sản phẩm lỗi khi nhận tín hiệu từ PC
void Reject_Nut_Actuate(void) {
    TIM_SetCompare1(TIM1, 2400); // Đẩy servo góc 180 độ
    for(volatile int i = 0; i < 2000000; i++); // Delay cơ học
    TIM_SetCompare1(TIM1, 1500); // Trở về vị trí 90 độ
}

Kiểm thử và đánh giá hiệu năng (Testing & Validation)

Hệ thống được thử nghiệm thực tế với 200 mẫu đai ốc các loại (120 mẫu đai ốc chuẩn M10, 40 mẫu đai ốc sai cỡ M8/M12, 40 mẫu đai ốc bị dập méo hoặc lệch tâm lỗ ren).

+-----------------------------------------------------------------------------+
|                     KẾT QUẢ PHÂN LOẠI 200 MẪU THỬ NGHIỆM                    |
|                                                                             |
| Đai ốc chuẩn M10 (120 mẫu)      [=========================>  ] 96.6% (116)  |
| Đai ốc sai cỡ M8/M12 (40 mẫu)   [===========================>] 97.5% (39)   |
| Đai ốc móp/lệch tâm (40 mẫu)    [=======================>    ] 92.5% (37)   |
|                                                                             |
| Tổng thể (200 mẫu)              [=========================>  ] 96.0% (192)  |
+-----------------------------------------------------------------------------+
Loại mẫu thử nghiệm Số lượng kiểm tra Số lượng phân loại đúng Số lượng phân loại sai Độ chính xác (%)
Đai ốc M10 tiêu chuẩn 120 116 4 96.6%
Đai ốc sai kích cỡ (M8, M12) 40 39 1 97.5%
Đai ốc biến dạng móp cạnh, lệch tâm 40 37 3 92.5%
Tổng cộng 200 192 8 96.0%

Benchmark hiệu năng xử lý hệ thống

  • Thời gian thu hình & giải mã khung hình (Logitech C270): $15.2\text{ ms}$.
  • Thời gian lọc Gauss & phát hiện biên Canny: $18.4\text{ ms}$.
  • Thời gian trích xuất biên dạng & so khớp kích thước: $8.6\text{ ms}$.
  • Thời gian truyền nhận gói tin UART & phản hồi cơ cấu Servo: $12.0\text{ ms}$.
  • Tổng thời gian xử lý toàn chu trình: $\approx 54.2\text{ ms/sản phẩm}$.

Đổi mới và đóng góp

Các điểm cải tiến kỹ thuật nổi bật

  1. Kiến trúc điều khiển phân tán chi phí thấp: Thay vì sử dụng máy tính nhúng công nghiệp đắt tiền hoặc các bộ xử lý hình ảnh chuyên dụng, đề tài kết hợp vi điều khiển ARM Cortex-M3 (STM32) giá rẻ với máy tính cá nhân sẵn có qua giao thức UART có kiểm tra Checksum XOR, giảm hơn 85% chi phí đầu tư phần cứng.
  2. Cơ chế đồng bộ hóa không gian quang học: Hệ thống sử dụng cảm biến tiệm cận quang học E18-D80NK kết hợp bộ đĩa chia độ gắn Encoder 100 xung. Khi vật thể đến đúng vị trí dưới buồng tối, tín hiệu ngắt từ cảm biến kích hoạt camera bắt ảnh tức thì, loại bỏ hoàn toàn hiện tượng mờ nhòe do chuyển động (motion blur).
  3. Thuật toán hình thái học thích nghi: Xử lý hiệu quả bề mặt kim loại mạ kẽm có độ phản xạ ánh sáng cao thông qua việc tích hợp bộ lọc làm mịn Gauss trước khi đưa vào hàm trích xuất đa giác minAreaRect, giúp nhận diện chính xác độ phẳng của cạnh đai ốc mà không bị đứt gãy đường biên.

Bảng so sánh với các công trình nghiên cứu tiền nhiệm

Tiêu chí so sánh Đề tài Phan Trọng Thuật (2016) [4] Đề tài Lê Quốc Nhật (2017) [5] Hệ thống Dây chuyền Đề tài này (2019)
Đối tượng phân loại Sản phẩm theo khối màu đơn giản Thứ tự màu sắc cáp kết nối Kích thước đai ốc cơ khí chính xác (M10)
Độ phức tạp thuật toán Không gian màu HSV Ngưỡng màu RGB trong Visual Studio Gaussian Blur + Canny Edge + Geometry Extract
Nền tảng vi điều khiển 8-bit ATmega16 (16MHz) Không có cơ cấu chấp hành 32-bit ARM Cortex-M3 STM32F103 (72MHz)
Tốc độ & Độ chính xác 15 sp/phút (~88%) Xử lý ảnh tĩnh (~90%) 30-40 sp/phút (Độ chính xác 96.0%)
Cơ chế cấp phôi & Phân loại Đẩy thủ công lên băng chuyền Thủ công đưa mẫu vào buồng Phễu cấp tự động + Đĩa quay + Gạt Servo

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng trong sản xuất (Real-world Use Cases)

  • Xưởng gia công cơ khí chính xác: Lắp đặt ở đầu ra của máy dập đai ốc tự động để loại bỏ ngay lập tức các sản phẩm bị vỡ mép ren, móp phôi trước khi đưa vào bể mạ nhiệt luyện.
  • Dây chuyền đóng gói linh kiện tự động: Kiểm định số lượng và chủng loại bu lông, đai ốc trước khi đóng gói túi linh kiện phụ tùng đồ gỗ hoặc xe máy.
  • Trang thiết bị đào tạo thực hành: Làm mô hình giảng dạy thực tập chuyên sâu cho sinh viên các ngành Cơ điện tử, Kỹ thuật Điều khiển & Tự động hóa, Điện tử Truyền thông tại các trường đại học kỹ thuật.

Hướng dẫn triển khai và yêu cầu hệ thống

  • Yêu cầu phần cứng máy tính:
    • CPU: Intel Core i3 thế hệ 4 trở lên (hoặc tương đương).
    • RAM: Tối thiểu 4GB DDR3.
    • Cổng kết nối: Tối thiểu 2 cổng USB 2.0 (1 cho Camera Logitech C270, 1 cho mạch chuyển PL2303).
    • Hệ điều hành: Windows 7/10 (64-bit) hoặc Ubuntu Linux 18.04 LTS.
  • Yêu cầu môi trường vận hành:
    • Chiều cao lắp đặt camera: Cách bề mặt băng tải cố định $120\text{ mm} \pm 5\text{ mm}$.
    • Nguồn cấp: Nguồn tổ ong 12VDC - 5A, có chống nhiễu lọc nguồn cho mạch vi điều khiển.
    • Ánh sáng: Buồng chụp kín bằng mica mờ màu đen, chiếu sáng bằng dải LED 12V vòng tròn để tránh đổ bóng biên dạng.

Phân tích hiệu quả kinh tế và thời gian hoàn vốn (ROI)

  • Chi phí chế tạo mô hình:
    • Kết cấu nhôm định hình, đĩa mica, băng tải PVC: $1.200.000\text{ VNĐ}$.
    • Động cơ GA25, Servo, nguồn xung, cảm biến E18-D80NK, Encoder: $850.000\text{ VNĐ}$.
    • Camera Logitech C270, Mạch STM32F103C8T6, mạch in PCB: $750.000\text{ VNĐ}$.
    • Tổng chi phí phần cứng: $\approx 2.800.000\text{ VNĐ}$.
  • Hiệu quả kinh tế: Với năng suất kiểm tra đạt ~18.000 đai ốc/ngày (ca 8 tiếng), hệ thống thay thế tương đương công việc của 1 nhân công kiểm định thủ công (chi phí lương 7-9 triệu VNĐ/tháng). Thời gian thu hồi vốn đầu tư ước tính chỉ trong vòng 15 - 20 ngày vận hành.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Phụ thuộc vào điều kiện ánh sáng môi trường: Khi ánh sáng bên ngoài lọt vào buồng chụp, hiện tượng phản chiếu kim loại có thể làm sai lệch ngưỡng nhị phân hóa cục bộ của thuật toán Canny.
  • Chưa kiểm tra khuyết tật ren chiều sâu: Hệ thống chỉ xử lý hình ảnh chiếu bằng 2D, chưa thể kiểm tra bước ren bên trong lỗ đai ốc có bị trờn hay thiếu bước ren hay không.
  • Cơ chế cấp phôi trọng lực: Cơ cấu cấp phôi qua phễu xoay đôi khi gặp hiện tượng kẹt đai ốc nếu phôi bị dính dầu mỡ công nghiệp có độ nhớt cao.

Hướng phát triển nâng cấp

  • Tích hợp Trí tuệ Nhân tạo tại biên (Edge AI): Thay thế máy tính PC bằng các kit máy tính nhúng chuyên dụng như NVIDIA Jetson Nano hoặc Raspberry Pi 4, chạy mô hình mạng nơ-ron tích chập nhẹ (YOLOv8-nano hoặc MobileNetV3) để nhận dạng lỗi nứt bề mặt phức tạp.
  • Nâng cấp cảm biến thị giác 3D / Laser Triangulation: Bổ sung nguồn sáng laser dạng đường quét để tái tạo mô hình 3D của bước ren đai ốc, phát hiện lỗi góc nghiêng và ren hỏng.
  • Giao thức công nghiệp IoT: Tích hợp chuẩn truyền thông không dây ESP32/Modbus TCP/IP để đẩy dữ liệu sản lượng và tỷ lệ phế phẩm thời gian thực lên Dashboard quản lý nhà máy thông minh (MES/SCADA).

Đối tượng hưởng lợi

+-----------------------------------------------------------------------------+
|                            ĐỐI TƯỢNG HƯỞNG LỢI                              |
|                                                                             |
| +---------------------+   +---------------------+   +---------------------+ |
| |      Sinh viên      |   |  Kỹ sư Lập trình    |   | Doanh nghiệp SX/SME | |
| | - Mẫu đồ án mẫu mực |   | - Mẫu code C++/Qt   |   | - Giải pháp giá rẻ  | |
| | - Hiểu sâu Embedded |   | - Giao thức UART PC |   | - Thu hồi vốn nhanh | |
| +---------------------+   +---------------------+   +---------------------+ |
+-----------------------------------------------------------------------------+

Sinh viên chuyên ngành Kỹ thuật (Điện tử, Cơ điện tử, Tự động hóa, CNTT)

  • Nắm vững quy trình thiết kế hệ thống nhúng từ sơ đồ nguyên lý mạch, vẽ mạch in PCB, lập trình thanh ghi Timer/PWM/UART trên vi điều khiển 32-bit ARM Cortex-M.
  • Tiếp cận phương pháp tích hợp thư viện thị giác máy tính OpenCV vào ứng dụng phần mềm thực tế với ngôn ngữ C++ hiệu năng cao.

Kỹ sư và Lập trình viên Hệ thống (Embedded & Computer Vision Engineers)

  • Tham khảo cấu trúc mã nguồn hoàn chỉnh về giao tiếp thời gian thực giữa máy tính PC (Qt C++) và vi điều khiển (Keil C STM32).
  • Khung thuật toán xử lý biên dạng hình học và trích xuất đặc trưng vật thể chuyển động có thể tái sử dụng trực tiếp trong các dự án phân loại sản phẩm khác (nắp chai, viên thuốc, vi mạch điện tử).

Doanh nghiệp sản xuất vừa và nhỏ (SMEs)

  • Sở hữu giải pháp tự động hóa kiểm tra khuyết tật sản phẩm với chi phí chỉ bằng 5% so với thiết bị nhập khẩu, dễ dàng vận hành, bảo trì và thay thế linh kiện nội địa.

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 là gì?

Hệ thống yêu cầu nguồn cấp một chiều 12VDC - 5A cho động cơ và đèn LED, nguồn 5VDC cho vi điều khiển STM32F103C8T6. Trên máy tính giám sát, cấu hình tối thiểu là CPU 2 nhân tốc độ 2.0 GHz, 4GB RAM, cài sẵn môi trường thực thi Qt 5.12 và bộ thư viện OpenCV Runtime, kết nối với camera qua chuẩn USB Video Class (UVC).

2. Độ trễ truyền nhận qua UART có ảnh hưởng đến độ chính xác cơ học không?

Với tốc độ Baud 115200 bps, một gói tin điều khiển 5 byte chỉ mất khoảng $0.43\text{ ms}$ để truyền đi. Kết hợp với thời gian đáp ứng của vi điều khiển STM32 ($< 1\text{ ms}$) và thời gian đáp ứng của servo ($~100\text{ ms}$), tổng thời gian trễ nhỏ hơn rất nhiều so với thời gian đai ốc di chuyển từ vị trí chụp ảnh đến cơ cấu gạt ($~1.2\text{ giây}$ trên băng chuyền), do đó hoàn toàn đảm bảo độ chính xác định vị cơ học.

3. Làm thế nào để mở rộng hệ thống sang phân loại các loại bu lông, ốc vít có kích thước khác?

Người dùng chỉ cần điều chỉnh thông số ngưỡng hình học ($s$, $e$, đường kính trong $d$) trên tệp cấu hình phần mềm Qt Creator mà không cần thay đổi phần cứng. Đối với các loại bu lông có chiều dài trục ren, hệ thống có thể bổ sung thuật toán đo chiều dài hình chữ nhật bao quanh (boundingRect).

4. Chi phí bảo trì và độ bền của các linh kiện cơ điện tử ra sao?

Các linh kiện sử dụng như động cơ DC giảm tốc GA25 bánh răng kim loại, cảm biến quang E18-D80NK và vi điều khiển STM32 có tuổi thọ vận hành liên tục trên 5.000 giờ. Chi phí thay thế định kỳ cho các linh kiện hao mòn cơ học (chổi quét động cơ, dây curoa băng tải) ước tính dưới $200.000\text{ VNĐ/năm}$.

5. Tại sao không nạp trực tiếp thuật toán xử lý ảnh lên vi điều khiển STM32?

Vi điều khiển STM32F103C8T6 chỉ có bộ nhớ RAM 20KB và Flash 64KB, không đủ dung lượng để lưu trữ một khung hình ảnh xám $1280 \times 720\text{ px}$ (chiếm khoảng 0.9MB RAM). Việc phân chia nhiệm vụ: PC xử lý ma trận ảnh dung lượng lớn và STM32 điều khiển cơ cấu chấp hành là giải pháp tối ưu hóa hiệu năng/chi phí đã được chứng minh trong thực tế công nghiệp.


Kết luận

Đề tài "Thiết kế và thi công dây chuyền phân loại đai ốc ứng dụng xử lý ảnh" đã giải quyết triệt để bài toán tự động hóa kiểm tra chất lượng linh kiện cơ khí thông qua sự kết hợp nhịp nhàng giữa công nghệ thị giác máy tính và kỹ thuật điều khiển nhúng. Hệ thống đạt độ chính xác phân loại ấn tượng 96.0%, thời gian xử lý nhanh chóng 54.2 ms/sản phẩm, với chi phí đầu tư phần cứng dưới 3 triệu đồng.

Công trình không chỉ khẳng định tính khả thi của việc ứng dụng các công nghệ mã nguồn mở (OpenCV, Qt, ARM Cortex-M) vào dây chuyền sản xuất thực tế mà còn mở ra hướng tiếp cận kinh tế, hiệu quả cho các doanh nghiệp vừa và nhỏ trong lộ trình hiện đại hóa nhà máy thông minh.