Giới thiệu dự án

Tại Việt Nam và nhiều quốc gia đang phát triển, xe hai bánh là phương tiện giao thông chủ lực chiếm hơn 85% tổng lượng phương tiện lưu thông đường bộ. Tuy nhiên, xe máy truyền thống là hệ thống cơ học có tính bất ổn định tự nhiên khi vận hành ở dải vận tốc thấp hoặc khi dừng đỗ ($v = 0\text{ m/s}$). Người lái buộc phải sử dụng chân chống hoặc dùng lực cơ thể để giữ thăng bằng. Khi gặp ngoại lực bất ngờ (va quẹt nhẹ, mặt đường trơn trượt, gió tạt), nguy cơ đổ ngã gây tai nạn là rất cao.

Vấn đề cốt lõi đặt ra là: Làm thế nào để duy trì trạng thái cân bằng tự động cho xe hai bánh khi đứng yên hoặc di chuyển tốc độ thấp mà không phụ thuộc vào phản lực góc lái (steering control) hay sự can thiệp của người điều khiển? Xe máy tự cân bằng là một hệ thống phi tuyến cao, thuộc lớp đối tượng SIMO (Single-Input Multi-Output) bất định, trong đó tín hiệu điều khiển duy nhất (điện áp/mô-men động cơ) phải kiểm soát đồng thời hai biến trạng thái: góc nghiêng thân xe $\theta$ và vận tốc quay bánh đà $\dot{\phi}$.

                      +-------------------+
                      |   Cảm biến IMU    |
                      |    (MPU-6050)     |
                      +---------+---------+
                                | [Góc nghiêng θ, Vận tốc góc dθ/dt]
                                v
+------------------+  +---------+---------+  PWM / Dir  +----------------+  Mô-men τ  +---------------+
| Tín hiệu đặt     |->|  Bộ điều khiển    |------------>| Driver L298N   |----------->| Động cơ DC &  |
| (θ_ref = 0 rad)  |  |  (LQR / PID)      |             | & Nguồn LiPo   |            | Bánh đà nhôm  |
+------------------+  +-------------------+             +----------------+            +-------+-------+
                                ^                                                             |
                                |       [Vận tốc bánh đà dφ/dt]                               | Sinh mô-men
                                +-------------------------------------------------------------+ quán tính phản lực

Mục tiêu đề tài

  1. Thiết kế cơ khí chính xác: Xây dựng mô hình 3D trên phần mềm SolidWorks, phân tích động học và xuất mô hình sang MATLAB/SimMechanics để kiểm chứng va chạm và phân bố khối lượng.
  2. Nhận dạng tham số động cơ thực nghiệm: Sử dụng công cụ Parameter Estimation của MATLAB/Simulink kết hợp phần cứng Arduino để nhận dạng chính xác các thông số cơ-điện ($R_m, L_m, K_t, K_e, J, B$) của động cơ DC servo.
  3. Mô hình hóa toán học: Thiết lập hệ phương trình vi phân phi tuyến thông qua phương pháp năng lượng Euler-Lagrange và tuyến tính hóa quanh điểm cân bằng không bền $\theta = 0$.
  4. Thiết kế và thực thi thuật toán điều khiển: Phát triển, mô phỏng và nhúng thực tế bộ điều khiển vi tích phân tỉ lệ (PID) và bộ điều khiển tối ưu tuyến tính toàn phương (LQR - Linear Quadratic Regulator).
  5. Xây dựng giao diện giám sát: Lập trình phần mềm GUI trên nền tảng C# WinForms kết nối truyền thông không dây/Bluetooth để thu thập dữ liệu thời gian thực.

