Bộ lọc và tiêu chuẩn so sánh được sử dụng để xác định bit nào trong mã ID của khung nhận được so sánh với bộ lọc.
Hình 2. 60 Ví dụ minh họa cho bộ lọc tiêu chuẩn so sánh chấp nhận tin nhắn
-Nếu tiêu chuẩn so sánh được thiết lập là 0, thì sẽ tự động chấp nhận các khung có ID tương ứng, không quan tâm đến giá trị bit của bộ lọc.
-Nếu tiêu chuẩn so sánh được thiết lập là 1, bit ID tương ứng sẽ so sánh giá trị với bit của bộ lọc.
Ví dụ 1: Chúng ta mong muốn chỉ nhận duy nhấn khung có chứa ID là 00001567 (giá trị hexa) thì ta:
-Thiết lập bit của bộ lọc là 00001567.
-Thiết lập bit tiêu chuẩn so sánh là 1FFFFFF.
-Khi có một khung đến thì ID của nó sẽ so sánh với bit của bộ lọc mà ta đã thiết lập nó sẽ so sánh tất cả các bit, khung không đúng với ID mong muốn sẽ bị loại.
69 Ví dụ 2: Khi chúng ta muốn nhận tất cả các khung.
-Thiết lập bit của bộ lọc là 0.
-Thiết lập bit tiêu chuẩn so sánh là 0.
Ví dụ 3: Muốn nhận khung có ID 00001560 đến 00001567. -Thiết lập bit của bộ lọc 00001560.
70
Chư ng 3. MÔ HÌNH MẠNG CAN 3.1. Giới thiệu về phần cứng
Hình . 1 Sơ đồ mạch điện hệ thống
3.1.1. Tìm về Board Arm STM32F103T8C6
STM32 là một trong những dòng chip phổ biến của ST với nhiều họ thông dụng như F0, F1, F2, F3, F4… STM32F103 thuộc họ F1 với lõi là ARM COTEX M3. STM32F103 là vi điều khiển 32 bit, tốc độ tối đa là 72Mhz. Giá thành cũng khá rẻ so với các loại vi điều khiển có chức năng tương tự. Mạch nạp cũng như công cụ lập trình khá đa dạng và dễ sử dụng.
71 Sơ lược về Board trên:
-ARM 32-bit Cortex M3 với xung tối đa là 72Mhz. -Bộ nhớ:
+ 64 kbytes bộ nhớ Flash (bộ nhớ lập trình). + 20kbytes SRAM.
- ung, khởi động lại và quản lý nguồn. -Điện áp hoạt động 2.0V -> 3.6V.
-Sử dụng thạch anh ngoài từ 4Mhz -> 20Mhz.
-Thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40khz. -Sử dụng thạch anh ngoài 32.768khz được sử dụng cho RTC. -Trong trường hợp điện áp thấp:
+ Có các chế độ: ngủ, ngừng hoạt động hoặc hoạt động ở chế độ chờ.
+ Cấp nguồn ở chân Vbat bằng pin để hoạt động bộ RTC và sử dụng lưu trữ data khi mất nguồn cấp chính.
+ 2 bộ ADC 12 bit với 9 kênh cho mỗi bộ. + Khoảng giá trị chuyển đổi từ 0 – 3.6V. + Lấy mẫu nhiều kênh hoặc 1 kênh. + Có cảm biến nhiệt độ nội.
-DMA: bộ chuyển đổi này giúp tăng tốc độ xử lý do không có sự can thiệp quá sâu của CP .
-7 kênh DMA.
-Hỗ trợ DMA cho ADC, I2C, SPI, ART. -7 Bộ định thời
-3 Bộ định thời 16 bit hỗ trợ các IC/OC/PWM.
-1 Bộ định thời 16 bit hỗ trợ để điều khiển động cơ với các chế độ bảo vệ như ngắt đầu vào, dead-time…
-1 Hệ thống định thời 24 bit đếm xuống dùng cho các ứng dụng như hàm Delay…. -Hỗ trợ 9 kênh giao tiếp bao gồm:
+ 2 bộ I2C (SMBus / PMBus). + 3 bộ USART.
72 + 1 bộ giao diện CAN (2.0B Active).
+ USB 2.0.
+ Kiểm tra lỗi CRC và 96-bit ID.
3.1.2. Tìm hiểu về Board ARDUINO UNO R3
Mạch ARDUINO UNO là dòng mạch ARDUINO phổ biến, khi mới bắt đầu làm quen, lập trình với ARDUINO thì mạch ARD INO thường nói tới chính là dòng ARDUINO UNO. Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (mạch ARDUINO UNO R3). ARDUINO UNO thế hệ thứ 3, với khả năng lập trình cho các ứng dụng điều khiển phức tạp, phổ biến và dễ sử dụng nhất trong các dòng Arduino hiện nay cũng như tương thích với nhiều loại ARDUINO Shield nhất.
Hình 3.3 ARDUINO UNO R3
Sơ lược về board:
-Vi điều khiển ATmega328 họ 8 bit.
-Điện áp hoạt động 5V DC (chỉ được cấp qua cổng SB). -Tần số hoạt động16 MHz.
-Dòng tiêu thụ khoảng 30mA.
-Điện áp vào khuyên dùng 7-12V DC. -Điện áp vào giới hạn 6-20V DC. -Số chân Digital I/O14 (6 chân PWM).
73 ATmega328 (mặc định thì các điện trở này không được kết nối).
-Số chân Analog 6 (độ phân giải 10bit). -Dòng tối đa trên mỗi chân I/O30 mA. -Dòng ra tối đa (5V) 500 mA.
-Dòng ra tối đa (3.3V) 50 mA.
-Bộ nhớ flash32 KB (ATmega328) với 0.5KB dùng bởi bootloader.
3.1.3. Tìm hiểu về transceiver (TJA1050, MCP2551, SN65HVD2301-2)
Là bộ chuyển đổi tín hiệu giữa bộ điều khiển CAN và đường truyền vật lý, để giao tiếp với bus CAN và lấy dữ liệu từ nó.
Cách thức hoạt động là dây CAN_H và CAN_L được kết nối với các đầu vào của bộ so bên trong của chip. Các bộ so này đo các đầu vào và có thể cho chúng ta đầu ra điện áp khác nhau của 2 tín hiệu. Nếu đầu ra điện áp là 0V, thì được cho là trạng thái trội. Nếu điện áp lớn hơn 1V, thì gọi là trạng thái lặn.
Nhiều hệ thống con có thể kết nối với mạng CAN và mỗi hệ thống có thể giao tiếp với vi điều khiển hoặc chip CAN qua kết nối, mặc dù không phải cùng một lúc. Điều này cho phép vi điều khiển phân tích dữ liệu từ tất cả các đơn vị này và phản hồi phù hợp với dữ liệu và hệ thống con nào được ưu tiên. Đây là một hệ thống liên lạc dựa trên thông báo giữa vi điều khiển và tất cả các hệ thống con trên bus CAN.
Bảng 3. 1 Các dòng truyền nhận phổ biến
MCP2551 SN65HVD230(1,2) TJA1050
Tương thích với tiêu chuẩn ISO-11898. Hoạt động với tốc độ lên đến 1Mbit/s. Điện áp hoạt động từ 4.5 đến 5.5V. Lên đến 120 nút có thể kết nối vào mạng. Thích hợp cho các giao diện xe điện áp 12V hoặc 24V.
Khả năng chống nhiễu cao.
Tương thích với tiêu chuẩn ISO-11898.
Tốc độ cao lên đến 1Mbit/s.
Tương thích với thiết bị 3.3V và 5V. Ít nhất 110 nút được kết nối vào mạng. Phát xạ điện từ thấp. 1 nút không cấp nguồn không làm ảnh hướng đến các tuyến bus. Cách nhiệt tốt.
Tương thích với tiêu chuẩn ISO-11898-2.
Thiết kế với tốc độ dữ liệu lên đến 1Mbit/s.
Hoạt động với điện áp chỉ 3.3V.
Cho phép 120 nút kết nối đến mạng.
Cách nhiệt.
Thiết kế an toàn khi hở mạch xảy ra.
74
3.1. 4. Tìm hiểu về vi điều khiển CAN MCP2515 và Module MCP2515
Vi điều khiển MCP2515 trong bộ điều khiển CAN quản lý gói dữ liệu, mã hóa khung dữ liệu, giải mã bit, phát hiện lỗi, đồng bộ dữ liệu,..Hổ trợ CPU quản lí tin nhắn, tương thích với các đặc điểm kỹ thuật của CAN 2.0B.
Hình 3. 4 Module MCP2515 CAN
Module CAN dùng chip CAN Controller MCP2515 và bộ truyền nhận CAN TJA1050 là module mở rộng ngoại vi CAN.
Module còn tích hợp các Jump J1 J2, trong đó:
-J1 là jump chọn chế độ tốc độ giao tiếp, nếu Jump 1 được nối thì chip TJA1050 cho phép giao tiếp trên mạng CAN- B S với tốc độ cao nhất có thể, lên tới 1M. Nếu Jump 1 không được kết nối thì TJA1040 giao tiếp với B S CAN tốc độ thấp, < 10 kbps, ở chế độ này cho phép khoảng cách truyền xa hơn và nối được nhiều node mạng CAN trên bus vật lý hơn.
-J2 là jump nối điện trở liên kết. Mỗi B S CAN có 2 điện trở 120 Ohm ở hai đầu bus. Nếu J2 nối thì module sẽ là nốt mạng đầu hoặc node mạng cuối. J2 không nối khi sử dụng ở module giao tiếp với mạng CAN B S đã có sẵn điện trở ở 2 đầu. Thiết kế CMOS tiết
kiệm năng lượng.
Chống ngắn mạch đến ắc quy và GND.
75 Thông số kỹ thuật:
-Chuẩn giao tiếp SPI, có chân ngắt khi nhận được gói tin hợp lệ.
-Điện áp hoạt động: 4.75 5.25V. Tương thích đầy đủ với chuẩn ISO 11898 cho hệ thống hoạt động ổn định, chính xác.
3.1.5. ECU của xe
3.1.5.1. Tổng quan về ECU
Hình 3. 5 ECU trên xe
ECU là một thuật ngữ được viết tắt từ Electronic Control nit , nghĩa là Bộ phận điều khiển điện tử . Nhưng đôi khi EC còn được hiểu là Engine Control nit , tức chỉ nghĩa hẹp hơn so với nghĩa ban đầu nhưng trong khuôn khổ bài này thì ta sẽ hiểu theo nghĩa rộng, tức là Electronic Control nit .
EC được hiểu một cách đơn giản là bộ não điều khiển của một hệ thống nào đó trên ô tô. Và một chiếc ô tô hiện đại ngày nay có khoảng vài chục cái EC như vậy để điều khiển vận hành các hệ thống điện – điện tử trên xe.
Về phương diện nguyên lý hoạt động, ECU sẽ nhận các thông tin dữ liệu từ các input (các cảm biến, công tắc, tín hiệu điều khiển,..) để đưa vào bộ vi xử lý theo một chương trình đã được lập trình sẵn để cho ra tín hiệu output đến các bộ phận chấp hành.
Nhìn chung ECU có cấu tạo cơ bản gồm bộ vi xử lý, bộ nhớ và đường truyền dữ liệu vào/ra.
3.1.5.2. Kiến trúc ECU
76
Hình 3.6 Cấu tạo hệ thống ECU
Được cấu tạo từ 3 bộ phận chính đó là: Bộ nhớ trong của ECU, bộ vi xử lý và đường truyền – BUS.
3.1.5.2.2. Bộ nhớ trong ECU
Bao gồm 4 chi tiết đảm nhiệm 4 chức năng riêng biệt bao gồm: RAM, ROM, PROM, KAM.
RAM là viết tắt của cụm từ Random Access Memory, có nhiệm vụ truy xuất ngẫu nhiên và dùng để lưu trữ thông tin mới ghi trong bộ nhớ và được xác định bởi bộ vi xử lý. RAM sẽ đọc và ghi lại các số liệu theo từng địa chỉ bất kỳ.
ROM là viết tắt của cụm từ Read Only Memory, có nhiệm vụ lưu trữ các thông tin thường trực. ROM chỉ sử dụng để đọc những thông tin được lập trình có sẵn, mà không thể ghi vào được. Bởi vậy, ROM là nơi cung cấp những thông tin cho bộ vi xử lý.
KAM là viết tắt của cụm từ Keep Alive Memory, dùng để lưu trữ những thông tin mới tạm thời để cung cấp các thông tin này đến cho bộ vi xử lý. KAM vẫn sẽ duy trì bộ nhớ cho dù các chi tiết không hoạt động hoặc tắt công tắc máy. Tuy nhiên, nếu bị mất nguồn cung cấp từ acquy đến máy tính thì bộ nhớ KAM sẽ bị mất dữ liệu.
PROM là viết tắt của cụm từ Programmable Read Only Memory. PROM có cấu trúc cơ bản giống như ROM nhưng cho phép nạp dữ liệu nơi sử dụng chứ không phải nơi sản xuất giống ROM. Ở những đòi hỏi khác nhau, PROM sẽ cho phép sửa đổi chương trình điều khiển.
3.1.5.2.3. Bộ vi xử lý
Là bộ phận quan trọng nhất trong ECU, khi tiếp nhận các tín hiệu của cảm biến thông qua các bộ nhớ trong của ECU, những tín hiệu này ngay lập tức được gửi đến Bộ vi xử
77 lý. Lúc này, bộ vi xử lý sẽ tính toán và đưa ra mệnh lệnh cho bộ phận chấp hành để điều chỉnh thích hợp.
3.1.5.2.4. Đường truyền Bus trên ECU
Được dùng để truyền các lệnh và dữ liệu trong EC , để thông tin có thể truyền từ bộ vi xử lý đến các cơ cấu chấp hành chính xác và nhanh chóng thì đường truyền đóng vai trò lớn.
78
3.1.5.2.5. Nguyên lý hoạt động của ECU
Hình 3. 7 Sơ đề thể hiện nguyên lý làm việc chung ECU
Nhờ vào sự thay đổi tín hiệu từ các cảm biến trên các cơ cấu chấp hành, ECU sẽ xác định thời điểm để hiệu chỉnh các chế độ và chức năng một cách hợp lý.
Ví dụ: trên hệ thống ECU của động cơ, nhờ vào cảm biến tốc độ và vị trí của piston giúp EC xác định được thời điểm đánh lửa và thời điểm phun xăng tối ưu. Những cảm biến như vị trí bướm ga dùng để xác định lưu lượng không khí nạp, nhằm tính toán lượng phun nhiên liệu thích hợp cho từng chế độ tải.
Với các dữ liệu tốc độ động cơ, tải hay nhiệt độ động cơ… EC sẽ xử lý và tính toán để đưa ra góc đánh lửa sớm chính xác nhất theo từng chế độ.
Các hệ thống ECU trên ô tô can thiệp sâu vào các hệ thống an toàn trên ô tô như: hệ thống cân bằng ESP, hỗ trợ phanh khẩn cấp BA, hệ thống phân bổ lực phanh EBD… và rất nhiều hệ thống điều khiển thông minh khác.
Việc cảm biến nhận nhiệm vụ liên tục ghi lại và truyền tín hiệu để gửi về ECU, thì nhiệm vụ của ECU là so sánh dữ liệu mới với những chương trình đã tính toán trước.
79 Người lái có khuynh hướng phản xạ đột ngột như đánh lái gấp, lực phanh tăng nhanh, hiện tượng trượt bánh khi phanh…Khi gặp phải sự cố nguy hiểm. Lúc này, ngay lập tức ECU sẽ nhận tín hiệu và đưa ra hiệu chỉnh buộc xe phải hoạt động theo chương trình đã được lập trình sẵn như: Điều chỉnh góc xoay, kiểm soát tốc độ từng bánh xe, lực phanh mỗi bánh …
3.1.6. OBD-II trên CAN
OBD là tên viết tắt của On-Board Diagnostic , là một chuẩn giao tiếp nhằm hỗ trợ chẩn đoán trên ô tô. OBD định nghĩa các dạng lỗi trong quá trình hoạt động của ô tô dưới dạng các DTC cùng với các dịch vụ đi kèm để thực hiện quá trình chẩn đoán trên ô tô.
Các dịch vụ của OBD có ưu điểm là rất dễ dàng truy cập, thậm chí là từ các thiết bị từ bên thứ ba Tính phổ biến cao, người dùng có thể dễ dàng chẩn đoán được tình trạng của xe dựa trên các thông số và DTC mà hệ thống OBD trả về.
Trong suốt quá trình phát triển, OBD đã phát hành khá nhiều phiên bản, trong đó OBD-II là bản OBD phổ biến nhất đến tận ngày nay.
OBD-II có thể được sử dụng như là một công cụ chẩn đoán thời gian thực.
OBD-II hỗ trợ nhiều tính năng với nhiều thông số khác nhau thông qua các thông số (OBD-II PID).
OBD-II hỗ trợ 5 chuẩn giao thức khác nhau: giao thức CAN, KWP, ISO 9141, J- 1850 PWM và J-1850 VPW.
Trước khi có sự ra đời của OBD, các hãng ô tô sử dụng MIL để hiển thị các mã lỗi người dùng phải đếm nhịp chớp tắt của đèn MIL để xác định mã, sau đó tra thông tin trong tài liệu của hãng ô tô đó.
Trong khi đó, nếu có thiết bị OBD-II, người dùng chỉ cần cắm thiết bị OBD-II vào cổng OBD trên xe, kết quả chẩn đoán trả về sẽ chứa toàn bộ các thông tin liên quan, bao gồm cả các DTC và dữ liệu hiên thời để theo dõi sự hoạt động của xe.
OBD có lịch sử phát triển từ năm 1991, bắt đầu từ hiệp hội bảo vệ môi trường California.
Vào năm 1994, các hãng xe ô tô ở Mĩ cam kết sẽ trang bị OBD-II trên toàn bộ danh mục sản phẩm của họ bắt đầu từ năm 1996 trở về sau. OBD-II cũng được chính thức giao cho hiệp hội các kỹ sư quản lý Chuẩn SAE J 1962 định nghĩa các chuẩn về DTC cùng với các cơ chế liên quan, bao gồm cả bộ kết nối OBD-II.
80 Ngày nay, OBD-II đã trở thành một tiêu chuẩn toàn cầu, vượt ra khỏi biên giới nước Mĩ, bắt buộc phải được trang bị trên tất cả các xe được bán ra (trừ một số nước đang phát triển, trong đó có Việt Nam).
Mối liên hệ giữa CAN và OBD II
Hình 3. 8 Minh họa mối liên hệ giữa CAN và OBD II
OBD-II thực chất là một giao thức có lớp cao hơn so với CAN (cũng như 4 giao thức còn lại mà OBD-II hoạt động) Là một dạng lớp giao thức cao hơn HLP. Điều này có