Чтение кан-штины автомобиля по obd2 протоколу

Публикация 09.01.2018

Валялся у меня сгоревший ELM327 адаптер для k-line на микросхеме PIC18F25K80. Поковырявшись с ним некоторое время понял, что ничего полезного не сделаю. Выбросил всю внутрянку, купил чип L9637D. И понеслось...

Напрямую arduino соединить с кан-шиной нельзя. Нужен конвертер уровней. Для этих целей подходит L9637D. Он подключается по классической схеме:

Данная схема встречается с дополнительной микросхемой ELM327. На моем ситрояне используется протокол ISO 14230. По тому достаточно только L9637D.

Схема питается от 12-и вольт в obd разьеме через линейный стабилизатор на 5 вольт.

K-line — пин 7 колодки, L-line пин 15 . земля пины 4 и 5, плюс пин 16. Общая распиновка разьема obd такая:

Соединяем Tx микросхемы L9637D с 14-ым пином Ardiono, uart пины с usb-ttl адаптером.

Загружаем скетч, запускаем и.. Я получил вот такой первый пакет:

C1 33 F1 81 66 83 F1 10 C1 E9 8F BD C2 33 F1 01 0C F3 84 F1 10 41 0C 0D 20 FF C2 33 F1 01 05 EC 83 F1 10 41 05 49 13 C2 33 F1 01 0F F6 83 F1 10 41 0F 47 1B

где
C1 33 F1 81 66 — эхо на запрос инициализации шины
83 F1 10 C1 E9 8F BD — ответ ЭБУ на запрос инициализации, C1 значит ОК
C2 33 F1 01 0C F3 — эхо на запрос оборотов двигателя
84 F1 10 41 0C 0D 20 FF — ответ ЭБУ с оборотами, где 0D 20 (HEX) >> 3360 (DEC)/4 = 840 об/мин
C2 33 F1 01 05 EC — эхо на запрос температуры ОЖ двигателя
83 F1 10 41 05 49 13 — ответ ЭБУ с температурой, где 49 (HEX) >> 73 (DEC) -40 = 33 град.
C2 33 F1 01 0F F6 — эхо на запрос температуры всасываемого воздуха
83 F1 10 41 0F 47 1B — ответ ЭБУ с температурой, где 47 (HEX) >> 71 (DEC) -40 = 31 град.

Далее немного доработал код и сделал вывод данных на oled дисплей.

Проект https://github.com/martinhol221/ISO14230-4-KWP

Файлы для скачивания:
* комментарии публикуются после модерации
Нет комментариев