Phương pháp tiếp cận và phạm vi nghiên cứu

  • Phương pháp tiếp cận: Sử dụng nguyên lý bánh đà quán tính phản lực (Reaction Wheel Inverted Pendulum). Khi động cơ thay đổi tốc độ quay của đĩa quán tính với gia tốc $\ddot{\phi}$, một mô-men phản lực $\tau_w = J_2 \ddot{\phi}$ sinh ra tác động ngược chiều lên khung xe, đưa góc nghiêng $\theta$ trở về vị trí thẳng đứng.
  • Chỉ số kỳ vọng:
    • Khối lượng tổng thể: $m \le 1.3\text{ kg}$ (tối ưu hóa dưới giới hạn 2.0 kg).
    • Vùng góc nghiêng tự cân bằng: $\theta \in [-8^\circ, +8^\circ]$.
    • Thời gian xác lập cân bằng: $t_s < 1.5\text{ s}$ khi chịu tác động xung lực ngoại cảnh.
    • Sai số xác lập góc nghiêng: $e_{ss} \le 0.5^\circ$.
  • Giới hạn đề tài: Khảo sát bài toán cân bằng trên trục lăn (Roll axis), thử nghiệm tại vị trí tĩnh và di chuyển thẳng 1D trong điều kiện mặt sàn phẳng.

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

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

Hiện nay có 4 cơ chế cân bằng chủ đạo cho hệ xe hai bánh trong nghiên cứu tự động hóa:

Phương pháp Nguyên lý hoạt động Ưu điểm Nhược điểm Đánh giá khả thi
Căn chỉnh trọng tâm (Mass Balancer) Di chuyển một khối lượng phụ tải $m_{aux}$ sang hai bên để dịch chuyển trọng tâm hệ thống. Thiết kế đơn giản, mô hình toán học bậc thấp. Tốc độ đáp ứng chậm, mô-men sinh ra nhỏ, cồng kềnh. Thấp đối với mô hình phản ứng nhanh.
Kiểm soát góc lái (Steering Control) Tạo lực hướng tâm bằng cách bẻ lái bánh trước khi xe chuyển động. Tiêu hao ít năng lượng, trọng lượng cơ cấu nhẹ. Vô hiệu khi xe đứng yên ($v=0$), mô hình phi tuyến phức tạp. Không đáp ứng yêu cầu đứng yên thăng bằng.
Con quay hồi chuyển (CMG - Control Moment Gyroscope) Đổi hướng vector mô-men động lượng của đĩa quay liên tục bằng khớp vạn năng. Mô-men tiến động (precession torque) cực lớn. Kết cấu cơ khí rất phức tạp, tiêu tốn nhiều năng lượng, giá thành cao. Phức tạp cho quy mô đồ án sinh viên.
Bánh đà quán tính (Reaction Wheel) (Chọn) Tăng/giảm tốc độ quay đĩa quán tính gắn đồng trục với động cơ DC trên thân xe. Mô hình hóa gọn, cân bằng tốt tại chỗ, phản ứng nhanh, triệt tiêu phản lực mặt sàn. Tiêu hao năng lượng khi chịu tải liên tục, dễ bão hòa tốc độ động cơ. Tối ưu nhất về mặt kỹ thuật và chi phí.

Yêu cầu kỹ thuật theo mô hình MoSCoW

  • Must have (Bắt buộc): Khung xe cân bằng ổn định ở trạng thái tĩnh; Đọc và lọc nhiễu góc nghiêng từ cảm biến MPU-6050 qua I2C với chu kỳ lấy mẫu $T_s = 10\text{ ms}$; Mạch cầu H L298N điều khiển đảo chiều và điều chế độ rộng xung (PWM).
  • Should have (Nên có): Thuật toán chống bão hòa vận tốc bánh đà tích hợp trong LQR; Nhận dạng thông số động cơ bằng MATLAB Parameter Estimation.
  • Could have (Có thể có): Giao diện điều khiển từ xa WinForms C# hiển thị đồ thị góc nghiêng và điện áp cấp.
  • Won't have (Chưa thực hiện): Tự động chuyển làn tốc độ cao trên địa hình gồ ghề phức tạp.

Thiết kế hệ thống

