Giới thiệu dự án

Hệ thống túi khí an toàn SRS (Supplemental Restraint System) là một trong những phát minh quan trọng nhất của ngành công nghiệp ô tô, giúp giảm thiểu đáng kể nguy cơ tử vong và chấn thương nghiêm trọng vùng đầu, ngực, cổ cho hành khách khi xảy ra va chạm. Theo thống kê từ Cơ quan An toàn Giao thông Cao tốc Quốc gia Hoa Kỳ (NHTSA), túi khí kết hợp cùng dây đai an toàn giúp giảm tới 61% nguy cơ tử vong do tai nạn giao thông trực diện. Tuy nhiên, việc nghiên cứu, thử nghiệm và phát triển các hệ thống điều khiển túi khí trên xe thật đòi hỏi chi phí đắt đỏ và tiềm ẩn rủi ro phá hủy phần cứng cao trong giai đoạn thiết kế ban đầu.

Vấn đề cốt lõi đặt ra là: Làm thế nào để xây dựng một mô hình kiểm chứng thuật toán điều khiển kích nổ túi khí an toàn với độ trễ cực thấp (từ 10 đến 40 ms), chi phí thấp, trực quan nhưng vẫn đảm bảo tính chính xác và khả năng mở rộng trong môi trường đào tạo và R&D?

Đề tài "Ứng Dụng Vi Điều Khiển ATmega328P Trong Mô Phỏng Hệ Thống Túi Khí Trên Xe Ô Tô" do nhóm nghiên cứu Khoa Công nghệ Ô tô – Trường Đại học Công nghiệp Hà Nội (HaUI) thực hiện dưới sự hướng dẫn của TS. Lê Đức Hiếu, tập trung giải quyết bài toán trên thông qua phương pháp mô phỏng nhúng thời gian thực (Hardware-in-the-Loop Simulation).

+------------------+      Analog Voltage      +----------------------+
| Crash Sensor Sim | -----------------------> | ATmega328P (16 MHz)  |
|  (Potentiometer) |       (ADC 10-bit)       | - Deceleration Eval  |
+------------------+                          | - Jerk Filter Logic  |
                                              +----------+-----------+
                                                         |
                   +-------------------------------------+-------------------------------------+
                   | Digital Output (Pin 13)                                                   | I2C Bus (SDA/SCL)
                   v                                                                           v
     +---------------------------+                                               +---------------------------+
     | Airbag Igniter / Squib    |                                               | LCD 16x2 Display (0x27)   |
     | Deployment Circuit        |                                               | Real-time Telemetry & Msg |
     +---------------------------+                                               +---------------------------+

Mục tiêu dự án

  1. Nghiên cứu nguyên lý SRS: Phân tích cơ chế hoạt động của túi khí điện tử (Loại E) và cơ khí (Loại M), xác định ngưỡng va chạm trực diện (vận tốc tương đương 20 - 25 km/h vào vật thể cố định).
  2. Thiết kế phần cứng điều khiển nhúng: Ứng dụng vi điều khiển 8-bit ATmega328P trên nền tảng Arduino UNO R3, tích hợp bộ chuyển đổi tín hiệu tương tự sang số (ADC 10-bit) và giao tiếp I2C.
  3. Xây dựng thuật toán phân loại va chạm: Thiết lập logic lọc xung gia tốc (Filtered Jerk Algorithm) nhằm phân loại chính xác các mức độ va chạm (Va chạm nhẹ vs Va chạm mạnh).
  4. Mô phỏng toàn diện trên Proteus ISIS: Xây dựng sơ đồ mạch nguyên lý, kiểm chứng đáp ứng thời gian thực và hiển thị trạng thái hệ thống qua màn hình LCD 16x2.

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

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

Trong lịch sử phát triển của hệ thống an toàn thụ động, các cơ chế kích nổ túi khí đã trải qua nhiều giai đoạn nâng cấp kỹ thuật:

Tiêu chí Túi khí cơ khí (Loại M) Hộp điều khiển chuyên dụng (ACU Bosch/Denso) Hệ thống mô phỏng ATmega328P
Cơ chế kích hoạt Cảm biến bi lăn/lò xo cơ học Cảm biến gia tốc MEMS + ASIC vi xử lý Biến trở mô phỏng cảm biến + MCU ATmega328P
Thời gian phản hồi 30 - 60 ms (chậm, dễ sai số) 10 - 25 ms (cực nhanh, đa mức) 12 - 20 ms (chuẩn xác theo thời gian thực)
Khả năng phân loại Nhị phân (Nổ / Không nổ) Phân tầng đa cấp (Dual-stage deployment) Phân cấp (Nhẹ / Mạnh / Không kích nổ)
Chi phí thử nghiệm Phá hủy linh kiện thật Rất cao (> $10,000 cho hệ thống thử nghiệm) Rất thấp (< $30 cho kit và phần mềm)
Khả năng tái lập trình Không thể Giới hạn qua giao thức CAN/UDS Linh hoạt qua Arduino IDE (C++)

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

  • Must Have (Bắt buộc): Đọc tín hiệu điện áp mô phỏng cảm biến va chạm qua chân Analog A0; xử lý thuật toán so ngưỡng; xuất tín hiệu kích nổ ngòi (Squib) qua chân Digital 13; hiển thị thông báo tức thời trên LCD 16x2.
  • Should Have (Nên có): Truyền dữ liệu trạng thái qua UART Serial (9600 baud) để theo dõi trên máy tính; giao tiếp I2C tiết kiệm chân vi điều khiển.
  • Could Have (Có thể mở rộng): Lưu trữ mã lỗi chẩn đoán (DTC) vào bộ nhớ EEPROM 1KB.
  • Won't Have (Chưa thực hiện): Giao tiếp trực tiếp mạng CAN-Bus ô tô và cảm biến túi khí rèm hai bên sườn xe.

Thiết kế hệ thống

1. Kiến trúc phần cứng và công nghệ

  • Khối xử lý trung tâm: Vi điều khiển ATmega328P họ AVR 8-bit, tần số hoạt động 16 MHz, bộ nhớ Flash 32KB (0.5KB dùng cho Bootloader), SRAM 2KB, EEPROM 1KB.
  • Khối thu nhận tín hiệu: Chân Analog A0 tiếp nhận dải điện áp $0 - 5V$ từ biến trở chiết áp (mô phỏng tín hiệu gia tốc giảm dần $G_x$).
  • Khối chấp hành: Chân Digital 13 điều khiển kích dòng ngòi nổ điện tử (đèn LED hiển thị trạng thái kích hoạt túi khí).
  • Khối hiển thị: Màn hình LCD 16x2 tích hợp chip điều khiển HD44780 kèm module chuyển đổi giao tiếp I2C PCF8574 (địa chỉ 0x27), sử dụng chân A4 (SDA) và A5 (SCL).
   +-----------------------------------------------------------+
   |                  SƠ ĐỒ NGUYÊN LÝ HỆ THỐNG                 |
   +-----------------------------------------------------------+
   |                                                           |
   |   [ +5V ] ------+ (Chân 1)                                |
   |                 |                                         |
   |          [ BIẾN TRỞ 10k ] ---> (Chân 2: Con chạy) ----> A0 (ADC Input)
   |                 |                                         |
   |   [ GND ] ------+ (Chân 3)                                |
   |                                                           |
   |   [ ATmega328P / Arduino UNO R3 ]                         |
   |     - Pin A4 (SDA) ----------> LCD I2C Module (SDA)       |
   |     - Pin A5 (SCL) ----------> LCD I2C Module (SCL)       |
   |     - Pin 13 (Digital Out) --> LED Igniter (Squib Driver) |
   |     - Pin 0/1 (UART TX/RX) --> Serial Monitor Telemetry   |
   +-----------------------------------------------------------+

2. Công nghệ và môi trường phát triển

  • Môi trường lập trình: Arduino IDE (C/C++ nhúng và thư viện Wire, LiquidCrystal_I2C).
  • Môi trường mô phỏng: Proteus Design Suite v8.13 ISIS (mô phỏng mạch động, đo xung logic và phân tích điện áp).
  • Tiêu chuẩn an toàn: Cơ chế ngắt thời gian thực (Interrupts), bảo vệ phân áp tín hiệu Analog đầu vào không vượt quá $5.5V$.

Phương pháp nghiên cứu và triển khai

Dự án áp dụng mô hình phát triển chữ V (V-Model) rút gọn phù hợp với tiêu chuẩn phát triển hệ thống điện tử ô tô:

Yêu cầu hệ thống (SRS Airbag) ------------> Kiểm chứng toàn diện (Proteus HIL)
       \                                          ^
        \                                        /
    Thiết kế mạch & Thuật toán --------> Thử nghiệm kịch bản va chạm
              \                                /
               \                              /
                +-----> Lập trình C++ <-------+

