Опыт работы с самодельными адаптерами K-Line

Мои наработки плюс информация, которой не хватало для старта работы с диагностическим разъемом.


Простейший и незатратный способ самому начать диагностику – это спаять адаптер, который подключался бы к диагностическому разъему автомобиля. В сети выложено немало схем таких адаптеров, в основном – для COM порта, отличающихся элементной базой и состоящие из не более, чем десятка компонентов. То, что на современных ноутбуках такой порт (другое наименование – RS-232) напрочь отсутствует, а в настольных компьютерах встречается как исключение – не должно смущать, поскольку давно созданы китайские переходники USB->COM.

Так как ничем другим, кроме изменениея уровней сигнала, такие "адаптеры" не занимаются, а повышенных требований к длительности фронтов импульсов нет (скорости то маленькие!), было решено не заморачиваться и слепить простейший преобразователь на 2-х транзисторах из того, что было под рукой. Вся "начинка" уместилась в корпус от стандартного разъема типа "DB9", а плата вытравлена по лазерно-утюжному методу. Поиск ответной фишки для диагностического разъема грозил вылиться в проблему, поэтому попутно была вытравлена еще одна плата, куда были впаяны плоские контакты от какого-то разъема.

На рисунках все, что относится к части USB (речь о которой пойдет далее) показано слева, а то, что к самому преобразователю K-Line – справа.


Схемы


Топология плат

Работоспособность схемы без автомобиля проверяется просто – надо воткнуть адаптер в COM порт компьютера и подать на 16-й контакт разъема (от внешнего блока питания) напряжение +10...15В (относительно контакта 4). Далее надо запустить любую терминальную программу, не забыв правильно установить в ней номер используемого COM порта, и попытаться передавать набираемые с клавиатуры символы. Эти символы должны приниматься обратно, т.е. будет реализован режим "зеркало". Если подключить осциллограф к контакту 7 разъема, то можно наблюдать кодовые посылки, соответствующие пересылаемым символам. При отключенном питании такого "зеркала" не будет.

Иногда перед проверкой работоспособности адаптера бывает полезно проверить работоспособность COM порта. Для этого надо соединить контакты 2 и 3 разъема перемычкой (можно просто кончиком отвертки) и проверить наличие "зеркала". При использовании переходников "USB-COM" (не забудьте установить драйвер!) в системе появится виртуальный COM порт, а его номер можно посмотреть в разделе "Мой компьютер–>Свойства–>Оборудование–>Диспетчер устройств–>Порты(COM и LPT)". При необходимости номер можно переназначить, зайдя в раздел "Свойства" порта.

Из всех перепробованных во Windows XP диагностических программ запустились только две – KWP_D.EXE и OpenDiag.exe. Чтобы запустить AKM.exe (которая работает в сеансе MS DOS), надо немного "пошаманить" с ее ярлыком запуска – во вкладке "Память" поставить все параметры на "Авто". При своем запуске эти программы сами делают тест на "зеркало", и в случае его непрохождения выводят сообщение "нет адаптера". Некоторые автомобили при выключенном зажигании не подают питание +12В на колодку диагностики, поэтому для успешного прохождения теста указанные программы следует запускать после включения зажигания на автомобиле.

НО! Ни одной из программ связь с ЭБУ (электронным блоком управления автомобиля) установить не удалось!. В моей машине стоит блок, отмаркированный "М10.3" (что означает модель ЭБУ МИКАС 10.3), а номер прошивки указан "M114151SS13307", что означает МИКАС 11.4 (цифры "114" в обозначении). Выбор в программах и того, и другого типов, результата не дал. Пришлось лезть в дебри...

А дебри таковы.

ЭБУ использует нестандартную (для PC) скорость обмена данными 10400 бод (10400 бит в секунду). А чтобы блок вышел на связь, требуется специальная инициализирующая процедура – вначале надо "притянуть" линию K-Line к земле на 25 мс, затем "отпустить" на 25 мс (уровень при этом возвратится к +12В) и сразу после этого подать цепочку из 5 байт: "81", "10", "F1", "81", "3".

Зная, как плохо обстоят дела с таймингами во Windows, я решил посмотреть, что же мы имеем по факту (вдруг придумано что-нибудь особенное?). Но чуда не узрел. Все тот же разброс задержек, из которого программисты выпутываются тем, что вводят несколько попыток инициализации связи. Тем не менее программа OpenDiag.exe (при выборе "Метода 2") показала абсолютно точную воспроизводимость интервалов, что наводит на мысли об использовании некоего трюка. Такой "трюк" описан в Интернете – надо просто послать в COM порт байт со значением "F0" ("11110000" в двоичном представлении) и скоростью 200 бод. Четыре следующих друг за другом "нуля" и четыре "единицы" дадут нужные интервалы по по 25 мс.

