Bối cảnh và vấn đề nghiên cứu

Trong quá trình phát triển của ngành công nghiệp sản xuất ô tô, các tiêu chuẩn về an toàn kỹ thuật luôn được đặt lên hàng đầu. Các công nghệ an toàn chủ động như hệ thống chống bó cứng phanh (ABS), hệ thống cân bằng điện tử (ESC) và hệ thống hỗ trợ lực phanh khẩn cấp (BA) đóng vai trò quan trọng trong việc hỗ trợ người lái kiểm soát phương tiện. Tuy nhiên, khi các tình huống va chạm giao thông không thể tránh khỏi xảy ra, các hệ thống an toàn chủ động không còn khả năng bảo vệ trực tiếp hành khách trong khoang cabin. Để giảm thiểu chấn thương nghiêm trọng và thiệt hại về tính mạng, hệ thống túi khí an toàn (SRS - Supplemental Restraint System) được phát triển và hoàn thiện như một giải pháp bảo vệ bị động trọng yếu.

Lịch sử phát triển của túi khí ghi nhận các mốc thời gian:

  • Năm 1953: Kỹ sư John W. Hetrick (Mỹ) nhận bằng sáng chế cho thiết bị "đệm an toàn sản xuất cho xe". Cùng thời điểm đó, nhà phát minh Walter Linderer (Đức) cũng được cấp bằng sáng chế cho thiết kế tương tự, nhưng cơ chế chưa đáp ứng được tốc độ bơm khẩn cấp.
  • Năm 1967: Nhà sáng chế Allen Breed (Mỹ) chế tạo thành công cảm biến nhận diện va chạm, tạo nền tảng cho hệ thống túi khí điện cơ đầu tiên trên thế giới.
  • Thập niên 1980: Túi khí bắt đầu được các hãng sản xuất xe lắp đặt thương mại hóa rộng rãi.
  • Năm 1998: Hệ thống túi khí trở thành trang bị an toàn tiêu chuẩn bắt buộc trên các dòng xe ô tô mới.

Đề 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ô" được thực hiện bởi nhóm sinh viên Khoa Công nghệ Ô tô, Trường Đại học Công nghiệp Hà Nội dưới sự hướng dẫn của TS. Lê Đức Hiếu. Nghiên cứu nhằm giải quyết các mục tiêu cụ thể:

  1. Tìm hiểu tổng quan về vi điều khiển, nắm vững định nghĩa, phân loại và phạm vi ứng dụng của các họ vi điều khiển trong ngành công nghiệp ô tô.
  2. Phân tích nguyên lý làm việc, đặc điểm cấu tạo và chức năng của các phân hệ trong hệ thống túi khí (cảm biến va chạm, bộ điều khiển, bộ thổi khí).
  3. Xây dựng mô hình toán học, lưu đồ thuật toán và chương trình điều khiển kích nổ túi khí sử dụng vi điều khiển họ AVR (ATmega328P).
  4. Thiết kế mạch nguyên lý và triển khai mô phỏng hoạt động điều khiển hệ thống túi khí trên phần mềm Proteus kết hợp môi trường Arduino IDE.

Đối tượng nghiên cứu là hệ thống điều khiển túi khí ô tô và vi điều khiển 8-bit ATmega328P. Phạm vi nghiên cứu tập trung vào mô phỏng hoạt động điện tử của hệ thống túi khí phía trước trong khuôn khổ bài tập lớn môn học Vi điều khiển và ứng dụng trên ô tô tại Trường Đại học Công nghiệp Hà Nội vào năm 2022.


Cơ sở lý thuyết và phương pháp

Cơ sở lý thuyết hệ thống túi khí (SRS)

Hệ thống túi khí là hệ thống kèm giữ bổ sung, hoạt động đồng bộ với dây đai an toàn nhằm giảm thiểu lực va đập tác động lên vùng đầu, cổ, bả vai và ngực của người ngồi trong xe khi xảy ra va chạm. Hệ thống được phân loại theo các tiêu chí kỹ thuật:

  • Kiểu kích nổ bộ thổi khí: Loại cơ khí hoàn toàn (loại M) và loại điện tử (loại E).
  • Số lượng túi khí: Hệ thống một túi khí (trang bị cho người lái) hoặc hệ thống hai túi khí (cho người lái và hành khách phía trước).
  • Số lượng cảm biến: Hệ thống một cảm biến túi khí hoặc hệ thống ba cảm biến (gồm một cảm biến túi khí trung tâm và hai cảm biến va chạm phía trước).

