Giới thiệu dự án

Trong bối cảnh nền công nghiệp chế tạo cơ khí hiện đại, công nghệ gia công điều khiển số bằng máy tính (Computer Numerical Control - CNC) đóng vai trò then chốt quyết định năng suất và độ chính xác của sản phẩm. Tại Việt Nam, sự phát triển của công nghệ gia công chính xác cao vẫn còn gặp nhiều rào cản khi phần lớn các hệ thống điều khiển CNC nội địa hoặc máy nâng cấp retrofitting chỉ dừng lại ở các thuật toán nội suy tuyến tính (Linear Interpolation - G01) hoặc nội suy cung tròn (Circular Interpolation - G02/G03). Khi gia công các bề mặt cong phức tạp trong chế tạo khuôn mẫu, cánh tuabin khí, hay thân vỏ ô tô - hàng không vũ trụ, các phần mềm CAD/CAM truyền thống bắt buộc phải xấp xỉ biên dạng liên tục thành hàng chục nghìn đoạn thẳng ngắn rời rạc (linear segments). Hiện tượng này dẫn đến ba điểm nghẽn kỹ thuật nghiêm trọng:

  • Hiện tượng suy giảm tốc độ nạp dao và gián đoạn dữ liệu (data starvation), khiến máy bị rung giật (jerk), tăng sai số dây cung (chord error), làm giảm độ nhẵn bề mặt gia công ($R_a$).
  • Dung lượng bộ nhớ lưu trữ chương trình G-code tăng đột biến, gây nghẽn đường truyền truyền thông công nghiệp.
  • Mòn dao cắt nhanh và suy giảm tuổi thọ hệ cơ khí do gia tốc thay đổi đột ngột tại các điểm gãy biên dạng.

Nhằm giải quyết triệt để bài toán trên, đề tài khóa luận tốt nghiệp kỹ sư ngành Công nghệ Kỹ thuật Cơ điện tử tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) với tiêu đề "Nghiên cứu thuật toán nội suy cho máy CNC" đã được thực hiện bởi nhóm tác giả Nguyễn Tấn Tài, Phun Quốc Việt, Trần Đại Nam dưới sự hướng dẫn của ThS. Võ Lâm Chương.

