Giới thiệu dự án

Hệ thống con lắc ngược quay (Rotary Inverted Pendulum - RIP, hay còn gọi là Furuta Pendulum) là một mô hình thực nghiệm kinh điển trong lĩnh vực lý thuyết điều khiển tự động và robot học. Đây là hệ thống SIMO (Single Input - Multi Output) điển hình có cấu trúc cơ học gồm một cánh tay đòn quay ngang điều khiển bởi động cơ DC và một thanh con lắc tự do quay trong mặt phẳng thẳng đứng. Về mặt động lực học, hệ thống này sở hữu đặc tính phi tuyến cao, liên kết chéo phức tạp, thiếu cơ cấu chấp hành (underactuated system) và có điểm cân bằng làm việc không ổn định ở vị trí biên trên ($\alpha = 0$).

       [Encoder 400 P/R]
             |
             o (Khớp xoay tự do)
            / \
           /   \  Thanh con lắc ngược (Mp, Lp, góc alpha)
          /     \
         o-------+===================[Động cơ DC Nisca NF5475E]
          Cánh tay đòn (Mr, Lr, góc beta)    [Encoder 600 P/R]
                                            [STM32F407-DISC1]

Vấn đề kỹ thuật (Problem Statement)

Để giữ ổn định con lắc tại vị trí cân bằng thẳng đứng, bộ điều khiển phản hồi trạng thái tuyến tính bậc hai (Linear Quadratic Regulator - LQR) là giải pháp tối ưu hóa năng lượng và sai số. Tuy nhiên, việc lựa chọn hai ma trận trọng số trạng thái $Q$ và trọng số điều khiển $R$ trong hàm mục tiêu LQR theo phương pháp truyền thống (thử và sai - Trial and Error) tồn tại nhiều hạn chế:

  • Tốn thời gian và mang tính cảm tính: Không đảm bảo tìm ra nghiệm tối ưu toàn cục cho chất lượng động học.
  • Mâu thuẫn giữa các biến trạng thái: Cân bằng giữa góc lắc $\alpha$, vận tốc góc $\dot{\alpha}$, vị trí góc quay cánh tay $\beta$ và vận tốc góc $\dot{\beta}$ thường dẫn đến hiện tượng quá điều chỉnh hoặc thời gian xác lập kéo dài.
  • Bỏ qua động học điện áp thực tế: Đa số nghiên cứu lý thuyết giả định tín hiệu điều khiển là mô-men xoắn $\tau$, gây sai lệch lớn khi áp dụng vào phần cứng thực tế vốn nhận tín hiệu điều khiển trực tiếp là điện áp cấp cho mạch cầu H qua xung PWM.

Mục tiêu dự án

  1. Xây dựng mô hình toán học giải tích toàn diện: Thiết lập hệ phương trình vi phân phi tuyến chuyển động của RIP thông qua phương trình Euler-Lagrange và tích hợp đầy đủ mô hình điện - cơ của động cơ DC servo với đầu vào là điện áp $e(t)$.
  2. Tuyến tính hóa và thiết kế bộ điều khiển LQR: Xây dựng hệ không gian trạng thái $\dot{x} = Ax + Bu$ quanh điểm cân bằng trên và xác định luật điều khiển phản hồi trạng thái $u = -Kx$.
  3. Ứng dụng giải thuật tối ưu bầy đàn (PSO): Tự động hóa quá trình dò tìm các phần tử của ma trận trọng số $Q$ và $R$ nhằm cực tiểu hóa chỉ số tích phân bình phương sai số (Integrated-Squared-Error - ISE).
  4. Hiện thực hóa trên phần cứng nhúng: Triển khai thuật toán điều khiển thời gian thực bằng bo mạch vi điều khiển STM32F407-DISC1 thông qua công cụ MATLAB/Simulink Embedded Coder.

Dự kiến kết quả và giới hạn phạm vi

  • Kết quả kỳ vọng: Con lắc đạt trạng thái cân bằng xác lập trong thời gian $t_s < 1.0\text{s}$ ở mô phỏng và $t_s < 4.0\text{s}$ trên thực nghiệm; biên độ dao động duy trì trong khoảng hẹp $\pm 0.02\text{ rad}$; giảm chỉ số sai số ISE hơn $25%$ so với phương pháp chỉnh định thủ công.
  • Phạm vi và giới hạn: Dự án tập trung vào bài toán giữ cân bằng ổn định cục bộ (stabilization/balancing control) cho hệ RIP đơn liên kết (1 bậc tự do con lắc xoay); không tích hợp giải thuật tự kích đảo (swing-up control) từ vị trí treo dưới.

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

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