Nguyên lý làm việc của hệ thống: Khi xe gặp va chạm với vận tốc giảm dần vượt ngưỡng cho phép, cảm biến va chạm truyền tín hiệu về bộ điều khiển. Bộ điều khiển xử lý tín hiệu và phát dòng điện kích hoạt ngòi nổ trong bộ thổi khí. Ngòi nổ đốt chất mồi và hạt tạo khí sinh ra một lượng khí lớn trong thời gian từ 10 đến 40 mili-giây ($ms$), làm phồng túi đệm để cản quán tính của người lái/hành khách, sau đó khí lập tức thoát ra qua các lỗ xả phía sau để đảm bảo tầm nhìn và tránh kẹt người trong xe.

Thông số và trường hợp kích hoạt Đặc điểm kỹ thuật theo tài liệu
Vận tốc va chạm kích nổ trực diện Đạt ngưỡng từ 20 – 25 km/h khi va đập trực diện vào vật thể cố định không biến dạng
Thời gian kích nổ hoàn toàn Khoảng 10 đến 40 mili-giây ($ms$)
Trường hợp không kích nổ phía trước Va đập từ bên sườn, va đập từ phía sau, lật xe, hoặc va đập trực diện ở vận tốc thấp
Trường hợp có thể kích nổ Va đập nghiêm trọng ở gầm xe hoặc đâm trực diện trong góc cung tác dụng phía trước

Phương pháp nghiên cứu

Đề tài sử dụng kết hợp các phương pháp:

  • Phương pháp phân tích - tổng hợp lý thuyết: Nghiên cứu tài liệu chuyên ngành từ "Giáo trình hệ thống điện - điện tử trên ô tô hiện đại" (PGS. TS. Đỗ Văn Dũng), tài liệu cấu trúc vi điều khiển AVR và nền tảng phát triển Arduino.
  • Phương pháp thiết kế và mô phỏng hệ thống: Xây dựng sơ đồ nguyên lý mạch điện tử mô phỏng khối thu nhận tín hiệu gia tốc (sử dụng biến trở phân áp), khối xử lý trung tâm (KIT Arduino Uno R3 ATmega328P), khối hiển thị (LCD 16x2 I2C) và khối cơ cấu chấp hành (LED/tín hiệu kích nổ) trên phần mềm Proteus ISIS.
  • Phương pháp lập trình nhúng: Xây dựng thuật toán xử lý tín hiệu đầu vào và điều khiển logic xuất tín hiệu kích nổ trên ngôn ngữ C/C++ trong môi trường Arduino IDE.

Thiết kế và triển khai

Cấu trúc phần cứng mô phỏng