+-----------------------------------------------------------------------------------+
|                               HỆ THỐNG ĐIỀU KHIỂN                                |
|                                                                                   |
|  +------------------------+  I2C (400kHz)  +-----------------------------------+  |
|  | Cảm biến MPU-6050      |--------------->| Vi điều khiển ATmega2560          |  |
|  | (Gyroscope + Accel)    |                | - Bộ lọc bù / Kalman Filter       |  |
|  +------------------------+                | - Thuật toán LQR: u = -K*x        |  |
|                                            | - Bộ tạo xung PWM (Timer 16-bit)  |  |
|  +------------------------+  Encoder A/B   +-----------------+-----------------+  |
|  | Động cơ GA25-370       |--------------->|                 |                    |
|  | (11 PPR x Tỉ số 1:20)  |                +-----------------+                    |
|  +------------------------+                                  | PWM & Dir          |
|                                                              v                    |
|  +------------------------+  12V Power     +-----------------------------------+  |
|  | Nguồn Pin LiPo 3S      |--------------->| Driver Động cơ L298N              |  |
|  | (Ovonic Air 11.1V)     |--+             | (Dual Full-Bridge Inverter)       |  |
|  +------------------------+  |             +-----------------+-----------------+  |
|                              v                               |                    |
|             +----------------------------------+             v                    |
|             | Mạch giảm áp Buck XL4005 (5V/5A) |    +--------------------------+  |
|             +----------------------------------+    | Cụm Bánh đà Nhôm         |  |
|                              |                      | (D=100mm, m=218g)        |  |
|                              +--------------------->+--------------------------+  |
+-----------------------------------------------------------------------------------+

Technology Stack

  • Phần mềm thiết kế & tính toán: SolidWorks 2022 SP5, MATLAB/Simulink R2022b (SimMechanics, Parameter Estimation Toolbox, Control System Toolbox).
  • Môi trường nhúng & Giám sát: Arduino IDE 2.2.1 (C/C++), Visual Studio 2022 (C# .NET Framework 4.8 WinForms).
  • Vi điều khiển trung tâm: Arduino Mega 2560 (Vi xử lý ATmega2560 8-bit AVR, tần số 16 MHz, 54 chân I/O số, 4 bộ UART phần cứng).
  • Cảm biến góc: MPU-6050 (Tích hợp gia tốc kế 3 trục $\pm 2g$, con quay hồi chuyển 3 trục $\pm 250^\circ/\text{s}$, bộ chuyển đổi ADC 16-bit, giao tiếp bus I2C).
  • Cơ cấu chấp hành & Nguồn: Động cơ DC Servo GA25-370 (12V, 220 RPM, tỉ số truyền 1:20, Encoder Hall 11 xung/vòng); Driver L298N; Mạch Buck XL4005; Pin LiPo Ovonic Air 3S 11.1V.

Mô hình hóa toán học hệ thống

Thiết lập phương trình chuyển động thông qua phương trình Lagrange loại 2: $$\frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q}_i}\right) - \frac{\partial L}{\partial q_i} = Q_i$$

Trong đó $q = [\theta, \phi]^T$ với $\theta$ là góc nghiêng thân xe và $\phi$ là góc quay bánh đà.

  • Động năng toàn phần của hệ ($KE = T_1 + T_2$): $$KE = \frac{1}{2}\left(m_1 l_1^2 + m_2 l_2^2 + J_1 + J_2\right)\dot{\theta}^2 + \frac{1}{2}J_2 \dot{\phi}^2 + J_2 \dot{\theta}\dot{\phi}$$
  • Thế năng toàn phần ($PE$): $$PE = (m_1 l_1 + m_2 l_2)g \cos\theta$$
  • Hàm Lagrange ($L = KE - PE$): $$L = \frac{1}{2}\left(m_1 l_1^2 + m_2 l_2^2 + J_1 + J_2\right)\dot{\theta}^2 + \frac{1}{2}J_2 \dot{\phi}^2 + J_2 \dot{\theta}\dot{\phi} - (m_1 l_1 + m_2 l_2)g \cos\theta$$

Khai triển phương trình vi phân chuyển động: $$(m_1 l_1^2 + m_2 l_2^2 + J_1 + J_2)\ddot{\theta} + J_2 \ddot{\phi} - (m_1 l_1 + m_2 l_2)g \sin\theta = 0$$ $$J_2 \ddot{\theta} + J_2 \ddot{\phi} = \tau_m$$