Trong điều khiển hệ RIP, nhiều giải pháp thuật toán đã được khảo sát trên thế giới và tại Việt Nam:

Giải pháp điều khiển Ưu điểm Nhược điểm Đánh giá độ khả thi trên phần cứng nhúng
PID cổ điển Cấu trúc đơn giản, dễ cài đặt trên MCU giá rẻ. Không đảm bảo ổn định toán học cho hệ SIMO phi tuyến cao; khó cân bằng đồng thời $\alpha$ và $\beta$. Khả thi nhưng chất lượng đáp ứng kém, dễ mất ổn định.
Điều khiển trượt (SMC) Bền vững cao trước nhiễu và sai số mô hình. Hiện tượng rung giật (chattering) làm nóng động cơ, mòn cơ cấu cơ khí và quá nhiệt cầu H. Đòi hỏi xử lý lọc thông thấp hoặc hàm biên, tải tính toán trung bình.
Backstepping / Phi tuyến Chứng minh ổn định toàn cục bằng hàm Lyapunov. Phụ thuộc tuyệt đối vào độ chính xác của thông số vật lý; giải thuật tính toán phức tạp. Khó triển khai thời gian thực với chu kỳ trích mẫu ngắn trên MCU phổ thông.
LQR chuẩn hóa Tối ưu hóa năng lượng và chất lượng trạng thái. Ma trận $Q, R$ chọn thủ công dẫn đến đáp ứng cục bộ dưới mức tối ưu. Rất phù hợp cho xử lý nhúng do luật điều khiển chỉ là phép nhân ma trận $u = -Kx$.
PSO-LQR (Đề xuất) Tối ưu hóa toàn cục $Q, R$, triệt tiêu chattering, tối thiểu hóa hàm mục tiêu ISE. Cần thời gian tính toán tối ưu offline trước khi nạp ma trận $K$ xuống MCU. Tối ưu tuyệt đối: giữ nguyên sự tinh gọn khi thực thi nhúng mà đạt chất lượng tối ưu.

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

  • Must have (Bắt buộc): Đọc chính xác góc quay từ 2 Encoder quang học; tính toán đạo hàm rời rạc/vận tốc góc; xuất xung PWM điều khiển cầu H lái động cơ DC; giữ cân bằng thanh lắc quanh điểm $\alpha = 0\text{ rad}$.
  • Should have (Nên có): Tối ưu hóa ma trận độ lợi $K = [k_1, k_2, k_3, k_4]$ bằng giải thuật PSO theo chỉ tiêu sai số tích phân ISE; giao tiếp giám sát dữ liệu thời gian thực qua UART/Simulink External Mode.
  • Could have (Có thể có): Gán trọng số ưu tiên độc lập cho từng sai số $e_1 (\alpha), e_2 (\dot{\alpha}), e_3 (\beta), e_4 (\dot{\beta})$ trong hàm chi phí PSO.
  • Won't have (Không thực hiện): Tự động phát hiện góc rơi tự do để kích dao động swing-up tự động.

Thiết kế kiến trúc hệ thống

+-----------------------------------------------------------------------------------+
|                              MÔ HÌNH PHẦN CỨNG RIP                               |
|                                                                                   |
|  +--------------------+       PWM / DIR       +--------------------------------+  |
|  | Cầu H Công Suất    | <-------------------- | STM32F407-DISC1 (ARM Cortex-M4)|  |
|  +--------------------+                       +--------------------------------+  |
|            | 12V DC                                   ^                ^          |
|            v                                          | Kênh A/B       | Kênh A/B |
|  +--------------------+                               |                |          |
|  | Động cơ DC Servo   |                               |                |          |
|  | Nisca NF5475E      | ----[Cánh tay đòn]----+----> [Encoder 600 P/R] |          |
|  +--------------------+                    |                           |          |
|                                            +-------> [Encoder 400 P/R]-+          |
|                                                    (Thanh lắc ngược)              |
+-----------------------------------------------------------------------------------+

