TẠO TÍN HIỆU GIẢ LẬP TỐC ĐỘ ĐỘNG CƠ,
TỐC ĐỘ XE, MỨC NHIÊN LIỆU TRÊN ĐỒNG HỒ
THÔNG QUA MẠNG CAN - OBD2
TỐC ĐỘ XE, MỨC NHIÊN LIỆU TRÊN ĐỒNG HỒ
THÔNG QUA MẠNG CAN - OBD2
MỤC LỤC
Mục lục. 12Danh mục các hình. 13
Lời cảm ơn. 14
Tóm tắt 15
Giới thiệu đề tài 16
CHƯƠNG 1: CƠ SỞ LÍ THUYẾT. 17
1.2 Tổng quan về OBD.. 22
1.3 Tổng quan về các cảm biến. 22
1.3.1 Cảm biến tốc độ động cơ. 22
1.3.2 Cảm biến mức nhiên liệu. 23
1.4 Lựa chọn thiết bị 24
CHƯƠNG 2 THỰC HÀNH.. 26
2.1. Giả lập tín hiệu OBD thông qua mạng CAN.. 26
2.2. Giao tiếp CAN giữa 2 module. 28
2.3. Đọc Can từ mô hình toyota vios, đồng hồ Mazda 2. 30
2.4. Lập trình hiển thị trên đồng hồ (Mazda 2 Demio) 34
CHƯƠNG 3: KẾT LUẬN.. 37
DANH MỤC CÁC HÌNH
Hình 1‑1 Các loại CAN FrameHình 2‑1 Sơ đồ kết nối phần cứng để giả lập
Hình 2‑2 Mạch kết nối thực tế
Hình 2‑3 Sơ đồ kết nối giao tiếp 2 module MCP2515
Hình 2‑4 Mạch kết nối 2 module MCP2515 thực tế
Hình 2‑5 Dữ liệu giao tiếp giữa 2 module MCP2515
Hình 2‑6 Kết nối với mô hình để giải mã ID
Hình 2‑7 Đồng hồ Mazda 2 Demio
Hình 2‑8 Thiết bị đọc ID CAN
Hình 2‑9 ID và Data đọc được trên mô hình toyota vios
Hình 2‑10 ID và Data đọc được trên đồng hồ Mazda 2
Hình 2‑11 Sơ đồ kết nối với đồng hồ Mazda
Hình 2‑12 Kết quả giả lập hiển thị tốc độ động cơ
TÓM TẮT
Báo cáo này trình bày cách mô phỏng tín hiệu tốc độ động cơ, tốc độ xe và mức nhiên liệu trên đồng hồ bằng mạng CAN-OBD2. Việc này được thực hiện theo nguyên tắc dữ liệu OBD sử dụng mạng CAN để mô phỏng tín hiệu tốc độ động cơ, tốc độ xe và mức nhiên liệu trên bảng đồng hồ. Để hiện thực hóa dự án này, nhóm chúng em sẽ nghiên cứu mạch CAN cho ô tô, đây là phương pháp đọc và trích xuất dữ liệu từ hệ thống chẩn đoán ô tô (OBD2) bằng mạng CAN, tại đây thông tin về tốc độ động cơ, tốc độ xe và mức nhiên liệu được hiển thị trên đồng hồ. Dự án này cũng giúp tăng cường cách gửi tin nhắn dữ liệu qua mạng CAN, cung cấp hiểu biết cơ bản về cách xe giao tiếp giữa các mô-đun điện tử và tạo cơ hội phát triển kỹ năng lập trình và kiểm tra của bạn.GIỚI THIỆU ĐỀ TÀI
Màn hình hiển thị thông tin trên đồng hồ động cơ giúp người lái theo dõi tốc độ động cơ, tốc độ xe và mức nhiên liệu còn lại từ bảng đồng hồ. Thông tin này rất quan trọng đối với người lái xe để đảm bảo an toàn cho xe. Sử dụng mạng CAN giúp cải thiện hiệu suất và giảm độ trễ truyền thông. Mạng CAN cho phép liên lạc hiệu quả và nhanh chóng giữa các bộ phận điện tử trong xe. Sử dụng mạng CAN, cũng rất hữu ích cho những người thợ máy có thể sử dụng mạng CAN để dễ dàng xác định nguồn gốc của sự cố. Học cách sử dụng Arduino để mô phỏng tín hiệu dữ liệu và hiển thị các chương trình trên đồng hồ trong khi thực hiện dự án là một cách tuyệt vời để nâng cao kỹ năng kỹ thuật.Trong dự án này, nhóm sẽ thu thập dữ liệu từ các cảm biến bằng cách thiết kế một thiết bị thu thập thông số xe theo thời gian thực, dựa trên mạch Arduino và Can bus. Vì vậy, chúng ta sẽ xem xét dữ liệu và sao chép, phân tích và đánh giá dữ liệu theo thời gian thực.
CHƯƠNG 1: CƠ SỞ LÍ THUYẾT
1.1 Tổng quan về mạch CAN
CAN là viết tắt của Area Control – viết tắt của Local Area Network. Đó là một chuỗi dữ liệu được gửi dưới dạng một chương trình. Nó là một hệ thống truyền dữ liệu tốc độ cao có thể phát hiện hư hỏng. Nó thực hiện giao tiếp dựa trên sự khác biệt điện áp bằng cách kết nối các đường CAN, CANH và CANL. CAN cho phép nhiều mô-đun và máy tính tích hợp khác nhau giao tiếp. Nó giống như một loạt các đường truyền tốc độ cao cho phép thông tin và hướng dẫn truyền qua lại theo nhiều cách khác nhau. Tính năng này cho phép hệ thống kết nối và giao tiếp điện tử. Mục đích chính là giảm nhu cầu sử dụng cáp bị hư hỏng, đơn giản hóa hệ thống và tiết kiệm sản phẩm đồng thời giúp hệ thống trên xe an toàn, ổn định và hiệu quả. đã phát triển. Mạng CAN đã được áp dụng và triển khai rộng rãi trong ngành công nghiệp và ô tô kể từ khi thành lập. CAN ngày càng trở nên phổ biến theo thời gian do hiệu suất, tính ổn định, tính đơn giản, tính mở và quan trọng nhất là chi phí thấp. Các ứng dụng CAN, có phạm vi ứng dụng rộng rãi trong ngành công nghiệp ô tô, không chỉ bao gồm tự động hóa công nghiệp mà còn bao gồm tất cả các loại hệ thống điều khiển có thể được sử dụng. Nó được sử dụng trong truyền dữ liệu lớn, phản hồi theo thời gian thực và trong nhiều môi trường khác nhau. Cuối cùng, khả năng tăng tốc ổn định. Vì vậy, ngoài ô tô, máy móc nông nghiệp, thuyền, thiết bị y tế, máy dệt, v.v. Chúng cũng được sử dụng trong nhiều ngành công nghiệp khác.
- Tổng quan về lịch sử phát triển của giao thức CAN
+1983: Dự án tạo mạng ô tô được phát triển tại Bosch được khởi động.
+1986: Chính thức ra mắt giao thức CAN.
+1991: Bosch công bố thông số kỹ thuật CAN 2.0.
+1992: Thành lập nhóm quốc tế gồm những người sử dụng và sản xuất CAN: Hiệp hội tự động hóa CAN (CiA). Hiệp hội CiA xuất bản Giao thức ứng dụng CAN (CAL). Chiếc xe Mercedes-Benz được trang bị CAN đầu tiên đã được ra mắt.
+ Năm 1993: Tiêu chuẩn ISO11898 ban hành
+ Năm 1994: CiA tổ chức Hội nghị quốc tế CAN (iCC) lần thứ nhất. Allen-Bradley giới thiệu giao thức DeviceNet.
+1995: Xuất bản bản sửa đổi ISO 11898 (định dạng mở rộng). CiA xuất bản giao thức CANopen.
- Chính sách: Tin nhắn dữ liệu được gửi từ bất kỳ nút nào trên bus CAN không bao gồm địa chỉ của đường truyền hoặc người nhận dự kiến. Thay vào đó, nội dung tin nhắn được đánh dấu bằng mã định danh (ID) duy nhất trên mạng. Tất cả các nút khác trong mạng đều nhận được tin nhắn và mỗi nút thực hiện kiểm tra xác thực để xác định xem tin nhắn có liên quan hay không. Nếu tin nhắn hợp lệ thì nó sẽ được xử lý; nếu không nó sẽ bị bỏ qua.
- ID và Trường xác định quyền ưu tiên (Arbitration Field)
ID là duy nhất và xác định mức độ ưu tiên của tin nhắn. Số ID càng thấp thì mức độ ưu tiên càng cao. Điều này cho phép phân xử khi hai (hoặc nhiều) nút đồng thời cạnh tranh để truy cập vào xe buýt.
Tin nhắn ưu tiên chính được đảm bảo nhận được xe buýt như thể đó là tin nhắn duy nhất được gửi. Tin nhắn ưu tiên sẽ tự động được gửi đến xe buýt tiếp theo hoặc xe buýt tiếp theo nếu có các tin nhắn ưu tiên khác đang chờ gửi. Mỗi tin nhắn trong
CAN có nhận dạng 11 bit (A) hoặc 29 bit (B). ID này là miền phân xử chính trong CAN; Trường này nằm ở đầu mỗi thông báo CAN. ID xác định loại tin nhắn cũng như tin nhắn chính. Bit trong thông báo trường CAN có thể được gửi ở mức cao hoặc thấp. Các bit nhỏ hơn luôn chiếm ưu thế, nghĩa là nếu một nút cố gắng truyền xuống và nút kia cố gắng truyền lên trên thì kết quả trên đường dẫn dữ liệu sẽ ít hơn. Kênh truyền luôn lắng nghe bus trong quá trình truyền. Một nút đi đến cấp độ trọng tài và nhận ra rằng nó đã mất mức độ ưu tiên. ngừng gửi, cho phép nút khác và tin nhắn chính ban đầu tiếp tục không bị gián đoạn. Hai trang web không được phép gửi tin nhắn có cùng ID. Nếu hai nút cố gắng gửi tin nhắn có cùng ID cùng một lúc thì nút đầu tiên sẽ thất bại. Thay vào đó, một trong những người chuyển tiếp biết rằng tin nhắn của anh ta đang được chuyển ra ngoài khu vực trọng tài. Sau đó trạm sẽ sử dụng cổng CAN để giải quyết vấn đề; Trong trường hợp này, cuối cùng sẽ thoát khỏi một trong các chế độ tắt truyền (chế độ tắt bus).
- Các loại CAN frame
Dữ liệu CAN được gửi theo khung. Có 4 loại frame khác nhau, đó là:
+ Data frame: Là frame mang dữ liệu từ người gửi đến người nhận. Một khung có một nơi để mang byte dữ liệu.
+ Remote frame (khung yêu cầu hoặc điều khiển): là khung được gửi từ nút bất kỳ để yêu cầu thông tin từ nút khác. Khi nút khác nhận được yêu cầu, nó sẽ truyền lại dữ liệu có ID khớp với ID được gửi đến mạng từ xa.
+ Error Frame: Đây là frame được gửi bởi một nút khi phát hiện có lỗi trên bus.
+ Cross Frame: Bất kỳ nút nào trên bus CAN đều có thể truyền bất cứ lúc nào khi phát hiện bus rảnh. Hoặc nếu một Nút nhận quá nhiều dữ liệu và không thể xử lý kịp thời thì nó sẽ gửi Frame này để các Nút khác không gửi dữ liệu đến đó nữa.
Hình 1‑1 Các loại CAN Frame
Định dạng khung chuẩn sử dụng ID có độ dài 11 bitĐịnh dạng khung mở rộng sử dụng ID có độ dài 29 bit
- Các loại giao thức CAN [2]
Các giao thức CAN có sẵn: CAN 2.0, CAN FD. Sự khác biệt giữa các loại giao thức nằm ở bản chất của loại giao thức. Chúng ta sẽ tìm hiểu cấu trúc của loại giao thức mà chúng ta đã đề cập ở trên.
- CAN 2.0 được Bosch công bố lần đầu tiên vào năm 1991. Tốc độ truyền tối đa của chuẩn này là 1 Mbps, lượng dữ liệu tối đa là 8 byte. Trong hệ thống CAN, dữ liệu được gửi và nhận bằng các khung dữ liệu. Khung dữ liệu mang thông tin từ máy phát đến một hoặc nhiều máy thu. Giao thức CAN hỗ trợ hai loại khung dữ liệu:
+CAN tiêu chuẩn (CAN 2.0A) - khung dữ liệu
+Extended CAN (CAN 2.0B) - phân phối dữ liệu
Hầu hết các tin nhắn gửi và nhận tiêu chuẩn CAN 2.0A, nhưng một (2.0 B thụ động) nhận được một tin nhắn mở rộng nhưng sau đó bỏ qua nó. CAN 2.0B có thể gửi và nhận tin nhắn theo cả hai hướng. Sự khác biệt giữa CAN 2.0A và CAN 2.0B: Trong phiên bản 2.0B, Arbitrage bao gồm hai bit ID. ID cơ sở dài mười một (11) bit và tương ứng với phiên bản 2.0A. Trường thứ hai (phần mở rộng của ID) dài mười tám (18) bit và dài hai mươi chín (29) mét.
Sự khác biệt giữa hai định dạng được thực hiện bằng cách sử dụng bit mở rộng nhận dạng (IDE), bit Yêu cầu từ xa hoán đổi (SRR) đang trong giai đoạn quyết định. Nếu quyết định được đưa ra giữa dữ liệu tiêu chuẩn và Hóa đơn mở rộng, bit SRR luôn được gửi dưới dạng phản hồi nhận để đảm bảo rằng Bản đồ dữ liệu luôn được ưu tiên nếu cả hai thông báo có cùng cơ sở (11 bit).
Tất cả các trường khác trong Khung dữ liệu 2.0B đều giống với các trường trong Khung dữ liệu 2.0B. - CAN FD:
CAN FD hoặc CAN Variable Digital Standard là sự phát triển của CAN 2.0. CAN FD cũng được Tập đoàn Bosch phát triển và ra mắt công chúng vào năm 2012.
CAN FD có thể sử dụng mức vật lý tương tự như CAN 2.0. Sự khác biệt chính giữa CAN 2.0 và CAN FD:
CAN 2.0 | CAN FD |
Tốc độ bit tối đa: 1 Mbps. | Tốc độ bit tối đa: 12 Mbps (ISO 11898-2 2015). |
Lượng dữ liệu tối đa trong 1 Frame: 8 byte. | Lượng dữ liệu tối đa trong 1 Frame: 64 byte. |
Nhiều Node có thể truyền thông điệp cùng một thời điểm. | Chỉ một Node có thể truyền thông điệp tại một thời điểm. |
Không có bit để thay đổi tốc độ truyền dữ liệu. | Có thêm các bit BRS, FDF, ESI có thể thay đổi tốc độ truyền dữ liệu. |
Trường CRC chứa 15 bit. | Trường CRC chứa 17 hoặc 21 bit. |
Dữ liệu ít bảo mật. | Dữ liệu được bảo mật tốt hơn. |
Bảng 1‑1 So sánh CAN2.0 và CAN FD |
CAN FD cũng có 4 kiểu truyền frame như CAN 2.0: Data Frame, Remote Frame, Error Frame và Full Frame.
CAN FD Data Frame còn bao gồm 2 định dạng:
+ Định dạng CAN FD tiêu chuẩn: 11 bit ID
+ Extended Data Frame (Extents) ở định dạng CAN FD. Format ): 29 bit ID
CAN FD không xác định các định dạng Remote, Fault và Frame Override khác nhau nhưng có định dạng giống CAN 2.0 cho các loại khung.
1.2 Tổng quan về OBD
OBD có nghĩa là “On-Board Diagnostics” dịch ra là “Chẩn đoán tự động” trong tiếng Việt. OBD là hệ thống được tích hợp trên xe với tính năng tự chẩn đoán và báo cáo về xe. Hệ thống OBD cho phép chủ xe hoặc thợ sửa xe truy cập trạng thái của nhiều loại xe khác nhau. Hệ thống OBD cơ bản bao gồm bộ điều khiển điện tử ECU - . Chúng có nhiệm vụ tiếp nhận thông tin từ các thiết bị đầu vào như cảm biến oxy hay kim phun để điều khiển hộp số giúp xe đạt được hiệu suất như mong muốn.OBD thường được thực hiện thông qua các cảm biến và hệ thống điều khiển gắn trên xe. Nó giúp hệ thống quản lý động cơ giám sát và kiểm soát những thứ như nhiệt độ động cơ, áp suất lốp, hệ thống đánh lửa, hệ thống lái và các bộ phận khác của xe. Hệ thống OBD, là một hệ thống chẩn đoán lỗi, sẽ có các thông số khác nhau tùy thuộc vào quốc gia mà nó được sử dụng. Mỗi vùng miền đều có những yêu cầu riêng, ví dụ chúng ta thường nói đến tiêu chuẩn OBD Nhật Bản, tiêu chuẩn OBD châu Âu, tiêu chuẩn OBD Mỹ... Nhưng có 2 chuẩn OBD phổ biến là OBD I và OBD II.
1.3 Tổng quan về các cảm biến
Các thiết bị này thu thập dữ liệu từ phương tiện sử dụng mạng CAN Bus Shield và Arduino, có thể cung cấp thông tin quan trọng về nhiệt độ và áp suất cho các hệ thống điều khiển và giám sát.Chọn: 3 điện trở thay thế cho 3 cảm biến.
Cảm biến tốc độ động cơ
- Khái niệm: cảm biến tốc độ động cơ trên ô tô là một thiết bị quan trọng trong hệ thống quản lý động cơ, giúp đo lường tốc độ quay của trục khuỷu hoặc trục cam. Thông tin này rất cần thiết cho Bộ điều khiển điện tử (ECU) để điều chỉnh các chức năng quan trọng của động cơ. Cảm biến tốc độ động cơ hoạt động bằng cách ghi nhận tín hiệu từ các bánh răng hoặc nam châm gắn trên trục quay, sau đó chuyển đổi tín hiệu này thành dạng điện tử. ECU sử dụng dữ liệu này để điều chỉnh thời điểm đánh lửa, thời gian phun nhiên liệu và kiểm soát hệ thống điều khiển động cơ khác. Nhờ có cảm biến tốc độ động cơ, xe có thể duy trì hiệu suất hoạt động tối ưu, tiết kiệm nhiên liệu và giảm thiểu khí thải. Ngoài ra, cảm biến này cũng hỗ trợ các hệ thống an toàn như kiểm soát lực kéo và chống bó cứng phanh (ABS) bằng cách cung cấp thông tin chính xác về tốc độ động cơ.
- Nguyên lý hoạt động cơ bản: cảm biến tốc độ động cơ trên ô tô hoạt động dựa trên nguyên lý đo lường sự thay đổi từ trường hoặc tín hiệu điện tử khi trục quay của động cơ chuyển động. Có hai loại cảm biến chính: cảm biến từ tính và cảm biến Hall. Cảm biến từ tính sử dụng một cuộn dây và một nam châm, khi trục quay và các bánh răng hoặc phần tử kim loại đi qua gần cảm biến, tạo ra sự thay đổi từ trường, dẫn đến cảm ứng điện áp trong cuộn dây, tạo ra tín hiệu điện xoay chiều có tần số tỉ lệ với tốc độ quay của trục. Trong khi đó, cảm biến Hall dựa trên hiệu ứng Hall, sử dụng một chip bán dẫn và một nam châm. Khi trục quay và các phần tử kim loại đi qua, chúng làm thay đổi từ trường quanh chip bán dẫn, tạo ra điện áp Hall, một tín hiệu số với tần số tương ứng với tốc độ quay của trục. Cả hai loại cảm biến đều gửi tín hiệu điện tử về Bộ điều khiển điện tử (ECU), nơi tín hiệu được phân tích để xác định tốc độ quay của động cơ. Dữ liệu này được ECU sử dụng để điều chỉnh thời điểm đánh lửa, thời gian phun nhiên liệu và các chức năng khác của động cơ, nhằm đảm bảo hiệu suất tối ưu, tiết kiệm nhiên liệu và giảm thiểu khí thải.
Cảm biến mức nhiên liệu
- Khái niệm: Cảm biến đo mức nhiên liệu là thiết bị đo nhiên liệu trong bình chứa, theo dõi mức nhiên liệu như xăng, dầu,… Cảm biến này thường được đặt trong bình nhiên liệu và sử dụng nguyên lý điện trở để đo lường mức nhiên liệu còn lại. Thông tin từ cảm biến này được gửi đến bảng đồng hồ hoặc hệ thống điều khiển của xe để hiển thị mức nhiên liệu cho người lái, giúp người lái theo dõi và kiểm soát được lượng xăng dầu còn lại trong bình, bồn, bể chứa, thiết bị,…của phương tiện vận tải.
- Nguyên lý hoạt động cơ bản: cảm biến đo mức nhiên liệu thường sử dụng nguyên lý điện trở biến thiên. Khi mức nhiên liệu trong bình thay đổi, giá trị điện trở của cảm biến cũng thay đổi tương ứng. Tín hiệu điện trở từ cảm biến được kết nối đến hệ thống điều khiển của ô tô thông qua dây dẫn. Trong một số trường hợp, tín hiệu điện trở từ cảm biến có thể cần được điều chỉnh hoặc chuyển đổi để phù hợp với yêu cầu của hệ thống điều khiển. Điều này có thể được thực hiện thông qua các mạch điện tử, bộ khuếch đại hoặc bộ chuyển đổi tín hiệu. Hệ thống điều khiển của ô tô nhận tín hiệu từ cảm biến và xử lý nó để hiển thị trên bảng đồng hồ hoặc màn hình thông tin giữa các ga đo và kim loại. Điều này cho phép người lái theo dõi mức nhiên liệu còn lại trong bình. Hệ thống điều khiển có thể điều chỉnh tín hiệu từ cảm biến để hiển thị thông tin mức nhiên liệu một cách chính xác và dễ hiểu trên bảng đồng hồ hoặc màn hình.
Lựa chọn thiết bị
Hiện nay, có rất nhiều thiết bị dùng để kết nối và thu thập dữ liệu động với OBD2 như mạch Can Bus Shield, Arduino Uno R3, ESP8266,…và các máy chẩn đoán. Trong quá trình nghiên cứu tìm hiểu, nhận thấy việc lấy dữ liệu động từ OBD2 bằng cách sử dụng mạch Can Bus Shield, Arduino Uno R3 là rất thuận lợi và phù hợp, có tính linh hoạt cao.
Với việc giá thành thấp và dễ sử dụng mạch Can Bus Shield và Arduino là lựa chọn tối ưu trong việc nghiên cứu các dự án của sinh viên, có một cộng đồng lớn, có độ tin cậy cao đã được kiểm chứng với nhiều tài liệu và ví dụ mã nguồn mở sẵn giúp dễ dàng lập trình cho các ứng dụng thu thập dữ liệu từ hệ thống OBD2. Mạch CAN Bus Shield được thiết kế đặc biệt để kết nối với giao thức CAN Bus, phổ biến trong các hệ thống OBD2. Mạch này thường được tích hợp dễ dàng vào môi trường phát triển Arduino và hỗ trợ các thư viện liên quan để giao tiếp với các thiết bị CAN Bus. Mạch CAN Bus Shield với Arduino Uno hoặc các phiên bản khác của Arduino để thu thập dữ liệu động từ hệ thống OBD2. Ngoài ra, Can Bus Shield cũng có tính tương thích cao với các thư viện phần mềm của hệ điều hành Arduino, giúp người dùng tiết kiệm được thời gian và tăng hiệu quả công việc. Thiết bị đọc dữ liệu động thu nhận tín hiệu từ các cảm biến trên xe ô tô thông qua cổng OBD2. Nhờ có mạch Can Bus Shield giao tiếp với mạng Can Bus trên ô tô và xử lý tín hiệu truyền về mạch Arduino là nơi trung tâm nhận các tín hiệu gửi về máy tính để theo dõi, giám sát đánh giá bộ dữ liệu động phục vụ quá trình chẩn đoán kỹ thuật.
Kết hợp giữa mạch CAN Bus Shield và Arduino Uno tạo ra một giải pháp linh hoạt và mạnh mẽ cho việc kết nối và thu thập dữ liệu động từ hệ thống OBD trên các phương tiện vận tải. Điều này cung cấp một cơ sở cho việc phát triển ứng dụng giám sát và chẩn đoán cho ô tô và các ứng dụng liên quan như: hệ thống lái, hệ thống phanh, động cơ, điện trên ô tô,... giúp người lái dễ dàng phát hiện các vấn đề của xe từ đó đưa ra được các giải pháp thích hợp về việc bảo trì, sửa chữa.
Việc sử dụng các cảm biến tốc độ động cơ, tốc độ xe và mức đo nhiên liệu để nạp dữ liệu động cho mạch Can Bus Shield và Arduino mang lại nhiều lợi ích về giám sát, điều chỉnh và tối ưu hóa hiệu suất của xe. Cảm biến mức đo nhiên liệu cung cấp thông tin về lượng nhiên liệu còn lại trong bình nhiên liệu. Thông tin này có thể được sử dụng để tối ưu hóa hiệu suất nhiên liệu của xe, giúp tiết kiệm nhiên liệu và giảm chi phí vận hành. Bằng cách sử dụng dữ liệu từ các cảm biến, người lái có thể phân tích và hiểu rõ hơn về cách lái xe của mình. Việc được giám sát các dữ liệu động được truyền đến từ các cảm biến, người lái có thể phát hiện sớm các vấn đề tiềm ẩn và thực hiện bảo trì định kỳ để tránh sự cố và giảm thiểu thời gian chết của xe.
Về việc hiển thị các tín hiệu cho người lái nhóm có 2 phương án: hiển thị trên màn hình đồng hồ hoặc hiển thị thông qua phần mềm Labview được kết nối với Arduino và Can Bus Shield. Và trong đồ án này nhóm quyết định thực hiện hiển thị lên đồng hồ Mazda 2.
CHƯƠNG 2 THỰC HÀNH
2.1. Giả lập tín hiệu OBD thông qua mạng CAN
- Các thiết bị được lựa chọn gồm: arduino uno R3, MCP2515, chiết áp, laptop.- Sơ đồ khối kết nối:
Arduino: Arduino sẽ là bộ não của hệ thống. Chức năng chính của Arduino trong trường hợp này là đọc dữ liệu từ mạng CAN, xử lý dữ liệu và gửi nó đến máy tính.
MCP2515: MCP2515 là một IC giao tiếp CAN, cho phép Arduino giao tiếp với mạng CAN trên xe. Nó chịu trách nhiệm đọc dữ liệu từ bus CAN trên xe, và chuyển nó đến Arduino thông qua giao tiếp SPI (Serial Peripheral Interface).
Máy tính: Máy tính sẽ là nơi xử lý và hiển thị dữ liệu từ việc giả lập cảm biến. Chức năng chính của máy tính là nhận dữ liệu giả lập cảm biến từ Arduino thông qua cổng nối USB, xử lý dữ liệu này và hiển thị nó cho người dùng.
-Sơ đồ đấu dây:
Hình 2‑1 Sơ đồ kết nối phần cứng để giả lập
+Kết nối máy tính với arduino thông qua dây cáp.+ Chiết áp: 1 chân nối mass, 1 chân nối 5v, 1 chân nối 1 trong các chân ADC của arduino.
+Chân GND của MCP2515 với chân GND của mạch Arduino Uno.64
+Chân VCC của MCP2515 với chân 5V của mạch Arduino Uno.
+Chân CS (Chip Select) của MCP2515 với chân 10 của mạch Arduino Uno.
+Chân MOSI (Master Out Slave In) của MCP2515 với chân 11 của mạch Arduino Uno.
+Chân MISO (Master In Slave Out) của MCP2515 với chân 12 của mạch Arduino Uno.
+ Chân SCK (Serial Clock) của MCP2515 với chân 13 của mạch Arduino Uno
-Mạch thực tế:
Hình 2‑2 Mạch kết nối thực tế
-Dựa vào các công thức tính toán trong bảng mã PID OBD-II [12], ta có được công thức giả lập tín hiệu của các cảm biến (trong bài báo cáo này cảm biến được thay bằng chiết áp).+Tốc độ động cơ (Nrpm) mã PID 0C được tính theo công thức như sau:
Nrpm = (A*256+B)/4 [có giá trị ngưỡng từ 0 đến 6400]
Trong đó: A - giá trị byte thứ 1, B - giá trị byte thứ 2 và được set bằng 0.
+Tốc độ phương tiện (Nspeed) mã PID 0D được tính theo công thức như sau:
Nspeed = C*256/100 [có giá trị ngưỡng từ 0 đến 180km/h]
Trong đó: C - giá trị byte thứ 3
2.2. Giao tiếp CAN giữa 2 module
-Thiết bị: Máy tính, 2 arduino uno r3, 2 module MCP2515, chiết áp.- Sơ đồ khối kết nối:
Arduino (1): Chức năng chính của Arduino (1) trong trường hợp này là đọc dữ liệu từ cảm biến, gửi dữ liệu giả lập từ cảm biến thông qua MCP2515 và nó cũng xử lý dữ liệu và gửi nó đến máy tính.
MCP2515 (1): có vai trò là 1 module truyền dữ liệu thông qua mạng CAN
MCP2515 (2): có vai trò là 1 module đọc dữ liệu thông qua mạng CAN
Arduino (2): Chức năng chính của Arduino (2) trong trường hợp này là đọc dữ liệu từ module CAN thông qua giao tiếp SPI, gửi dữ liệu về máy tính.
Máy tính: Máy tính sẽ là nơi xử lý và hiển thị dữ liệu. Chức năng chính của máy tính là nhận và truyền dữ liệu từ Arduino thông qua cổng nối USB, xử lý dữ liệu này và hiển thị nó cho người dùng.
-Sơ đồ đấu dây:
Hình 2‑3 Sơ đồ kết nối giao tiếp 2 module MCP2515
-Sơ đồ mạch thực tế:Hình 2‑4 Mạch kết nối 2 module MCP2515 thực tế
-Kết quả thu được: Sau khi tiến hành thực hiện việc giao tiếp mạng CAN thông qua 2 module CAN thì ta rút ra được arduino (1) đọc dữ liệu của chiết áp sau đó thông qua module MCP2515 (1) gửi dữ liệu của cảm biến được xử lí bằng máy tính. Nhờ dữ liệu được gửi qua mạng CAN mà module MCP2515 (2) có thể nhận được dữ liệu bằng cách dựa vào ID CAN mà module MCP2515 (1) gửi và từ đó đọc được dữ liệu của cảm biến thông qua việc nhận data CAN từ ID MCP2515 (1) đã gửi. Sau đó arduino (2) làm nhiệm vụ lấy dữ liệu CAN từ module MCP2515 (2) gửi lên máy tính hiển thị cho người dùng.Hình 2‑5 Dữ liệu giao tiếp giữa 2 module MCP2515
- Việc thiết lập tốc độ truyền giữa 2 module là cực kì quan trọng vì nó ảnh hưởng đến việc module MCP2515 (2) có thể nhận được ID và dữ liệu CAN hay không.-Sau khi thực hiện việc truyền dữ liệu thông qua mạng CAN bằng 2 module ta thấy được tốc độ truyền rất nhanh và ổn định đây là cơ sở để chúng em tiếp tục đi đọc dữ liệu CAN thực tế trên xe (mô hình) và giả lập tín hiệu thông qua mạng CAN gửi lên đồng hồ trong phần tiếp theo của đề tài.
2.3. Đọc Can từ mô hình toyota vios, đồng hồ Mazda 2
- Thiết bị và sơ đồ mạchSơ đồ khối kết nối
Arduino: Arduino sẽ là bộ não của hệ thống, xử lý thông tin từ mô hình gửi về. Chức năng chính của Arduino trong trường hợp này là đọc dữ liệu từ mạch CAN thông qua MCP2515, xử lý dữ liệu và gửi nó đến máy tính.
MCP2515: MCP2515 là một IC giao tiếp CAN, cho phép Arduino giao tiếp với mạng CAN trên mô hình. Nó chịu trách nhiệm đọc dữ liệu từ bus CAN trên mô hình, và chuyển nó đến Arduino thông qua giao tiếp SPI (Serial Peripheral Interface).
Máy tính: Máy tính sẽ là nơi xử lý và hiển thị dữ liệu từ mô hình. Chức năng chính của máy tính là nhận dữ liệu từ Arduino thông qua cổng nối USB, xử lý dữ liệu này và hiển thị nó cho người dùng.
Mô hình (đồng hồ): Trong trường hợp này là nguồn cung cấp dữ liệu, gửi dữ liệu thông qua bus CAN.
- Sơ đồ mạch thực tế
Hình 2‑6 Kết nối với mô hình để giải mã ID
Hình 2‑7 Đồng hồ Mazda 2 Demio
+Kết nối máy tính với arduino thông qua dây cáp+Kết nối dây giữa arduino và MCP2515:
arduino | MCP2515 |
D10 | CS |
D11 | SI |
D12 | SO |
D13 | SCK |
Vcc | 5v |
Gnd | Gnd |
+Cấp nguồn cho mô hình (đồng hồ).
+Nạp code arduino (1) và sử dụng phần mềm Canhacker để đọc ID và Data
- Thiết bị đọc ID CAN:
Hình 2‑8 Thiết bị đọc ID CAN
+ Thiết bị bao gồm 1 arduino, 1 MCP2515 với đầu ra gồm 1 đầu cắm cáp nạp để arduino kết nối với máy tính của arduino, 1 đầu gồm 2 dây CAN-H và CAN-L kết nối giắc OBD. Kết hợp với phần mềm Canhacker chúng ta có thể đọc được id của bất kì loại xe nào.-Kết quả thu được:
Hình 2‑9 ID và Data đọc được trên mô hình toyota vios
Hình 2‑10 ID và Data đọc được trên đồng hồ Mazda 2
+Các ID đọc được của mô hình và các đồng hồ được thể hiện dưới dạng 1 số hex và mỗi hãng, mỗi loại xe thì có 1 ID riêng và cách thiết lập các byte data cũng khác nhau. Do tính chất bảo mật code và dữ liệu truyền nên các hãng xe hầu như không công bố các mã ID một cách rõ ràng.+Ý nghĩa các byte của data:
00: Đây có thể là các byte không mang ý nghĩa hoặc có thể là giá trị mặc định.
FF: Đây là giá trị cao nhất mà một byte có thể đạt được (255 trong hệ thập phân). Trong ngữ cảnh của dữ liệu CAN, giá trị này thường được sử dụng để biểu thị lỗi hoặc trạng thái đặc biệt.
Các giá trị còn lại đại diện cho 1 thông số bất kì nào đó, ví dụ như nhiệt độ nước làm mát, mức nhiên liệu, tốc độ động cơ, … tùy vão các hãng xe.
2.4. Lập trình hiển thị trên đồng hồ (Mazda 2 Demio)
-Thiết bị: Máy tính, arduino, MCP2515, đồng hồ, chiết áp.-Sơ đồ khối:
+Máy tính: Đóng vai trò đọc dữ liệu của chiết áp từ arduino hiển thị cho người dùng, nhận dữ liệu thông qua cổng USB.
+ Arduino: đọc dữ liệu từ cảm biến, gửi dữ liệu giả lập từ cảm biến thông qua MCP2515 đến mô hình và nó cũng xử lý dữ liệu và gửi nó đến máy tính.
+MCP2515: có vai trò là 1 module truyền dữ liệu thông qua mạng CAN.
+Đồng hồ: Nơi hiển thị dữ liệu do MCP2515 gửi thông qua mạng CAN cho người dùng.
-Sơ đồ mạch thực tế:
Hình 2‑11 Sơ đồ kết nối với đồng hồ Mazda
+Đồng hồ Mazda 2 sau khi thực hiện dò hiện việc dò ID thì nhóm chúng em đã xác định được ID của tốc độ động cơ (rpm) và tốc độ xe là 514, với dữ liệu được truyền lên của tốc độ động cơ là byte thứ 1 và thứ 2 còn tốc độ xe là giá trị của byte thứ 3. Công thức tính toán đã được nhóm chúng em trình bày ở phần giả lập tín hiệu OBD thông qua mạng can.-Kết quả đạt được:
+Tốc độ động cơ (rpm): Tốc độ động cơ thay đổi theo giá trị khi vặn của chiết áp.
Hình 2‑12 Kết quả giả lập hiển thị tốc độ động cơ
+Tốc độ xe: Tốc độ xe thay đổi theo giá trị vặn của chiết áp
Hình 2‑13 Kết quả giả lập tốc độ xe
+ Khi vặn chiết áp tượng trưng cho các cảm biến thì dữ liệu của cảm biến được arduino và MCP2515 gửi lên đồng hồ bằng đường truyền HS CAN với tốc độ 500KBPS (kilobits per second) bằng những ID CAN do nhà sản xuất đã thiết lập sẵn qua đó đồng hồ có thể nhận được dữ liệu của cảm biến và hiển thị trên đồng hồ.
CHƯƠNG 3: KẾT LUẬN
Kết quả thử nghiệm đọc dữ liệu trên cơ sở mạch arduino và MCP2515 thông qua cổng OBD cho thấy sản phẩm hoạt động tốt và tốc độ nhanh, so với giá thành của các thiết bị được sử dụng làm thiết bị đọc dữ liệu. Thông tin về dữ liệu động, lỗi hư hỏng của hệ thống được giám sát và hiển thị liên tục trong suốt quá trình vận hành xe thông qua giao diện phần mềm. Việc thực hiện kết nối thiết bị với ô tô cũng như quá trình vận hành đơn giản, dễ dàng, thuận tiện cho người sử dụng. Kết quả Tạo tín hiệu giả lập các tín hiệu trên đồng hồ thông qua mạng CAN - OBD2 giúp nhóm hiểu hơn về cách truyền ID và dữ liệu của các cảm biến thông qua mạng CAN đồng thời biết được nguyên lí của việc truyền dữ liệu thông qua mạng CAN đa dạng về công thức và cách thiết lập của các hãng khác nhau. Hướng phát triển tiếp theo nhóm sẽ tiếp tục hoàn thiện việc truyền mức nhiên nhiệu lên đồng hồ và các tín hiệu có thể hiển thị trên đồng hồ.
...Xem thêm