mc 33290 и k-line адаптер
- Войдите на сайт для отправки комментариев
Втр, 12/12/2017 - 00:06
Доброго времени суток. Подскажите, кто-нить собирал связку Arduino UNO+mc33290?? Получалось ли собрать k-line адаптер??? И как mc33290 проверить на работоспособность?? есть сомнения в работоспособности
Собирайте эту схему, она рабочая, к тому же копеечная и доступчная по сравнению с дорогой и деффицитной mc33290
работоспособность проверяется с помощью ещё одного к-лайн адаптера.
Вот ответ на вопроса заголовка темы :) Данное сообщение (3)подправлено, для того чтобы люди могли сразу найти ответ не перечитывая сообщения. На руках у меня 4-ре рабочих микросхемы mc33290 и 4-ре рабочих схемы L9637D. Проверил их через модуль FTDI заказанный из Китая. Вместо постоянного сопротивления стояли подстроечные резаки номиналом 10К. Сопротивление выставлял на угад, потом замерял :) на L9637D было 900R, на mc33290 было 2,2K. А вот с ардуинкой и софтсериалом еще не подружил. На картинке сопротивление между ногами !!рабочих микросхем, между остальными глухо.
Желтый-черный - это 12 Вольт. 5 Вольт - красный-черный. Вы уверены, что ничего не перепутали?
покажите схему как соединили. В ком порту логика совсем не такая, которая нужна. Т.е. нужна TTL (0, 5V),
а в вашем случае, в ком порту (-12V, +12V), так и дуню спалить не долго
покажите схему как соединили. В ком порту логика совсем не такая, которая нужна. Т.е. нужна TTL (0, 5V),
а в вашем случае, в ком порту (-12V, +12V), так и дуню спалить не долго
В самодельном шнурке выход компорта-мама. Беру проводок папа-папа и соеденяю дуню с ком-портом. Пробую запустить тест в программе Vag-com.... Что-то стал ей не доверять.. У меня два сомодельных шнурка и оба рабочие, но один перестал видеться Vag-com. Но через другую программу делает диагностики Eberschpecher. Как-то пару раз даже писал, что адаптер исправен когда соеденил дуню и ком-порт.
А вот, что интересное.. На одном шнуре стоят диоды на RX и TX. В исходном положении они не горят, как только делаешь запрос(через встроеный ком-порт ноута) начинают моргать..... Когда же соеденил проводками RX,TX,GND и дуню на теже выходы, RX,TX горят постоянно...не зависимо подано питание на шнур или нет.. и когда делаешь запрос то моргают... значит линии работают, только где-то затираются данные....
на этом самодельном шнурке питание подается через прикуриватель.. т.е при обычной диагностике ставлю фишку в прикуриватель, а один проводок в диагностику.
По поводу mc33290. Наверное Китаец мне не рабочую прислал. Так как ставлю одну ногу на GND, вторую на ноги с противоположной стороны... все четыре показывают полностью одинаковое сопротивление.
Есть еще один вариант... у меня есть китайский синий шнурок.. может найти и туда подпоять проводки на rx и tx
Не понятно цели подключения ардуино к к-лайн. Если вы хотите подключить ваш ком-К-лайн адаптер к компу в юсб порт через ардуино, то нужно подключаться к Тх Rx вашего к-лайн адаптера до! микросхемы max232. При этом ее нужно выпаять или убрать.
Понял Вас. Но на следуеще недель товарищ запаяет мне схему которую вы сбросили. Говорит, что раньше паял такие. очень хорошая. Если в друг что-то пойдет не так, то возьмем синий калайн шнурок выведем tx,rx, дорожки перережем от общей схемы шнурка. Ну точнее сказать сделаем через кнопку что бы было все, как у людей )))
Цель всего этого сыр-бора вы уже знаете, что бы делать и обрабатывать запросы адруинкой. Готов на это потратить время и силы. Как Вы мне и говорили главное законнектиться )))
Запаял мне товарищ такую схему, только на микросхеме 293. По даташит смотрели, что отличаются они только температурным режимом работы. Как и всегда подсоеденился к UNO. Самые распространенные программы диагностики типа vcds, vag-com это чудо не видят. Когда подсоеденил к машине RX и TX моргают постоянно. Получилось сделать запросы через такую программу к Eberschpecher:
Появились какие-то данные. На что программа отриагировала ответом, что не может распознать их. Потом после некоторго времени колдования получилось сделать еще раз запрос, тот же результат. Закономерность пока не нашел, когда выходит блок на связь. я так понимаю надо попытаться найти какую самую простую прогу для диагностики, что работает с com-портом..или как я и писал выше вывести RX и TX с шнурка vag409. Тогда можно будет убедиться на 100% над чем колдовать, над самой ардуино или собранной схемой.
Вот такой ёжик получился:
подключаете vag 409 какой нибудь программой к автомобилю чтобы диагностика работала! Параллельно подсоединяете к контакту 7 vag409 (и массу не забываем!!!) свой собранный адаптер и смотрете идут ли байты на линии К-лайн чтобы проверить работоспособность вашего адаптера. тут скетч и как подключить собранный адаптер к ардуино
Запаял мне товарищ такую схему, только на микросхеме 293. По даташит смотрели, что отличаются они только температурным режимом работы. Как и всегда подсоеденился к UNO. Самые распространенные программы диагностики типа vcds, vag-com это чудо не видят. Когда подсоеденил к машине RX и TX моргают постоянно. Получилось сделать запросы через такую программу к Eberschpecher:
Появились какие-то данные. На что программа отриагировала ответом, что не может распознать их. Потом после некоторго времени колдования получилось сделать еще раз запрос, тот же результат. Закономерность пока не нашел, когда выходит блок на связь. я так понимаю надо попытаться найти какую самую простую прогу для диагностики, что работает с com-портом..или как я и писал выше вывести RX и TX с шнурка vag409. Тогда можно будет убедиться на 100% над чем колдовать, над самой ардуино или собранной схемой.
Вот такой ёжик получился:
а какой скетч вы использовали при этом?
поверх физического, прописал еще программный.
Попробую еще скетч, что вы мне сбросили. Еще такой вопрос: Если придется к 409 подсоедениться, то 12V не подсоеденяю, подсоеденяю только k-line и GND ??
поверх физического, прописал еще программный.
Попробую еще скетч, что вы мне сбросили. Еще такой вопрос: Если придется к 409 подсоедениться, то 12V не подсоеденяю, подсоеденяю только k-line и GND ??
Скетч неправильный, используйте который я дал.
да +12В тоже надо. И этот скетч используется с монитором порта , а не с другими программами. Заметьте Tx и Rx адаптера сидят на 10 и 11 пинах, и ардуино подключено к компу юсб проводом.
или если вы хотите всё же к программе какой нибудь подключить ваш адаптер (ну например программа eberspacher), соединяете Tx Rx на 0 и 1, при этом RST ардуино соединить с GND, и скетч не важен какой, т.к. МК ардуино в этот момент не будет использоваться, а будет работать только переходник USB-UART встроенный в ардуино.
или если вы хотите всё же к программе какой нибудь подключить ваш адаптер (ну например программа eberspacher), соединяете Tx Rx на 0 и 1, при этом RST ардуино соединить с GND, и скетч не важен какой, т.к. МК ардуино в этот момент не будет использоваться, а будет работать только переходник USB-UART встроенный в ардуино.
Подъеду домой, то попробую ))) И еще...., по поводу 409 вместе в ардуиной. .... В терминале ардуины, я так понимаю, должны дублироваться все запросы и ответы от 409 шнурка ???
да должны
Заюзал вот. Ответ таков:
1. Вариант Rx(0)Tx(1), при RESET+GND/// Не заработал.
2. Вариант с Rx(10)Tx(11)+Код который вы мне подогнали+шнур 409+схема с 293 - РАБОТАЕТ. Скорость я выставил на 9600. Завтра попробую и с другими скоростями. Можно в скетч кидать на 0 и 1 пины, он тоже работает если отсоеденить ножку TX. Если не отсоеденять, то получиться бесконечность квадратиков.
Удивило то, что данные посыпались как бесконечность. Одну проблему можно сказать решили... на половину.. осталось избавиться от шнурка 409.. скоро должны придти mc33290... и пока они идут надо плавно переходить к написанию запросов в нужные блоки.
дак когда сеанс связи идёт так и должно быть
осталось избавиться от шнурка 409
ещё рано, вы ещё не разобрали протокол обмена, а это самое сложное.
скоро должны придти mc33290...
лучше уж L9637D. Просто если LM393 работает, зачем ждать эти дорогие микрухи?
На драйв2 у одно умельца есть исходники с разведенной платой под mc33290. Мож обвязвать меньше надо.
Тут вот часть информации по протоколу:
http://obdcon.sourceforge.net/2010/06/obd-ii-pids/
Буду еще в нете копать.
еще пару страниц, вроде везде одинаково все.
https://github.com/digitalbond/canbus-utils/blob/master/obdii-pids.json
https://ru.wikipedia.org/wiki/OBD-II_PIDs
Сложности вы нашли не там где они есть. Преобразование уровней сигнала как раз сложностей не вызывает, нормально работают с большинством блоков схемы вообще на трех транзисторах. Сложности начнутся когда захотите связаться с блоком. И узнаете, что большинство блоков работает на нестандартной для СОМ-порта скорости 10400. Физический СОМ-порт легко настраивается на работу с такой скорость, а вот виртуальные порты usb-com с такой скоростью "из коробки" работать не умеют. Некоторые можно научить редактированием драйверов, внесением изменений в прошивку чипа и т.п. Другие не способны работать со скоростью 10400. И к последним как раз относится широко распространенный в китайских клонах Ардуин CH340. Большинство FT232 умеют при выставленной скорости 9600 подтягивать ее до нужной, но это не гарантируется, тем более для китайских копий этого чипа. Вот когда разберетесь со скоростью, тогда уже беритесь за протоколы, синхронизации, тайминги и прочие прелести обмена.
Несомненно все косяки впереди. Уйдет много времени и сил. Но не хочется финишировать на старте ))) Буду пытаться идти мелкими, пусть даже очень мелкими шагами вперед. Уж сильно хочется видеть в своей тачке бортовик.
не всегда связь обмена с ЭБУ идёт на скорости 10400. Но даже если это так, тот К-лайн сниффер, который ТС уже использует, не имеет прямого USB-UART переходника. Ардуино подключается к к-лайн на скорости 10400 софтсериал соединением, а дальше данные перебрасываются уже на стандартный хардовый сериал и по юсб проводу идут на монитор порта на какой хочешь стандартной скорости (см . скетч сниффера).
самое сложное разобрать запросы от диагностики и ответы ЭБУ - что означает каждый байт. Почитайте тему про бортовой компьютер опель зафира. Там мы сделали эмулятор ЭБУ на ардуино и подключились диагностикой не к ЭБУ, а к ардуино. Далее, меняя поочерёдно байты в ответах ЭБУ (на самом деле ответах ардуино), смотрели что же изменяется в списке паратметров диагностики. Таким образом определили за что отвечает каждый байт а далее уже опытным путем подбирали формулы для расчета.
Но всё это проводилось для штатного протокола диагностики, т.е. запросы при этом на блок не стандартные, а придуманные производителем авто. Поэтому было сложно. А есть ещё стандартная диагностика OBD2, здесь смысл байтов запросов и ответов легко найти в интернете. Но список параметоров по OBD2 скуден, хотя и применяеются самые важные параметры, которые ТС я думаю должно хватить.
Начал вот читать тему где вы с товарищем БК для зафиры делалии. Остановился на 10 сообщении в теме.
http://arduino.ru/forum/proekty/bortovoi-kompyuter-dlya-opel-zafira#comment-285048
Там вот сказано про программу FindECU, которая помогает найти адрес ЭБУ и Адаптера. НЕ могу найти эту прогу.
Я вот попытался обратиться к нескольким блокам и сравнить запросы. В начале есть кое-какие повторения. Может отсюда что можно извлечь ??? Буду благодарен за любую помощь... Нопомню, что все делается через программу дианостики и k-line шнур, а ардуинка все(или не все) перехватывает.
судя по обмену первое сообщение начинается с байта 75h. и далее идет байт и за ним инвертируемый байт пока не появится байт 03h.
Далее сообщения начинаются уже не с 75, а с 03h. Т.е. байт 03h это начало и конец сообщения. Всё имхо.
Так же видно, что сниф связи с блоком кузовной электроники идет на неправильной скорости. Поставьте в скетче сниффера скорость, которая рядом (т.е. если была 10400 нужно поставить 9600)
кстати чтобы узнать инвертированное значение байта, Нужно в виндовом калькулятое открыть режим программист, сделать 16 ричное исчисление (HEX), вводить значение байта и нажимать кнопку XOR и даллее байт FF и нажимаем равно - получим инвертированный байт
Судя по всему 55 01 8A это запрос инициализации от диагностики. Далее ЭБУ отвечает байтом 75 , после чего диагностика посылает адрес блока , если нам нужен двигатель, то можно предположить что это 1B. А для остальных блоков этот байт 0F. Далее видимо ЭБУ шлёт начальные идентификационные данные, а диагностика отвечает инвертированными байтами на каждый байт ЭБУ. Байт 03 это конец сообщения.
Вот перевел в ASCII кодировке ваш представленный ответ от ЭБУ двигателя: 028906021GT 1,9l EDC
есть знакомые символы? если посмотреть на картинку #17 то есть))
Судя по всему 55 01 8A это запрос инициализации. Далее ЭБУ отвечает байтом 75 , после чего диагностика посылает адрес блока , если нам нужен двигатель, то можно предположить что это 1B. А для остальных блоков этот байт 0F. Далее видимо ЭБУ шлёт начальные идентификационные данные, а диагностика отвечает инвертированными байтами на каждый байт ЭБУ. Байт 03 это конец сообщения.
Вот перевел в ASCII кодировке ваш представленный ответ от ЭБУ двигателя: 028906021GT 1,9l EDC
есть знакомые символы? если посмотреть на картинку #17 то есть))
Я тут еще перевариваю информацию, что вы мне написали ))))) Вот картинка моего ЭБУ, он же и есть блок управления двигателем
вот еще что есть в ответном сообщении G41SG 1906. Эти символы тоже есть в программе Vag
Скиньте потом сюда сниф обмена с ЭБУ двигателя всё с таймштампами. Только как скетч и сверните (там во вкладе галочку нужно поставить)
Скиньте потом сюда сниф обмена с ЭБУ двигателя всё с таймштампами. Только как скетч и сверните (там во вкладе галочку нужно поставить)
Тут видео для наглядности:
https://www.youtube.com/channel/UCTAwPGDTbTITuTNUS3ZhwQw/videos?view_as=subscriber
Мож сюда что попробовать вбить ????
дак пробуйте вручную адрес блока вбивать, на каком соединение установится, такой и есть адрес ЭБУ
дак пробуйте вручную адрес блока вбивать, на каком соединение установится, такой и есть адрес ЭБУ
Вот попробовал. Тоже самое. Вот еще интересная фишка. Просто проверка блоков на отзыв.
У меня блоков 2,4,5,6,7 нет. естественно получаем пустоту.
Если блоки 1,2,8,9 отзываются то получаем в ответ 55 1 8A.. потом полетели данные.
Попробуйте в сниффере скорость сериал соединения (которое к клайну) поставить сначала 5 бод, потом 200бод. Только задержку (delay) нужно гораздо больше сделать. 1000 например, поиграться ей нужно. Запускайте опять оба раза данный тест. Теперь понятно что адрес блока ДВС это 0х01. Просто мы его в сниффе не видим, т.к он посылается диагностикой на малой скорости, и мы видим набор других байтов, т.к. у нас скорость не соотвествует и установлена 9600.
я оказывается повторяюсь. мы это уже проходили и дальше тоже читать!!! Всё сходится 55 1 8A
0x55 это синхробайт - ответ ЭБУ на запрос адреса (запрос адреса посылает VAG com на малой скорости)
далее ЭБУ посылает два keyword:
keyword#1 0x01 и keyword#2 0x8A
после чего VAG com отвечает инвертированным байтом keyword#2, т.е. 0x75. Вот тут инициализация закончена,
далее, судя по всему , ЭБУ шлёт идентификационные данные. Толи сам каждый байт инвертирует, толи это Vag com на каждый байт отвечает инверсией.
вот вам два скетча. Подключаете свзяку ардуино-kline к ЭБУ уже БЕЗ! диагностики. И пробуете разговорить блок (повторяем действия Vag Com)
Оба скетча шлют блоку адрес 0x01 на малой скорости, потом переключаемся на стандартную 9600. Смотрим в мониторе порта, ответит ли блок синхробайтом и keyword-ами , т.е. 55 1 8A
Первый скетч это если инит у данного ЭБУ на скорости 5 бод.
Второй скетч, это если инит у данного ЭБУ на скорости 200 бод.
почитал, что на VAG используется скорее всего такой инит.
Т.е. отправка адреса блоку должна быть на скорости 5 бод причем с настройками UART 1 старт бит, 7 бит данных, бит проверки четности odd, 1 стоп бит.
Поэтому вот ещё третий скетч, скорее всего он из заставит блок говорить)) Ждем ответа от блока 55 01 8A и далее должны пойти данные
Дал ответ только третий скетч.
ну вот собственно самое сложное позади. Впереди всего то найти запросы и разгадать ответы))) Короче я нашёл проект, так всё уже сделано и написано
Вот чел сделал то что мы когда то с опелем. Только он программирует намного круче.
короче структура общения такая. После инита который , у вас уже получился, отправляем запрос параметров. Но на каждый посланный вами байт блок отвечает инвертированным байтом пока не получит байт 0x03, что является, похоже, маркером конца сообщения. Также и вы, когда получаете от блока байты, должны посылать инвертированный байт. Тут ещё играет какую то роль пара 0x09 и 0xF6
Запрос параметров делается такими байтами. 0x04 далее байт-счетчик порядкового номера сообщения 0x29 0x01 (01 это страница параметров, в каждой странице блок ответиит четырьмя параметрами)
с этим байтом счетчиком не так всё просто - он должен с каждым следующим запросом прибавляться на 1.
Также если ничего не посылаем, связь прервётся, поэтому необходимо посылать запрос поддержания связи:
0x03 далее байт-счетчик порядкового номера сообщения 0x09 0x03
Вот чел сделал то что мы когда то с опелем. Только он программирует намного круче.
Натыкался на эту страницу не однократно, но непредовал этому БК значения... а зря..
в коментарии скетча дана ссылка на весь протокол
https://www.blafusel.de/obd/obd2_kw1281.html
тут вот еще человек поднял этот же проект(интересные у него идеи кстате возникали):
https://www.drive2.ru/l/490647993997853063/
еще в нете где то раньше я находил (и скачал)библиотеку OBD.h
в том проекте Александр уже разобрал все ответные байты на запросы параметров, подобрал формулы. Остается только подкорректировать его скетч под свои нужды.
а по поводу этого я вам уже отвечал в теме про опель:
Вот скетч на скорую руку набрасал. Вдруг заработает. Скетч вытягивает от ECU обороты и шлёт их в сериал порт.
Расписал ваш снифф с блоком, чтобы было понятнее что к чему. Собственно, походу, сдался протокол KW1281
Вот скетч на скорую руку набрасал. Вдруг заработает. Скетч вытягивает от ECU обороты и шлёт их в сериал порт.
Во результат по скетчу, наверное что-то идет не так.
Кстате, весьма благодарен вам за помощь ))))
я попробовал сразу, без запроса идентификаторов , посылать запрос параметров. Видимо так не канает. чуть позже переделаю.