Hệ thống mô phỏng bao gồm các thành phần linh kiện điện tử chính được thiết lập trong môi trường mô phỏng Proteus:

  1. Khối điều khiển trung tâm (Arduino UNO R3 - ATmega328P):

    • Vi điều khiển: ATmega328 họ 8-bit AVR, tần số hoạt động 16 MHz.
    • Điện áp hoạt động: 5V DC (cấp qua cổng USB), điện áp cấp ngoài đề nghị từ 7 - 12V DC (giới hạn 6 - 20V DC).
    • Bộ nhớ: 32 KB Flash ROM (với 0.5 KB cho bootloader), 2 KB SRAM, 1 KB EEPROM.
    • Cổng giao tiếp: 14 chân Digital I/O (gồm 6 chân hỗ trợ PWM phần cứng), dòng tối đa trên mỗi chân đạt 30 - 40 mA; 6 chân Analog Input (A0 - A5) với độ phân giải 10-bit ($0 - 1023$).
    • Giới hạn an toàn: Tổng dòng điện vào/ra toàn bo mạch không vượt quá 200 mA; điện áp đưa vào các chân Digital/Analog không vượt quá 5.5V; điện áp vào chân RESET không vượt quá 13V để tránh phá hủy vi điều khiển.
  2. Khối hiển thị (Màn hình LCD 16x2):

    • Thông số điện áp: Tối đa 7V, tối thiểu -0.3V, hoạt động ổn định ở 2.5V - 5V; dòng cấp nguồn 350 - 600 $\mu A$; nhiệt độ làm việc từ -30 đến 75°C.
    • Kết nối: Giao tiếp qua module chuyển đổi I2C (địa chỉ 0x27) kết nối với chân A4 (SDA) và A5 (SCL) của Arduino UNO, giúp tiết kiệm cổng giao tiếp so với kết nối song song 8 đường bus ($D0 - D7$) truyền thống.
  3. Khối cảm biến giả lập (Biến trở):

    • Biến trở có cấu tạo 3 chân gồm 2 cực cố định và 1 cần gạt di chuyển dọc cuộn dây hợp kim để thay đổi giá trị trở kháng.
    • Vai trò: Đóng vai trò phân áp, điều chỉnh điện áp đầu vào trong dải từ 0V đến 5V đưa vào chân analog A0 của ATmega328P nhằm giả lập các mức độ va chạm (gia tốc giảm dần) khác nhau của phương tiện.
                  +-----------------------------------+
                  |      Biến trở (Cảm biến giả lập)  |
                  |     (Chân giữa nối Analog A0)     |
                  +-----------------+-----------------+
                                    |
                                    v
+-----------------------------------+-----------------------------------+
|                     Arduino UNO R3 (ATmega328P)                       |
|                                                                       |
|  - A0: Đọc giá trị tương tự từ biến trở (0 - 1023)                     |
|  - A4 (SDA) & A5 (SCL): Giao tiếp I2C hiển thị dữ liệu               |
|  - Digital Pin 13: Xuất tín hiệu điều khiển kích nổ túi khí          |
+-----------------+-----------------------------------+-----------------+
                  |                                   |
                  v                                   v
+-----------------+-----------------+ +---------------+-----------------+
|        Màn hình LCD 16x2          | | Khối kích nổ / Đèn LED báo hiệu |
| (Hiển thị "va cham nhe/manh")    | |      (Nối với Digital Pin 13)   |
+-----------------------------------+ +---------------------------------+

Thuật toán điều khiển và phần mềm

  • Thuật toán kích nổ túi khí: Dữ liệu từ cảm biến tương tự (analog) được đọc liên tục thông qua lệnh analogRead(A0). Giá trị điện áp đọc về được so sánh với các ngưỡng va chạm xác định trong thuật toán (Crash Threshold th). Khi gia tốc giảm dần đo được vượt qua giá trị quy định (xảy ra va chạm nghiêm trọng), hệ thống quyết định kích hoạt mức logic HIGH tại chân Digital 13 để kích nổ ngòi nổ của bộ thổi khí và đồng thời xuất cảnh báo "va cham manh" lên LCD 16x2. Trường hợp tín hiệu dưới ngưỡng quy định, hệ thống duy trì chân Digital 13 ở mức LOW và hiển thị trạng thái "va cham nhe".
  • Mã nguồn thực thi: Được viết trên Arduino IDE sử dụng ngôn ngữ C/C++ với việc khai báo thư viện điều khiển giao tiếp <Wire.h> và thư viện điều khiển hiển thị LiquidCrystal_I2C.
#include <Wire.h>
#define indt 7
int pos = 0;
int aa = 0;
int a = 0;
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  lcd.init();
  lcd.backlight();
}

void loop() {
  a = analogRead(A0);
  if (a < 500) {
    Serial.print("va cham nhe ");
    digitalWrite(13, LOW);
    lcd.setCursor(0, 0);
    lcd.print("va cham nhe ");
  } else {
    Serial.print("va cham manh ");
    digitalWrite(13, HIGH);
    lcd.setCursor(0, 0);
    lcd.print("va cham manh ");
  }
  delay(100);
}

Nội dung chính theo từng chương

CHƯƠNG 1: Tổng quan ứng dụng vi điều khiển trong hệ thống túi khí