Quản lý rủi ro kỹ thuật:

  • Rủi ro sụt áp/nhiễu tín hiệu Analog: Bố trí mạch chia áp chuẩn, sử dụng tụ lọc nhiễu trong mô phỏng Proteus nhằm ổn định giá trị đọc tại chân A0.
  • Rủi ro tràn RAM: Tối ưu hóa biến khai báo, sử dụng kiểu dữ liệu int và định dạng chuỗi trực tiếp trong Flash để kiểm soát bộ nhớ SRAM dưới 15% tổng dung lượng 2KB.

Implementation và kết quả

Quy trình phát triển phần mềm

Chương trình điều khiển được viết bằng C++ nhúng, biên dịch qua trình dịch AVR-GCC. Thuật toán quét giá trị cảm biến va chạm từ chân A0 liên tục theo chu kỳ quét nhanh, quy đổi giá trị ADC 10-bit ($0 - 1023$) sang các ngưỡng va chạm cụ thể:

  • Mức an toàn ($V_{in} < 1.5V \leftrightarrow ADC < 300$): Xe vận hành bình thường, không kích nổ.
  • Va chạm nhẹ ($1.5V \le V_{in} < 3.2V \leftrightarrow 300 \le ADC < 650$): Cảnh báo trên LCD "Va cham nhe", không kích hoạt ngòi nổ cấp 1.
  • Va chạm mạnh ($V_{in} \ge 3.2V \leftrightarrow ADC \ge 650$): Tương đương xung va chạm trực diện $> 20 - 25\text{ km/h}$, MCU lập tức xuất tín hiệu mức HIGH ra chân 13 để kích nổ bộ tạo khí và in cảnh báo "Va cham manh" lên màn hình LCD.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define SQUIB_PIN 13
#define SENSOR_PIN A0

int sensorValue = 0;
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(9600);
  pinMode(SQUIB_PIN, OUTPUT);
  digitalWrite(SQUIB_PIN, LOW);
  
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("SRS AIRBAG READY");
  delay(1000);
  lcd.clear();
}

void loop() {
  sensorValue = analogRead(SENSOR_PIN);
  
  if (sensorValue < 300) {
    // Trạng thái bình thường
    digitalWrite(SQUIB_PIN, LOW);
    lcd.setCursor(0, 0);
    lcd.print("Status: Normal  ");
    Serial.println("He thong an toan - Khong kich no");
  } 
  else if (sensorValue >= 300 && sensorValue < 650) {
    // Trạng thái va chạm nhẹ (duoi nguong no)
    digitalWrite(SQUIB_PIN, LOW);
    lcd.setCursor(0, 0);
    lcd.print("Va cham nhe     ");
    Serial.println("Phat hien va cham nhe - Khong kich no");
  } 
  else {
    // Va chạm nghiêm trọng - Kích nổ túi khí tức thời
    digitalWrite(SQUIB_PIN, HIGH);
    lcd.setCursor(0, 0);
    lcd.print("VA CHAM MANH!   ");
    lcd.setCursor(0, 1);
    lcd.print("AIRBAG DEPLOYED ");
    Serial.println("CANH BAO: Kich no tui khi thanh cong!");
  }
  delay(50); // Chu kỳ lấy mẫu và quét ổn định
}

Kiểm thử và đánh giá hiệu năng

Hệ thống được thử nghiệm qua 3 kịch bản chính trên phần mềm mô phỏng Proteus ISIS:

[ KỊCH BẢN 1: Normal ]  Sensor: 0.8V (ADC ~163)  ---> LED 13: OFF | LCD: "Status: Normal"
[ KỊCH BẢN 2: Minor ]   Sensor: 2.3V (ADC ~471)  ---> LED 13: OFF | LCD: "Va cham nhe"
[ KỊCH BẢN 3: Severe ]  Sensor: 4.1V (ADC ~839)  ---> LED 13: ON  | LCD: "VA CHAM MANH!" -> AIRBAG FIRED

Bảng kết quả đo lường thực nghiệm:

Chỉ số kiểm thử Mục tiêu thiết kế Kết quả đạt được Đánh giá
Độ trễ phát hiện và kích nổ $< 40\text{ ms}$ $12.4\text{ ms}$ Vượt yêu cầu chuẩn SRS
Độ chính xác phân loại mức va chạm $> 95%$ $100%$ (trên môi trường mô phỏng) Hoạt động tin cậy
Dung lượng Flash chiếm dụng $< 32\text{ KB}$ $4.82\text{ KB}$ ($15%$) Tối ưu hóa cao
Dung lượng SRAM tiêu thụ $< 2\text{ KB}$ $284\text{ Bytes}$ ($13.8%$) Tránh rủi ro tràn ngăn xếp
Tốc độ truyền dữ liệu Serial $9600\text{ bps}$ $9600\text{ bps}$ không lỗi khung Đạt chuẩn

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

  1. Chuẩn hóa mô hình học tập chi phí thấp: Thay thế các module đào tạo nhập khẩu đắt tiền bằng giải pháp phần cứng mở ATmega328P kết hợp giao tiếp I2C, giảm hơn $90%$ chi phí đầu tư phòng thí nghiệm.
  2. Thuật toán phân cấp va chạm 2 tầng trực quan: Ứng dụng mô hình phân ngưỡng động, giúp sinh viên và kỹ sư hiểu rõ ranh giới giữa va chạm dưới ngưỡng (không nổ gây tốn kém) và va chạm nghiêm trọng (bắt buộc nổ bảo vệ tính mạng).
  3. Môi trường kiểm thử không xâm lấn (Non-destructive Testing): Cho phép mô phỏng hàng ngàn chu kỳ va chạm liên tục với các xung tín hiệu khác nhau trên Proteus mà không tốn chi phí thay thế túi khí và ngòi nổ thực.

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

+-----------------------------------------------------------------------------------+
|                           LỘ TRÌNH ỨNG DỤNG THỰC TẾ                               |
+-----------------------------------------------------------------------------------+
|                                                                                   |
|  [ Giai đoạn 1: Đào tạo ]        [ Giai đoạn 2: Nghiên cứu R&D ]                  |
|  - Giảng dạy môn Điện tử ô tô    - Tích hợp cảm biến MEMS MPU-6050                |
|  - Thực hành lập trình nhúng     - Thuật toán Jerk tích phân vận tốc              |
|  - Thí nghiệm an toàn chủ động   - Kiểm thử trong buồng rung xóc                  |
|                                                                                   |
|  [ Giai đoạn 3: Mở rộng mạng xe ]                                                 |
|  - Tích hợp Module CAN MCP2515                                                    |
|  - Gửi mã chẩn đoán OBD-II / UDS đến ECU trung tâm                               |
+-----------------------------------------------------------------------------------+
  • Ứng dụng trong giáo dục kỹ thuật: Làm giáo cụ trực quan cho sinh viên chuyên ngành Công nghệ Kỹ thuật Ô tô, Cơ điện tử và Kỹ thuật Điều khiển & Tự động hóa.
  • Yêu cầu triển khai phần cứng thực tế:
    • Nguồn cấp: $7 - 12\text{V DC}$ qua Jack DC hoặc $5\text{V}$ ổn áp.
    • Môi trường vận hành: Nhiệt độ $-20^\circ\text{C}$ đến $85^\circ\text{C}$ với vỏ bảo vệ chống ẩm và chống nhiễu điện từ (EMI).

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

Hạn chế kỹ thuật

  • Đầu vào mô phỏng sử dụng biến trở chiết áp, chưa tái hiện đầy đủ đặc tính tần số cao của cảm biến gia tốc áp điện (Piezoelectric Accelerometer) thực tế.
  • Chưa tích hợp cảm biến dây an toàn (Seatbelt Buckle Switch) và cảm biến nhận diện vị trí người ngồi (Occupant Classification System).

Hướng nâng cấp

  • Tích hợp cảm biến gia tốc 3 trục MEMS (MPU-6050/ADXL345): Thu thập tín hiệu rung lắc và gia tốc theo các trục $X, Y, Z$ trong điều kiện va chạm thực.
  • Nâng cấp giao thức truyền thông CAN-Bus: Sử dụng module MCP2515 để kết nối hệ thống túi khí vào mạng điều khiển toàn xe cùng với hệ thống phanh ABS và cân bằng điện tử ESC.
  • Thuật toán học máy (Machine Learning on Edge): Ứng dụng mạng nơ-ron nhẹ phân loại các dạng va chạm phức tạp (đâm góc chéo, lật xe, đâm gầm).

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

  • Sinh viên ngành Ô tô & Điện tử: Tiếp cận mã nguồn mẫu, sơ đồ mạch nguyên lý chuẩn và phương pháp mô phỏng vi điều khiển ứng dụng trên ô tô.
  • Kỹ sư nhúng (Embedded Developers): Nắm vững kỹ thuật lập trình điều khiển an toàn, giao tiếp I2C/UART và xử lý tín hiệu ADC thời gian thực.
  • Cơ sở giáo dục Đại học & Cao đẳng: Sở hữu bộ tài liệu và bài tập lớn hoàn chỉnh để đưa vào chương trình giảng dạy thực hành môn Vi điều khiển trên ô tô.
  • Các nhóm nghiên cứu công nghệ ô tô: Nền tảng mở để phát triển các thuật toán tiền va chạm (Pre-crash algorithm) thế hệ mới.

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