+-----------------------------------------------------------------------+
|                       MÔ HÌNH HỆ THỐNG ĐIỀU KHIỂN CNC                 |
|                                                                       |
|  [ Máy tính điều khiển Host PC ] (GUI C# WinForms / MATLAB Simulation) |
|                                |                                      |
|                       Giao tiếp UART / RS-485                         |
|                                v                                      |
|  [ Bộ điều khiển trung tâm: STM32F407VET6 (ARM Cortex-M4 @ 168MHz) ]  |
|            - Bộ tính toán quỹ đạo NURBS bậc 3                         |
|            - Bộ nội suy xung chuẩn DDA (Tần số phát xung > 500 kHz)   |
|                                |                                      |
|                   Mạch đệm cách ly quang PC817                        |
|                                v                                      |
|  +-----------------------------------------------------------------+  |
|  |             HỆ THỐNG TRUYỀN ĐỘNG SERVO BÁN VÒNG KÍN             |  |
|  |                                                                 |  |
|  |  * Trục X-Y: Yaskawa SGDA-02AS + Động cơ SGM-02A312 (200W)      |  |
|  |    -> Vít me bi Ø25, bước p=5mm + Bộ truyền đai răng (i=2:1)    |  |
|  |  * Trục Z:   Panasonic MSDA083A1A + Động cơ MSMA082A1A (750W)   |  |
|  |    -> Vít me bi Ø12, bước p=6mm + Ray trượt tuyến tính          |  |
|  +-----------------------------------------------------------------+  |
+-----------------------------------------------------------------------+

Mục tiêu nghiên cứu cụ thể

  1. Nghiên cứu lý thuyết các thuật toán nội suy: Khảo sát toàn diện thuật toán nội suy xung chuẩn (Pulse Reference Method), bao gồm giải thuật tích phân số vi phân DDA (Digital Differential Analyzer), thuật toán xấp xỉ bậc thang SA (Stairs Approximation), thuật toán tìm kiếm trực tiếp DS (Direct Search), và đi sâu phát triển thuật toán nội suy đường cong tham số hữu tỉ NURBS (Non-Uniform Rational Basis Spline) bậc 3.
  2. Thiết kế và mô phỏng thuật toán: Xây dựng phần mềm mô phỏng quỹ đạo chuyển động trên nền tảng MATLAB R2016a và giao diện giám sát C# .NET, đánh giá sai số động học và độ mịn của quỹ đạo nội suy.
  3. Thiết kế phần cứng mạch điều khiển: Ứng dụng vi điều khiển 32-bit ARM Cortex-M4 (STM32F407VET6, 168 MHz) tạo xung nhịp điều khiển tốc độ cao ($f_{pulse} \ge 500\text{ kHz}$), tích hợp mạch đệm cách ly quang và chuẩn truyền thông RS-485 chống nhiễu.
  4. Tích hợp và cấu hình hệ thống AC Servo: Thiết lập thông số điều khiển (Parameter Tuning) cho các bộ điều khiển Servo Driver công nghiệp Yaskawa SGDA và Panasonic MSDA ở chế độ nhận xung điều khiển vị trí (Position Control Mode).
  5. Chế tạo mô hình thực nghiệm và kiểm định: Hoàn thiện mô hình máy phay CNC 3 trục cơ cấu phôi chuyển động 2 trục $X-Y$, trục chính mang dao di chuyển trục $Z$; gia công thực nghiệm biên dạng cong phức tạp trên vật liệu phi kim (Mica, nhựa kỹ thuật Acrylic/POM).
  6. Ứng dụng sư phạm: Xây dựng bài thí nghiệm thực hành phục vụ giảng dạy học phần "Thực tập Hệ thống Servo" tại phòng thí nghiệm Servo Lab - HCMUTE.

Phạm vi và giới hạn đề tài

  • Phạm vi: Ứng dụng thuật toán nội suy thời gian thực đường cong NURBS bậc 3 trên bộ điều khiển nhúng ARM điều khiển mô hình phay CNC 3 trục servo.
  • Giới hạn: Đề tài tập trung kiểm chứng giải thuật và chất lượng gia công trên vật liệu phi kim tải trọng vừa và nhỏ; chưa tích hợp công nghệ bù trừ nhiệt sai số cơ khí và chưa thương mại hóa công nghiệp nặng.

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

Phân tích hiện trạng và so sánh giải pháp nội suy

Quá trình nội suy đóng vai trò cầu nối trung gian giữa bộ tạo quỹ đạo hình học và các mạch phát xung điều khiển trục. Dưới đây là phân tích định lượng giữa các phương pháp nội suy truyền thống và phương pháp NURBS:

Tiêu chí phân tích Thuật toán DDA (Đoạn thẳng/Tròn) Thuật toán Xấp xỉ bậc thang (SA) Thuật toán Tìm kiếm trực tiếp (DS) Thuật toán NURBS (Đề tài đề xuất)
Bản chất toán học Xấp xỉ tích phân vi phân số qua thanh ghi Dò biên theo lưới tọa độ Descartes Dò tìm bước di chuyển tối ưu hóa hàm lỗi Nội suy trực tiếp đường cong tham số hữu tỉ
Khả năng xử lý 3D Giới hạn (phải chia nhỏ đoạn thẳng/cung) Kém, chỉ tối ưu biên dạng 2D phẳng Trung bình, phụ thuộc vào bước lưới Rất cao, nội suy mượt mà đường cong tự do (Free-form)
Tần số xung tối đa $\approx 100\text{ - }200\text{ kHz}$ $< 80\text{ kHz}$ $< 120\text{ kHz}$ $\ge 500\text{ kHz}$ (kết hợp tối ưu hóa vi điều khiển)
Sai số dây cung ($E_c$) Lớn khi mật độ điểm thưa ($> 0.05\text{ mm}$) Lớn, bậc thang rõ rệt Trung bình ($0.02\text{ - }0.04\text{ mm}$) Rất nhỏ ($< 0.008\text{ mm}$), kiểm soát liên tục $C^2$
Khối lượng dữ liệu nạp Hàng nghìn lệnh G01/G02 Lớn (ma trận điểm lưới) Trung bình Tối giản (chỉ truyền Knot Vector & Control Points)

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc):
    • Vi điều khiển nhúng thời gian thực STM32F407 phát xung đồng thời 3 trục với tần số đạt trên $500\text{ kHz}$.
    • Thuật toán giải mã và tính toán đường cong NURBS bậc 3 sử dụng thuật toán De Boor.
    • Mạch đệm cách ly quang bảo vệ cổng I/O MCU khỏi xung điện áp ngược từ Servo Driver ($24\text{V}$ logic / xung $5\text{V}$ vi sai).
    • Điều khiển vị trí bán vòng kín (Semi-closed Loop Control) với phản hồi encoder chính xác.
  • Should Have (Nên có):
    • Giao diện điều khiển máy tính (GUI C#) mô phỏng 2D/3D đường chạy dao thời gian thực.
    • Cơ cấu truyền động dây đai răng kết hợp vít me bi khử triệt để độ rơ (backlash).
  • Could Have (Có thể mở rộng):
    • Tích hợp chuẩn truyền thông công nghiệp RS-485 kết nối mạng nhiều thiết bị phụ trợ (Slaves).
  • Won't Have (Chưa thực hiện):
    • Tự động thay dao tự động (Automatic Tool Changer - ATC).

Thiết kế kiến trúc phần cứng và cơ khí

  1. Kết cấu động học máy phay: Nhóm nghiên cứu chọn phương án: Phôi di chuyển trên 2 trục $X-Y$, trục chính mang dao di chuyển theo trục $Z$. Phương án này giúp hạ thấp trọng tâm máy, giữ chiều cao trục $X-Y$ không đổi trong suốt quá trình gia công, hạn chế dao động cơ học và tăng độ cứng vững (Stiffness).

  2. Thông số kỹ thuật các trục truyền động cơ khí:

    • Trục X: Vít me bi đường kính $\varnothing = 25\text{ mm}$, chiều dài $L = 700\text{ mm}$, bước vít $p = 5\text{ mm}$. Tỉ số truyền đai răng $i_X = \frac{Z_{pulley1}}{Z_{pulley2}} = \frac{40}{20} = 2$.
    • Trục Y: Vít me bi đường kính $\varnothing = 25\text{ mm}$, chiều dài $L = 410\text{ mm}$, bước vít $p = 5\text{ mm}$. Tỉ số truyền đai răng $i_Y = \frac{40}{20} = 2$.
    • Trục Z: Vít me bi đường kính $\varnothing = 12\text{ mm}$, chiều dài $L = 25\text{ mm}$, bước vít $p = 6\text{ mm}$. Dẫn hướng bằng hệ thống ray trượt tuyến tính (Linear Guide) kết hợp bạc trượt. Tỉ số truyền đai răng $i_Z = \frac{56}{24} \approx 2.33$.
  3. Lựa chọn động cơ và bộ điều khiển truyền động:

    • Trục X, Y: AC Servo Motor Yaskawa SGM-02A312 (Công suất định mức $0.27\text{ HP} \approx 200\text{W}$, điện áp $200\text{V}$ 3 pha, dòng điện định mức $2\text{A}$, mô-men xoắn $0.637\text{ N}\cdot\text{m}$, tốc độ tối đa $3000\text{ RPM}$, Encoder quang gia tăng độ phân giải cao $8192\text{ xung/vòng}$), đi kèm Servo Drive Yaskawa SGDA-02AS.
    • Trục Z: AC Servo Motor Panasonic MSMA082A1A (Công suất lớn $750\text{W}$, điện áp $116\text{V}$ 3 pha, dòng điện $4.8\text{A}$, mô-men xoắn $2.39\text{ N}\cdot\text{m}$, tốc độ $3000\text{ RPM}$, Encoder $10000\text{ xung/vòng}$), đi kèm Servo Drive Panasonic MSDA083A1A.
    • Trục chính (Spindle): Động cơ DC Servo TS 1980 2N180E12 ($24\text{VDC}$, $5\text{A}$, công suất $0.27\text{ HP}$, hồi tiếp Encoder $500\text{ xung/vòng}$).
+---------------------------------------------------------------------------------------+
|                 SƠ ĐỒ KHỐI PHẦN CỨNG MẠCH ĐIỀU KHIỂN & CÁCH LY                        |
|                                                                                       |
|   +---------------------+        +--------------------+        +-------------------+  |
|   | Vi điều khiển trung |        | Mạch đệm cách ly   |        | Bộ kích từ driver |  |
|   | tâm STM32F407VET6   |        | quang (PC817 Opto) |        | AC SERVO DRIVE    |  |
|   |                     |        |                    |        |                   |  |
|   | [TIM1_CH1: PULSE_X] |--(5V)-->| [Diode -> Opto-Tr] |--(24V)->| [PULS / CW Input] |  |
|   | [GPIO_PD0: DIR_X  ] |--(5V)-->| [Diode -> Opto-Tr] |--(24V)->| [SIGN / CCW Input]|  |
|   | [TIM8_CH1: PULSE_Y] |--(5V)-->| [Diode -> Opto-Tr] |--(24V)->| [PULS / CW Input] |  |
|   | [GPIO_PD1: DIR_Y  ] |--(5V)-->| [Diode -> Opto-Tr] |--(24V)->| [SIGN / CCW Input]|  |
|   +---------------------+        +--------------------+        +-------------------+  |
+---------------------------------------------------------------------------------------+

Implementation và kết quả

Chi tiết thuật toán nội suy NURBS bậc 3

Đường cong tham số NURBS bậc $p$ được định nghĩa bằng hàm hữu tỉ:

$$C(u) = \frac{\sum_{i=0}^{n} N_{i,p}(u) w_i P_i}{\sum_{i=0}^{n} N_{i,p}(u) w_i}, \quad a \le u \le b$$

Trong đó:

  • $P_i \in \mathbb{R}^3$ là các điểm điều khiển (Control Points).
  • $w_i > 0$ là trọng số (Weights) tương ứng của từng điểm.
  • $U = {u_0, u_1, \dots, u_m}$ là véc-tơ nút (Knot Vector), với điều kiện không giảm $u_i \le u_{i+1}$ và $m = n + p + 1$.
  • $N_{i,p}(u)$ là các hàm cơ sở B-Spline được xác định bằng công thức truy hồi Cox-de Boor:

$$N_{i,0}(u) = \begin{cases} 1 & \text{nếu } u_i \le u < u_{i+1} \ 0 & \text{ngược lại} \end{cases}$$

$$N_{i,p}(u) = \frac{u - u_i}{u_{i+p} - u_i} N_{i,p-1}(u) + \frac{u_{i+p+1} - u}{u_{i+p+1} - u_{i+1}} N_{i+1,p-1}(u)$$

Để nội suy thời gian thực với vận tốc tiếp tuyến $V(t)$ không đổi, tham số $u$ tại mỗi chu kỳ ngắt điều khiển $T_s$ ($T_s = 1\text{ ms}$) được tính toán thông qua khai triển chuỗi Taylor bậc 1:

$$u_{k+1} = u_k + \left. \frac{du}{dt} \right|{u=u_k} T_s = u_k + \frac{V(t) \cdot T_s}{\left| \frac{dC(u)}{du} \right|{u=u_k}}$$

/**
 * @file nurbs_interpolator.c
 * @brief Module nội suy NURBS thời gian thực trên vi điều khiển STM32F407
 */
#include "stm32f4xx_hal.h"
#include <math.h>

typedef struct {
    float x, y, z;
} Point3D;

// Khai báo cấu trúc đường cong NURBS bậc 3 (p = 3)
typedef struct {
    int n;                 // Số điểm điều khiển trừ 1
    int p;                 // Bậc đường cong (p = 3)
    Point3D* ctrl_pts;     // Mảng điểm điều khiển P_i
    float* weights;        // Trọng số w_i
    float* knot_vector;    // Véc-tơ nút U
} NURBS_Curve;

/**
 * @brief Tính toán điểm tọa độ C(u) trên đường cong NURBS sử dụng thuật toán De Boor
 * @param curve Con trỏ cấu trúc NURBS
 * @param u Tham số nội suy (0.0f <= u <= 1.0f)
 * @return Point3D Tọa độ nội suy tức thời
 */
Point3D NURBS_Evaluate_DeBoor(const NURBS_Curve* curve, float u) {
    int k = 0;
    int p = curve->p;
    
    // 1. Tìm khoảng nút chứa tham số u: u_k <= u < u_{k+1}
    for (int i = 0; i < (curve->n + curve->p + 1); i++) {
        if (u >= curve->knot_vector[i] && u < curve->knot_vector[i+1]) {
            k = i;
            break;
        }
    }
    
    // Khởi tạo mảng điểm tính toán trung gian
    Point3D d[4];
    float w[4];
    for (int j = 0; j <= p; j++) {
        int idx = k - p + j;
        w[j] = curve->weights[idx];
        d[j].x = curve->ctrl_pts[idx].x * w[j];
        d[j].y = curve->ctrl_pts[idx].y * w[j];
        d[j].z = curve->ctrl_pts[idx].z * w[j];
    }
    
    // 2. Thuật toán tam giác De Boor truy hồi
    for (int r = 1; r <= p; r++) {
        for (int j = p; j >= r; j--) {
            int idx = k - p + j;
            float alpha = (u - curve->knot_vector[idx]) / 
                          (curve->knot_vector[idx + p - r + 1] - curve->knot_vector[idx]);
            
            d[j].x = (1.0f - alpha) * d[j-1].x + alpha * d[j].x;
            d[j].y = (1.0f - alpha) * d[j-1].y + alpha * d[j].y;
            d[j].z = (1.0f - alpha) * d[j-1].z + alpha * d[j].z;
            w[j]   = (1.0f - alpha) * w[j-1]   + alpha * w[j];
        }
    }
    
    Point3D result;
    result.x = d[p].x / w[p];
    result.y = d[p].y / w[p];
    result.z = d[p].z / w[p];
    return result;
}

Phương pháp phân phối xung DDA (Digital Differential Analyzer)

Sau khi tọa độ tức thời $(X_k, Y_k, Z_k)$ được xác định từ thuật toán NURBS, bộ tích phân số DDA trong vi điều khiển STM32F407 đảm nhiệm việc phân phối chuỗi xung $Pulse_X, Pulse_Y, Pulse_Z$ đến Driver với độ mịn micro-step cao:

/**
 * @brief Bộ tích phân phát xung DDA thời gian thực trong ngắt Timer 100kHz
 */
void TIM1_UP_TIM10_IRQHandler(void) {
    if (__HAL_TIM_GET_FLAG(&htim1, TIM_FLAG_UPDATE) != RESET) {
        __HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);
        
        static uint32_t acc_x = 0, acc_y = 0;
        const uint32_t DDA_MODULO = 0x100000; // Độ phân giải thanh ghi 20-bit
        
        acc_x += delta_x_steps;
        if (acc_x >= DDA_MODULO) {
            acc_x -= DDA_MODULO;
            HAL_GPIO_WritePin(PULSE_X_GPIO_Port, PULSE_X_Pin, GPIO_PIN_SET);
            // Kích phát cạnh lên xung X
        } else {
            HAL_GPIO_WritePin(PULSE_X_GPIO_Port, PULSE_X_Pin, GPIO_PIN_RESET);
        }
        
        acc_y += delta_y_steps;
        if (acc_y >= DDA_MODULO) {
            acc_y -= DDA_MODULO;
            HAL_GPIO_WritePin(PULSE_Y_GPIO_Port, PULSE_Y_Pin, GPIO_PIN_SET);
            // Kích phát cạnh lên xung Y
        } else {
            HAL_GPIO_WritePin(PULSE_Y_GPIO_Port, PULSE_Y_Pin, GPIO_PIN_RESET);
        }
    }
}

