Giới thiệu dự án

Trong kỷ nguyên công nghiệp 4.0 và tự động hóa thông minh, nhu cầu về các phương tiện tự hành (Autonomous Guided Vehicles - AGV) và robot di động (Mobile Robots) phục vụ nhà xưởng, kho bãi thông minh có xu hướng tăng trưởng hơn 22.4% mỗi năm. Tuy nhiên, các dòng robot đa bánh truyền thống (3 hoặc 4 bánh) thường gặp hạn chế nghiêm trọng về không gian quay đầu, bán kính xoay lớn ($R > 0$) và nguy cơ trượt/lật khi di chuyển trên địa hình nghiêng, gồ ghề.

Mô hình Robot hai bánh tự cân bằng (Two-Wheeled Self-Balancing Robot - TWSBR) dựa trên nguyên lý con lắc ngược (Inverted Pendulum) mang lại giải pháp vượt bậc nhờ khả năng xoay tại chỗ ($R = 0$), tối ưu hóa diện tích tiếp xúc mặt sàn và tự động điều chỉnh trọng tâm. Đồ án tốt nghiệp "Điều Khiển Xe Tự Cân Bằng Sử Dụng Arduino" được thực hiện bởi sinh viên Bùi Duy Tin (Khoa Công nghệ Điện, Trường Đại học Công nghiệp TP.HCM - IUH) dưới sự hướng dẫn của ThS. Nguyễn Ngọc Anh Tuấn nhằm nghiên cứu, thiết kế và chế tạo hoàn chỉnh mô hình robot 2 bánh tự cân bằng ứng dụng thuật toán lọc tối ưu kết hợp điều khiển hồi tiếp vòng kín.

                           +------------------------+
                           |  MPU6050 (Gia tốc +    |
                           |      Gyroscope)        |
                           +-----------+------------+
                                       | I2C (400kHz)
                                       v
+-------------------+      +-----------+------------+      +--------------------+
|  Nguồn Pin 3S 12V | ---> |  Arduino Mega 2560     | ---> | Shield L298N       |
|    3000mAh        |      |  (Kalman + PID 100Hz)  | PWM  | Dual H-Bridge      |
+-------------------+      +-----------+------------+      +---------+----------+
                                       ^                             |
                                       | Optical Feedback            v
                                       +------------------ +---------+----------+
                                                           | Động cơ DC Encoder |
                                                           |    334 xung/vòng   |
                                                           +--------------------+

Vấn đề kỹ thuật cốt lõi (Problem Statement)

Hệ thống con lắc ngược hai bánh là một hệ phi tuyến, đa biến, liên kết lỏng lẻo và có trạng thái cân bằng nội tại không ổn định (Unstable Open-Loop System). Các thách thức kỹ thuật bao gồm:

  1. Nhiễu tín hiệu cảm biến: Cảm biến gia tốc kế (Accelerometer) rất nhạy với dao động cơ học tần số cao, trong khi con quay hồi chuyển (Gyroscope) lại gặp hiện tượng trôi dạt điểm không (Zero-rate Drift) tích lũy theo thời gian.
  2. Độ trễ phản hồi vòng kín: Tần số quét lấy mẫu và trễ điều khiển thời gian thực có thể dẫn đến hiện tượng quá dao động (Over-oscillation) làm sụp đổ trạng thái thăng bằng.
  3. Hiện tượng phi tuyến vùng chết (Deadband): Ma sát tĩnh của động cơ DC và độ rơ hộp giảm tốc làm mất khả năng cân bằng quanh điểm gốc zero ($0^\circ$).

Mục tiêu của đồ án

  1. Xây dựng cấu trúc phần cứng hoàn chỉnh cho robot hai bánh đồng trục với bộ khung cơ khí đối xứng và phân bổ tải trọng tối ưu.
  2. Thiết kế giải thuật lọc Kalman 2 trạng thái (2-State Kalman Filter) để dung hợp dữ liệu (Sensor Fusion) từ MPU6050, đạt sai số góc nghiêng $< 0.5^\circ$.
  3. Hiện thực hóa thuật toán điều khiển PID thời gian thực (Real-time Closed-loop PID) bám góc đặt $0^\circ$ và triệt tiêu sai số vị trí khi có ngoại lực tác động.
  4. Triển khai và kiểm thử thực nghiệm trên vi điều khiển 8-bit AVR ATmega2560, đảm bảo robot duy trì cân bằng tĩnh và cân bằng động ổn định.

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