Technology Stack và cấu hình phần cứng

  • Vi điều khiển: STM32F407VGT6 (Core ARM Cortex-M4, xung nhịp 168 MHz, 1 MB Flash, 192 KB SRAM, tích hợp phần cứng FPU và thư viện tập lệnh CMSIS-DSP).
  • Động cơ DC Servo: Nisca NF5475E ($R_m = 11.944,\Omega$, $K_b = K_t = 0.08616\text{ V}/(\text{rad/s})$, $J_m = 6.7436 \times 10^{-5}\text{ kg}\cdot\text{m}^2$).
  • Cảm biến: Encoder cánh đòn 600 Pulse/Rev (xử lý giải mã nhân 4 đạt 2400 xung/vòng); Encoder thanh lắc 400 Pulse/Rev (giải mã nhân 4 đạt 1600 xung/vòng).
  • Phần mềm: MATLAB/Simulink R2022b, Embedded Coder Support Package for STMicroelectronics STM32 Processors, STM32CubeMX v6.8.0.

Phương pháp luận (Methodology) và Kế hoạch thực hiện

Dự án áp dụng mô hình phát triển chữ V (V-Model) kết hợp thiết kế dựa trên mô hình (Model-Based Design):

  1. Giai đoạn 1 (Tuần 1 - 4): Phân tích động học Lagrange, xây dựng mô hình toán phi tuyến, khảo sát thông số điện - cơ thực tế.
  2. Giai đoạn 2 (Tuần 5 - 8): Tuyến tính hóa hệ thống, thiết lập môi trường mô phỏng Simulink, cài đặt gói nhúng Embedded Coder trên STM32F407.
  3. Giai đoạn 3 (Tuần 9 - 11): Lập trình giải thuật PSO tối ưu hóa ma trận $Q, R$, tinh chỉnh không gian tìm kiếm.
  4. Giai đoạn 4 (Tuần 12 - 14): Nhúng mã điều khiển xuống bo mạch phần cứng, hiệu chỉnh chu kỳ ngắt thời gian thực, đo lường đáp ứng thực nghiệm.
  5. Giai đoạn 5 (Tuần 15 - 18): Đánh giá sai số ISE, nghiệm thu, phân tích độ nhạy và viết tài liệu kỹ thuật.

Implementation và kết quả

Quy trình phát triển và chi tiết thuật toán

1. Mô hình toán học động lực học Lagrange

Hàm Lagrange của hệ thống được xác định qua động năng $T$ và thế năng $V$: $$L = T - V = (T_{\text{pendulum}} + T_{\text{arm}}) - V_{\text{system}}$$

Áp dụng phương trình Euler-Lagrange: $$\frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q}_k}\right) - \frac{\partial L}{\partial q_k} = Q_k$$

Sau khi tích hợp phương trình cân bằng dòng điện động cơ $\displaystyle i = \frac{e - K_b \dot{\beta}}{R_m}$ và lực điện từ $\tau_m = K_t i$, ta thu được phương trình vi phân trạng thái phi tuyến dạng ma trận: $$D(\alpha, \beta)\ddot{q} + C(\alpha, \dot{\alpha}, \beta, \dot{\beta})\dot{q} + G(\alpha, \beta) = V_m$$

Đặt vector trạng thái $x = [\alpha, \dot{\alpha}, \beta, \dot{\beta}]^T = [x_1, x_2, x_3, x_4]^T$, tuyến tính hóa hệ thống quanh điểm cân bằng trên $x_0 = [0, 0, 0, 0]^T$ với tín hiệu điều khiển điện áp $u = e(t)$, ta có hệ không gian trạng thái: $$\dot{x}(t) = Ax(t) + Bu(t), \quad y(t) = Cx(t)$$

2. Thuật toán tối ưu bầy đàn (PSO) cho bộ điều khiển LQR

Hàm mục tiêu (Cost Function) được chọn là chỉ số tích phân bình phương sai số: $$J_{\text{PSO}} = \text{ISE} = \int_{0}^{t_f} \left(w_1 e_1^2 + w_2 e_2^2 + w_3 e_3^2 + w_4 e_4^2\right) dt$$

Vận tốc và vị trí của từng hạt cá thể trong bầy đàn được cập nhật liên tục qua từng thế hệ: $$V_j(i+1) = w \cdot V_j(i) + c_1 r_1 \left(X_j^*(i) - X_j(i)\right) + c_2 r_2 \left(X^{**}(i) - X_j(i)\right)$$ $$X_j(i+1) = X_j(i) + V_j(i+1)$$

