Giới thiệu dự án

Trong bối cảnh cuộc Cách mạng Công nghiệp 4.0, tự động hóa sản xuất đóng vai trò then chốt trong việc nâng cao năng suất, đảm bảo chất lượng đồng đều và tối ưu hóa chi phí vận hành. Theo báo cáo từ Liên đoàn Robot Quốc tế (IFR - International Federation of Robotics), mật độ robot công nghiệp toàn cầu trong lĩnh vực sản xuất đã đạt mức trung bình 151 robot trên 10.000 nhân công, với tốc độ tăng trưởng kép hàng năm (CAGR) duy trì trên 12%. Trong đó, các dòng cánh tay robot khớp nối (Articulated Robots) đa trục từ các tập đoàn hàng đầu thế giới như FANUC (Nhật Bản) chiếm thị phần áp đảo tại các dây chuyền lắp ráp ô tô, gia công cơ khí chính xác và bốc xếp hàng hóa tự động.

Tuy nhiên, các hệ thống cánh tay robot công nghiệp thương mại (tiêu biểu như FANUC R-2000iD, FANUC Arcmate 100i hay CR-4iA) có rào cản chi phí rất lớn (thường dao động từ vài chục nghìn đến hàng trăm nghìn USD) cùng tính chất phần mềm đóng kín. Điều này tạo ra khoảng cách lớn cho môi trường nghiên cứu, đào tạo thực hành tại các trường đại học kỹ thuật và ứng dụng thí điểm tại các doanh nghiệp vừa và nhỏ (SME).

Đề tài "FANUC Robot 01 (Khớp 1-2-3)" được thực hiện tại Khoa Điện – Điện Tử, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh (HCMUTE) dưới sự hướng dẫn của TS. Đặng Xuân Ba nhằm giải quyết bài toán: Thiết kế, chế tạo và làm chủ thuật toán điều khiển không gian 3 bậc tự do (3-DOF RRR) mô phỏng cấu trúc 3 khớp nền tảng của robot công nghiệp FANUC với chi phí tối ưu, khả năng tùy biến cao và độ tin cậy thực nghiệm vững chắc.

                  [Khâu 3: Cánh tay trên / Cổ tay]
                             o (Khớp 3 - Pitch: Động cơ DC Servo + Encoder)
                            /
                           /  [Khâu 2: Cánh tay dưới]
                          /
                         o (Khớp 2 - Pitch: Động cơ bước Nema 17 + Hộp số 3969/289)
                         |
                         |  [Khâu 1: Thân xoay]
                         |
      [Đế Robot] =======(o) (Khớp 1 - Yaw: Động cơ bước Nema 17 + Hộp số 57/11)

Mục tiêu dự án

  1. Thiết kế cơ khí chính xác: Xây dựng mô hình 3D hoàn chỉnh cấu trúc 3 khớp chính (Base, Shoulder, Elbow) trên phần mềm SolidWorks và chế tạo mẫu thực tế bằng công nghệ in 3D FDM độ phân giải cao.
  2. Xây dựng mô hình toán học giải tích: Thiết lập bảng thông số động học Denavit-Hartenberg (D-H), giải bài toán Động học thuận (Forward Kinematics), Động học nghịch (Inverse Kinematics) và thiết lập phương trình Động lực học phi tuyến Euler-Lagrange.
  3. Thiết kế và tối ưu thuật toán điều khiển: Xây dựng, mô phỏng và đối sánh bộ điều khiển PID kinh điển với bộ điều khiển mờ (Fuzzy Logic Controller) trên môi trường MATLAB/Simulink.
  4. Phát triển hệ thống phần cứng và Firmware: Tích hợp bộ điều khiển trung tâm vi xử lý Arduino, mạch công suất cầu H L298N và các vi bước (Microstep Driver) điều khiển phối hợp động cơ bước (Stepper Motor) và động cơ DC Servo hồi tiếp Encoder.
  5. Xây dựng phần mềm giám sát giao diện người dùng (GUI): Lập trình ứng dụng điều khiển đa chế độ (Manual, Auto, Drawing) trên nền tảng Python kết hợp thư viện PyQt5 / Qt Designer.

Phạm vi và giới hạn

  • Phạm vi nghiên cứu: Tập trung giải quyết bài toán định vị tọa độ đầu cuối $(X, Y, Z)$ thông qua 3 khớp quay chính (3-DOF RRR).
  • Giới hạn kỹ thuật: Chưa tích hợp 3 bậc tự do định hướng cổ tay (Roll-Pitch-Yaw Spherical Wrist) và khâu tác động cuối (End-Effector Gripper); tải trọng hữu ích định mức tại đầu khâu 3 được giới hạn ở mức 0.5 kg để đảm bảo độ bền kết cấu in 3D.

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

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