Phân tích hiện trạng và phương pháp tiếp cận

Tiêu chí Robot 4 bánh truyền thống Robot 3 bánh (2 dẫn hướng + 1 castor) Robot 2 bánh tự cân bằng (TWSBR)
Bán kính quay vòng $R > 30\text{ cm}$ (Cần diện tích rộng) $R \approx 10\text{--}15\text{ cm}$ $R = 0\text{ cm}$ (Quay quanh tâm trục)
Độ bám khi leo/xuống dốc Trọng lượng phân bố cố định Dễ trượt bánh dẫn hướng khi xuống dốc Tự nghiêng bù trọng tâm, chống lật đổ
Độ phức tạp điều khiển Thấp (Mở vòng/Vòng hở) Trung bình Rất cao (Hệ con lắc ngược phi tuyến)
Khả năng vượt chướng ngại Kém linh hoạt ở góc hẹp Bánh Castor dễ kẹt khe rãnh Vượt dốc linh hoạt nhờ mô-men tập trung

Bảng ưu tiên yêu cầu hệ thống (MoSCoW Matrix)

  • Must have: Cảm biến góc MPU6050 hoạt động ở tốc độ 100Hz qua giao tiếp I2C; Thuật toán lọc Kalman và vòng lặp PID thực thi chu kỳ $\Delta t \le 10\text{ms}$; Cơ chế đảo chiều cầu H bảo vệ động cơ.
  • Should have: Khả năng tự phục hồi vị trí ban đầu sau va chạm nhẹ ($F_{ext} \le 3\text{ N}$); Điều khiển qua UART Monitor.
  • Could have: Mở rộng kết nối không dây Bluetooth HC-06 / ESP8266 cho phép lái từ xa.
  • Won't have (In this scope): Hệ thống định vị lập bản đồ SLAM bằng LiDAR.

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

+--------------------------------------------------------------------------+
|                            KIẾN TRÚC PHẦN CỨNG                           |
|                                                                          |
|  +--------------------+        I2C (Fast Mode)      +-----------------+  |
|  | Cảm biến MPU6050   | --------------------------> |                 |  |
|  | (Acc + Gyro 6-DOF) |                             |                 |  |
|  +--------------------+                             |  Vi điều khiển  |  |
|                                                     |  ATmega2560     |  |
|  +--------------------+        2-Channel Interrupt  |  (16 MHz Clock) |  |
|  | 2x Optical Encoder | --------------------------> |                 |  |
|  | (334 xung/vòng)    |                             |                 |  |
|  +--------------------+                             |                 |  |
|                                                     +--------+--------+  |
|  +--------------------+        Dual H-Bridge                 |           |
|  | Động cơ DC + RP201 | <------------------------------------+           |
|  | Giảm tốc cơ khí    |        PWM (Timer 1/Timer 3 - 20kHz)             |
|  +--------------------+                                                  |
+--------------------------------------------------------------------------+

Ngăn xếp công nghệ và thông số phần cứng

  • Khối xử lý trung tâm: Arduino Mega 2560 R3 (MCU Microchip ATmega2560 @ 16MHz, Flash 256KB, SRAM 8KB, EEPROM 4KB, 54 Digital I/O, 15 kênh PWM, 4 cổng Hardware Serial).
  • Khối cảm biến tư thế (IMU): InvenSense MPU6050 (Tích hợp Accelerometer 3 trục dải $\pm 2g$, Gyroscope 3 trục dải $\pm 250^\circ/\text{s}$, giao thức $I^2C$ địa chỉ 0x68).
  • Khối công suất truyền động: Robo Shield tích hợp Dual Full-Bridge Driver IC STMicroelectronics L298N (Dòng đỉnh 2A mỗi kênh, tản nhiệt nhôm định hình).
  • Khối chấp hành: 02 Động cơ DC giảm tốc RP201 tỉ số truyền cao, tích hợp đĩa đọc Encoder quang học 334 xung/vòng (Quadrature Optical Encoder).
  • Khối nguồn: Bộ pin Lithium-Ion 3S 12.6V - 3000mAh kèm mạch bảo vệ BMS 3S 20A, hạ áp xuống 5V thông qua IC ổn áp LM2596 để cấp nguồn cho Arduino và MPU6050.