Kết quả thử nghiệm và kiểm chuẩn thực tế

+-----------------------------------------------------------------------------+
|               KẾT QUẢ SAI SỐ QUỸ ĐẠO NỘI SUY (CHORD ERROR)                 |
|                                                                             |
| Sai số (mm)                                                                 |
|   0.060 |                                                                   |
|   0.050 |   * * *  (DDA Tuyến tính G01: Max = 0.052 mm)                     |
|   0.040 |  *     *                                                          |
|   0.030 |                                                                   |
|   0.020 |              o o o  (Stairs Approximation: Max = 0.028 mm)        |
|   0.010 |                                                                   |
|   0.005 |---------------------------------------------------                |
|   0.000 +=================================================== (NURBS Bậc 3:  |
|         0s       10s       20s       30s       40s       50s   Max < 0.007mm) |
+-----------------------------------------------------------------------------+
  1. Hiệu năng xử lý xung nhịp phần cứng:

    • Bộ đếm thời gian nâng cao (Advanced Control Timer TIM1, TIM8) của chip STM32F407VET6 tạo chuỗi xung vuông điều khiển đạt tần số liên tục $500\text{ kHz}$ ổn định, không có hiện tượng mất xung (pulse loss).
    • Tốc độ truyền thông qua UART/RS-485 đạt $115200\text{ bps}$, đảm bảo dòng dữ liệu điểm điều khiển truyền từ PC xuống máy liên tục không trễ.
  2. Độ chính xác và chất lượng bề mặt gia công:

    • Khi gia công thử nghiệm biên dạng Spline phức tạp trên tấm nhựa Mica dày $5\text{ mm}$ với tốc độ chạy dao $F = 1200\text{ mm/phút}$:
      • Gia công bằng phương pháp chia nhỏ G01: Xuất hiện vết khía bậc thang (scallop marks), sai số dây cung đo được là $\pm 0.052\text{ mm}$.
      • Gia công bằng thuật toán nội suy trực tiếp NURBS bậc 3: Bề mặt sản phẩm bóng mịn, sai số biên dạng thực tế giảm xuống chỉ còn $\pm 0.007\text{ mm}$ (cải thiện độ chính xác hơn $86%$).

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

  1. Tự chủ công nghệ nội suy đường cong bậc cao: Làm chủ phương pháp toán học và giải thuật thực thi nội suy đường cong tham số NURBS bậc 3 trên vi điều khiển 32-bit hiệu năng cao, vượt qua giới hạn phụ thuộc vào các chuẩn G-code G01/G02 cổ điển.
  2. Tối ưu hóa dung lượng truyền tải dữ liệu: Giảm kích thước tệp chương trình gia công xuống $78.4%$ so với mã G-code xuất từ bộ vi dịch CAD/CAM truyền thống. Thay vì phải truyền tải hàng chục nghìn câu lệnh đoạn thẳng, hệ thống chỉ cần nhận tập hợp các điểm điều khiển ($P_i$), véc-tơ nút ($U$) và trọng số ($w_i$).
  3. Nâng cao chất lượng động học: Giảm hiện tượng giật cơ khí (jerk) lên đến $42%$ nhờ đảm bảo tính liên tục bậc $C^2$ của đường dẫn dao, giúp động cơ Servo duy trì vận tốc đều, không bị dừng giật ngắt quãng tại các giao điểm.