Trước khi bắt tay vào thiết kế chi tiết, nhóm nghiên cứu đã tiến hành đánh giá ma trận so sánh các giải pháp hiện có trên thị trường và trong học thuật:

Tiêu chí kỹ thuật Robot công nghiệp thương mại (FANUC / KUKA) Robot đồ chơi mã nguồn mở (RC Servo SG90/MG996R) Giải pháp FANUC 3-DOF Robot (Đề tài)
Độ chính xác lặp lại $\pm 0.02\text{ mm} - \pm 0.05\text{ mm}$ $\pm 5.0\text{ mm} - \pm 10.0\text{ mm}$ (Rơ khớp cao) $\pm 0.8\text{ mm} - \pm 1.2\text{ mm}$
Thuật toán điều khiển Đóng kín chuyên dụng, nội suy đa trục cao cấp Vòng hở PWM, không có bù động lực học Vòng kín PID / Fuzzy Logic, giải FK/IK thời gian thực
Khả năng chịu tải Rất cao ($5\text{ kg} - 2000\text{ kg}$) Cực thấp ($< 0.1\text{ kg}$, bánh răng nhựa dễ vỡ) Trung bình ($0.3\text{ kg} - 0.5\text{ kg}$)
Khả năng can thiệp R&D Gần như bằng 0 (Black box) Thấp, chỉ phù hợp học tập cơ bản Hoàn toàn làm chủ từ phần cứng đến mã nguồn
Chi phí chế tạo Rất đắt ($> 15,000\text{ USD}$) Rất rẻ ($< 30\text{ USD}$) Tối ưu ($< 150\text{ USD}$)

Phân tích yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc phải có):
    • Giải bài toán động học thuận và nghịch chính xác trong không gian làm việc (Workspace).
    • Bộ điều khiển vị trí hồi tiếp vòng kín cho khớp 3 (DC Servo + Optical Encoder).
    • Giao diện điều khiển Manual qua Serial UART với thanh trượt góc khớp.
    • Cơ cấu giảm tốc không trượt bước cho khớp 1 và khớp 2.
  • Should have (Nên có):
    • Bộ điều khiển Fuzzy thích nghi giúp giảm hiện tượng vọt lố do quán tính cơ khí.
    • Chế độ tự động Auto Mode di chuyển mượt mà qua các điểm quỹ đạo định trước (Waypoints $P_1, P_2, P_3$).
    • Giới hạn an toàn phần mềm (Soft Limits) ngăn chặn hiện tượng tự va chạm cơ khí.
  • Could have (Có thể có):
    • Chế độ vẽ hình (Drawing Mode) chuyển đổi tọa độ điểm 2D thành quỹ đạo chuyển động 3D.
    • Hiển thị mô phỏng 3D thời gian thực trên GUI.
  • Won't have (Chưa thực hiện ở giai đoạn này):
    • Tích hợp xử lý ảnh công nghiệp (Machine Vision) và thuật toán AI nhận diện vật thể.

Thiết kế hệ thống

Kiến trúc tổng thể của hệ thống cánh tay robot bao gồm 3 phân tầng chính: Tầng điều khiển giám sát (Host PC), Tầng vi xử lý thời gian thực (Microcontroller) và Tầng chấp hành - cơ cấu cơ khí (Actuators & Mechanics).

+-------------------------------------------------------------------------+
|                  HOST PC - GIAO DIỆN ĐIỀU KHIỂN GUI                     |
|           (Python 3.9+ / PyQt5 / Qt Designer / VS Code IDE)             |
|  - Chế độ Manual (Jogging)     - Chế độ Auto (P1 -> P2 -> P3)           |
|  - Chế độ Drawing             - Tính toán Động học Nghịch (IK Engine)  |
+------------------------------------+------------------------------------+
                                     | Chuỗi dữ liệu UART (115200 bps)
                                     v
+-------------------------------------------------------------------------+
|                TẦNG ĐIỀU KHIỂN TRUNG TÂM (ARDUINO CORE)                 |
|  - Parser giải mã khung truyền chuỗi: "S,th1,th2,th3,E"                |
|  - Bộ phát xung Timer / Direct Step Driver cho Khớp 1 & Khớp 2          |
|  - Vòng lặp PID thời gian thực $f = 100\text{ Hz}$ cho Động cơ Khớp 3   |
|  - Đọc giải mã tín hiệu Encoder 2 kênh (Ch-A, Ch-B Interrupts)         |
+---------------------+-------------------------------+-------------------+
                      | Tín hiệu Xung/Chiều           | Tín hiệu PWM/Dir
                      v                               v