Chương 1 trình bày lý do lựa chọn đề tài xuất phát từ yêu cầu bảo vệ an toàn tính mạng cho hành khách khi các hệ thống an toàn chủ động không còn khả năng can thiệp trong tai nạn. Tác giả tổng kết lịch sử phát triển của hệ thống đệm khí bảo vệ từ năm 1953 đến giai đoạn thương mại hóa bắt buộc vào năm 1998.

Chương này xác định các yêu cầu kiến thức kỹ thuật cần vận dụng bao gồm: kiến thức điện tử ô tô hiện đại, cấu tạo vi điều khiển ATmega328 họ AVR, kỹ năng sử dụng ngôn ngữ C/C++ và phương pháp thiết kế mô phỏng trên phần mềm Proteus. Mục tiêu hoàn thiện được đặt ra là làm rõ nguyên lý của hệ thống túi khí, lập trình thuật toán điều khiển và xuất báo cáo kết quả kèm bản vẽ mô phỏng kỹ thuật.

CHƯƠNG 2: Kết quả nghiên cứu

Nội dung chương 2 tập trung vào bốn nội dung chính:

  1. Cơ sở lý thuyết hệ thống túi khí SRS: Mô tả chi tiết chức năng giảm thiểu va đập vùng đầu, cổ của túi khí kết hợp với đai an toàn. Phân tích các dạng phân loại túi khí (loại E và loại M; cấu hình 1 cảm biến hoặc 3 cảm biến). Giải thích cơ chế kích nổ bằng ngòi nổ và hạt tạo khí, các điều kiện về góc va chạm thuộc cung tác dụng phía trước và ngưỡng tốc độ kích hoạt tiêu chuẩn 20 - 25 km/h.
  2. Cấu trúc linh kiện phần cứng:
    • Trình bày thông số kỹ thuật, cấu trúc bộ nhớ (Flash 32KB, SRAM 2KB, EEPROM 1KB), sơ đồ chân năng lượng, chân I/O số và cổng tương tự của vi điều khiển ATmega328 trên mạch Arduino UNO R3.
    • Thống kê các đặc tính điện áp, dòng điện, và chức năng các chân điều khiển của màn hình tinh thể lỏng LCD 16x2 (VSS, VDD, VE, RS, R/W, E, các bus dữ liệu D0 - D7).
    • Phân tích nguyên lý phân áp của biến trở, phân loại theo vật liệu cấu thành (carbon, dây quấn Nichrome, nhựa dẫn điện, Cermet) và vai trò làm nguồn tín hiệu biến thiên trong mô phỏng.
  3. Mô hình toán học và thuật toán điều khiển túi khí: Trình bày sơ đồ khối hệ thống xử lý thông tin tiền va chạm (Pre-crash algorithm), cấu trúc đánh giá kiểu va chạm (Crash type decision table), bộ lọc giật cục (Filtered jerk) và logic so sánh ngưỡng (>= th) để ra quyết định kích nổ túi khí tầng 1 (1st airbag deployment) hoặc túi khí tầng 2 (2nd airbag deployment).
  4. Phần mềm và ngôn ngữ lập trình: Giới thiệu cấu trúc ngôn ngữ lập trình C++ (hướng đối tượng, lai tạo giữa bậc thấp và bậc cao), nền tảng Arduino IDE và bộ công cụ mô phỏng mạch điện tử Proteus (gồm ISIS để mô phỏng và ARES để thiết kế mạch in PCB).

CHƯƠNG 3: Quy trình thiết kế mô phỏng mạch sơ đồ hệ thống túi khí, phân tích kết quả và bài học kinh nghiệm

Chương 3 mô tả quy trình hiện thực hóa mô hình mô phỏng:

  • Xây dựng sơ đồ nguyên lý mạch mô phỏng trên nền tảng Proteus ISIS kết nối các linh kiện: Arduino UNO R3, biến trở phân áp đưa tín hiệu vào cổng A0, màn hình LCD 16x2 điều khiển qua I2C và chân kích hoạt đầu ra số (chân 13) kết nối cơ cấu chấp hành.
  • Nạp mã nguồn điều khiển đã biên dịch từ môi trường Arduino IDE vào vi điều khiển ATmega328P trong Proteus.
  • Khảo sát kết quả thực nghiệm mô phỏng: Khi điều chỉnh biến trở thay đổi điện áp đầu vào, hệ thống phản hồi chính xác bằng cách phân loại trạng thái ("va cham nhe" hoặc "va cham manh"), xuất ký tự hiển thị lên LCD 16x2 và thay đổi trạng thái kích nổ của chân logic ngõ ra.
  • Tổng kết các bài học kinh nghiệm trong quá trình thao tác với linh kiện, phối hợp làm việc nhóm và kỹ năng gỡ lỗi chương trình điều khiển.

