073-Адаптер USB to K-line на базе Atmega8/48/88.

Автор: | 19.05.2011

K-Line.
Когда я разрабатывал эту схему хотелось сделать конструкцию максимально надёжную и простую для повторения. И решить взаимоисключающие требования надёжность/простота/цена. Теперь подробней:

Пациент — автомобильная борт сеть.
Автомобильная борт сеть очень капризная штука. Только непосвящённый уверен что там 12вольт постоянного тока. А на практике от 8-9 до 15-16 с ВЧ иголками амплитудой до 100! вольт. Фактически это смерть любому криво сделанному устройству. 99% случаев выхода ЭБУ из строя словили такую иголку.

K и L линии.
Интерфейс обмена ЭБУ с диагностическим оборудованием K линия, это симплексная реализация UART по схеме монтажное ИЛИ:

физическая реализация K-Line

все это удовольствие описано 2-мя стандартами ИСО 9141 для K и L линий
и ИСО 14230 для K линии.
K-Line.zip - Описание устройства протокола

Для подключения по этим стандартам используют МС сопряжения например MC33290 — в моём мелком городе это чудо стоит около 70р.
mc33290.pdf - Драйвер последовательных интерфейсов.

Но пойдем другим путём! МС эта хоть и не особо редкая но в некоторых городах труднодоставаема. И судя по датасшиту на неё, не обеспечивает развязки от борт сети.
Кто-то желает словить 100В в USB порт? Я нет 🙂

Для K линии приняты следующие значения 0 и 1:
Логические уровни K-Line
При этом уровни даны в процентах от значения напряжения борт сети. А оно у нас может быть любое.

МК Аtmega8/48/88
Тут всё просто — для совместимости с программной реализацией USB делаем питание 3.3В. По феншую уровень 0 составляет от 0 до 1/2 напряжения питания, а уровень 1 от 1/2 до напряжения питания. Т.е. ‘0’- это от 0 до 1.65вольт, а ‘1’-  от 1.65 до 3.3вольт.

Как скрестить ужа с ежом?
Тут есть техническая проблема:
— с одной стороны — уровни в K-Line от 0 до 24вольт с возможными иголками до 100В и разрядами статического электричества до 1000-2000В в момент подключения;
— с дугой стороны МК с уровнями от 0 до 3.3Вольт и очень чувствительный к статике.

Решим проблему статики и уровней простым, как удар лопатой в голову методом 😀 : поставим диодно транзисторную оптопару. Средний оптрон обеспечивает изоляцию вход-выход 2000-3000В, что нас вполне устраивает. Будем использовать PC817 или аналогичный. В случае если пользователь воткнет провода не туда МК и компьютер останутся жить. А входная цепь как повезёт 😀
spc817.pdf - Оптопара

В принципе, скорости на K-Line не большие. Но однажды посмотрев осциллографом борт сеть не уверен что МК правильно распознает среди всей этой каши полезный сигнал. А не уверен не обгоняй! Нужно сделать простейшую защиту от помех. Самым распространённым методом борьбы с помехами в цифровой технике является триггер шмитта. Делают его интегрально на базе компаратора.  Данные МС у мя есть но там много лишнего. Например 8 линий. Сделаем триггер шмитта на NE555 (с уровнем переключения в 50% напряжения питания), культовая МС всех времён и народов. По сути описание конструкций на этой МС заслуживает отдельной книги в тысячу другую страниц.
lm555.pdf - Таймер 555

В K-Line передача происходит замыканием линии ключом на землю. Поручим эту работу оптрону.

Собственно схема устройства.


Диоды D1,D3 цепь защитные на случай если забудут подключить питание или массу(любые диоды шотки). Диод D2 (мощный диод шотки на >10A) и предохранитель F1 образуют цепь защиты от переполюсовки. Конденсаторы в цепи питания K-Line на 28-10Вольт.  МС интегрального стабилизатора на 3.3В 78l33 формирует питание для цепей МК из USB +5В.
l78l33ab.pdf - Интегральный стабилизатор напряжения
Светодиоды и лампочки добавить по вкусу 😀


(Visited 6 078 times, 1 visits today)