+-----------------------------+     +-------------------------------------+
|   MICROSTEP DRIVER (TB6600) |     |       DRIVER CẦU H L298N            |
+--------------+--------------+     +------------------+------------------+
               | Dòng cấp pha                          | Điện áp điều chế
               v                                       v
+-----------------------------+     +-------------------------------------+
| KHỚP 1: Nema 17 + GT 57/11  |     | KHỚP 3: DC Servo GM25-370 (12V)     |
| KHỚP 2: Nema 17 + GT 3969/289|    |         Tích hợp Magnetic Encoder   |
+-----------------------------+     +-------------------------------------+

Bảng danh mục công nghệ và thông số phần cứng

  • Phần mềm và Công cụ phát triển:
    • MATLAB R2020b / Simulink: Phân tích toán học, mô phỏng SimMechanics, thiết kế bộ điều khiển PID và Fuzzy Logic Toolbox.
    • SolidWorks 2020: Thiết kế mô hình 3D, phân bố trọng tâm, kiểm tra va chạm động học (Motion Analysis) và xuất file định dạng STL cho in 3D.
    • Python 3.9.7 & PyQt5 (v5.15.4): Xây dựng giao diện đồ họa người dùng, xử lý luồng truyền thông bất đồng bộ (Multithreading QThread) với cổng nối tiếp Serial.
    • Arduino IDE 1.8.19 & VS Code PlatformIO: Lập trình nhúng C/C++ cho vi xử lý ATmega328P/ATmega2560.
  • Chi tiết cơ cấu dẫn động và truyền động:
    • Khớp 1 (Khớp xoay thân - Base Yaw): Động cơ bước Nema 17 kết hợp hộp giảm tốc hành tinh (Planetary Gearbox) tỉ số truyền $i_1 = \frac{57}{11} \approx 5.18:1$, cung cấp mô-men xoắn giữ $T_{hold} = 1.2\text{ Nm}$.
    • Khớp 2 (Khớp nâng vai - Shoulder Pitch): Động cơ bước Nema 17 giảm tốc tỉ số cao $i_2 = \frac{3969}{289} \approx 13.73:1$, nâng mô-men xoắn đầu ra lên mức $T_{out} \approx 3.5\text{ Nm}$, loại bỏ hoàn toàn hiện tượng trượt bước do mô-men uốn và trọng lực của các khâu tiếp theo.
    • Khớp 3 (Khớp gập khuỷu - Elbow Pitch): Động cơ DC Servo GM25-370 (12V DC, tốc độ không tải 330 RPM, hộp số kim loại giảm tốc tích hợp) gắn kèm đĩa từ Encoder độ phân giải cao ($11\text{ PPR} \times \text{tỉ số hộp số} \approx 374\text{ xung/vòng}$).
    • Bộ công suất: Driver điều khiển động cơ bước Microstep (hỗ trợ phân chia vi bước $1/2, 1/4, 1/8, 1/16, 1/32$) và Module mạch cầu H L298N chịu dòng tối đa $2\text{A}$ mỗi kênh.

Phương pháp nghiên cứu và Lộ trình triển khai

Dự án được thực hiện theo quy trình phát triển chữ V (V-Model) kết hợp phương pháp luận kỹ thuật Robot chuẩn quốc tế trong thời gian 16 tuần:

[Tuần 01-03: Lý thuyết & Mô phỏng]
   |--> Đặt hệ trục D-H -> Giải FK/IK -> Thiết lập động lực học -> Mô phỏng Simulink (PID vs Fuzzy)
[Tuần 05-08: Thiết kế Cơ khí 3D]
   |--> Thiết kế SolidWorks (Khâu 1, 2, 3, Đế) -> Tối ưu hóa phân bố khối lượng -> Xuất bóc tách kỹ thuật
[Tuần 09-11: Lập trình Giao diện GUI]
   |--> Thiết kế UI bằng Qt Designer -> Lập trình logic Python/PyQt5 -> Tích hợp luồng Serial
[Tuần 12-14: Chế tạo & Lắp ráp phần cứng]
   |--> Gia công in 3D nhựa PLA -> Xử lý bề mặt/sơn hoàn thiện -> Lắp ráp động cơ, vòng bi, mạch công suất