Đặc tính kỹ thuật Giải pháp nội suy truyền thống (Mach3 / GRBL G01) Bộ điều khiển CNC Công nghiệp (Fanuc / Siemens) Giải pháp đề tài (STM32 NURBS)
Loại nội suy bề mặt Đoạn thẳng xấp xỉ rời rạc Hỗ trợ NURBS nội suy cao cấp Tích hợp thuật toán NURBS bậc 3
Giá thành phần cứng Thấp (Mạch trung gian LPT/USB) Rất cao ($> 150.000.000\text{ VNĐ}$) Rất thấp ($< 15.000.000\text{ VNĐ}$)
Tính mở của hệ thống Đóng một phần (Phần mềm bản quyền) Đóng hoàn toàn (Black-box) Mã nguồn mở, dễ dàng tùy biến giải thuật
Chất lượng bề mặt $R_a$ $3.2\text{ - }6.3\ \mu\text{m}$ (Cần đánh bóng lại) $0.4\text{ - }0.8\ \mu\text{m}$ $0.8\text{ - }1.6\ \mu\text{m}$ (Gia công mẫu phi kim)

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

Kịch bản ứng dụng trong sản xuất và đào tạo

  • Gia công chi tiết mẫu 3D & khuôn mẫu chính xác: Ứng dụng trong việc phay tạo hình các bề mặt điêu khắc nghệ thuật, logo nổi, khuôn dập giày da, khuôn ép nhựa kích thước nhỏ trên vật liệu phi kim (Mica, phíp gỗ, nhựa POM, sáp mẫu).
  • Trang bị thiết bị giáo dục đại học: Toàn bộ hệ thống cơ - điện - thuật toán được chuẩn hóa thành mô hình bài giảng thực hành cho sinh viên ngành Kỹ thuật Cơ điện tử, Tự động hóa tại HCMUTE trong môn học "Thực tập Hệ thống Servo", giúp sinh viên tiếp cận trực quan cấu hình Servo Driver và thuật toán điều khiển số.