Kết quả và đóng góp

Kết quả chính

  • Thiết lập thành công mô hình mô phỏng hệ thống điều khiển túi khí trên phần mềm Proteus ISIS, sử dụng vi điều khiển ATmega328P kết nối với LCD 16x2 và biến trở giả lập tín hiệu va chạm.
  • Xây dựng chương trình điều khiển bằng ngôn ngữ C/C++ trên Arduino IDE, đọc và phân loại chính xác tín hiệu điện áp tương tự từ cổng A0 với độ phân giải 10-bit, phân biệt hai trạng thái va chạm nhẹ và va chạm mạnh để quyết định xuất tín hiệu kích nổ.
  • Mô phỏng thành công cơ chế hiển thị chuỗi trạng thái hoạt động trên màn hình LCD 16x2 thông qua giao thức I2C và điều khiển trạng thái logic mức 0V/5V tại chân Digital 13.

Giải pháp và đóng góp kỹ thuật

  • Cung cấp giải pháp mô hình hóa trực quan hệ thống an toàn điện tử trên ô tô bằng các công cụ phần mềm và linh kiện mã nguồn mở có chi phí thấp.
  • Hệ thống hóa các kiến thức cơ sở về phân loại túi khí SRS, cung góc tác dụng va chạm và nguyên lý kích nổ đa tầng phục vụ công tác học tập và nghiên cứu trong môn học Vi điều khiển và ứng dụng trên ô tô.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế:

    • Tín hiệu đầu vào của hệ thống mô phỏng mới chỉ dừng lại ở việc giả lập tĩnh bằng biến trở phân áp, chưa sử dụng cảm biến gia tốc thực tế (như cảm biến MEMS, cảm biến ACU-X chuyên dụng trên ô tô) để thu thập gia tốc va chạm động theo thời gian thực.
    • Thuật toán kích nổ trong mã nguồn mô phỏng mới xây dựng ở mức logic cơ bản dựa trên ngưỡng điện áp phân chia đơn giản, chưa triển khai trọn vẹn mô hình logic mờ (FIS) và thuật toán kích nổ đa tầng đã nêu trong sơ đồ lý thuyết.
    • Hệ thống mới triển khai trên môi trường mô phỏng phần mềm, chưa chế tạo mạch in phần cứng thực tế với các linh kiện cơ cấu chấp hành kích nổ thật.
  • Hướng nghiên cứu tiếp:

    • Tích hợp cảm biến gia tốc/va chạm thực tế (như MPU6050 hoặc cảm biến gia tốc ô tô) để đo đạc trực tiếp xung lực và gia tốc giảm dần.
    • Hoàn thiện thuật toán điều khiển kích nổ đa cấp độ (túi khí tầng 1, túi khí tầng 2) dựa trên thuật toán lọc jerk và phân tích góc va chạm đa hướng.
    • Mở rộng mô hình điều khiển mô phỏng cho hệ thống đa túi khí bao gồm túi khí rèm, túi khí bên hông và bộ căng đai an toàn khẩn cấp.

Giá trị tham khảo

Tài liệu là nguồn tư liệu học tập có giá trị đối với:

  • Sinh viên các ngành Công nghệ Kỹ thuật Ô tô, Kỹ thuật Điều khiển và Tự động hóa, Cơ điện tử cần tài liệu thực hành về vi điều khiển AVR (ATmega328P) và nền tảng Arduino ứng dụng trong ô tô.
  • Người làm đề tài nghiên cứu về hệ thống an toàn bị động trên ô tô, mô phỏng mạch điện tử trên Proteus và kỹ thuật ghép nối hiển thị qua LCD I2C.
  • Các nội dung đáng tham khảo bao gồm: Sơ đồ thông số kỹ thuật bo mạch Arduino UNO R3, thông số chân màn hình LCD 1602, nguyên lý phân loại hệ thống túi khí loại E/M và lưu đồ thuật toán kích nổ tiền va chạm.

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

