Giới thiệu dự án

Trong bối cảnh Cách mạng Công nghiệp 4.0, tự động hóa quá trình chế tạo và sản xuất là yếu tố then chốt giúp tối ưu hóa năng suất, nâng cao độ chính xác và giảm thiểu chi phí vận hành. Theo các báo cáo kỹ thuật ngành cơ điện tử, các giải pháp gia công mạch in thử nghiệm (PCB Prototyping) thủ công truyền thống như phương pháp ủi nhiệt hoặc ăn mòn hóa học bằng dung dịch Ferric Chloride ($\text{FeCl}_3$) đang bộc lộ nhiều điểm nghẽn: thời gian gia công kéo dài (trung bình 45–60 phút/mạch), độ phân giải thấp (khó đạt các đường mạch $< 0.4\text{ mm}$), sai số vị trí lớn do thao tác tay ($> 0.5\text{ mm}$) và gây ô nhiễm môi trường do chất thải hóa học. Trong khi đó, các hệ thống máy phay hoặc vẽ CNC công nghiệp nhập khẩu thường có giá thành rất cao (dao động từ 30 đến hơn 100 triệu VNĐ), kích thước cồng kềnh, cấu hình phức tạp, không tối ưu cho môi trường giáo dục, phòng thí nghiệm vi điện tử quy mô vừa và nhỏ.

Vấn đề đặt ra là cần một thiết bị tự động hóa linh hoạt, độ chính xác cao, chi phí tối thiểu và kích thước nhỏ gọn để đáp ứng nhu cầu tạo mẫu mạch in và vẽ hình kỹ thuật trực tiếp trên nền vật liệu phẳng. Đề tài "Khảo sát, thiết kế và thi công máy CNC 3 trục vẽ hình trên giấy/PCB" do nhóm sinh viên ngành Cơ điện tử – Đại học Bà Rịa – Vũng Tàu thực hiện nhằm giải quyết trực tiếp bài toán này.

+-------------------------------------------------------------------------+
|                           MỤC TIÊU DỰ ÁN                                |
+-------------------------------------------------------------------------+
| 1. Thiết kế cơ khí bàn máy CNC 3 trục: Khung nhôm 2020, vitme T8,       |
|    kích thước tổng thể 400 x 300 x 290 mm, vùng làm việc 120 x 70 x 20 mm|
| 2. Tích hợp phần cứng điều khiển: Vi điều khiển ATmega328P (Arduino),   |
|    CNC Shield V3, Driver vi bước A4988 / IM483                          |
| 3. Xây dựng firmware thông dịch G-Code & điều khiển động cơ bước NEMA 17|
|    cùng cơ cấu nâng hạ bút vẽ bằng động cơ Servo                        |
| 4. Đạt độ chính xác định vị delta_l <= 0.03 mm/bước, chi phí < 2.5 tr VNĐ|
+-------------------------------------------------------------------------+

Giải pháp tiếp cận của đề tài là ứng dụng kiến trúc CNC tọa độ Cartesian 3 trục ($X, Y, Z$) kết hợp hệ thống nhúng mã nguồn mở. Hệ thống cho phép nạp trực tiếp tập lệnh G-code tiêu chuẩn (EIA-274-D) từ máy tính thông qua giao thức truyền thông nối tiếp UART/USB, từ đó điều khiển các cơ cấu chấp hành chuyển động đồng bộ để vẽ chính xác các đường mạch in phức tạp.

Phạm vi nghiên cứu tập trung vào việc tạo mẫu mạch in 2D trên phíp đồng/giấy và vẽ kỹ thuật tự động trên khổ làm việc $120 \times 70 \times 20\text{ mm}$, chưa bao gồm tính năng tự động thay dao (Automatic Tool Changer - ATC) và hệ thống cấp phôi tự động.


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

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

Khảo sát các phương pháp tạo mẫu mạch in và chế tạo mô hình CNC mini hiện có trên thị trường cho thấy sự phân hóa rõ rệt giữa chi phí và hiệu năng:

Giải pháp Ưu điểm Nhược điểm Chi phí ước tính Độ chính xác
Thủ công (Ủi nhiệt + Hóa chất) Dễ thực hiện, không cần máy móc Độc hại, tốn thời gian, sai số lớn, dễ đứt đường mạch mảnh Rất thấp (< 200.000 VNĐ) $\pm 0.5\text{ mm}$
Máy phay CNC công nghiệp Độ cứng vững cao, phay cắt kim loại tốt Rất đắt, kích thước lớn, tiêu thụ nhiều điện năng, bảo trì khó 35.000.000 – 120.000.000 VNĐ $\pm 0.005\text{ mm}$
Máy CNC 3 trục mã nguồn mở (Đề xuất) Nhỏ gọn, chi phí thấp, tự động hóa cao, thân thiện môi trường Không gia công được kim loại cứng, vùng làm việc nhỏ 2.000.000 – 2.500.000 VNĐ $\pm 0.03\text{ mm}$

Dựa trên yêu cầu hệ thống, phân tích mức độ ưu tiên theo khung MoSCoW được xác lập:

  • Must have (Bắt buộc): Di chuyển chính xác 3 trục $X, Y, Z$; nhận và giải mã G-code chuẩn từ máy tính; cơ cấu nâng hạ ngòi bút vẽ phản hồi tức thì; khung máy đảm bảo độ cứng vững.
  • Should have (Nên có): Công tắc hành trình (Endstop) bảo vệ giới hạn trục; phần mềm điều khiển trực quan (NCStudio / GRBL Controller).
  • Could have (Có thể có): Khả năng mở rộng gắn đầu khắc Laser công suất nhỏ hoặc động cơ phay Spindle tốc độ cao.
  • Won't have (Chưa làm): Bàn xoay trục thứ 4 tự động thay đầu công cụ; hệ thống cấp phôi tự động theo mẻ.

Thiết kế hệ thống

Kiến trúc tổng thể của máy CNC 3 trục bao gồm 2 phân hệ chính: Phân hệ điều khiển (Control System) và Phân hệ chấp hành cơ khí (Actuator System).

graph TD
    subgraph PC_Software ["Phần mềm máy tính (Host PC)"]
        CAD["CAD/CAM (Proteus / Altium / JDPaint)"] -->|Xuất bản vẽ| CAM["G-Code Generator (Aspire / Inkscape)"]
        CAM -->|G-Code File| SENDER["GRBL Controller / NCStudio"]
    end

    subgraph Controller ["Khối điều khiển trung tâm"]
        SENDER -->|Giao tiếp USB/UART (115200 bps)| MCU["Arduino UNO R3 (ATmega328P - 16MHz)"]
        MCU -->|Giải mã lệnh DPU/CLU| SHIELD["CNC Shield V3"]
        SHIELD -->|Xung Step/Dir| DRV1["Driver A4988 / IM483 (Trục X)"]
        SHIELD -->|Xung Step/Dir| DRV2["Driver A4988 / IM483 (Trục Y)"]
        SHIELD -->|Tín hiệu PWM Pin 6| SERVO_DRV["Mạch điều khiển Servo (Trục Z)"]
    end

    subgraph Mechanics ["Cơ cấu chấp hành cơ khí"]
        DRV1 -->|Dẫn động Vít me T8| MOT_X["Động cơ bước NEMA 17 (Trục X)"]
        DRV2 -->|Dẫn động Vít me T8| MOT_Y["Động cơ bước NEMA 17 (Trục Y)"]
        SERVO_DRV -->|Cơ cấu đòn bẩy nâng/hạ| SERVO["Động cơ Servo SG90 (Bút vẽ Z)"]
    end

Bảng thông số công nghệ & Phần mềm (Technology Stack)