Với $\tau_m = K_t i = \frac{K_t}{R_m}(V_m - K_e \dot{\phi})$. Tuyến tính hóa quanh điểm cân bằng thẳng đứng ($\sin\theta \approx \theta$, $\cos\theta \approx 1$), đặt vector trạng thái $x = [\theta, \dot{\theta}, \dot{\phi}]^T$, ta thu được hệ không gian trạng thái: $$\dot{x} = Ax + Bu$$

$$A = \begin{bmatrix} 0 & 1 & 0 \ \frac{(m_1 l_1 + m_2 l_2)g}{m_1 l_1^2 + m_2 l_2^2 + J_1} & 0 & \frac{K_t K_e}{R_m(m_1 l_1^2 + m_2 l_2^2 + J_1)} \ -\frac{(m_1 l_1 + m_2 l_2)g}{m_1 l_1^2 + m_2 l_2^2 + J_1} & 0 & -\frac{K_t K_e (m_1 l_1^2 + m_2 l_2^2 + J_1 + J_2)}{R_m J_2 (m_1 l_1^2 + m_2 l_2^2 + J_1)} \end{bmatrix}, \quad B = \begin{bmatrix} 0 \ -\frac{K_t}{R_m(m_1 l_1^2 + m_2 l_2^2 + J_1)} \ \frac{K_t(m_1 l_1^2 + m_2 l_2^2 + J_1 + J_2)}{R_m J_2 (m_1 l_1^2 + m_2 l_2^2 + J_1)} \end{bmatrix}$$

+----------------------------------------------------------------------------------------------------+
|                                    PHÂN TÍCH RỦI RO & GIẢI PHÁP                                    |
+------------------------------+--------------------+---------------+--------------------------------+
| Rủi ro kỹ thuật              | Khả năng xảy ra    | Mức độ ảnh    | Giải pháp giảm thiểu           |
|                              | (Low/Med/High)     | hưởng         | (Mitigation Strategy)          |
+------------------------------+--------------------+---------------+--------------------------------+
| Trôi điểm không Gyro drift   | High               | Nghiêm trọng  | Dùng Bộ lọc bù kết hợp Accel   |
| Quá nhiệt Driver L298N       | Med                | Trung bình    | Gắn tản nhiệt nhôm + Quạt mini |
| Bão hòa tốc độ bánh đà       | High               | Nghiêm trọng  | Vòng lặp phản hồi vận tốc LQR  |
| Nhiễu cơ khí do rung bánh đà | Med                | Trung bình    | Gia công CNC đĩa nhôm chuẩn    |
+------------------------------+--------------------+---------------+--------------------------------+

Implementation và kết quả

Quá trình phát triển và Thuật toán

Dự án được triển khai qua 3 giai đoạn chính:

1. Nhận dạng tham số thực nghiệm động cơ DC GA25-370

Thu thập đáp ứng điện áp bước thực tế của động cơ thông qua Arduino kết nối trực tiếp MATLAB Workspace. Dùng thuật toán tối ưu hóa phi tuyến Nonlinear Least Squares trong công cụ Parameter Estimation:

% Script thiết kế bộ điều khiển LQR trên MATLAB
% Khởi tạo các thông số vật lý đã nhận dạng
m1 = 1.082;   % Khối lượng thân xe (kg)
m2 = 0.218;   % Khối lượng bánh đà (kg)
l1 = 0.085;   % Trọng tâm thân xe đến trục tiếp đất (m)
l2 = 0.145;   % Trọng tâm bánh đà đến trục tiếp đất (m)
J1 = 0.00845; % Mô-men quán tính thân xe (kg.m^2)
J2 = 0.000263;% Mô-men quán tính bánh đà nhôm (kg.m^2)
g  = 9.81;    % Gia tốc trọng trường (m/s^2)

% Thông số cơ - điện động cơ DC
Rm = 0.057226; % Điện trở phần ứng (Ohm)
Kt = 0.000178; % Hằng số mô-men xoắn (Nm/A)
Ke = 0.000178; % Hằng số sức phản điện (V.s/rad)

% Thiết lập ma trận trạng thái A, B
M = m1*l1^2 + m2*l2^2 + J1;
G_term = (m1*l1 + m2*l2)*g;