+-----------------------------------------------------------------------------+
|                     LỘ TRÌNH TRIỂN KHAI VÀ THƯƠNG MẠI HÓA                   |
|                                                                             |
|  [ Giai đoạn 1: Q1/2017 ] -> Hoàn thiện lý thuyết & Mô phỏng MATLAB         |
|  [ Giai đoạn 2: Q2/2017 ] -> Thiết kế phần cứng STM32 & Mạch đệm PC817      |
|  [ Giai đoạn 3: Q3/2017 ] -> Gia công cơ khí & Tích hợp AC Servo Yaskawa    |
|  [ Giai đoạn 4: Q4/2017 ] -> Thử nghiệm gia công thực tế & Đo kiểm sai số   |
|  [ Giai đoạn 5: Mở rộng ] -> Phát triển thuật toán Look-Ahead & Bù dao      |
+-----------------------------------------------------------------------------+

Phân tích hiệu quả kinh tế (ROI)

  • Chi phí chế tạo phần cứng điều khiển: Ước tính khoảng $12.000.000 - 15.000.000\text{ VNĐ}$ (sử dụng chip ARM và động cơ AC Servo bãi công nghiệp đã tối ưu hóa thông số).
  • So sánh với hệ thống thương mại: Tiết kiệm hơn $80%$ chi phí đầu tư so với các bộ điều khiển CNC công nghiệp nhập khẩu có cùng tính năng nội suy NURBS.
  • Thời gian hoàn vốn: Ước tính trong vòng 6 - 9 tháng khi đưa vào ứng dụng gia công mẫu mỹ nghệ hoặc làm kit đào tạo chuyên sâu cho các trường cao đẳng, đại học kỹ thuật.

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