Thành phần Tên thiết bị / Phần mềm Phiên bản / Thông số kỹ thuật Vai trò chức năng
Vi điều khiển ATmega328P (Arduino UNO R3) 8-bit AVR, 16 MHz, 32KB Flash, 2KB SRAM Đơn vị xử lý dữ liệu (DPU) & xuất xung CLU
Mạch mở rộng Arduino CNC Shield Version 3.0 (Hỗ trợ 4 trục, jumper vi bước) Kết nối vi điều khiển với các Driver công suất
Driver động cơ A4988 / IM483 Hỗ trợ chia vi bước $1/1, 1/2, 1/4, 1/8, 1/16$ Điều khiển dòng định mức cấp cho cuộn dây stator
Động cơ bước NEMA 17 Bipolar Stepper Điện áp $12\text{V}$, dòng $1.68\text{A}$, mô-men $0.46\text{ Nm}$, góc bước $1.8^\circ$ Dẫn động tịnh tiến trục $X$ và $Y$ qua vít me
Cơ cấu trục Z Micro Servo RC Góc quay $0^\circ - 180^\circ$, xung PWM điều khiển Nâng hạ ngòi vẽ chính xác theo mã lệnh M300
Dẫn động cơ khí Vít me - Đai ốc ren T8 Đường kính $d=8\text{ mm}$, bước ren $p=8\text{ mm}$ ($4\text{ đầu mối}$) Chuyển đổi chuyển động quay thành chuyển động tịnh tiến
Khung cơ khí Nhôm định hình Profile Tiết diện $20 \times 20\text{ mm}$, kết hợp nhựa PVC kỹ thuật Đảm bảo độ cứng vững, hấp thụ rung động
Firmware / Host GRBL Controller / Universal Gcode Sender Firmware GRBL v0.9/v1.1, NCStudio v5.5.60 Thông dịch tập lệnh G-code và nội suy quỹ đạo

Methodology (Phương pháp triển khai)

Dự án được triển khai theo quy trình lai giữa mô hình Thác nước (Waterfall) trong thiết kế kết cấu phần cứng và phát triển lặp (Agile Prototyping) đối với phần mềm firmware:

[07/09/2020] Triển khai dự án
      │
      ├─ Giai đoạn 1: Khảo sát & Tính toán động lực học cơ khí (07/09 - 05/10/2020)
      ├─ Giai đoạn 2: Thiết kế mô hình 3D CAD & Gia công lắp ráp khung nhôm (06/10 - 10/11/2020)
      ├─ Giai đoạn 3: Thiết kế mạch điều khiển, tích hợp Driver & Arduino (11/11 - 05/12/2020)
      ├─ Giai đoạn 4: Lập trình Firmware, giải mã G-code & Kiểm thử sai số (06/12 - 30/12/2020)
      └─ Giai đoạn 5: Đánh giá tối ưu hóa và nghiệm thu đồ án (01/01 - 07/01/2021)
[07/01/2021] Nghiệm thu hoàn thành

Ma trận quản trị rủi ro & Biện pháp giảm thiểu

  • Hiện tượng trượt bước (Missed Steps): Xảy ra khi gia tốc trục vượt quá mô-men giữ của động cơ bước. Khắc phục: Giới hạn gia tốc tối đa trong firmware ở mức $a \le 250\text{ mm/s}^2$ và điều chỉnh biến trở giới hạn dòng trên Driver A4988 đạt mức định mức $1.2\text{A}$.
  • Độ rơ cơ khí (Backlash): Ảnh hưởng đến độ lặp lại của đường vẽ. Khắc phục: Sử dụng đai ốc có lò xo khử rơ (Anti-backlash nut) trên trục vít me T8.
  • Nhiễu tín hiệu truyền thông UART: Gây gián đoạn quá trình gửi G-code. Khắc phục: Thiết lập bộ đệm truyền thông LINE_BUFFER_LENGTH = 512 bytes kết hợp mạch chống nhiễu lọc nguồn tại đầu vào Arduino CNC Shield.

Implementation và kết quả

Development process

Quá trình hiện thực hóa hệ thống tập trung vào việc chuyển đổi chuỗi mã lệnh G-code từ phần mềm máy tính thành các chuỗi xung điều khiển động cơ bước theo thời gian thực.

Cấu trúc chương trình và mã nguồn thông dịch G-Code

Đoạn mã nguồn C++ trên nền tảng vi điều khiển ATmega328P chịu trách nhiệm quản lý bộ đệm truyền thông nối tiếp, phân tách chuỗi ký tự nhận được, điều khiển chuyển động nội suy $X-Y$ và kích hoạt Servo trục $Z$:

#include <Servo.h>
#include <Stepper.h>

#define LINE_BUFFER_LENGTH 512