Implementation và kết quả thực nghiệm

Hiện thực hóa giải thuật bộ lọc Kalman 2 trạng thái

Bộ lọc Kalman giải quyết bài toán dung hợp dữ liệu cảm biến: ước lượng góc nghiêng tối ưu $\theta$ bằng cách kết hợp góc tính từ gia tốc kế $\theta_{acc}$ (chính xác về dài hạn nhưng nhiễu tức thời) và vận tốc góc từ Gyroscope $\dot{\theta}_{gyro}$ (phản hồi nhanh nhưng trôi dạt điểm 0).

Mô hình trạng thái rời rạc của hệ: $$\mathbf{x}k = \begin{bmatrix} \theta_k \ \dot{\theta}{bias, k} \end{bmatrix} = \begin{bmatrix} 1 & -\Delta t \ 0 & 1 \end{bmatrix} \begin{bmatrix} \theta_{k-1} \ \dot{\theta}{bias, k-1} \end{bmatrix} + \begin{bmatrix} \Delta t \ 0 \end{bmatrix} \dot{\theta}{gyro, k}$$

Phương trình cập nhật ma trận hiệp phương sai sai số dự đoán: $$\mathbf{P}{k|k-1} = \mathbf{A} \mathbf{P}{k-1|k-1} \mathbf{A}^T + \mathbf{Q}$$ Trong đó ma trận hiệp phương sai nhiễu quá trình $\mathbf{Q}$ và nhiễu đo lường $R$ được hiệu chuẩn thực nghiệm: $$\mathbf{Q} = \begin{bmatrix} Q_{angle} & 0 \ 0 & Q_{bias} \end{bmatrix} = \begin{bmatrix} 0.001 & 0 \ 0 & 0.003 \end{bmatrix}, \quad R = 0.03 \text{ rad}^2$$

// Cấu trúc thuật toán Kalman Filter 2 trạng thái tối ưu cho ATmega2560
class KalmanFilter {
public:
    KalmanFilter() {
        Q_angle = 0.001f;
        Q_bias  = 0.003f;
        R_measure = 0.03f;
        angle = 0.0f;
        bias  = 0.0f;
        P[0][0] = 0.0f; P[0][1] = 0.0f;
        P[1][0] = 0.0f; P[1][1] = 0.0f;
    }

    float getAngle(float newAngle, float newRate, float dt) {
        // Bước 1: Tiên đoán trạng thái (Prediction Step)
        rate = newRate - bias;
        angle += dt * rate;

        // Cập nhật ma trận hiệp phương sai tiên đoán: P = A*P*A' + Q
        P[0][0] += dt * (dt * P[1][1] - P[0][1] - P[1][0] + Q_angle);
        P[0][1] -= dt * P[1][1];
        P[1][0] -= dt * P[1][1];
        P[1][1] += Q_bias * dt;

        // Bước 2: Hiệu chỉnh trạng thái (Measurement Update)
        float S = P[0][0] + R_measure;           // Đổi mới hiệp phương sai (Innovation covariance)
        float K[2];                              // Ma trận độ lợi Kalman (Kalman Gain)
        K[0] = P[0][0] / S;
        K[1] = P[1][0] / S;

        float y = newAngle - angle;              // Sai lệch góc đo (Innovation)
        angle += K[0] * y;
        bias  += K[1] * y;

        // Cập nhật ma trận P hậu nghiệm: P = (I - K*C)*P
        float P00_temp = P[0][0];
        float P01_temp = P[0][1];

        P[0][0] -= K[0] * P00_temp;
        P[0][1] -= K[0] * P01_temp;
        P[1][0] -= K[1] * P00_temp;
        P[1][1] -= K[1] * P01_temp;

        return angle;
    }

private:
    float Q_angle, Q_bias, R_measure;
    float angle, bias, rate;
    float P[2][2];
};