Hạn chế kỹ thuật

  1. Bậc của đường cong NURBS hiện tại đang cố định ở bậc 3 ($p = 3$). Khi gặp các đường cong tham số bậc cao hơn ($p \ge 4$), hệ vi điều khiển cần tái cấu trúc mảng tính toán.
  2. Hệ thống chưa tích hợp thuật toán nhìn trước (Look-Ahead Algorithm) để tự động giảm tốc độ nạp dao (feedrate) tại các góc cua có bán kính cong quá nhỏ, dẫn đến khả năng xuất hiện quá tải gia tốc tức thời.
  3. Khung cơ khí hiện tại được thiết kế phục vụ phòng thí nghiệm, độ cứng vững chỉ cho phép cắt gọt êm trên vật liệu phi kim; chưa gia công được các kim loại cứng như thép hợp kim hay titan.

Hướng nghiên cứu mở rộng

  • Nâng cấp phần cứng: Ứng dụng chip SoC FPGA kết hợp lõi ARM Cortex-A (như Xilinx Zynq) để xử lý song song thuật toán nội suy NURBS thời gian thực với tần số phát xung lên đến $2\text{ - }5\text{ MHz}$.
  • Bổ sung giải thuật động học nâng cao: Xây dựng thuật toán kiểm soát rung giật (Jerk-limited Acceleration/Deceleration Planning) với cấu hình đường cong chữ S (S-curve profile).
  • Tích hợp bù sai số tự động: Bổ sung thuật toán bù khe hở truyền động (Backlash Compensation) và bù sai số bước vít (Pitch Error Compensation) dựa trên phản hồi từ thước đo quang tuyến tính tuyến tính (Linear Scale - Closed Loop Control).

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

  • Sinh viên ngành Cơ điện tử / Tự động hóa: Nguồn tài liệu chuyên khảo mẫu mực về cấu trúc máy CNC, nguyên lý ghép nối AC Servo, phương pháp tính toán vi phân số và nội suy tham số thời gian thực.
  • Kỹ sư phát triển hệ thống nhúng (Embedded Engineers): Cung cấp kiến trúc phần mềm điều khiển ngắt Timer tần số cao trên dòng STM32F4, kỹ thuật thiết kế mạch bảo vệ cách ly quang chống nhiễu công nghiệp.
  • Các doanh nghiệp sản xuất máy công cụ vừa và nhỏ: Định hướng giải pháp công nghệ giá rẻ để nâng cấp các dòng máy phay CNC cũ thành các máy có khả năng nội suy bề mặt 3D tốc độ cao.
  • Nhà nghiên cứu học thuật: Cung cấp dữ liệu thực nghiệm so sánh đối chuẩn (benchmarking) giữa DDA, Stairs Approximation, Direct Search và NURBS.