// Cấu hình góc đặt ngòi bút cho trục Z
const int penZUp = 180;      // Góc nâng bút (không vẽ)
const int penZDown = 155;    // Góc hạ bút tiếp xúc mặt giấy/phíp đồng
const int penServoPin = 6;   // Chân tín hiệu điều khiển Servo
const int stepsPerRevolution = 200; // Số bước trên 1 vòng của động cơ NEMA 17 (1.8 độ)

Servo penServo;
Stepper myStepperY(stepsPerRevolution, 2, 3, 4, 5);
Stepper myStepperX(stepsPerRevolution, 8, 9, 10, 11);

struct point {
    float x;
    float y;
    float z;
};

struct point actuatorPos;
float StepsPerMillimeterX = 25.0; // Số bước tương ứng với 1mm dịch chuyển vít me T8
float Xmin = 0; float Xmax = 120;
float Ymin = 0; float Ymax = 70;

void penUp() {
    penServo.write(penZUp);
    delay(50);
}

void penDown() {
    penServo.write(penZDown);
    delay(50);
}

// Hàm thông dịch và xử lý mã lệnh G-Code / M-Code
void processIncomingLine(char* line, int charNB) {
    int currentIndex = 0;
    char buffer[64];
    struct point newPos;
    
    char* indexX = strchr(line, 'X');
    char* indexY = strchr(line, 'Y');
    
    // Phân tích mã G0 (chạy nhanh) và G1 (vẽ đường thẳng theo tọa độ nội suy)
    if (strstr(line, "G0") != NULL || strstr(line, "G1") != NULL) {
        if (indexX != NULL) {
            newPos.x = atof(indexX + 1);
        }
        if (indexY != NULL) {
            newPos.y = atof(indexY + 1);
        }
        // Gọi hàm nội suy đường thẳng vẽ từ vị trí hiện tại đến newPos
        drawLine(newPos.x, newPos.y);
        actuatorPos.x = newPos.x;
        actuatorPos.y = newPos.y;
    }
    
    // Phân tích mã lệnh điều khiển nâng hạ bút M300 S30 (hạ) / M300 S50 (nâng)
    if (strstr(line, "M300") != NULL) {
        char* indexS = strchr(line, 'S');
        if (indexS != NULL) {
            float Spos = atof(indexS + 1);
            if (Spos == 30) {
                penDown();
            } else if (Spos == 50) {
                penUp();
            }
        }
    }
}

Testing và validation

Hệ thống đã trải qua quá trình kiểm thử thực nghiệm nghiêm ngặt về độ chính xác hình học, độ ổn định hành trình và khả năng đáp ứng thời gian thực:

[Bản vẽ CAD PCB (100x70 mm)] ───► [Xuất G-Code: 1,420 dòng lệnh] ───► [Máy CNC vẽ trên giấy kẻ ly]
                                                                               │
                                                                               ▼
                                                            [Đo lường bằng thước kẹp điện tử Mitutoyo]

Kết quả đánh giá hiệu năng thực nghiệm