Hiện thực hóa bộ điều khiển PID bám góc cân bằng

Tín hiệu điều khiển $u(t)$ xuất ra động cơ được tính toán theo sai số góc $\Delta \theta(t) = \theta_{target} - \theta_{current}$: $$u(t) = K_p \cdot e(t) + K_i \int_{0}^{t} e(\tau) d\tau + K_d \frac{de(t)}{dt}$$

// Vòng lặp điều khiển PID chu kỳ định thời 10ms (100Hz)
#include <Wire.h>

KalmanFilter kalman;
const float TARGET_ANGLE = 0.00; // Điểm cân bằng dựng đứng
float Kp = 24.50;
float Ki = 1.20;
float Kd = 1.85;

float integrated_error = 0.0;
float previous_error = 0.0;
unsigned long prev_time = 0;

void computePIDControl(float currentAngle, float gyroRate, float dt) {
    float error = currentAngle - TARGET_ANGLE;

    // Chống bão hòa tích phân (Anti-windup clamping)
    integrated_error += error * dt;
    integrated_error = constrain(integrated_error, -400.0, 400.0);

    // Tính vi phân dựa trực tiếp trên vận tốc góc con quay hồi chuyển để giảm nhiễu
    float derivative = gyroRate; 

    // Tín hiệu ngõ ra điều khiển
    float output = (Kp * error) + (Ki * integrated_error) + (Kd * derivative);

    // Bù vùng chết ma sát tĩnh (Deadband Compensation)
    int pwm_val = (int)output;
    if (pwm_val > 0) pwm_val += 35;
    else if (pwm_val < 0) pwm_val -= 35;
    pwm_val = constrain(pwm_val, -255, 255);

    driveMotors(pwm_val);
}

                     +------------------------------------------------------+
                     |               SƠ ĐỒ THUẬT TOÁN ĐIỀU KHIỂN            |
                     +------------------------------------------------------+
                                                |
                                                v
                                  +---------------------------+
                                  | Khởi tạo I2C, MPU6050,    |
                                  | Timer Interrupt (100Hz)   |
                                  +-------------+-------------+
                                                |
                                                v
                                  +---------------------------+
                                  | Đọc Gyro_X, Acc_Y, Acc_Z  |
                                  +-------------+-------------+
                                                |
                                                v
                                  +---------------------------+
                                  | Tính góc thô:             |
                                  | angle_acc = atan2(Y, Z)   |
                                  +-------------+-------------+
                                                |
                                                v
                                  +---------------------------+
                                  | Lọc Kalman 2 trạng thái   |
                                  | -> Trích xuất Angle_opt   |
                                  +-------------+-------------+
                                                |
                                                v
                                  +---------------------------+
                                  | Tính toán sai lệch:       |
                                  | e = Angle_opt - Setpoint  |
                                  +-------------+-------------+
                                                |
                                                v
                                  +---------------------------+
                                  | Thuật toán PID            |
                                  | u = Kp*e + Ki*∫e + Kd*de  |
                                  +-------------+-------------+
                                                |
                                                v
                                  +---------------------------+
                                  | Bù Deadband & Xuất PWM    |
                                  | điều khiển Shield L298N   |
                                  +-------------+-------------+
                                                |
                                                +---------> (Lặp lại chu kỳ 10ms)

Kết quả đo lường và kiểm thử hiệu năng

Hệ thống được đưa vào kiểm thử thực nghiệm qua 3 giai đoạn: kiểm thử tĩnh trên giá đỡ, kiểm thử động trên mặt phẳng và kiểm thử chịu xung lực va đập ngoại cảnh.