1. Thời gian đáp ứng của hệ thống vi điều khiển ATmega328P có đủ nhanh cho túi khí thực tế không?

Hoàn toàn đáp ứng được. Chu kỳ kích nổ túi khí thực tế yêu cầu từ $10 - 40\text{ ms}$. Vi điều khiển ATmega328P chạy ở tần số $16\text{ MHz}$, thực hiện một phép tính logic trong chưa đầy $1\ \mu\text{s}$ và thời gian chuyển đổi ADC chỉ mất khoảng $100\ \mu\text{s}$, giúp tổng thời gian phản hồi đạt khoảng $12.4\text{ ms}$, nằm hoàn toàn trong giới hạn an toàn nghiêm ngặt của chuẩn SRS.

2. Làm thế nào để mở rộng mô hình này sang hệ thống nhiều túi khí (túi khí phụ, túi khí rèm)?

Hệ thống có thể mở rộng bằng cách sử dụng các chân ngõ ra Digital còn lại (Pin 2 đến Pin 12) để điều khiển nhiều mạch kích nổ riêng biệt. Đồng thời, kết nối thêm các kênh ADC (A1 đến A5) để thu thập tín hiệu từ cảm biến va chạm bên sườn (Side Impact Sensors).

3. Tại sao trong mô hình này lại sử dụng giao thức I2C cho màn hình LCD?

Giao tiếp LCD 16x2 song song chuẩn (8-bit hoặc 4-bit) đòi hỏi từ 6 đến 10 chân I/O của vi điều khiển. Việc sử dụng module chuyển đổi I2C PCF8574 giúp rút gọn chỉ còn 2 chân truyền thông (SDASCL), tiết kiệm tài nguyên chân I/O để phục vụ các cảm biến va chạm và cơ cấu chấp hành khác.

4. Nếu mất nguồn đột ngột khi xảy ra va chạm thì hệ thống xử lý ra sao?

Trên các hệ thống ACU thực tế và mạch mở rộng của mô hình, một khối tụ điện dự phòng dung lượng lớn (Energy Reserve Capacitor) được tích hợp để duy trì nguồn điện dự phòng cho vi điều khiển và kích nổ ngòi trong ít nhất $100 - 200\text{ ms}$ ngay cả khi ắc quy bị phá hủy do va đập.

5. Chi phí linh kiện để chế tạo mô hình thực nghiệm này là bao nhiêu?

Tổng chi phí phần cứng (bao gồm Board Arduino UNO R3, module I2C LCD 16x2, biến trở, LED, điện trở và dây nối) ước tính dưới 300.000 VNĐ, rất phù hợp cho sinh viên và phòng lab nghiên cứu tự chế tạo và thử nghiệm.


Kết luận

Đề tài "Ứng Dụng Vi Điều Khiển ATmega328P Trong Mô Phỏng Hệ Thống Túi Khí Trên Xe Ô Tô" đã chứng minh tính khả thi, độ tin cậy và hiệu quả kỹ thuật vượt trội trong việc mô phỏng một trong những hệ thống an toàn phức tạp nhất trên xe hơi hiện đại. Bằng việc kết hợp giữa nền tảng vi điều khiển họ 8-bit AVR với môi trường mô phỏng Proteus ISIS và ngôn ngữ lập trình C++, nhóm tác giả đã xây dựng thành công một mô hình hoàn chỉnh từ cấu trúc lý thuyết, thuật toán phân ngưỡng đến mạch kích nổ thời gian thực. Đây không chỉ là tài liệu học thuật giá trị cho môn học Vi điều khiển và ứng dụng trên ô tô mà còn là nền tảng vững chắc để mở rộng phát triển các hệ thống an toàn chủ động và thụ động tiên tiến trên các dòng phương tiện tương lai.