1. Vi điều khiển ATmega328P trên bo mạch Arduino UNO R3 có các thông số bộ nhớ và cấu hình chân như thế nào?

Theo số liệu trong tài liệu, ATmega328P là vi điều khiển 8-bit họ AVR, hoạt động ở tần số 16 MHz. Cấu trúc bộ nhớ bao gồm 32 KB Flash ROM (trong đó 0.5 KB dùng cho bootloader), 2 KB SRAM và 1 KB EEPROM. Bo mạch cung cấp 14 chân Digital I/O (với 6 chân PWM phần cứng) và 6 chân Analog Input (A0 - A5) có độ phân giải 10-bit.

2. Ngưỡng vận tốc và điều kiện để hệ thống túi khí phía trước kích nổ là gì?

Túi khí SRS phía trước được thiết kế để kích nổ khi mức độ va đập vượt quá giới hạn thiết kế, tương đương với vận tốc va chạm trực diện từ 20 đến 25 km/h vào vật thể cố định không biến dạng. Túi khí phía trước sẽ không kích nổ khi xe bị va chạm từ bên sườn, phía sau, lật xe hoặc va chạm trực diện ở tốc độ thấp.

3. Màn hình LCD 16x2 trong đồ án có các thông số điện áp và chế độ giao tiếp như thế nào?

LCD 1602 hoạt động ổn định ở điện áp 2.5V - 5V, mức điện áp tối đa cho phép là 7V và tối thiểu là -0.3V; dòng cấp nguồn từ 350 $\mu A$ đến 600 $\mu A$. Màn hình có thể hoạt động ở chế độ truyền dữ liệu 8-bit (qua 8 đường DB0 - DB7) hoặc 4-bit (DB4 - DB7), và trong mô hình lập trình được ghép nối qua giao tiếp I2C ở địa chỉ 0x27.

4. Biến trở được cấu tạo từ những vật liệu nào và giữ vai trò gì trong mô hình mô phỏng?

Biến trở được cấu tạo gồm cuộn dây hợp kim có điện trở suất lớn, con chạy (cần gạt) và 3 chân cực ngõ ra. Các vật liệu chế tạo phổ biến gồm hạt carbon, dây quấn Nichrome, nhựa dẫn điện và Cermet. Trong mô hình, biến trở đóng vai trò mạch phân áp, điều chỉnh điện áp từ 0V - 5V cấp vào chân A0 của Arduino để giả lập tín hiệu gia tốc va chạm từ cảm biến.

5. Thuật toán tiền va chạm (Pre-crash) trong tài liệu xử lý các thông tin đầu vào nào để ra quyết định kích nổ?

Mô hình thuật toán trong tài liệu tiếp nhận thông tin từ Host vehicle sensor, Radar sensor và cảm biến ACU-X (bao gồm góc hướng, vị trí va chạm, thời gian đến lúc va chạm, vận tốc tương đối). Dữ liệu qua khối Wake-up FIS, bảng quyết định loại va chạm (Crash type decision table) và bộ lọc giật cục (Filtered jerk) để so sánh với ngưỡng th, từ đó điều khiển kích nổ túi khí tầng 1 (1st airbag deployment) và tầng 2 (2nd airbag deployment).


Kết luận

Báo cáo bài tập lớn của nhóm sinh viên Khoa Công nghệ Ô tô - Trường Đại học Công nghiệp Hà Nội đã hoàn thành việc nghiên cứu tổng quan về hệ thống an toàn túi khí SRS và cấu trúc vi điều khiển ATmega328P. Nhóm tác giả đã xây dựng thành công mô hình mô phỏng kỹ thuật trên phần mềm Proteus kết hợp lập trình điều khiển trên Arduino IDE, xử lý tín hiệu giả lập va chạm từ biến trở để điều khiển kích nổ và hiển thị trạng thái lên màn hình LCD 16x2. Đề tài là tài liệu tham khảo trực quan, hỗ trợ thiết thực cho việc học tập và nghiên cứu các ứng dụng của vi điều khiển trong lĩnh vực kỹ thuật ô tô.