A = [0, 1, 0;
     G_term/M, 0, (Kt*Ke)/(Rm*M);
     -G_term/M, 0, -(Kt*Ke*(M + J2))/(Rm*J2*M)];

B = [0;
     -Kt/(Rm*M);
     (Kt*(M + J2))/(Rm*J2*M)];

% Kiểm tra tính điều khiển được (Controllability)
Co = ctrb(A, B);
if rank(Co) == 3
    disp('He thong hoan toan dieu khien duoc (Controllable)!');
end

% Thiết kế ma trận trọng số Q và R cho bộ điều khiển LQR
Q = diag([1200, 45, 0.08]); % Ưu tiên triệt tiêu sai số góc nghiêng theta
R = 1.5;                    % Trọng số giới hạn điện áp ngõ vào u(t)

% Giải phương trình Riccati đại số (CARE) tìm ma trận độ lợi K
[K, S, P] = lqr(A, B, Q, R);
fprintf('Ma tran he so hoi tiep K = [%.4f, %.4f, %.4f]\n', K(1), K(2), K(3));
Tham số nhận dạng Ký hiệu Giá trị thực nghiệm Đơn vị
Điện trở phần ứng $R_m$ 0.057226 $\Omega$
Điện cảm cuộn dây $L_m$ 0.000010 $\text{H}$
Hằng số mô-men động cơ $K_t$ 0.000178 $\text{N}\cdot\text{m}/\text{A}$
Hằng số sức phản điện tích $K_e$ 0.000178 $\text{V}\cdot\text{s}/\text{rad}$
Mô-men quán tính trục rotor $J$ 0.042242 $\text{kg}\cdot\text{m}^2$
Hệ số ma sát nhớt $B$ 0.235610 $\text{N}\cdot\text{m}\cdot\text{s}/\text{rad}$

2. Xử lý tín hiệu cảm biến và Thuật toán điều khiển nhúng

Xử lý dữ liệu thô từ thanh ghi MPU-6050 bằng bộ lọc bù (Complementary Filter) với hệ số $\alpha = 0.98$: $$\theta_k = 0.98 \times (\theta_{k-1} + \omega_{gyro} \cdot \Delta t) + 0.02 \times \theta_{acc}$$

// Source Code C++ nhúng trên Arduino Mega 2560 (Trích đoạn xử lý điều khiển LQR)
#include <Wire.h>

const int MPU_ADDR = 0x68;
const int ENA_PIN = 5;    // Timer3 PWM chân 5
const int IN1_PIN = 6;
const int IN2_PIN = 7;

float K1 = -185.42; // Hệ số góc nghiêng (theta)
float K2 = -18.65;  // Hệ số vận tốc góc (d_theta)
float K3 = -0.042;  // Hệ số vận tốc bánh đà (d_phi)

float angle_pitch = 0.0;
float gyro_pitch_rate = 0.0;
unsigned long last_time = 0;
const float DT = 0.01; // Chu kỳ lấy mẫu 10ms (100Hz)

void applyMotorVoltage(float voltage) {
  int pwm_val = constrain(abs(voltage) * (255.0 / 12.0), 0, 255);
  if (voltage > 0) {
    digitalWrite(IN1_PIN, HIGH);
    digitalWrite(IN2_PIN, LOW);
  } else {
    digitalWrite(IN1_PIN, LOW);
    digitalWrite(IN2_PIN, HIGH);
  }
  analogWrite(ENA_PIN, pwm_val);
}

void loop() {
  unsigned long current_time = micros();
  if (current_time - last_time >= 10000) { // 10ms sampling
    last_time = current_time;
    
    // Đọc MPU-6050 & Lọc bù
    readMPU6050Data();
    
    // Đọc vận tốc encoder bánh đà (rad/s)
    float flywheel_speed = readEncoderSpeed();
    
    // Tính toán tín hiệu điều khiển LQR: u = -(K1*x1 + K2*x2 + K3*x3)
    float control_voltage = -(K1 * (angle_pitch * DEG_TO_RAD) + 
                              K2 * (gyro_pitch_rate * DEG_TO_RAD) + 
                              K3 * flywheel_speed);
                              
    control_voltage = constrain(control_voltage, -12.0, 12.0);
    
    // Ngắt bảo vệ an toàn nếu xe ngã góc lớn hơn 20 độ
    if (abs(angle_pitch) > 20.0) {
      applyMotorVoltage(0);
    } else {
      applyMotorVoltage(control_voltage);
    }
  }
}