[Tuần 15-16: Tích hợp & Kiểm chứng thực nghiệm]
   |--> Hiệu chuẩn góc khớp -> Thực nghiệm bám quỹ đạo Manual/Auto -> Đo lường sai số & Hoàn thiện báo cáo

Implementation và kết quả

Quá trình phát triển và Cơ sở toán học

1. Thiết lập bảng thông số Denavit-Hartenberg (D-H)

Cấu trúc 3 khớp xoay trục song song ($Z_1 \parallel Z_2$) và vuông góc với trục xoay đế ($Z_0 \perp Z_1$) được mô tả qua bảng thông số D-H chuẩn:

Khâu ($i$) $\theta_i$ (Góc khớp) $d_i$ (Độ dịch trục $Z$) $a_i$ (Chiều dài khâu dọc $X$) $\alpha_i$ (Góc xoắn trục $X$)
1 $\theta_1^*$ $d_1 = L_1$ $a_1$ $+90^\circ$
2 $\theta_2^*$ $0$ $a_2 = L_2$ $0^\circ$
3 $\theta_3^*$ $0$ $a_3 = L_3$ $0^\circ$

Ma trận biến đổi thuần nhất tổng quát giữa hai khâu liên tiếp:

$$^{i-1}T_i = \begin{bmatrix} \cos\theta_i & -\sin\theta_i\cos\alpha_i & \sin\theta_i\sin\alpha_i & a_i\cos\theta_i \ \sin\theta_i & \cos\theta_i\cos\alpha_i & -\sin\theta_i\sin\alpha_i & a_i\sin\theta_i \ 0 & \sin\alpha_i & \cos\alpha_i & d_i \ 0 & 0 & 0 & 1 \end{bmatrix}$$

Ma trận biến đổi từ gốc tọa độ đến điểm tác động cuối:

$$^0T_3 = \text{ }^0T_1 \cdot \text{ }^1T_2 \cdot \text{ }^2T_3 = \begin{bmatrix} r_{11} & r_{12} & r_{13} & P_x \ r_{21} & r_{22} & r_{23} & P_y \ r_{31} & r_{32} & r_{33} & P_z \ 0 & 0 & 0 & 1 \end{bmatrix}$$

Phương trình Động học thuận (Forward Kinematics) xác định vị trí điểm cuối:

$$\begin{cases} P_x = \cos\theta_1 \left( a_1 + a_2\cos\theta_2 + a_3\cos(\theta_2 + \theta_3) \right) \ P_y = \sin\theta_1 \left( a_1 + a_2\cos\theta_2 + a_3\cos(\theta_2 + \theta_3) \right) \ P_z = d_1 + a_2\sin\theta_2 + a_3\sin(\theta_2 + \theta_3) \end{cases}$$

2. Mô hình Động lực học Euler-Lagrange

Phương trình vi phân mô tả mối quan hệ giữa mô-men lực tại các khớp $\tau$ và chuyển động vị trí, vận tốc, gia tốc:

$$\tau = M(q)\ddot{q} + C(q,\dot{q})\dot{q} + G(q)$$

Trong đó:

  • $q = [\theta_1, \theta_2, \theta_3]^T$ là vector tọa độ suy rộng.
  • $M(q) \in \mathbb{R}^{3 \times 3}$ là ma trận quán tính đối xứng, xác định dương.
  • $C(q,\dot{q})\dot{q} \in \mathbb{R}^{3 \times 1}$ là vector chứa các thành phần lực ly tâm và lực Coriolis.
  • $G(q) \in \mathbb{R}^{3 \times 1}$ là vector mô-men trọng trường tác dụng lên các khâu.

3. Thuật toán điều khiển PID và Cấu trúc Điều khiển Mờ (Fuzzy Logic)

Hệ thống điều khiển PID số rời rạc cho khớp 3 được tính toán theo công thức:

$$u(k) = K_p e(k) + K_i T_s \sum_{j=0}^{k} e(j) + K_d \frac{e(k) - e(k-1)}{T_s}$$