Попутно выяснилось назначение некоторых параметров программы OpenDiag:

"TiniL/TiniH" – длительность интервалов инициализирующего импульса в миллисекундах,
"Цикл инициализации" – прогамма может делать несколко попыток, варьируя длительность в большую или меньшую сторону,
(0 – без вариаций, 1 – плюс две вариации в +1 и -1 мс, 2 – плюс еще две вариации в +2 и -2 мс и т.д.),
"кол-во попыток соединения" – параметр, определяющий количество таких "Циклов инициализации",
Кнопка "Подстройка инициализации" – определяет оптимальную длительность импульса, делая попытки, начиная с малых значений.

Но самое интересное оказалось связанным со скоростью обмена. При использовании переходника "ATEN UC-232A" эта скорость оказалась не 10400, а 14286 бод, что почти в 1.5 раза выше! Это все и объясняет. Позже выяснилась причина – см. примечание ниже.

В обдумывании того, какой переходник следует использовать, я наткнулся на статью журнале "Радио" "Универсальный автомобильный USB-адаптер" ("Радио" №7, 2010, стр.62). В этом устройстве использована микросхема FT232BL, которая, по всей видимости, может обеспечить требуемые скорости обмена.

Поскольку такие микросхемы давно лежали у меня (когда-то были заказаны), то собрать "довесок" было делом недолгим.

Результаты работы с программой OpenDiag.exe (длительности импульсов) сведены в таблицу:

А д а п т е р «Метод 1» «Метод 2» 22мс «Метод 2» 23мс запрос «81,10,F1,81,3»
1. нет (PC COM1) 25/5...10 мс 22/22 23/23 10481 бод
2. ATEN UC-232A (COM3) 17/ 40..43 мс 25/24 26/25 14286 бод (!)
3. ATEN UC-232A (COM3) с правкой реестра 25/ 32..35 мс 25/24 26/25 10425 бод
4. FTDI FT232B (COM3) 25/13...32 мс 25/24.5 26/25.5 10638 бод

При нажатии на кнопку "Подстройка инициализации" ("Метод 2") программа OpenDiag определила оптимальный "TiniL/TiniH"=18. С этим значением блок ("Микас 10.3") стал благополучно выходить на связь.

Небольшие пояснения к дизайну.

1. Маркировка элементов не проставлена – сверяйтесь со схемой.
2. Форма и габариты плат выбраны под имевшиеся корпуса разъемов.
3. Платы вставляются между рядами хвостовиков контактов разъемов DB9 и удерживаются пайкой.
4. Разъем USB заводится с помощью шнурка-кабеля. Обратите внимание на порядок контактов 1-3-2-4 (к ним подходят провода USB кабеля стандартных цветов : красный, зеленый, белый и черный соответственно). Сделано это из-за удобства трассировки.
5. Кварц 6 МГц запаивается с обратной стороны платы. Конденсатор C1 на плате адаптера также запаян с обратной стороны.
7. На плате преобразователя USB индикация питания (R1, HL1) не предусмотрена. Не хватило места.
8. Резисторы на плате адаптера – размера 0805, на плате преобразователя USB – размера 0603, т.е. меньше, иначе не поместились.
9. У ответной фишки для диагностического разъема запаяны только используемые контакты.
10. Схема USB части позаимствована из "Радио", с сохранением позиционных обозначений.
При пайке устройства была поставлена "сопля" с С5 на землю, в результате чего устройство не опознавалось, а микросхема жутко грелась. При устранении дефекта все нормально заработало – респект фирме FTDI за живучесть продукции.

Примечание.

В преобразователях, выполненных на базе микросхемы CP2102, задание скорости обмена сделано несколько маразматично: вместо вычисления нужного коэффициента деления и записи его в соответсвующий регистр микросхемы ввели таблицу фиксированных коэффициентов деления для каждой скорости. Перепрограммировать эту таблицу может только специальная утилита (CP210xBaudRateAliasConfig.exe).

Преобразователь "ATEN UC-232A" выполнен на базе другой микросхемы. Его корпус неразборный, сформован из полупрозрачного силикона. Микросхема хоть и просматривается, но маркировка не видна. При "копании" драйверов всплыла строчка "PL2303", что говорит об использовании соответствующей одноименной микросхемы.
Для нее придумано такой решение: в секцию реестра Windows [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ser2pl] надо добавить строковый параметр "ExtBaudrate"="46,2147487743 200,2147487349 10400,2147485840 10472,2147485839", который добавит четыре новых скорости – 46, 200, 10400 и 10472 бод (изменения вступят в силу после переподключении адаптера). После такой правки этот преобразователь "подружился" с ЭБУ.


http://antiradio.narod.ru/raznoe/k_line/
Дата создания документа: 10.06.2015. Последнее обновление: 25.07.2018.