Góc (độ)
  ^
+5|          Tín hiệu gia tốc thô (Nhiễu biên độ cao +/- 2.5 deg)
  |   /\    /\  /\    /\  /\    /\  /\
 0|--/--\--/--\/--\--/--\/--\--/--\/--\---------------- Điểm đặt cân bằng
  | /    \/        \/        \/        \   Tín hiệu sau lọc Kalman (Mượt mà < 0.1 deg)
-5+----------------------------------------------------------------------------> Thời gian (s)

Dữ liệu đo kiểm hiệu năng thực tế

  • Tần số lấy mẫu thực tế: Đạt ổn định $100\text{ Hz} \pm 0.2%$ thông qua bộ định thời phần cứng Timer Interrupt.
  • Độ chính xác ước lượng góc: Lọc Kalman triệt tiêu $94.6%$ nhiễu cơ học tần số cao từ động cơ và bù $100%$ độ trôi của Gyroscope trong thử nghiệm vận hành liên tục 30 phút.
  • Thời gian xác lập cân bằng (Settling Time): $t_s = 0.42\text{s}$ khi bị kích động góc lệch ban đầu $10^\circ$.
  • Góc nghiêng cực đại có thể tự hồi phục: $\pm 18.5^\circ$ mà không bị sụp đổ trọng tâm.
  • Thời gian hoạt động liên tục: $3.8\text{ giờ}$ với bộ pin 3S 3000mAh ở chế độ tự cân bằng tĩnh.

Đổi mới và đóng góp kỹ thuật

  1. Ứng dụng giải thuật Kalman trên MCU 8-bit giá rẻ: Tối ưu hóa các phép tính ma trận điểm trôi (Floating-point Matrix operations) để chạy mượt mà trên vi điều khiển ATmega2560 16MHz với thời gian xử lý mỗi vòng lặp $< 2.1\text{ms}$, chiếm chưa đến $25%$ tổng thời gian một chu kỳ trích mẫu ($10\text{ms}$).
  2. Kỹ thuật bù vùng chết động học (Dynamic Deadband Compensation): Khắc phục triệt để vùng mất lực của cầu H L298N ở dải PWM thấp ($0\text{--}35$), giúp xe phản ứng tuyến tính ngay khi góc lệch chỉ đạt $\pm 0.1^\circ$.
Thông số so sánh Bộ lọc bổ sung (Complementary Filter) Bộ lọc thông thấp RC (Low-Pass Filter) Bộ lọc Kalman 2 trạng thái (Đồ án)
Độ lệch pha (Phase Lag) Trung bình ($15\text{--}25\text{ms}$) Lớn ($> 50\text{ms}$) Gần như bằng 0 ($< 3\text{ms}$)
Khả năng tự triệt tiêu Drift Kém (Phụ thuộc hằng số $\alpha$ cố định) Hoàn toàn không có Xuất sắc (Cập nhật gyro_bias liên tục)
Tải tính toán CPU Rất thấp ($< 0.2\text{ms}$) Cực thấp Tối ưu hóa tốt trên C ($2.1\text{ms}$)
Độ ổn định góc ở rung động mạnh Bị giật biên độ Bị trễ đáp ứng, gây lật Mượt mà, bám sát góc thực

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

Kịch bản triển khai thực tế

  • Xe vận chuyển hàng thông minh trong lối đi hẹp (Intralogistics AGV): Khả năng xoay quanh tâm trục giúp robot luồn lách giữa các kệ hàng tiêu chuẩn trong kho thương mại điện tử với hành lang chỉ rộng $0.6\text{m}$.
  • Hệ thống giám sát di động / Gimbal cân bằng camera: Cung cấp bệ đỡ chống rung hai trục cho các thiết bị ghi hình an ninh hoặc thiết bị quan trắc môi trường.
  • Nền tảng phát triển xe cá nhân hai bánh (Personal Transporter - Segway): Khung tham chiếu chuẩn để mở rộng scale kích thước và công suất động cơ phục vụ chở người.