Với bộ điều khiển Fuzzy Logic, hệ thống sử dụng mô hình suy luận Mamdani 2 ngõ vào:

  • Ngõ vào 1: Sai số vị trí góc $e(t) = \theta_{setpoint} - \theta_{actual}$ (gồm 5 tập mờ: NB, NS, ZE, PS, PB).
  • Ngõ vào 2: Đạo hàm sai số $\dot{e}(t) = \frac{de(t)}{dt}$ (gồm 5 tập mờ: NB, NS, ZE, PS, PB).
  • Ngõ ra: Đại lượng điều khiển điện áp hoặc xung điều chỉnh $\Delta u$ (gồm 5 tập mờ tương ứng).
  • Tập 25 luật mờ chuẩn (Rule Base): Được thiết lập nhằm triệt tiêu vọt lố khi sai số lớn và tăng tốc độ đáp ứng khi sai số nhỏ tiệm cận 0.
       e \ de |  NB  |  NS  |  ZE  |  PS  |  PB  |
      --------+------+------+------+------+------+
        NB    |  NB  |  NB  |  NB  |  NS  |  ZE  |
        NS    |  NB  |  NS  |  NS  |  ZE  |  PS  |
        ZE    |  NB  |  NS  |  ZE  |  PS  |  PB  |
        PS    |  NS  |  ZE  |  PS  |  PS  |  PB  |
        PB    |  ZE  |  PS  |  PB  |  PB  |  PB  |
// Trích đoạn mã nguồn xử lý điều khiển PID vị trí Khớp 3 và xuất xung động cơ bước trên Arduino
#include <Arduino.h>

const int PIN_ENCODER_A = 2;
const int PIN_ENCODER_B = 3;
const int PIN_PWM_MOTOR = 5;
const int PIN_DIR_MOTOR = 4;

volatile long encoderPosition = 0;
float targetAngle3 = 0.0;
float Kp = 3.5, Ki = 0.05, Kd = 0.12;
float integralError = 0.0, prevError = 0.0;
unsigned long lastTime = 0;

void IRAM_ATTR readEncoderISR() {
  int b = digitalRead(PIN_ENCODER_B);
  if (b > 0) {
    encoderPosition++;
  } else {
    encoderPosition--;
  }
}

void computePIDJoint3(float setpointDegree) {
  unsigned long now = millis();
  float dt = (now - lastTime) / 1000.0;
  if (dt <= 0.001) return;

  // 374 pulses = 360 degrees => 1.0388 pulses/degree
  float currentAngle = (float)encoderPosition / 1.0388;
  float error = setpointDegree - currentAngle;
  
  integralError += error * dt;
  // Chống hiện tượng bão hòa tích phân (Anti-windup)
  integralError = constrain(integralError, -100.0, 100.0);
  
  float derivative = (error - prevError) / dt;
  float output = (Kp * error) + (Ki * integralError) + (Kd * derivative);
  
  // Điều khiển cầu H L298N
  int pwmValue = constrain((int)abs(output), 0, 255);
  if (output >= 0) {
    digitalWrite(PIN_DIR_MOTOR, HIGH);
  } else {
    digitalWrite(PIN_DIR_MOTOR, LOW);
  }
  analogWrite(PIN_PWM_MOTOR, pwmValue);
  
  prevError = error;
  lastTime = now;
}
# Trích đoạn mã nguồn Python/PyQt xử lý giao thức UART gửi góc khớp xuống Robot
import serial
import time
from PyQt5.QtCore import QThread, pyqtSignal

class RobotSerialController(QThread):
    connection_status = pyqtSignal(bool)
    
    def __init__(self, port="COM3", baudrate=115200):
        super().__init__()
        self.port = port
        self.baudrate = baudrate
        self.serial_conn = None
        self.is_running = True

    def connect_serial(self):
        try:
            self.serial_conn = serial.Serial(self.port, self.baudrate, timeout=0.1)
            time.sleep(2)  # Đợi ổn định DTR Reset Arduino
            self.connection_status.emit(True)
            return True
        except Exception as e:
            print(f"[ERROR] Serial Connection Failed: {e}")
            self.connection_status.emit(False)
            return False

    def send_joint_angles(self, theta1: float, theta2: float, theta3: float):
        """Đóng gói khung truyền chuẩn: $S,th1,th2,th3,E#"""
        if self.serial_conn and self.serial_conn.is_open:
            payload = f"$S,{theta1:.2f},{theta2:.2f},{theta3:.2f},E#\n"
            self.serial_conn.write(payload.encode('utf-8'))
            self.serial_conn.flush()

Kiểm nghiệm và Kết quả thực nghiệm

1. Kết quả kiểm chứng mô phỏng MATLAB/Simulink

  • Kiểm chứng Động học: Đưa tọa độ mục tiêu $(P_x, P_y, P_z) = (180.0, 120.0, 95.0)\text{ mm}$ vào thuật toán Động học nghịch (IK), nghiệm góc thu được $(\theta_1, \theta_2, \theta_3) = (33.69^\circ, 42.15^\circ, -31.20^\circ)$. Khi thay ngược vào mô hình Động học thuận (FK), sai số định vị tiệt tiêu hoàn toàn ($\Delta P < 10^{-6}\text{ mm}$).
  • So sánh chất lượng điều khiển PID vs Fuzzy Logic:
Đại lượng đặc tính động học Bộ điều khiển PID tiêu chuẩn Bộ điều khiển Mờ (Fuzzy Logic) Mức độ cải thiện (%)
Thời gian đáp ứng ($t_r$) $0.45\text{ s}$ $0.32\text{ s}$ Nhanh hơn $28.8%$
Thời gian xác lập ($t_s \pm 2%$) $1.25\text{ s}$ $0.78\text{ s}$ Nhanh hơn $37.6%$
Độ vọt lố lớn nhất ($M_p$) $11.4%$ $2.1%$ Giảm $81.5%$ (Triệt tiêu rung)
Sai số xác lập ($e_{ss}$) $0.25^\circ$ $0.08^\circ$ Chính xác hơn $68.0%$

2. Kết quả chạy thực nghiệm mô hình vật lý

  • Thực nghiệm góc Khớp 3 (Góc $45^\circ$ và $90^\circ$): Hệ thống bám giá trị đặt sau $0.85\text{ s}$ với sai số xác lập đo đạc thực tế chỉ $\pm 0.5^\circ$.
  • Vận hành chế độ Manual Mode: Người vận hành điều khiển trực tiếp từng thanh trượt (Slider) trên GUI, tay máy phản hồi trơn tru không trễ giật trong toàn bộ không gian làm việc.
  • Vận hành chế độ Auto Mode: Thực hiện chu trình di chuyển tự động qua 3 điểm cấu hình:
    • Điểm $P_1 (X_1=150, Y_1=0, Z_1=100) \rightarrow$ Điểm $P_2 (X_2=120, Y_2=120, Z_2=60) \rightarrow$ Điểm $P_3 (X_3=0, Y_3=180, Z_3=80)$.
    • Quỹ đạo chuyển động giữa các điểm diễn ra liên tục, tổng thời gian chuyển đổi trạng thái đạt yêu cầu thiết kế $T_{cycle} < 4.5\text{ s}$.

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

  1. Cấu trúc dẫn động lai tối ưu hóa tỷ số truyền (Hybrid Actuator Design): Thay vì sử dụng toàn bộ động cơ servo RC giá rẻ có độ rơ cơ khí cao hoặc toàn bộ động cơ bước gây nặng tải ở đầu cuối, nhóm đã giải quyết xuất sắc bài toán phân bố tải trọng: Khớp 1 xoay thân dùng Nema 17 + Hộp số $5.18:1$, Khớp 2 chịu mô-men uốn cực đại dùng Nema 17 + Hộp số hành tinh tỉ số cao $13.73:1$ để triệt tiêu tải trọng lực, Khớp 3 sử dụng động cơ DC Servo GM25-370 nhỏ gọn có hồi tiếp Encoder giúp giảm thiểu tối đa khối lượng quán tính của khâu di động.
  2. Làm chủ quy trình thiết kế cơ cấu in 3D chịu lực: Kết cấu cơ khí khâu 1, khâu 2 và đế được bổ sung các gân trợ lực dạng thanh tổ ong và bổ sung chi tiết mỹ thuật biểu tượng sao, vừa tối ưu hóa khối lượng riêng của nhựa in 3D PLA, vừa tăng mô-men kháng uốn lên $35%$ so với dạng ống rỗng thông thường.
  3. Phần mềm điều khiển mã nguồn mở, trực quan hóa cao: Xây dựng hoàn chỉnh hệ sinh thái điều khiển từ Scratch trên Python/PyQt5, hỗ trợ linh hoạt chuyển đổi giữa hệ tọa độ góc khớp (Joint Space) và hệ tọa độ Descartes (Task Space) với độ trễ truyền thông UART $< 10\text{ ms}$.

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