% MATLAB Implementation: Tinh toan ma tran K va toi uu hoa LQR bang PSO
function [best_K, best_cost] = optimize_LQR_PSO(A, B, num_particles, max_iter)
    n_vars = 5; % q1, q2, q3, q4, r
    lb = [0, 0, 0, 0, 1];
    ub = [1000, 1000, 1000, 1000, 5];
    
    % Khoi tao quan the
    particles_pos = lb + (ub - lb) .* rand(num_particles, n_vars);
    particles_vel = zeros(num_particles, n_vars);
    pbest_pos = particles_pos;
    pbest_val = inf(num_particles, 1);
    gbest_val = inf;
    gbest_pos = zeros(1, n_vars);
    
    w = 0.729; c1 = 1.494; c2 = 1.494;
    
    for iter = 1:max_iter
        for j = 1:num_particles
            Q = diag(particles_pos(j, 1:4));
            R = particles_pos(j, 5);
            
            % Giai phuong trinh Dai so Riccati (ARE)
            [K, P, ~] = lqr(A, B, Q, R);
            
            % Tinh toan chi phi ISE bang mo phong he kin
            cost = simulate_system_ise(A, B, K);
            
            if cost < pbest_val(j)
                pbest_val(j) = cost;
                pbest_pos(j, :) = particles_pos(j, :);
            end
            if cost < gbest_val
                gbest_val = cost;
                gbest_pos = particles_pos(j, :);
            end
        end
        % Cap nhat van toc va toa do hat
        r1 = rand(num_particles, n_vars);
        r2 = rand(num_particles, n_vars);
        particles_vel = w * particles_vel + c1 * r1 .* (pbest_pos - particles_pos) ...
                                          + c2 * r2 .* (repmat(gbest_pos, num_particles, 1) - particles_pos);
        particles_pos = particles_pos + particles_vel;
        particles_pos = max(min(particles_pos, ub), lb);
    end
    best_Q = diag(gbest_pos(1:4));
    best_R = gbest_pos(5);
    best_K = lqr(A, B, best_Q, best_R);
    best_cost = gbest_val;
end

3. Thiết kế luồng xử lý thời gian thực trên STM32F407

Hệ thống nhúng được cấu hình thực thi với cơ chế đa ngắt phân tầng:

  • Timer 2 (Chu kỳ $1\text{ ms} = 1000\text{ Hz}$): Đọc dữ liệu giải mã quadrature từ ngắt ngoài của 2 Encoder, tính toán sai phân rời rạc để ước lượng vận tốc góc $\dot{\alpha}$ và $\dot{\beta}$.
  • Timer 1 (Chu kỳ $10\text{ ms} = 100\text{ Hz}$): Thực thi thuật toán điều khiển LQR: $u(k) = -K \cdot x(k) = -(k_1 x_1 + k_2 x_2 + k_3 x_3 + k_4 x_4)$, chuẩn hóa sang độ rộng xung PWM $[0 - 100%]$ và xuất tín hiệu điều khiển chiều quay đến mạch cầu H.
/* C snippet: Ngat dieu khien thoi gian thuc tren STM32F407 */
void TIM1_UP_TIM10_IRQHandler(void) {
    if (__HAL_TIM_GET_FLAG(&htim1, TIM_FLAG_UPDATE) != RESET) {
        __HAL_TIM_CLEAR_IT(&htim1, TIM_FLAG_UPDATE);
        
        /* 1. Doc bien trang thai tu bo dem Timer 2 */
        float alpha      = get_pendulum_angle_rad();
        float alpha_dot  = get_pendulum_velocity_rad_s();
        float beta       = get_arm_angle_rad();
        float beta_dot   = get_arm_velocity_rad_s();
        
        /* 2. Tinh toan luat dieu khien LQR toi uu tu PSO */
        float u_voltage = -(K_GAIN[0]*alpha + K_GAIN[1]*alpha_dot + 
                            K_GAIN[2]*beta  + K_GAIN[3]*beta_dot);
        
        /* 3. Bao hoa dien ap va chuyen doi PWM */
        if (u_voltage > 12.0f)  u_voltage = 12.0f;
        if (u_voltage < -12.0f) u_voltage = -12.0f;
        
        set_motor_pwm_duty(u_voltage);
    }
}