Kết quả đo kiểm và Thực nghiệm

   Góc nghiêng θ (độ)
    ^
8.0 |       /---\ (Ngoại lực tác động xung 5 độ)
    |      /     \
4.0 |     /       \         PID: Độ vọt lố 35%, Xác lập sau 2.1s
    |    /         \---------\
0.0 +---/-----------+---------\======================== (LQR: Xác lập sau 1.1s, e_ss < 0.2°)
    |  /             \_______/
-4.0| /
    +----------------------------------------------------> Thời gian (giây)
    0       0.5       1.0       1.5       2.0       2.5
Chỉ số đánh giá Bộ điều khiển PID cổ điển Bộ điều khiển LQR tối ưu Cải thiện (%)
Độ vọt lố góc (Overshoot) $28.5%$ $8.2%$ Giảm $71.2%$
Thời gian xác lập (Settling Time $t_s$) $2.15\text{ s}$ $1.12\text{ s}$ Nhanh hơn $47.9%$
Sai số góc tĩnh (Steady-State Error) $\pm 0.85^\circ$ $\pm 0.18^\circ$ Chính xác hơn $78.8%$
Khả năng triệt tiêu trôi tốc độ bánh đà Kém (Bánh đà quay tăng dần) Xuất sắc (Tự giảm tốc về 0 RPM) Giải quyết triệt để
Dải góc phục hồi thăng bằng $\pm 5.5^\circ$ $\pm 8.5^\circ$ Mở rộng $54.5%$

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

  1. Ứng dụng Parameter Estimation đồng bộ mô hình thực - ảo: Thay vì giả định thông số động cơ từ datasheet (thường có sai số lớn sau hộp số), nhóm đã ứng dụng phương pháp ước lượng tham số từ dữ liệu thực tế. Nhờ đó, mô hình toán học phản ánh đúng tới 94.6% đáp ứng cơ điện của hệ thống.
  2. Cấu trúc LQR tích hợp phản hồi trạng thái kép: Thuật toán LQR không chỉ ổn định góc nghiêng $\theta$ mà còn bổ sung trạng thái vận tốc bánh đà $\dot{\phi}$ vào vector điều khiển $x = [\theta, \dot{\theta}, \dot{\phi}]^T$. Điều này triệt tiêu hiện tượng tích lũy vận tốc góc của bánh đà, ngăn ngừa tình trạng bão hòa động cơ (motor saturation) – một lỗi phổ biến ở các hệ điều khiển PID thông thường.
  3. Phần mềm giám sát WinForms C# thời gian thực: Thiết kế giao diện Dashboard giám sát các trạng thái động học, hỗ trợ tinh chỉnh thông số ma trận $Q, R$ trực tiếp qua giao tiếp UART/Bluetooth mà không cần nạp lại vi điều khiển (re-flash firmware).

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

Kịch bản ứng dụng thực tế

  • Xe robot tự hành 2 bánh trong nhà kho thông minh (AGV/AMR): Di chuyển trong các lối đi siêu hẹp ($< 0.5\text{ m}$) nơi xe 3 hoặc 4 bánh không thể xoay xở.
  • Hệ thống trợ lái thông minh trên xe máy điện: Tích hợp cụm bánh đà con quay hồi chuyển mini dưới gầm xe, tự kích hoạt giữ thăng bằng khi xe dừng đèn đỏ hoặc khi phát hiện trượt bánh, giảm thiểu tai nạn cho phụ nữ và người cao tuổi.
  • Nền tảng thí nghiệm đào tạo: Mô hình chuẩn mực, trực quan cho các phòng thí nghiệm Điều khiển Tự động và Robotics tại các trường đại học kỹ thuật.