Kịch bản ứng dụng thực tiễn

  • Giáo dục và Đào tạo Đại học/Cao đẳng: Trở thành bộ kit thí nghiệm trực quan cho các môn học: Kỹ thuật Robot, Điều khiển Tự động, Lý thuyết Điều khiển Nâng cao và Hệ thống Nhúng.
  • Dây chuyền phân loại tự động quy mô nhỏ (SME Sorting Lines): Kết hợp khâu gắp khí nén/nam châm điện để bốc xếp sản phẩm theo màu sắc hoặc mã vạch trên băng tải.
  • Hỗ trợ hàn/khắc vi mạch thủ công: Điều khiển cánh tay mang đầu nhiệt/laser công suất thấp để gia công bề mặt 2D (Drawing Mode).
                      +-----------------------------+
                      |   CẤP PHÔI / BĂNG TẢI TRUYỀN|
                      +--------------+--------------+
                                     |
                                     v
                      +-----------------------------+
                      | FANUC 3-DOF ROBOT DISPATCH  |
                      |  (Auto Mode: P1 -> P2 -> P3)|
                      +--------------+--------------+
                                     |
           +-------------------------+-------------------------+
           |                                                   |
           v                                                   v
+-------------------------+                         +-------------------------+
| HỘP THÀNH PHẨM LOẠI A   |                         | HỘP THÀNH PHẨM LOẠI B   |
| (Tọa độ P2: X120, Y120) |                         | (Tọa độ P3: X0, Y180)   |
+-------------------------+                         +-------------------------+

Bảng dự toán chi phí sản xuất (Bill of Materials - BOM)

STT Tên linh kiện / Thiết bị Số lượng Đơn giá ước tính (VND) Thành tiền (VND)
1 Động cơ bước Nema 17 kèm giảm tốc $13.73:1$ 1 380.000 380.000
2 Động cơ bước Nema 17 kèm giảm tốc $5.18:1$ 1 320.000 320.000
3 Động cơ DC Servo GM25-370 có Encoder 1 185.000 185.000
4 Microstep Driver TB6600 2 120.000 240.000
5 Mạch cầu H điều khiển DC L298N 1 45.000 45.000
6 Board mạch điều khiển Arduino Mega 2560 R3 1 240.000 240.000
7 Nhựa in 3D PLA chịu lực + Gia công in 1.2 kg 350.000 / kg 420.000
8 Vòng bi chịu lực, trục ti, ốc vít M3-M5, nguồn 12V-5A 1 bộ 450.000 450.000
TỔNG Chi phí hoàn thiện trọn gói 01 bộ Robot - - 2.280.000 VND

(So với các module cánh tay robot đào tạo nhập khẩu có giá từ 15 đến 30 triệu VND, giải pháp giúp tiết kiệm hơn $85%$ chi phí).


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

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

  • Sai số tích lũy do độ cứng vững vật liệu: Nhựa in 3D PLA có hệ số giãn nở nhiệt và độ đàn hồi nhất định, khi vươn hết tầm với $R_{max} \approx 350\text{ mm}$ với tải nặng, đầu khâu 3 có hiện tượng võng nhẹ ($0.8\text{ mm}$).
  • Nhiệt độ hoạt động của Driver L298N: Mạch cầu H BJT L298N có sụt áp nội lớn ($V_{sat} \approx 1.8\text{V}$), tỏa nhiệt nhanh khi động cơ DC hoạt động liên tục trong thời gian dài trên 45 phút.

Hướng phát triển nâng cao

  1. Nâng cấp vật liệu và kết cấu cơ khí: Chuyển đổi các khớp chịu lực cao (Khớp 1, Khớp 2) sang gia công CNC nhôm 6061 hoặc sợi carbon để triệt tiêu hiện tượng đàn hồi.
  2. Nâng cấp hệ thống mạch điều khiển: Thay thế L298N bằng Driver MOSFET hiện đại (như VNH2SP30 hoặc TB67H420FTG) giúp tăng hiệu suất năng lượng lên $> 92%$.
  3. Mở rộng bậc tự do (6-DOF): Thiết kế cụm 3 khớp cổ tay vi sai (Wrist Roll-Pitch-Yaw) để đạt cấu hình 6 bậc tự do hoàn chỉnh chuẩn công nghiệp.
  4. Tích hợp Camera AI & Xử lý ảnh: Gắn Camera Intel RealSense D435 tại khâu thao tác cuối để thực hiện bài toán Eye-in-Hand / Eye-to-Hand Visual Servoing tự động nhận diện và gắp thả vật thể chuyển động.

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

  • Sinh viên & Học viên ngành Cơ điện tử, Tự động hóa, Robotics: Tiếp cận giáo trình thực tế, mã nguồn mở, tài liệu giải thuật động học - động lực học chuẩn hóa làm đồ án môn học hoặc khóa luận tốt nghiệp.
  • Kỹ sư phát triển hệ thống nhúng & Firmware: Nắm bắt kỹ thuật lập trình điều khiển đồng bộ động cơ bước, giải mã tín hiệu Encoder ngắt cứng và xây dựng giao thức truyền thông Serial chuyên nghiệp.
  • Các doanh nghiệp sản xuất vừa và nhỏ (SME): Có thể kế thừa nền tảng thiết kế này để tùy biến thành các cánh tay gắp nạp phôi tự động chi phí thấp cho các máy CNC, máy ép nhựa.
  • Nhà nghiên cứu học thuật: Sử dụng hệ thống làm Testbed vật lý để thử nghiệm các thuật toán điều khiển phi tuyến nâng cao như Điều khiển Trượt (Sliding Mode Control - SMC), Điều khiển Thích nghi (Adaptive Control), hoặc Học tăng cường (Reinforcement Learning).

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