Kiểm thử và đánh giá kết quả

Hệ thống được kiểm thử với điều kiện lệch ban đầu $\alpha(0) = \frac{\pi}{18}\text{ rad} = 10^\circ$, $\beta(0) = -0.5\text{ rad}$. Kết quả so sánh giữa phương pháp chọn thử nghiệm ma trận trọng số và các trường hợp tối ưu PSO được lượng hóa chi tiết trong bảng dưới đây:

Kịch bản khảo sát Ma trận trọng số ($Q, R$) Vector hệ số hồi tiếp $K$ ISE Mô phỏng ISE Thực nghiệm Thời gian xác lập $\alpha$ ($t_s$) Độ lệch xác lập $\alpha$
LQR Tự chọn (Trial & Error) $Q = \text{diag}(600, 600, 0, 0)$, $R = 1$ $[-374.2, -53.1, -1.0, -2.4]$ $445.96$ $32,663$ $4.0\text{ s}$ $\pm 0.020\text{ rad}$
PSO Trường hợp A ($Q \le 200$) $Q = \text{diag}(200, 78.4, 0, 0)$, $R = 1$ $[-338.8, -48.2, -0.9, -2.1]$ $215.30$ $32,244$ $0.8\text{ s}$ $\pm 0.030\text{ rad}$
PSO Trường hợp B ($Q \le 1000$) $Q = \text{diag}(1000, 1000, 886.5, 0)$, $R = 1$ $[-529.2, -75.1, -29.7, -15.8]$ $69.40$ $24,047$ $0.8\text{ s}$ $\pm 0.015\text{ rad}$
PSO Trường hợp C ($Q \le 5000$) $Q = \text{diag}(5000, 5000, 3494.2, 0)$, $R = 1$ $[-820.5, -116.3, -59.1, -31.4]$ $23.10$ $21,890$ $0.5\text{ s}$ $\pm 0.010\text{ rad}$
Chi so sai so tich phan ISE thuc nghiem:
Trial & Error: [========================================] 32,663
PSO (Q <= 200): [=======================================] 32,244 (-1.28%)
PSO (Q <= 1000):[=============================] 24,047 (-26.38%)
PSO (Q <= 5000):[==========================] 21,890 (-32.98%)

Phân tích kết quả đạt được

  • Chất lượng đáp ứng mô phỏng: Thuật toán PSO giúp giảm chỉ số ISE mô phỏng từ $445.96$ xuống $69.40$ (giảm $84.4%$) ở biên $Q \le 1000$, rút ngắn thời gian ổn định góc lắc $\alpha$ từ $4.0\text{s}$ xuống còn $0.8\text{s}$.
  • Chất lượng đáp ứng thực nghiệm: Khi đưa ma trận $K$ tối ưu từ PSO xuống kit STM32F407, chỉ số ISE giảm từ $32,663$ xuống $24,047$ (cải thiện $26.38%$). Dao động thực tế của con lắc quanh điểm cân bằng trên duy trì ổn định trong phạm vi cực tiểu $\pm 0.015\text{ rad}$ ($< 0.9^\circ$), thanh cánh tay đòn không bị trôi điểm làm việc.

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

  1. Chuẩn hóa mô hình động lực học lấy điện áp làm biến điều khiển đầu vào: Thay vì giả định đầu vào là mô-men xoắn $\tau$ như các nghiên cứu thuần lý thuyết, đề tài đã giải tích hóa liên kết điện áp động cơ $e(t) \rightarrow \tau \rightarrow \ddot{q}$, giúp loại bỏ sai số giữa mô phỏng và phần cứng thực tế.
  2. Khắc phục triệt để hiện tượng chattering: Khác với bộ điều khiển trượt (Sliding Mode Control - SMC) vốn tạo dao động đóng ngắt tần số cao quanh mặt trượt làm hại cơ cấu cơ khí, giải pháp PSO-LQR tạo ra tín hiệu điều khiển liên tục, mượt mà, giúp tăng tuổi thọ động cơ và mạch công suất.
  3. Cơ chế tối ưu hóa bầy đàn đa chiều không phụ thuộc đạo hàm: Tự động hóa hoàn toàn việc tìm kiếm không gian nghiệm ma trận $Q, R$ 5 chiều $(q_1, q_2, q_3, q_4, r)$ theo tiêu chuẩn tối ưu hóa năng lượng và chất lượng động học tích phân ISE.
  4. Quy trình triển khai mã nhúng tự động (MBD - Model-Based Design): Sử dụng Simulink Embedded Coder để biên dịch trực tiếp sang mã C tối ưu hóa với CMSIS-DSP, loại bỏ hoàn toàn lỗi gõ code thủ công và đảm bảo tính tất định (deterministic) thời gian thực.

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

