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 4 639 times, 12 visits today)

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

  1. dansar

    А как же специализированные микросхемы типа L9637D?

  2. RATSER.RU

    dansar :
    А как же специализированные микросхемы типа L9637D?

    Кстати да =)

    По теме: Я так понял это начала интересненького цикла статеек? Если так, то с нетерпением буду ждать продолжения =)

  3. anatoliy Автор записи

    @RATSER.RU
    Ну на МС каждый соберёт а вот смысл происходящего понять будет сложно 🙂 L9637D MC33290 и ещё 2-3 десятка наименований. А вот доступность это-го это вопрос. У нас в магазине народ даже не знает что это за МС, ато цену бы сразу взвентили:-D Они возят мы покупаем.:-D

  4. GetChiper

    @RATSER.RU
    Просите Anatoliy, если он расщедриться, то будет.

    А вообще, статья вышла хорошая — много для себя почерпнул. С К-лайн никогда не пересекался.

  5. anatoliy Автор записи

    RATSER.RU :
    По теме: Я так понял это начала интересненького цикла статеек? Если так, то с нетерпением буду ждать продолжения =)

    Вобще есть задумка, опубликовать свои наработки по поводу универсального диагностического стенда. Аля MotorTest! Концепт которого детально проработан. И самодельный газоанализатор. И прецизионные датчики давления. Но это всё не просто отдельная тема, а отдельная вселенная авто электроники. Меня на всё не хватит. 😀
    P/S да и денег на всё не хватает. Вот если бы всем миром. Каждый по железочке и всем по прибору?

  6. cooproom

    Автору очень большое уважение!!! Хотелось бы продолжения по данной теме.
    ЗЫ: А поршивка будет?

  7. anatoliy Автор записи

    @cooproom
    прошивка от UART(RS-232) to USB – простой преобразователь. Тут просто даётся пример как сделать преобразователь уровней на рассыпухе. А куда его подключить это уже ваша любовь. У мя и к телефонному шнуру, и к MAX232 и к Atmega подключается с одинаковым успехом

  8. Zver666

    А на какой машине проверяли?
    Мне вот хочется свою реношку посмотреть, да почитать что там бортовой мозг выдает.

  9. anatoliy Автор записи

    Лично я не на какой не проверял 😀 Собирал челу в 2004-2005 он этим адаптером но с МАХ232 до сих пор работает.

  10. RATSER.RU

    anatoliy :Вобще есть задумка, опубликовать свои наработки по поводу универсального диагностического стенда. Аля MotorTest! Концепт которого детально проработан. И самодельный газоанализатор. И прецизионные датчики давления. Но это всё не просто отдельная тема, а отдельная вселенная авто электроники. Меня на всё не хватит.
    P/S да и денег на всё не хватает. Вот если бы всем миром. Каждый по железочке и всем по прибору?

    Если интересно, могу пожерт вовать мег 48 в дипе…

  11. froliv

    Блин, я целую неделю в инете искал адаптер usb — к-лайн на микроконтроллере и ничего не нашел. Собрался делать на FT232 (и уже плату вытравил)и тут вот нарисовалось! Кстати у микроконтроллера не будет проблем со скоростью (как у FT и тд.что нужно в драйвере скорость переопределять) ведь ЭБУ (например ВАЗовские) работает на нестандартной для СОМ портов скорости 10400? Чего мне теперь делать, забросить затею с FT, ведь с микроконт-м интереснее?

  12. anatoliy Автор записи

    @froliv
    Как выяснилось МК имеют некоторые проблемы. У некоторых пользователей. В часности УСБ в там реализовано не полностью а винда на ноуте так и наровит вогнать железку в спящий режим.:-( Лучше на FT232 оно надёжние будет. Если будет время поковыряю прошивку посмотрю что там можно сделать с управлением. Да вроде FT232 умеет работать на не стандарной скорости.
    ИМХО решение с МК-Кline можно назвать экспериментальным 😀

  13. RATSER.RU

    Насколько знаю, для работы FT на нестандартной скорости используют «особенный» драйвер…

  14. dimon2

    У меня на Меге48 так и не заработало, а вот на дата-шнуре от сименса с успехом работает.
    Перепробовал штук 10 разных программ для диагностики, и по прежнему не работает. Даже печально как-то.

  15. anatoliy Автор записи

    Надо себе ЭБУ добыть для опытов. Тогда точно смогу сказать в чем причина чудес. Да печально сочувствую 🙁

  16. geovas

    Анатолий здравствуйте! При сборке возникли вопросы:
    1. На линию «K» у ne555 подключены 2-й и 6-й пины?
    2. Можно ли вместо диодов D1 и D3 использовать 1N4001 (т.е. не Шоттки)?
    3. На какой ток брать предохранитель (0.5А сойдет?)
    4. У меня USB-UARTом будет FT232RL или схема с этого сайта на tiny2313.
    Питание у обеих 5В, требуются ли какие-либо изменения в схеме?

  17. geovas

    Друзья, я пока не отчаиваюсь и жду ответа 🙂
    А тема для меня очень интересная и если будут какие-нибудь мануалы по этой теме, я с удовольствием прочту!

  18. lex6630

    Кто небуть собирал этот девайс !

    Кто сможет про коментировать !
    зарание благодарен !

  19. geovas

    Эх, видимо тема умерла 🙁
    Ладно, тогда если у самого получится — отпишусь 😉

  20. zakhar8318

    поривет всем! Я не пойму,а что заливать в мега8? Или эта схемка что-бы подразнить и тема загохла?интересно продолжение!!!!!!!

  21. zakhar8318

    поривет всем! Я не пойму,а что заливать в мега8? Или эта схемка что-бы подразнить и тема загохла?интересно продолжение!!!!!!! Как там л линия собрана на схеме ее нет?

  22. geovas

    Прошивка USB-UART (есть на этом сайте). Есть мнение, что схема именно на меге8 — не работоспособна, надо юзать FT232. L-линии тут нет, в моем случае она не нужна. А тема явно подохла 🙁 Мой вопрос висит еще с июня…

  23. zakhar8318

    подкинте рабочюю схемку с печаткой к-л-линии на rt232 bl , si9243 & l9637. фт323 с другими буквами у нас в городе нет.

  24. geovas

    http://www.masterkit.ru/images/magazines/2_RH_3_08.gif Других не знаю, об этой вроде люди отписывались нормально (сам я ее не делал). Печатка вроде где-то есть, сейчас не помню. Но схема очень простая и без того.
    Если имеете в виду FT232BL, то она там и описывается. Если есть COM-порт (он же RS232), то вместо FT232, можно использовать MAX232.

    Что касается статьи, то автор предлагает хорошую идею, с «защитой от дурака» да и в целом надежное устройство (гальваническая изоляция как-никак), по той ссылке о таком мечтать не приходится.

  25. anatoliy Автор записи

    geovas :
    Анатолий здравствуйте! При сборке возникли вопросы:
    1. На линию «K» у ne555 подключены 2-й и 6-й пины?
    2. Можно ли вместо диодов D1 и D3 использовать 1N4001 (т.е. не Шоттки)?
    3. На какой ток брать предохранитель (0.5А сойдет?)
    4. У меня USB-UARTом будет FT232RL или схема с этого сайта на tiny2313.

    Питание у обеих 5В, требуются ли какие-либо изменения в схеме?
    1. да 2 и 6 так у мя работает и в оригинальной схеме триггера на ne555 так то-же включено.
    2. Диоды выполняют защитную функцию. От статики и на случай если данные в +12 воткнут. Если откровенно то можно без них. Я ставил для самоуспокоения. Следовательно пойдут любые. 🙂
    3. Вполне самое главное что-бы этот ток держал защитный диод D2. Собственно это и есть критерий выбора диода и предохранителя. Если поставить мощный диод то предохранитель можно и не ставить 😀 Сразу заметите что не так воткнули 😀
    4. Думаю что изменения в схеме не требуются. Т.к. схема по сути работает от бортсети. А всё что кроме это развязка.

    geovas :
    Прошивка USB-UART (есть на этом сайте). Есть мнение, что схема именно на меге8 – не работоспособна, надо юзать FT232. L-линии тут нет, в моем случае она не нужна. А тема явно подохла Мой вопрос висит еще с июня…

    geovas Дико извеняюсь. После командировки в азию сам чуть было не подох. Пока командировка. Пока болел. Потом наверстать упущенные планы на лето (ремонт там итд.). Как итог заметил ваши вопросы лишь сегодня.

  26. anatoliy Автор записи

    L-линия кстати решается 1 оптроном 🙂 Тк она только на передачу. А принцип тот-же.

  27. geovas

    zakhar831: микросхемы одинаковые — отличаются лишь наличием / отсутствием свинца.

    Anatoly, наконец то вы появились! А у вас нету случаем опыта по работе с диагностическим ПО / ПО для прошивки. Меня интересует lanos 8v 1.5 kdac 🙂 Больше всего интересует софт по прошивке, нигде ничего не могу найти, полазил по автофорумам, но нашел только «очень жадных людей»…

  28. anatoliy Автор записи

    geovas :

    Anatoly А у вас нету случаем опыта по работе с диагностическим ПО / ПО для прошивки. Меня интересует lanos 8v 1.5 kdac Больше всего интересует софт по прошивке, нигде ничего не могу найти, полазил по автофорумам, но нашел только «очень жадных людей»…

    Опыта у меня в авто диагностике практически нет. Иногда просят разобраться с какой-нить железкой. Сделать программатор. ИТД. А сам что-либо я не кручу. Я попытаюсь спросить у людей кто этим занимается профессионально.

  29. dimon2

    @geovas
    У меня эта штука так и не заработала.
    На дата-шнуре от сименса все ОК работает, на ATmega48/8 не работает и все.

  30. geovas

    Не, у меня ft232rl, она то должна работать! Чую где-то в схеме проблема, только вот где — не ясно пока.

  31. anatoliy Автор записи

    @geovas
    Уы у мя Linux и вашу топологию мне глянуть не в чем может просто картинку и фотку пп.
    Действительно вопрос интересный народ часто жалуется что USB-Kline не работает. Хотя тот-же вариант но с COM портом работает на ура. Вероятно как мне кажется дело в программно реализованном UART. Точнее посмотреть не могу нету ЭБУ на опыты. И винду ставить надо. Сейчас ещё исследовательский проект подкатил и времени сильно не хватает.
    Как только появится свободное время сразу же буду смотреть.

  32. anatoliy Автор записи

    Алгоритм проверке простой. Встаёте терминалкой на порт куда у вас подключен адаптер. посылаете данные они должны эхом возвращатся. ТК линия по сути симплексная. Если данные не возвращаются. Замыкаем между собой RX-TX МК и повторяем попытку. Если возвращаются значит проблема в сопряжении. Скорее всего где-то светодиод в оптроне наоборот включен. Если данные не возвращаются значит проблема в МК.
    Как вариант соеденить заведомо исправный и рабочий адаптер с нерабочим подать +12 и попытаться что-то передать туда-сюда.

  33. don

    Парни, не парьтесь, самое надежное соединение с Мегой у меня через схему с двумя транзисторами, жаль, не имею возможности вставить картинку, но гугл в помощь, есть схемы.
    Также прекрасно эти два транзистора + max232 (а лучше 233) согласовываются с дата-кабелем DCU-5, после чего все идет в ноут.
    Немного освобожусь, постараюсь накропать чего-нибудь по этой теме. А эти FT и прочие радости неоправданно дороги и смысл их только в преобразовании USB-Com.
    Кстати, упоминали тут MC33290, их аналог делает минский Интеграл, нормально работают, но транзисторы надежнее отрабатывают.

  34. anatoliy Автор записи

    Да никто и не парится воткните питалово наоборот и будите парится сами 😀

  35. geovas

    Уы у мя Linux и вашу топологию мне глянуть не в чем может просто картинку и фотку пп.

    Без проблем:

    Проверил входные выходные сигналы, вот результат:

    1. Вход со стороны МК, выход со стороны ЭБУ:
    — на входе +5В, на выходе 6В
    — на входе 0В, на выходе 0В
    — на входе HiZ, на выходе 6В

    2. Вход со стороны ЭБУ, выход со стороны МК:
    — на входе +12В, на выходе 0В
    — на входе 0В, на выходе 5В
    — на входе HiZ, на выходе: гистерезис (если было на входе 12В, то на выходе 0В и наоборот)

  36. anatoliy Автор записи

    @geovas

    С МК подаём 0 на выходе 0
    с МК подаём 1 на выходе +12
    С МК подаём Z на выходе +12

    С ЭБУ +12 на МК 1
    С ЭБУ 0 на МК 0

    ft232 там вроде 3,3В уровни ?
    С стороны ЭБУ 6 вольт подозрительно мало. хотя-бы 8-9 должно быть по стандарту 🙂

    Скорее всего диод оптрона U3 включён не так. попробуйте включить его не к +12 а к земле. Странно вроде у мя в тетрадке так-же нарисовано 🙁
    Как вариант что-бы защита погоду не портила отключите 1 ногу в защитных диодах

  37. geovas

    У ft232 5В, иначе ее придется тактировать от внешнего кварца, но я и на 3,3 пробовал, результат абсолютно тот же.

    Я думаю 6В берутся от подтягивающих резисторов (или я не прав?)
    И потом: с ЭБУ +12 на МК 0! Где косяк? Сейчас еще разок проверю этот нюанс, отпишусь…

  38. geovas

    UPD: Я не слукавил по поводу уровней (инвертируются короче).
    Выпаял диоды — результат все тот же, 6В!

  39. anatoliy Автор записи

    Понятно просто в ЭБУ должен стоять резистор порядка 3к который тянит шину к +12

  40. geovas

    попробуйте включить его не к +12 а к земле.

    Если я так сделаю, тогда диод в оптопаре никогда не будет гореть 🙂

  41. anatoliy Автор записи

    Там на сколько я понял ну ни как не может быть 6в когда на выходе эбу 1 должен быть 12в а когда 0 то о ну там в статье картинка

  42. geovas

    @anatoliy
    Если даже на ЭБУ стоит резистор в 3к, то мы получаем:
    подтяжка к шине = 1.5к, к питанию = 3к, в итоге при напряжении сети = 12В, получаем на выходе: 3/4.5*12 = 8В, а если напряжение будет хотя бы чуть-чуть меньше, то уже до заветных 8В, мы не дотягиваем. Блок, который пытался прошить — с двенашки, модель «Январь 7.2», там есть этот резистор?

  43. anatoliy Автор записи

    @geovas
    Ну соответсвенно диод надо перевернуть 😀

  44. geovas

    Когда диод в U3 светится, как я понимаю на выходе мы имеем лог.0
    Если это так, то в схеме действительно косяк, ибо сейчас собрал ее в протеусе (вернее ее часть), при +12В на выходе, на выходе NE555 — диод горит.

  45. anatoliy Автор записи

    Этот резистор должен быть по стандарту. Там дело не в уровне а в отнашении уровня к питанию 🙂

  46. anatoliy Автор записи

    @geovas
    Блин видать собрал я правильно а вот схему в тетрадку нарисовал с ошибкой. А из тетрадки схема перекочевала сюда. только что звонил человеку у него всё работает как часы 🙂 Странно 🙂

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