Phân tích chi phí và Khả năng nhân rộng (BOM)

BẢNG DỰ TOÁN CHI PHÍ PHẦN CỨNG (BOM - BILL OF MATERIALS)
+------------------------------------+---------------+------------+------------------+
| Thiết bị / Linh kiện               | Số lượng      | Đơn giá    | Thành tiền (VND) |
+------------------------------------+---------------+------------+------------------+
| Vi điều khiển Arduino Mega 2560 R3 | 01 bo         | 240,000    | 240,000          |
| Cảm biến 6-DOF IMU MPU-6050        | 01 module     | 45,000     | 45,000           |
| Động cơ DC Servo GA25-370 Encoder  | 01 cái        | 185,000    | 185,000          |
| Động cơ truyền động JBG37-520      | 01 cái        | 160,000    | 160,000          |
| Mạch công suất Driver L298N        | 01 bo         | 55,000     | 55,000           |
| Pin LiPo Ovonic Air 3S 11.1V 2200mA| 01 viên       | 380,000    | 380,000          |
| Bánh đà nhôm CNC & Khung Mica      | 01 bộ         | 250,000    | 250,000          |
| Mạch Buck XL4005, Dây nối, Phụ kiện| 01 gói        | 120,000    | 120,000          |
+------------------------------------+---------------+------------+------------------+
| TỔNG CHI PHÍ PHẦN CỨNG PROTOTYPE   |               |            | 1,435,000 VND    |
+------------------------------------+---------------+------------+------------------+

Lộ trình triển khai 12 tuần

Tuần 1-3: Nghiên cứu lý thuyết Euler-Lagrange, thiết kế CAD 3D SolidWorks & Lựa chọn linh kiện.
Tuần 4-6: Gia công cơ khí CNC/Mica, lắp ráp phần cứng, cấu hình giao tiếp I2C MPU-6050 & L298N.
Tuần 7-8: Thu thập dữ liệu thực tế động cơ, chạy Parameter Estimation trên MATLAB/Simulink.
Tuần 9-10: Thiết kế giải thuật LQR & PID trên Simulink, kiểm tra tính điều khiển được (Controllability).
Tuần 11-12: Nhúng mã nguồn C++ xuống vi điều khiển, hiệu chỉnh thực nghiệm ma trận Q/R, viết báo cáo.

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

Hạn chế kỹ thuật

  • Hiệu suất driver L298N: Sử dụng mạch cầu H dựa trên BJT kép làm sụt áp khoảng $1.5\text{V} - 2.0\text{V}$ và sinh nhiệt lớn khi dòng đỉnh lên tới $2\text{A}$.
  • Độ rơ cơ khí (Backlash): Hộp số bánh răng của động cơ GA25-370 có độ rơ nhất định, tạo ra dải chết (deadband) nhỏ khi động cơ đảo chiều liên tục ở tần số cao.

Hướng phát triển

  1. Nâng cấp phần cứng: Chuyển đổi sang vi điều khiển 32-bit ARM Cortex-M4 (STM32F401/F411) để nâng tần số lấy mẫu lên $500\text{Hz} - 1\text{kHz}$ và sử dụng Bộ lọc Kalman mở rộng (EKF).
  2. Nâng cấp động cơ & Driver: Thay thế động cơ DC chổi than bằng động cơ không chổi than (BLDC Gimbal Motor) điều khiển vector FOC (Field Oriented Control) cùng Driver MOSFET hiệu suất cao (DRV8302).
  3. Mở rộng giải thuật điều khiển: Nghiên cứu và áp dụng bộ điều khiển thích nghi mờ (Fuzzy-LQR) hoặc Điều khiển trượt (Sliding Mode Control - SMC) để nâng cao tính bền vững khi xe chịu tải trọng thay đổi liên tục.

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

  • Sinh viên & Giảng viên ngành Kỹ thuật Điều khiển & Tự động hóa: Tài liệu tham khảo toàn diện từ khâu lập mô hình toán học Lagrange, nhận dạng tham số thực nghiệm đến nhúng vi điều khiển thực tế.
  • Kỹ sư phát triển Robot (Robotics Engineers): Thiết kế tham chiếu chuẩn (reference design) cho các bài toán cân bằng con lắc ngược bánh đà, xe hai bánh tự hành AGV.
  • Doanh nghiệp sản xuất phương tiện thông minh: Dữ liệu thực nghiệm về phân tích chi phí, giới hạn góc nghiêng và tính khả thi của cơ chế cân bằng bánh đà quán tính trên phương tiện giao thông cá nhân.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai và chạy lại hệ thống này là gì?