Trường hợp ứng dụng trong công nghiệp (Use Cases)

  • Hệ thống phóng và hạ cánh tên lửa tái sử dụng: Ổn định vector lực đẩy (Thrust Vector Control - TVC) trong quá trình hạ cánh thẳng đứng tương tự tên lửa Falcon 9 của SpaceX.
  • Robot hai bánh tự cân bằng (Self-Balancing Transporter/Segway): Duy trì vị trí thăng bằng ổn định của trọng tâm người lái khi di chuyển qua địa hình gồ ghề.
  • Hệ thống cẩu trục cảng biển chống rung lắc hàng hóa (Anti-Sway Gantry Crane): Giảm thiểu quán tính lắc của thùng container treo lơ lửng trong quá trình bốc dỡ tốc độ cao.
+-------------------------------------------------------------------------------+
|                            QUY TRÌNH DEPLOY HỆ THỐNG                          |
|                                                                               |
| [1. Cân chỉnh cơ khí] -> [2. Cấu hình STM32CubeMX] -> [3. Nạp Model Simulink] |
|   - Siết chặt khớp nối     - TIM2: Encoder Mode x4      - Nhúng mã tự động    |
|   - Cấp nguồn 12V/5A       - TIM1: Ngắt điều khiển      - External Mode UART  |
+-------------------------------------------------------------------------------+

Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit Analysis)

  • Chi phí phần cứng thử nghiệm: Bo STM32F407-DISC1 (~$25 USD), Động cơ DC servo & Encoder (~$50 USD), Mạch cầu H L298N/BTS7960 (~$10 USD), Cơ cấu cơ khí nhôm định hình (~$35 USD). Tổng chi phí nguyên mẫu $< 120\text{ USD}$.
  • Hiệu quả kinh tế: So với các bộ kit thí nghiệm chuyên dụng nhập khẩu (như Quanser QUBE-Servo có giá từ $3,000 - $5,000 USD), giải pháp tự chủ thiết kế mang lại hiệu năng tương đương với giá thành chỉ bằng khoảng $3 - 4%$, phục vụ hoàn hảo cho đào tạo và R&D.

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

Hạn chế kỹ thuật

  • Vùng ổn định cục bộ: Bộ điều khiển LQR tuyến tính hóa chỉ hoạt động chính xác trong lân cận điểm cân bằng góc hẹp ($|\alpha| \le 15^\circ$); khi góc lệch lớn hơn, hệ thống rơi vào trạng thái mất ổn định phi tuyến.
  • Nhiễu đo lường vận tốc: Việc tính toán vận tốc góc $\dot{\alpha}, \dot{\beta}$ qua phép lấy đạo hàm sai phân Euler bậc một từ xung Encoder dễ sinh nhiễu tần số cao tại các điểm vận tốc thấp.

Hướng phát triển tiếp theo

  • Tích hợp giải thuật Swing-up phi tuyến: Kết hợp bộ điều khiển năng lượng (Energy-based Control) để tự động kích con lắc từ vị trí treo dưới lên vị trí thẳng đứng trước khi chuyển giao quyền điều khiển cho PSO-LQR.
  • Ứng dụng bộ lọc Kalman mở rộng (EKF): Ước lượng chính xác trạng thái và lọc nhiễu cho tín hiệu vận tốc góc thay thế cho phép vi phân rời rạc.
  • Mở rộng mô hình con lắc ngược 2 bậc (Double Inverted Pendulum): Thử nghiệm thuật toán PSO-LQR trên các hệ thống có mức độ thiếu cơ cấu chấp hành cao hơn.

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

  • Sinh viên & Học viên cao học: Cung cấp tài liệu hoàn chỉnh từ mô hình hóa giải tích Lagrange đến kỹ thuật nhúng mã C trên dòng vi điều khiển ARM Cortex-M4.
  • Kỹ sư phát triển hệ thống nhúng (Embedded Developers): Nắm vững quy trình Model-Based Design với MATLAB/Simulink Embedded Coder và STM32CubeMX.
  • Nhà nghiên cứu lý thuyết điều khiển: Dữ liệu thực nghiệm phong phú đối chiếu giữa mô phỏng và phần cứng thực tế đối với thuật toán bầy đàn PSO và LQR.
  • Doanh nghiệp giáo dục & Thiết bị thí nghiệm: Cơ sở thiết kế và chế tạo các bộ thực hành điều khiển tự động chi phí thấp, độ bền cao.

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