1. Yêu cầu cấu hình máy tính và môi trường phần mềm để vận hành hệ thống là gì?

Máy tính chỉ cần chạy hệ điều hành Windows 10/11 hoặc Ubuntu Linux 20.04+, cài đặt Python 3.8+ cùng các thư viện PyQt5, pyserial, numpy. Môi trường lập trình Arduino IDE 1.8+ với cáp nạp USB Type-B kết nối trực tiếp cổng COM.

2. Tại sao Khớp 2 lại sử dụng hộp số giảm tốc có tỉ số cao $3969/289$ thay vì kéo trực tiếp?

Khớp 2 chịu toàn bộ mô-men uốn do trọng lực của khâu 2, khâu 3 và động cơ DC tạo ra theo quy tắc cánh tay đòn. Việc sử dụng tỉ số truyền cao $13.73:1$ giúp nhân mô-men xoắn của động cơ bước lên hơn 13 lần, đảm bảo giữ vững vị trí góc mà không bị mất bước (Lose steps) ngay cả khi ngắt xung giữ dòng.

3. Hệ thống xử lý hiện tượng trễ truyền thông UART giữa GUI Python và Arduino như thế nào?

GUI Python sử dụng cơ chế đa luồng (QThread) tách biệt luồng giao diện đồ họa với luồng giao tiếp cổng nối tiếp. Dữ liệu truyền đi dưới dạng gói tin ngắn gọn dạng ký tự ASCII kèm cờ bắt đầu/kết thúc ($S...E#) tại tốc độ Baudrate cao $115200\text{ bps}$, đảm bảo thời gian truyền nhận chu kỳ nhỏ hơn $5\text{ ms}$, không gây giật lag giao diện.

4. Chi phí bảo dưỡng và khả năng thay thế linh kiện khi xảy ra sự cố hỏng hóc?

Toàn bộ linh kiện cơ khí đều được in 3D nên có thể in lại file STL thay thế trong vòng 2-3 giờ với chi phí vài chục nghìn đồng. Các linh kiện điện tử (Arduino, Driver, Động cơ bước) đều là thiết bị tiêu chuẩn công nghiệp phổ biến trên thị trường, dễ dàng mua và thay thế tức thời.

5. Khả năng mở rộng từ 3 bậc tự do (3-DOF) lên 6 bậc tự do (6-DOF) có phức tạp không?

Cấu trúc phần mềm và Firmware được viết theo hướng module hóa đối tượng. Khi mở rộng lên 6-DOF, chỉ cần cập nhật thêm ma trận D-H $^3T_6$ vào thuật toán Động học trên Python, mở rộng thêm các chân phát xung/đọc tín hiệu trên vi điều khiển Arduino Mega 2560 (vốn còn dư hơn 30 chân I/O) mà không phải thay đổi kiến trúc hệ thống cốt lõi.


Kết luận

Đề tài "FANUC Robot 01 (Khớp 1-2-3)" thực hiện bởi nhóm sinh viên Khoa Điện – Điện Tử, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh đã chứng minh tính khả thi xuất sắc trong việc nội địa hóa và làm chủ công nghệ cánh tay robot công nghiệp từ khâu tính toán lý thuyết đến chế tạo thực nghiệm. Dự án không chỉ giải quyết thành công các bài toán phức tạp về động học, động lực học và thuật toán điều khiển thích nghi mờ (Fuzzy Logic), mà còn mở ra hướng tiếp cận chế tạo thiết bị đào tạo tự động hóa chất lượng cao với giá thành cực kỳ cạnh tranh.

Đây là tài liệu tham khảo kỹ thuật giá trị và nền tảng vững chắc cho cộng đồng sinh viên, kỹ sư và các nhà nghiên cứu trong hành trình làm chủ công nghệ robot công nghiệp hiện đại.