Câu hỏi thường gặp

1. Vi điều khiển STM32F407VET6 có đủ năng lực tính toán giải thuật NURBS trong thời gian thực không?

Có. Nhờ lõi ARM Cortex-M4 hoạt động ở xung nhịp $168\text{ MHz}$ tích hợp sẵn bộ đồng xử lý dấu phẩy động FPU (Floating Point Unit), thời gian thực thi thuật toán De Boor cho một chu kỳ nội suy điểm chỉ mất khoảng $12\text{ - }15\ \mu\text{s}$, hoàn toàn đáp ứng thời gian thực trong chu kỳ lấy mẫu điều khiển vị trí $T_s = 1\text{ ms}$ ($1000\text{ Hz}$).

2. Sự khác biệt cốt lõi giữa hệ điều khiển Semi-closed Loop và Closed Loop trong đề tài là gì?

Hệ bán vòng kín (Semi-closed Loop) sử dụng encoder quang gắn ngay đuôi trục động cơ Servo để phản hồi góc quay về Driver. Phương pháp này triệt tiêu sai số trượt của bản thân động cơ, độ ổn định cao, dễ điều chỉnh thông số khuếch đại (gain). Trong khi đó, hệ vòng kín hoàn toàn (Closed Loop) gắn thước đo trực tiếp lên bàn máy, cho độ chính xác cao hơn nhưng dễ bị mất ổn định do hiện tượng rơ và dao động cơ học của toàn bộ thân máy.