+--------------------------------------------------------------------------+
|                     LỘ TRÌNH THƯƠNG MẠI HÓA (ROADMAP)                    |
|                                                                          |
|  Giai đoạn 1 (Hiện tại)       Giai đoạn 2 (3-6 tháng)    Giai đoạn 3     |
|  - Hoàn thiện mô hình PoC     - Nâng cấp STM32/ESP32    - Tích hợp SLAM  |
|  - Cân bằng Kalman + PID      - Động cơ Brushless FOC   - Tải trọng 50kg |
|  - Chi phí: 1.5 - 2 triệu     - Truyền thông không dây  - Thương mại AGV |
+--------------------------------------------------------------------------+

Phân tích chi phí BOM (Bill of Materials) và hiệu quả kinh tế

Hạng mục linh kiện Số lượng Chi phí ước tính (VNĐ) Ghi chú kỹ thuật
Bo mạch Arduino Mega 2560 R3 01 220,000 Vi điều khiển trung tâm
Cảm biến 6-DOF MPU6050 01 45,000 Cảm biến góc nghiêng & gia tốc
Shield điều khiển động cơ L298N 01 75,000 Mạch công suất cầu H đôi
Động cơ DC Encoder 334 xung RP201 02 480,000 Kèm bánh xe cao su bám đường cao
Pin Li-ion 3S 12V 3000mAh + Mạch BMS 01 250,000 Cung cấp nguồn năng lượng
Khung gá mica/nhôm, ốc đồng, phụ kiện 01 bộ 150,000 Kết cấu cơ khí cân xứng
Tổng chi phí phần cứng 1,220,000 VNĐ Thấp hơn 80% so với kit ngoại nhập

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

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

  • Hiệu suất mạch cầu H L298N thấp: Sử dụng transistor BJT truyền thống gây sụt áp khoảng $1.5\text{--}2\text{V}$ trên tầng công suất, sinh nhiệt đáng kể khi robot đảo chiều liên tục.
  • Giới hạn tốc độ tính toán của MCU 8-bit: Không thể tích hợp đồng thời các thuật toán điều khiển nâng cao như LQR (Linear Quadratic Regulator) hay MPC (Model Predictive Control) cùng với các tác vụ xử lý ảnh.
  • Động cơ chổi than DC: Chổi than bị mài mòn theo thời gian và độ phân giải encoder 334 xung giới hạn độ mượt ở vận tốc siêu chậm.

Hướng nâng cấp đề xuất

  1. Nâng cấp phần cứng vi xử lý: Chuyển đổi sang vi điều khiển 32-bit lõi kép như ESP32 (240MHz, tích hợp WiFi/BLE) hoặc STM32F4 (ARM Cortex-M4 có bộ xử lý dấu phẩy động FPU phần cứng).
  2. Chuyển đổi sang động cơ không chổi than (BLDC) với điều khiển FOC (Field Oriented Control): Đảm bảo chuyển động siêu êm, mô-men xoắn lớn tại tốc độ 0 rpm và triệt tiêu tiếng ồn cơ khí.
  3. Mở rộng thuật toán: Ứng dụng giải thuật điều khiển tối ưu LQR kết hợp ước lượng Kalman mở rộng (EKF) để robot có khả năng tự động thích nghi khi thay đổi tải trọng đột ngột.

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

  • Sinh viên ngành Kỹ thuật Điện - Điện tử, Tự động hóa, Cơ điện tử: Tài liệu tham khảo toàn diện từ lý thuyết mô hình hóa con lắc ngược đến triển khai mã nguồn thực tế thuật toán Kalman và PID.
  • Kỹ sư nhúng và Nhà phát triển Robotics: Nắm bắt kiến thức thực chiến về xử lý tín hiệu IMU qua bus I2C, kỹ thuật ngắt thời gian thực và phương pháp bù vùng chết cho cơ cấu chấp hành.
  • Doanh nghiệp R&D thiết bị tự hành: Bộ khung thiết kế chi phí thấp ($< 1.5\text{ triệu VNĐ}$) làm tiền đề phát triển các nền tảng AGV chuyên dụng trong kho vận hiện đại.

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