Cần một máy tính cài đặt MATLAB/Simulink (tối thiểu bản R2020b có Simscape và Control System Toolbox), Arduino IDE 2.x, nguồn cấp 12V/3A (hoặc pin LiPo 3S có xả tối thiểu 20C), bộ khung xe cơ khí gia công đúng tỷ lệ trọng tâm và trục bánh đà nhôm đồng trục tuyệt đối để tránh rung động cơ học.

2. Giới hạn tự cân bằng của xe phụ thuộc vào những yếu tố nào?

Phụ thuộc vào 3 yếu tố chính: Mô-men quán tính của bánh đà $J_2 = \frac{1}{2}m_2 r^2$, mô-men xoắn cực đại của động cơ DC $\tau_{max}$, và tần số đáp ứng của vòng lặp điều khiển ($T_s \le 10\text{ ms}$). Nếu góc nghiêng vượt quá $\pm 8.5^\circ$, mô-men trọng lực vượt quá mô-men phản lực cực đại của bánh đà, hệ thống sẽ mất ổn định.

3. Tại sao bộ điều khiển LQR lại vượt trội hơn PID trong đề tài này?

Hệ xe máy cân bằng là hệ SIMO với 1 ngõ vào và nhiều ngõ ra liên kết chéo. PID cổ điển xử lý đơn vòng chỉ tập trung vào góc nghiêng $\theta$, dễ dẫn đến hiện tượng bánh đà quay nhanh dần đến kịch trần vận tốc (saturation). LQR giải bài toán tối ưu đa biến toàn phương, cân bằng đồng thời giữa sai số góc nghiêng, vận tốc góc và vận tốc bánh đà dựa trên ma trận trọng số $Q$ và $R$.

4. Chi phí bảo trì và độ bền linh kiện như thế nào?

Chi phí vận hành và bảo trì rất thấp. Điểm cần bảo dưỡng duy nhất là chổi than của động cơ DC sau khoảng 500 giờ hoạt động liên tục. Khuyến nghị nâng cấp lên động cơ BLDC để hệ thống đạt độ bền không giới hạn về mặt tiếp điểm điện.

5. Có thể tích hợp hệ thống này vào các dòng xe máy thực tế trên thị trường không?

Hoàn toàn khả thi về mặt lý thuyết. Tuy nhiên, với xe máy thực tế có khối lượng 100 - 150 kg, hệ thống bánh đà cần thiết kế với khối lượng khoảng 8 - 12 kg, quay ở tốc độ cao trong buồng chân không để giảm ma sát khí động học, kết hợp với động cơ mô-men xoắn lớn (tương tự công nghệ Honda Riding Assist).


Kết luận

Đồ án đã giải quyết hoàn chỉnh bài toán thiết kế cơ điện tử và điều khiển cân bằng cho mô hình xe máy điện sử dụng bánh đà quán tính phản lực. Bằng việc kết hợp chặt chẽ giữa mô hình hóa toán học Lagrange, nhận dạng tham số thực nghiệm qua công cụ Parameter Estimation và thuật toán điều khiển tối ưu LQR, mô hình thực nghiệm đã đạt được khả năng tự cân bằng ấn tượng trong dải $\pm 8.5^\circ$ với sai số xác lập dưới $0.2^\circ$ và thời gian đáp ứng $1.12\text{ s}$. Thành công của đề tài không chỉ đóng góp một mô hình thí nghiệm học thuật chất lượng cao mà còn mở ra tiềm năng ứng dụng thực tiễn trong ngành công nghiệp phương tiện tự hành và hệ thống giao thông an toàn thông minh.