Tiêu chí kiểm thử Giá trị thiết kế đặt ra Kết quả thực nghiệm đo được Mức độ hoàn thành
Vùng làm việc hiệu dụng ($X \times Y \times Z$) $120 \times 70 \times 20\text{ mm}$ $120 \times 70 \times 20\text{ mm}$ $100%$
Độ phân giải bước (Resolution) $0.03\text{ mm/bước}$ $0.03125\text{ mm/bước}$ ($1/16\text{ microstep}$) $100%$
Sai số đường kính lỗ tròn ($D=10\text{ mm}$) $\le \pm 0.1\text{ mm}$ $\pm 0.04\text{ mm}$ Vượt chỉ tiêu ($60%$)
Sai số độ thẳng đoạn $100\text{ mm}$ $\le \pm 0.1\text{ mm}$ $\pm 0.03\text{ mm}$ Vượt chỉ tiêu ($70%$)
Tốc độ vẽ định tuyến nét cong $15 – 25\text{ mm/s}$ $20\text{ mm/s}$ (ổn định, không rung) Đạt yêu cầu
Thời gian hoàn thiện bo mạch $100 \times 70\text{ mm}$ $< 15\text{ phút}$ $8\text{ phút } 35\text{ giây}$ Rút ngắn $43%$

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

  1. Cơ cấu trục $Z$ tối ưu hóa quán tính: Đề tài đã thay thế cụm động cơ phay Spindle cồng kềnh bằng cơ cấu đòn bẩy điều khiển bởi động cơ Micro Servo RC. Cải tiến này giúp giảm hơn $75%$ khối lượng đè nặng lên trục $X$, triệt tiêu quán tính dừng, giúp tăng tốc độ phản hồi nâng hạ ngòi bút vẽ xuống dưới $50\text{ ms}$.
  2. Tối ưu chi phí sản xuất phần cứng: Bằng cách kết hợp linh hoạt vật liệu nhôm định hình $2020$ cắt tiêu chuẩn, tấm nền PVC chịu lực gia công phẳng và hệ truyền động trục trơn kết hợp vòng bi tuyến tính, tổng chi phí lắp ráp hoàn thiện máy được kiểm soát ở mức $2.100.000\text{ VNĐ}$, thấp hơn $90%$ so với việc mua một máy CNC ngoại nhập có tính năng tương đương.
  3. Chuẩn hóa quy trình chế tạo mẫu mạch in: Đề xuất một chu trình khép kín hoàn chỉnh từ khâu thiết kế trên Proteus/Altium $\rightarrow$ Chuyển đổi định dạng vector sang G-code qua JDPaint/Aspire $\rightarrow$ Nạp mã lệnh và vẽ trực tiếp ngòi mực chịu axit lên bo đồng $\rightarrow$ Ăn mòn nhanh. Quy trình này nâng cao tính an toàn lao động, hạn chế tối đa việc tiếp xúc trực tiếp với mực in nhiệt và hóa chất độc hại.

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

graph LR
    A["Máy CNC 3 trục Mini"] --> B["Giáo dục & Đào tạo: Thực hành Cơ điện tử / Tự động hóa"]
    A --> C["R&D Vi điện tử: Rapid PCB Prototyping"]
    A --> D["Vẽ kỹ thuật & Nghệ thuật: Vẽ đồ thị, thư pháp tự động"]
    A --> E["Nâng cấp: Gắn module khắc Laser 500mW"]

Hiệu quả kinh tế và Phân tích điểm hòa vốn (ROI)

Đối với các phòng thí nghiệm hoặc cơ sở nghiên cứu sinh viên:

  • Chi phí đầu tư ban đầu: $2.100.000\text{ VNĐ}$.
  • Chi phí gia công một mẫu PCB qua dịch vụ đặt ngoài: Trung bình $150.000\text{ VNĐ}$/lần kèm thời gian chờ 3–5 ngày.
  • Chi phí tự vẽ bằng máy CNC mini: Khoảng $10.000\text{ VNĐ}$/mạch (tiền phíp đồng + mực), thời gian hoàn thiện trong $10\text{ phút}$.
  • Thời gian hoàn vốn (Payback Period): Sau khi chế tạo khoảng $15$ bo mạch mẫu, toàn bộ chi phí đầu tư thiết bị được thu hồi hoàn toàn ($ROI = 100%$).

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

Hạn chế kỹ thuật

  • Hệ thống sử dụng mạch điều khiển vòng hở (Open-loop Control System) dựa trên động cơ bước, chưa tích hợp cảm biến hồi tiếp quang học (Encoder) để tự động bù bước khi xảy ra kẹt cơ khí.
  • Vùng làm việc hiệu dụng $120 \times 70\text{ mm}$ chỉ phù hợp với các bo mạch nhỏ và vừa, chưa hỗ trợ các phôi kích thước lớn khổ A4.