073-Адаптер USB to K-line на базе Atmega8/48/88.: 77 комментариев

  1. geovas

    Пофиксел (перевернул уровни), в ближайшие дни буду тестить. Эх, жаль что такую красивую плату без перемычек, пришлось подвергнуть акту вандализма 🙁

  2. kyf1

    Если кому интересно,то подскажу. Для реализации KL-адаптепа лучше использовать FT232RL. Эта микросхема поддерживает любые скорости и никакие «особые» драйвера не нужны. Разговор, как вы поняли, идёт о USB-KL-адаптере.По Datasheet видно, что кроме 2 конденсаторов ей больше ничего не надо. Сиснал с выходов FT232RL НЕ должен инвертироваться как в сторону диагностического разъёма, так и в сторону линии RxD!!! В качестве гальванической развязки лучше использовать отечественную микруху К293ЛП1(а,б) т. к. оптопары типа PC817 работают хреново, о чём можно почитать в инете и проанализировать Datasheet. Выложил бы схему и писание да не знаю как и возможно ли это злесь вообще. Если подскажете как, то выложу свою разработку — я не жадный.

  3. geovas

    Выложил бы схему и писание да не знаю как и возможно ли это злесь вообще.

    ИМХО самое простое — залить на файл-хостинг (например rghost.ru) и разместить здесь ссылку, интересно поглядеть.

    Микруха, да FT232RL — вне конкуренции, всегда ее использую в ответственных приложениях. Оптопары то чем плохие? Их в промышленности используют (возможно другие модели конечно), а так вариант — ADUM3201, специально предназначены для изоляции цифровых интерфейсов. А вот качество отечественных деталей оставляет желать лучшего 🙂

  4. kyf1

    @geovas
    Я тоже вначале нос скривил на К293ЛП1Б, а потом почитал что они предназначены для цепей передачи информации свыше 1Мб/с и попробовал — работают очень хорошо, тем более, что у них на выходе ТТЛ уровни, а не фототранзистор. Что касается оптопар, то работу фототранзистора нужно тщатнльно согласовывать со схемой, иначе характеристики резко ухудшаются. Схему выложу.

  5. don

    Кто сомневается, может попробовать вот эту схему:
    http://prj.perquin.com/obdii/obdii_avr.gif
    У меня уже год пашет это согласование, единственное что, это по линиям TX RX поставил ограничивающие стабилитроны 3,3 В, а на питание диод от «обратного включения», как тут анатолий иронизировал.
    Вот и весь интерфейс для Atmel. Использовал и на 8-й Меге и на 32-й. Вопросов не было. Соединение надежнее, чем на МС33290.

  6. kyf1

    @don

    don :
    Кто сомневается, может попробовать вот эту схему:
    http://prj.perquin.com/obdii/obdii_avr.gif
    У меня уже год пашет это согласование, единственное что, это по линиям TX RX поставил ограничивающие стабилитроны 3,3 В, а на питание диод от «обратного включения», как тут анатолий иронизировал.
    Вот и весь интерфейс для Atmel. Использовал и на 8-й Меге и на 32-й. Вопросов не было. Соединение надежнее, чем на МС33290.

    Это вчерашний день. Com портов уже всё меньше и именьше и скоро их днём с огнём не найдёшь. Делать преобразователь Com-UART на сегодняшний день надо на FT232RL. Дороговато, но это того стоит. Получается преобразователь на все случаи жизни. PL2303 можно использовать под конкретную конструкцию и каждый раз проверять к какому порту она подключилась. Вообще о достоинствах FT232RL в интернете инфы много. Что касается KL-адаптера, то тут бережёного Бог бережёт. Транзисторы работают не хуже чем МС33290, но в случае чего комп может лебединую песенку пропеть. Кто-то может и любит рисковать — я не хочу.

  7. don

    kyf1 :
    Делать преобразователь Com-UART на сегодняшний день надо на FT232RL. Дороговато, но это того стоит.

    Может быть, а может и не быть 😉 Я читаю прямо в Мегу32, которой и обрабатываю всю инфу, выводя на ЖКИ информацию от ошибок до напряжения на втором кислородном датчике, не говоря уже про мгновенный-средний расход, пробег, скорость, RPM и все, что можно стандартно считать по OBD-II. На кой мне этим еще ноут напрягать? Смысл тогда в этой теме?

  8. don

    задача-то чего проще — сформировал пакет, послал, получил ответ, обработал, вывел. Если что нужно считать, посчитал и вывел.
    Хороший практикум

  9. kyf1

    @don
    Что за машина то? У меня Ауди А4 со стандартным разъёмом OBD-II, что мне выдумывать чего-то. Взял комп, воткнулся и вся машина на ладони,Vagkom все сделает как надо.

  10. don

    kyf1 :
    @don
    Что за машина то? У меня Ауди А4 со стандартным разъёмом OBD-II, что мне выдумывать чего-то. Взял комп, воткнулся и вся машина на ладони,Vagkom все сделает как надо.

    Субару аутбэк, протокол ISO9141-2. Да нет проблем, подкинуть ноут или комп. У меня бортовик на меге 32, меряет расход мгновенный, средний, скорость, пробег, остаток в баке, сколько еще на этом можно проехать и т.п. (это расчетные параметры) ну и стандартные — чтение ошибок с выдачей кода и его описания, угол, температуры, и остальные прелести. Все это стационарно установлено, правда корпус ни как не закончу, но под DIN сделал размеры, под магнитолой стоит, экономить помогает.Правда есть еще задумки по «доведению» до ума, но всему свое время. Думаю туда еще RTC засунуть, внешнюю i2c память присобачить, пару датчиков температуры и т.п. ПАмяти в меге32 оказалось больше, чем надо было, вот и маюсь… :)А кабель vag-com купил просто по-случаю за 15 баксов в интернет-барахолке. Но им почти не пользуюсь.

  11. don

    Жаль, что нет у нас возможности в комменты картинки вставлять, схема элементарная, мега, 3 тактовые кнопки, 78L05, МС33290, ЖКИ 20х2 и с десяток рассыпухи.

  12. GetChiper

    Скидывай на мыло (в закладке «Опроете») — я вставлю.

  13. kyf1

    @don
    Почему нельзя выложить? Добрые люди подсказали мне, как это можно сделать(смотри выше) и я выложил свою схему адаптера. В случае чего скинь и мне на мыло, заранее благодарю.

  14. don

    Схему выслал, печатка погибла с флэшкой, HEX чутка попозжа, пока в работе-доводке.

  15. kyf1

    @don
    Получил уведомление на почту, однако файла со схемой там почему-то не оказалось. Написала что что-то заблокировало. Очень жаль. То что печатка умерла вместе с флешкой печально, но поскольку каждый распологает своими коробочками под корпус и установочными размерами, то плату, как правило, приходится либо править, либо разводить заново, поэтому здесь беда небольшая. Надеюсь всё же ознакомится со схемой и сопутствующей документацией. Спасибо.

    @don

  16. geovas

    Анатолий, вы не поверите, но… Опять ничего не работает 🙁 Мы с другом просидели 3 часа, но так ничего и не прошили, пробовали наверное все…
    Может дело в том, что нужен специфичный драйвер ft232, может быть еще что, но пока результата нет 🙁

    В общем хотим теперь попробовать на обычном RS232, посмотрите пожалуйста — можно ли в этой схеме заменить транзисторы на BC547 или еще какие?

  17. geovas

    Собрали по схеме с chiptuner.ru, но вместо указанных транзисторов ткнули КТ3102. Все работает, а вот с USB — дело не идет.

  18. kyf1

    geovas :
    Собрали по схеме с chiptuner.ru, но вместо указанных транзисторов ткнули КТ3102. Все работает, а вот с USB – дело не идет.

    В сообщении от 14 сентября я выложил ссылку своего адаптера, где можно почитать про это.

  19. geovas

    kyf1, USB мы наверное отложим до будущего году (ну или пока у меня не появится инжекторная машина). Вашу схему смотрел еще в сентябре, как возникнет необходимость (а она возникнет, если схема Анатолия так и не заработает), повторю.

  20. Gauss

    anatoliy, а можно еще ссылки на программы диагностики, с которыми этот переходничок работает?)

  21. winzewul

    ребят а как на счёт печатки и прошивки

  22. GetChiper

    Прошивка — это прошивка преобразователя USB-UART.
    Как показывает практика лучше применять аппаратные преобразователи на специализированных микросхемах. Здесь приведен общий принцип построения адаптера.

  23. narzan

    @don
    Поздновато увидел тему, а очень надо уведеть, как Don реализовал проект.
    У меня как раз ISO9141. Был бы признателен за помощь.

  24. SERGEY003

    ребята С CAN шиной он не работает ?

  25. GetChiper

    Это и есть CAN шина, вот только спецификаций там много.

  26. chipgetter

    тут жизнь есть?
    выше в комментариях сообщали об ошибках. в схеме в основном посте они исправлены?
    если вместо меги подключить к резисторам шнурок pl2303 — оно будет работать? или нужны еще какие-то изменения?

Добавить комментарий