4. THIẾT KẾ MẠCH GIAO TIẾP VI ĐIỀU KHIỂN P89V51RD2 VĂ ECU ĐỘNG
4.1. Cơ sở giao tiếp
Như phần trín đê trình băy, trong một số động cơ EFI có bâo mê lỗi theo phương phâp nhây đỉn bâo, nếu vi điều khiển đọc được tín hiệu điều khiển đỉn bâo của ECU, ta hoăn toăn có thể xâc định được mê lỗi bâo về dựa văo câch thức bâo lỗi. Lúc năy, tín hiệu điều khiển ra (output) của ECU (điều khiển đỉn bâo) sẽ trở thănh tín hiệu văo (input) đối với vi điều khiển. Thông thường, mức điện âp để đỉn bâo sang lă mức 12V, vì vậy muốn đọc tín hiệu năy phải qua một mạch chuyển mức logic 5V để tương thích với chuẩn TTL của VĐK.
Thông thường, câc tín hiệu bâo bằng số lần nhấp nhây đỉn vă khoảng thời gian giữa câc lần nhây tuđn theo 1 chuẩn cố định. Tuỳ theo kiểu bâo 1 Digit hoặc 2 Digit mă sẽ có khoảng thời gian trống giữa câc digit lă xâc định. Dựa văo cơ sở năy ta có thể đọc lại câc digit vă tăng câc biến đếm lín để có thể lưu digit đọc được văo trong RAM, sau đó dựa văo kết quả để viết chương trình xuất ký tự ra măn hình LCD. Ví dụ sau đđy mô tả một đoạn chương trình con đơn giản đọc 1 digit vă xuất ra LCD:
;---
CHECK_ENGINE BIT P1.3 ; tín hiệu check_engin đọc văo chđn P1.3
START_KIEMTRA:
INC DIGIT ; Tăng biến đếm lín CALL DELAY1,2s ; DELAY 1,2 S
KIEM_TRA_DEN: JB CHECK_ENGINE, THOAT_KIEMTRA INC DIGIT CALL DELAY1S JMP KIEM_TRA_DEN THOAT_KIEMTRA: CALL HIEN_THI_LCD Giải thích:
Giả sử câc tín hiệu đỉn bâo câch nhau 0,5s .
Trước tiín ta kiểm tra bắt đầu quâ trình bâo đỉn check_engine :
- Nếu đỉn Check Engine không bâo , tức lă không có sự chuyển mức từ 1 về 0 thì tiếp tục kiểm tra.
- Nếu đỉn Check Engine bâo, tức lă bắt đầu kiểm tra. Delay 1 khoảng thời gian 1,2s để kiểm tra.
- Nếu đỉn Check Engine không bâo ( đang còn ở mức 1) thì thoât khỏi chương trình kiểm tra.
- Nếu đỉn Check Engine bâo ( mức 0 ) thì tăng biến đếm sau đó delay 1 khoảng thời gian 1s vă tiếp tuc trở lại kiểm tra cho đến khi đỉn check engine không bâo nữa thì thoât ra ngoăi vòng kiểm tra vă hiển thị kết quả ra LCD.