3. Tại sao cần phải sử dụng mạch đệm cách ly quang PC817 giữa vi điều khiển và Driver Servo?

Mạch điều khiển AC Servo công nghiệp hoạt động ở mức điện áp logic điều khiển $24\text{V}$ và môi trường đóng cắt dòng lớn dễ phát sinh xung điện áp ngược (Back-EMF) và nhiễu điện từ EMI. Mạch Opto-isolator PC817 cách ly hoàn toàn điện thế giữa mạch điều khiển $5\text{V}/3.3\text{V}$ của vi điều khiển và tầng công suất $24\text{V}$ của Driver, bảo vệ MCU không bị cháy chân GPIO hoặc reset do nhiễu.

4. Thuật toán NURBS trong đồ án nhận định dạng dữ liệu đầu vào như thế nào?

Dữ liệu đầu vào gồm: Danh sách tọa độ các điểm điều khiển $(X_i, Y_i, Z_i)$, mảng véc-tơ nút chuẩn hóa không giảm $U = {u_0, u_1, \dots, u_m}$ và véc-tơ trọng số $w_i$. Dữ liệu này được trích xuất từ mô hình thiết kế CAD/CAM trên máy tính, nén thành gói nhị phân và truyền xuống vi điều khiển qua cổng UART/RS-485.

5. Tại sao trục X, Y lại sử dụng tỉ số truyền đai răng $i = 2:1$ thay vì nối trực tiếp khớp nối mềm?

Việc sử dụng bộ truyền đai răng tỉ số truyền $i = 2:1$ nhằm mục đích:

  • Tăng gấp đôi mô-men xoắn đầu ra truyền tới trục vít me bi ($T_{out} = 2 \cdot T_{motor}$), giúp kéo bàn máy mang phôi nặng di chuyển linh hoạt.
  • Tăng độ phân giải điều khiển góc của hệ thống (mỗi vòng quay động cơ dịch chuyển $2.5\text{ mm}$ hành trình thay vì $5\text{ mm}$).
  • Đai răng có tính đàn hồi giúp giảm chấn, triệt tiêu rung động từ động cơ truyền sang trục vít me bi.

Kết luận

Đề tài "Nghiên cứu thuật toán nội suy cho máy CNC" của nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM đã giải quyết trọn vẹn cả ba bài toán lớn: Cơ khí chính xác, Điện tử điều khiển nhúng công nghiệp và Thuật toán điều khiển số học cao cấp. Việc làm chủ thành công thuật toán nội suy đường cong NURBS bậc 3 trên nền tảng vi điều khiển 32-bit ARM Cortex-M4 kết hợp hệ thống AC Servo bán vòng kín đã chứng minh tính khả thi trong việc phát triển các bộ điều khiển CNC hiện đại tại Việt Nam với chi phí tối ưu. Công trình không chỉ đem lại giá trị học thuật xuất sắc, đóng góp trực tiếp vào công tác đào tạo tại Servo Lab - HCMUTE, mà còn mở ra hướng phát triển ứng dụng rộng rãi cho ngành chế tạo máy công cụ nước nhà trong kỷ nguyên tự động hóa sản xuất thông minh.