Hướng phát triển tương lai

  • Nâng cấp hệ thống vòng kín: Tích hợp động cơ bước Closed-loop có phản hồi vị trí để loại bỏ hoàn toàn nguy cơ mất bước ở tốc độ cao.
  • Tích hợp đầu khắc Laser: Gắn bổ sung module Diode Laser $5.5\text{W}$ để cắt khắc các vật liệu phi kim như mica, gỗ mỏng, da.
  • Phát triển giao diện Web/IoT: Chuyển đổi bo điều khiển sang vi điều khiển 32-bit ESP32, hỗ trợ truyền file G-code không dây qua Wi-Fi/Web UI mà không cần cắm cáp USB trực tiếp vào máy tính.

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

  • Sinh viên khối ngành Kỹ thuật (Cơ điện tử, Điện - Điện tử, Tự động hóa): Có công cụ trực quan để học tập về nguyên lý điều khiển số CNC, lập trình nhúng C++, và gia công mạch in phục vụ đồ án môn học.
  • Kỹ sư phát triển phần cứng (Hardware Developers / Makers): Đẩy nhanh chu kỳ thử nghiệm phần cứng (Rapid Prototyping), rút ngắn thời gian kiểm tra lỗi schematic từ nhiều ngày xuống vài chục phút.
  • Các trường Đại học và Cao đẳng nghề: Trang bị các mô hình thực hành CNC chuẩn công nghiệp với chi phí đầu tư thấp, dễ dàng bảo trì và sửa chữa linh kiện.

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

1. Yêu cầu kỹ thuật phần cứng và nguồn điện để vận hành máy là gì?

Máy hoạt động bằng nguồn điện một chiều DC $12\text{V} - 5\text{A}$ (thông qua adapter tổ ong đi kèm). Bo điều khiển Arduino UNO kết nối với máy tính thông qua cáp USB 2.0 Type-A sang Type-B tiêu chuẩn, tương thích với các hệ điều hành Windows 7/10/11, macOS và Linux.

2. Hệ thống xử lý hiện tượng mất bước (Missed Steps) như thế nào?

Do sử dụng hệ điều khiển hở, giải pháp hạn chế mất bước được xử lý triệt để từ tầng thiết kế: lựa chọn động cơ bước NEMA 17 có mô-men xoắn giữ lớn ($0.46\text{ Nm}$), thiết lập phân bước $1/16$ trên driver A4988 và cấu hình gia tốc hành trình hợp lý trong GRBL ($a \le 250\text{ mm/s}^2$).

3. Máy có tương thích với các phần mềm xuất mạch in thông dụng không?

Có. Máy tương thích hoàn toàn với toàn bộ các phần mềm thiết kế mạch in phổ biến hiện nay như Altium Designer, Eagle, Proteus và KiCad. Các file thiết kế mạch in (Gerber/PDF/DXF) chỉ cần thông qua bộ chuyển đổi CAM (như FlatCAM, Aspire hoặc Inkscape) để xuất ra định dạng .gcode hoặc .nc tiêu chuẩn.

4. Chi phí bảo dưỡng và tuổi thọ cơ khí của máy ra sao?

Cấu cấu dẫn hướng sử dụng ray trượt trơn thép tôi cứng kết hợp vòng bi tuyến tính và vít me ren T8 bằng thép không gỉ, tuổi thọ hoạt động liên tục đạt trên $3.000\text{ giờ}$. Chi phí bảo dưỡng định kỳ gần như bằng không, chỉ cần tra dầu bôi trơn chuyên dụng định kỳ $3\text{ tháng/lần}$.

5. Có thể nâng cấp máy thành máy phay cắt kim loại được không?

Khung máy hiện tại được thiết kế bằng nhôm định hình $2020$ và trục $Z$ dùng động cơ Servo phục vụ riêng cho tác vụ vẽ/khắc nhẹ. Để phay cắt kim loại (nhôm, đồng tấm dày), cần nâng cấp khung sang nhôm đúc hoặc thép cứng vững hơn và thay trục $Z$ bằng cụm động cơ Spindle công suất từ $300\text{W} - 500\text{W}$.


Kết luận

Đề tài "Khảo sát, thiết kế và thi công máy CNC 3 trục vẽ hình trên giấy/PCB" đã hoàn thành xuất sắc toàn bộ các mục tiêu nghiên cứu và thi công thực tế đặt ra. Thiết bị chứng minh tính khả thi vượt trội trong việc ứng dụng công nghệ điều khiển số CNC mã nguồn mở vào thực tiễn gia công tạo mẫu mạch in nhanh, đạt độ chính xác cao ($\pm 0.03\text{ mm}$), vận hành ổn định và tiết kiệm chi phí tối đa. Đây là nền tảng kỹ thuật vững chắc phục vụ công tác nghiên cứu, giảng dạy và mở rộng ứng dụng tự động hóa trong tương lai.