1. Yêu cầu cấu hình phần cứng tối thiểu để triển khai giải thuật là gì?

Hệ thống yêu cầu vi điều khiển có tối thiểu 2 bộ Timer hỗ trợ chế độ đọc Encoder phần cứng (Encoder Mode x4), 1 kênh xuất xung PWM tần số $\ge 10\text{ kHz}$, bộ nhớ tối thiểu $64\text{ KB Flash}$, $16\text{ KB SRAM}$ và hỗ trợ tính toán số thực dấu phẩy động (FPU khuyến nghị để tối ưu thời gian trích mẫu $10\text{ ms}$).

2. Tại sao lại chọn hàm mục tiêu ISE thay vì IAE hay ITAE cho PSO?

Chỉ số ISE (Integrated-Squared-Error) tính bình phương sai số $\int e^2(t)dt$, do đó nó áp mức phạt rất nặng lên các sai số có biên độ lớn ở giai đoạn đầu, giúp con lắc phản ứng cực nhanh để trở về vùng cân bằng, giảm thiểu thời gian xác lập $t_s$.

3. Tần số lấy mẫu của hệ thống được chọn dựa trên tiêu chuẩn nào?

Vòng lặp tính toán vận tốc Timer 2 được đặt ở $1000\text{ Hz}$ ($1\text{ ms}$) để đảm bảo đếm đủ độ phân giải xung encoder; vòng lặp điều khiển Timer 1 đặt ở $100\text{ Hz}$ ($10\text{ ms}$), nhanh gấp hơn 10 lần tần số dao động riêng của thanh lắc ($\omega_n \approx 8.5\text{ rad/s}$), thỏa mãn hoàn toàn định lý lấy mẫu Nyquist-Shannon.

4. Làm thế nào để mở rộng không gian tìm kiếm ma trận $Q, R$ trong PSO mà không gây quá tải động cơ?

Cần giới hạn cận trên của thành phần ma trận $R \ge 1$ và khống chế biên độ điện áp tính toán từ ma trận $K$ qua khối bão hòa (Saturation block) ở mức tối đa $\pm 12\text{V}$ để bảo vệ cuộn dây động cơ và tránh hiện tượng sụt áp nguồn.

5. Bộ điều khiển có hoạt động được khi có tải trọng thay đổi đột ngột trên con lắc không?

Với độ bền vững dự trữ biên độ và biên pha của LQR kết hợp với bộ tham số tối ưu từ PSO, hệ thống chịu được nhiễu xung lực nhẹ tác động vào đầu thanh lắc. Tuy nhiên, nếu khối lượng $M_p$ thay đổi $> 20%$, cần chạy lại thuật toán PSO offline để cập nhật ma trận $K$ mới hoặc tích hợp cơ chế tự chỉnh thích nghi (Adaptive Control).


Kết luận

Dự án đã giải quyết thành công bài toán giữ cân bằng ổn định cho hệ thống con lắc ngược quay (Rotary Inverted Pendulum) thông qua việc kết hợp giữa lý thuyết điều khiển tối ưu LQR và giải thuật thông minh bầy đàn PSO. Bằng cách thiết lập chính xác mô hình toán học giải tích tích hợp động lực học điện áp động cơ và tự động hóa quá trình tối ưu hóa ma trận trọng số $Q, R$, hệ thống đã đạt được chất lượng động học vượt trội với thời gian xác lập dưới $0.8\text{s}$, giảm chỉ số sai số tích phân ISE thực nghiệm tới $26.38%$ so với phương pháp truyền thống.

Quy trình thiết kế dựa trên mô hình (MBD) liên kết giữa MATLAB/Simulink và vi điều khiển STM32F407-DISC1 đã chứng minh tính khả thi, độ tin cậy cao và mở ra hướng đi hiệu quả cho việc phát triển các thiết bị điều khiển tự động hóa chính xác cao với chi phí tối ưu.