1. Yêu cầu tối thiểu về phần cứng và môi trường để nạp mã nguồn dự án là gì?

Hệ thống yêu cầu máy tính cài đặt Arduino IDE (phiên bản 1.8.19 hoặc 2.x), cài đặt sẵn trình điều khiển nạp CH340/FTDI và thư viện Wire.h chuẩn. Phần cứng cần vi điều khiển có tối thiểu 2 bộ định thời Timer phần cứng, 1 cổng I2C tốc độ 400kHz và 2 chân ngắt ngoài để đọc Encoder.

2. Tại sao không sử dụng trực tiếp góc tính từ hàm atan2(Acc_Y, Acc_Z) để điều khiển PID?

Góc tính từ gia tốc kế thuần túy bị ảnh hưởng nặng nề bởi lực quán tính chuyển động tịnh tiến và rung chấn cơ học của khung xe. Nếu đưa trực tiếp vào vòng lặp PID, thành phần vi phân $K_d$ sẽ khuếch đại nhiễu tần số cao, gây ra hiện tượng rung bần bật và làm nóng động cơ ngay lập tức.

3. Làm thế nào để điều chỉnh bộ hệ số $K_p, K_i, K_d$ một cách an toàn trên mô hình thực tế?

Áp dụng quy trình căn chỉnh thực nghiệm tuần tự:

  1. Đặt $K_i = 0, K_d = 0$, tăng dần $K_p$ cho đến khi robot bắt đầu duy trì trạng thái dựng đứng nhưng có dao động đều quanh điểm cân bằng.
  2. Tăng $K_d$ để dập tắt các dao động, tạo độ cản quán tính giúp khung xe đứng vững.
  3. Tăng dần $K_i$ một lượng nhỏ để triệt tiêu sai số góc tĩnh (giúp xe đứng thẳng đứng thay vì bị trôi nhẹ về một phía).

4. Giải pháp chống hiện tượng tích lũy sai số tích phân (Integral Windup) trong đồ án là gì?

Đồ án áp dụng kỹ thuật Anti-Windup Clamping: Giới hạn giá trị của biến tích lũy integrated_error trong một dải cho phép (ví dụ: constrain(integrated_error, -400, 400)). Điều này ngăn ngừa giá trị tích phân tăng quá lớn khi xe bị nghiêng quá mức, giúp robot phản ứng hồi phục tức thì khi trở lại góc hợp lệ.

5. Chi phí dự toán và thời gian lắp ráp hoàn thiện một mô hình tương tự mất bao lâu?

Chi phí linh kiện trọn gói dao động từ 1.200.000 đến 1.500.000 VNĐ. Một nhóm nghiên cứu 1-2 người có thể hoàn thiện phần gia công cơ khí trong 3 ngày và căn chỉnh giải thuật điều khiển hoàn chỉnh trong vòng 1-2 tuần.


Kết luận

Đồ án tốt nghiệp "Điều Khiển Xe Tự Cân Bằng Sử Dụng Arduino" đã giải quyết thành công bài toán điều khiển hệ thống con lắc ngược phi tuyến trên nền tảng phần cứng tối giản. Bằng việc kết hợp nhuần nhuyễn giữa Bộ lọc Kalman 2 trạng thái khử nhiễu cảm biến MPU6050 và Thuật toán điều khiển PID vòng kín tần số 100Hz, mô hình robot hai bánh đã thể hiện khả năng tự thăng bằng ấn tượng, phản hồi nhanh và kháng nhiễu ngoại lực hiệu quả. Đồ án không chỉ khẳng định tính khả thi của việc ứng dụng các thuật toán điều khiển hiện đại trên nền tảng phần cứng chi phí thấp mà còn đóng góp một tài liệu kỹ thuật chất lượng cao, phục vụ đắc lực cho công tác nghiên cứu, giảng dạy và phát triển các hệ thống robot tự hành trong tương lai.