С приходом в жизнь автолюбителей инжектора и его окончательной победе над карбюратором, появилась необходимость в "его" периодической диагностике. Поскольку стоимость диагностики отечественной машины варьируется от 300 до 500 руб., а квалификация диагноста порой вызывает сильные сомнения, то практически каждому автолюбителю зачастую приходится вникать в суть проблемы (неисправности) самостоятельно. И как минимум без специального адаптера и компьютера тут не обойтись. А если неисправность возникла где-то в пути и вдали от города? Поэтому порой просто необходимо иметь под рукой эдакий «миникомпьютер», который всегда будет в автомобиле и сможет помочь в пути.
Сам я являюсь обладателем автомобиля ВАЗ 11183 (Калина), поэтому далее повествование пойдет о бортовом компьютере для Калины. А в конце будет несколько слов про бортовой компьютер для ВАЗ 2115.
Цены на подобные устройства, мягко говоря, не очень радуют. Самый простой компьютер-кнопка для отображения каких-никаких кодов категорически не устраивает. Ввиду его убогости. Стоимость таких около 600-700 руб. Ну а что-то посерьёзней, с дисплеем, уже порядка 1800-2000 руб. Ну и самые дорогие модели приблизительно по 5000 руб. Поэтому было принято решение собрать бортовой компьютер для себя и с целью экономии денежных средств и с целью саморазвития.
Что я хотел видеть: параметры в режиме реального времени, текущие ошибки и возможность их сбросить. Замер времени разгона 0-100 км/ч (появилось позднее, так... побаловаться...)
Начался поиск информации. Поиск по интернету дал ответы на некоторые вопросы, но до остального пришлось доходить самому.
Итак. Обмен информацией между Электронным Блоком Управления (ЭБУ) и Бортовым Компьютером (БК) происходит при помощи интерфейса K-Line. При этом используются различные протоколы. Вот с этим то как раз и возникает первая трудность. Где взять описание протокола? Мне повезло, я нашел в сети единственное описание протокола для ЭБУ Январь 5. На моей машине 2006 г.в. стоит ЭБУ Январь 7.2+. Подключившись к диагностической линии и запустив программу диагностики, я увидел, что запросы и расшифровка ответов ЭБУ полностью совпадают с найденным описанием. Дело сдвинулось....
Я думаю многие задавались вопросом, зачем вообще используется какой то там адаптер для подключения к машине. Отвечаю: адаптер представляет из себя преобразователь уровней. В стандартном COM порте (он же интерфейс RS-232) логическая единица это -12 вольт, логический 0 это +12 вольт. В K-линии логическая единица это +12 вольт, а логический ноль это 0 вольт. Т.е. размах сигнала 0-12 вольт против "-12" - "+12" у RS232. К тому же разница не только в уровнях, RS-232 имеет 2 сигнальные линии RxD и TxD, а K-Line одну двунаправленную. Итак:
Вариант №1. Калина. Кнопочное управление компьютером
Я использовал:
1. Микроконтроллер фирмы Atmel: ATMega8
2. Дисплей от сотового телефона Siemens S65
3. Обвязка... питание, резисторы, конденсаторы и другая мелочевка.
4. Преобразование уровней на сдвоенном компараторе LM293. Просто и доступно.
Питание. Тут всё просто. LM317 формирует стабилизированный ток 20 мА для светодиодов подсветки дисплея. LM7805 стабилизирует напряжение для питания микроконтроллера. Защитный диод 1N6281 рассчитанный на 27 вольт спасет от возможных всплесков напряжения.
При отладке можно использовать +12 вольт с 16-го пина колодки OBD2. А при постоянной работе напряжение на БК должно подаваться при каждом включении зажигания. Т.е. необходимо протянуть провод от замка зажигания к БК.
Ну и сама схема:
Тут есть маленькая тонкость. Чтобы продлить срок службы дисплея необходимо перед отключением питания отправить в дисплей определенную последовательность команд. Транзистор на схеме в нормальном режиме работы придавливает вывод контроллера к нулю. Вывод настроен как вход с подтяжкой. Как только напряжение пропадет, на выводе появится логическая единица. Энергии накопленной конденсатором 470 мкФ хватит на то чтобы микроконтроллер успел отправить команду выключения в дисплей. Диод 1N5818 не даст разряжаться конденсатору в «сеть», а так же защищает от переплюсовки при подключении питания.
Прошивка для микроконтроллера написана в среде CodeVisionAVR 2.05 на языке Cи.
Описание протокола есть в приложенных к статье материалах. Кратко пробежимся по основным моментам. Чтобы начать диагностику, нам надо отправить в ЭБУ запрос startCommunication:
Запрос startCommunication:
81 10 F1 81 03
Ответ:
83 F1 10 C1 6B 8F 3F
В ответе C1 означает, что ЭБУ готов с нами работать (на связи).
После этого мы можем запросить у него параметры, отправив запрос:
82 10 F1 21 01 A5
ЭБУ моей машины отвечает:
80 F1 10 26 61 01 3B 90 41 04 00 00 00 00 47 80 00 00 00 52 52 80 18 00 8E 00 5C 00 00 00 00 00 00 00 00 00 FF FF DD A4 47 02 CE
Расшифровка (пример):
61 - Положительный ответ readDataByLocalIdentifier
01 - afterSalesServiceRecordLocalIdentifier (что то там....)
....
11-й байт - Температура охлаждающей жидкости
....
Формула для расчета: N=E-40 [°C]
E - передаваемое значение
N - физическая величина
У меня это значение 47. Берем windows калькулятор. Переводим 47 hex в dec. Получаем 71. Дальше 71-40=31°C. На момент снятия данных машина постояла на улице. До конца не остыла.
И так далее… со всеми остальными параметрами.
Запрос ошибок readDTCByStatus:
84 10 F1 18 00 00 00 9D
ЭБУ моей машины отвечает:
88 F1 10 58 02 04 43 E0 14 26 E0 24
P0443 - всё верно, 2 ошибки у меня сейчас.
P1426
Самое сладкое, сброс ошибок clearDiagnosticInformation:
83 10 f1 14 00 00 98
Запрос значений АЦП:
82 10 F1 21 03 A7
Из АЦП взял напряжение на датчике кислорода и на датчике массового расхода. Хотя необходимость этого пункта под сомнением. Думаю вообще убрать. Всё остальное есть в описании.
Плата разведена на одностороннем фольгированном текстолите. Дисплей приклеен при помощи клея "секунда". Защитное стекло для дисплея сделал из коробки от компакт диска. На самоклеящейся бумаге распечатал лицевую часть (черную), наклеил на пластик, совместил, приклеил к плате. Чтобы под стекло не набивалась пыль, промазал обычным герметиком. Доработал напильником посадочное место в ящике для мелочей и просто вставил туда БК. Подключил питание и диагностическую линию. Левая кнопка смена режимов отображения, правая сброс ошибок (в режиме сброса ошибок) и сброс времени разгона на ноль (в режиме замера времени). На плате имеется место для памяти 24LC512. Но она не использовалась (не хватило flash памяти МК на реализацию). Фьюзы МК выставлены на работу от внешнего кварца.
По себестоимости получилось порядка 450 руб
Зимой было очень удобно следить за температурой двигателя при прогреве. А не ждать когда же стрелка от отметки 50 градусов «оторвется»…
Видео работы устройства:
Вариант №2. ВАЗ 2115. Тачскрин
Далее был изготовлен компьютер под панель ВАЗ 2115. Элементная база остается та же. Только добавляется тачскрин от телефона Sony-Ericsson G900. Цена тачскрина 35 руб. Ну и естественно меняется прошивка. Были небольшие проблемы при калибровке экрана. Хотел сначала ввести алгоритм калибровки по 4-м точкам. Добавить соответствующий пункт в меню. Но, почитав и посмотрев алгоритмы на англоязычных сайтах (под Андройд и прочее), понял, что это довольно сложно и в моём случае не нужно. Просто записываем значения АЦП по 2-м точкам, сопоставляем координаты и через уравнение прямой по 2-м точкам находим промежуточные значения нажатия. У меня получилось:
x = 232 - 0.276*ADC
y = 0.25*ADC - 67.5
Печатная плата претерпела существенные изменения. Теперь используется микроконтроллер ATMega16A.
При помощи ножа, напильника и шпатлевки по пластику тачскрин был вмонтирован в панель, которую потом обтянул карбоновой пленкой.
По началу прикупил стилус, но потом оказалось что проще «тыкать» пальцем в экран. Залапывается он конечно. Но не более чем на телефонах с сенсорным экраном.
Для повторения рекомендую вариант с тачскрином. Его можно использовать как под Калину, так и под Пятнашку. На этом всё.
- Прошивка и файлы печатных плат для ЭБУ Январь: [car_computer.rar]
- Прошивка для ЭБУ Bosch (Обновлено 17.03.2014): [car_computer_bosch.rar]
Автор: Шапкин Дмитрий Александрович или mr_smit (shapkin85@bk.ru)
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот | |
---|---|---|---|---|---|---|---|
Питание | |||||||
VR1 | Линейный регулятор | LM317 | 1 | Поиск в магазине Отрон | |||
VR2 | Линейный регулятор | UA7805 | 1 | Поиск в магазине Отрон | |||
Диод | 1N6281 | 1 | Поиск в магазине Отрон | ||||
Диод Шоттки | 1N5818 | 1 | Поиск в магазине Отрон | ||||
R1 | Резистор | 62 Ом | 1 | Поиск в магазине Отрон | |||
C1 | Электролитический конденсатор | 470 мкФ | 1 | Поиск в магазине Отрон | |||
C2 | Электролитический конденсатор | 10 мкФ | 1 | Поиск в магазине Отрон | |||
C3-C5 | Конденсатор | 0.1 мкФ | 3 | Поиск в магазине Отрон | |||
L1 | Катушка индуктивности | 100 мкГн | 1 | Поиск в магазине Отрон | |||
Схема 1 | |||||||
Компаратор | LM293 | 1 | Поиск в магазине Отрон | ||||
МК AVR 8-бит | ATmega8 | 1 | Поиск в магазине Отрон | ||||
T1 | Биполярный транзистор | BC817 | 1 | Поиск в магазине Отрон | |||
Cr1 | Кварцевый резонатор | 16 МГц | 1 | Поиск в магазине Отрон | |||
C7, C6 | Конденсатор | 22 пФ | 2 | Поиск в магазине Отрон | |||
R2, R5-R7, R9-R11 | Резистор | 10 кОм | 7 | Поиск в магазине Отрон | |||
R3, R12 | Резистор | 2 кОм | 2 | Поиск в магазине Отрон | |||
R4, R8 | Резистор | 3.9 кОм | 1 | Поиск в магазине Отрон | |||
Схема 2 | |||||||
Компаратор | LM293 | 1 | Поиск в магазине Отрон | ||||
МК AVR 8-бит | ATmega16A | 1 | Поиск в магазине Отрон | ||||
T1 | Биполярный транзистор | BC817 | 1 | Поиск в магазине Отрон | |||
Cr1 | Кварцевый резонатор | 16 МГц | 1 | Поиск в магазине Отрон | |||
C6, C7 | Конденсатор | 22 пФ | 1 | Поиск в магазине Отрон | |||
C8 | Конденсатор | 100 нФ | 1 | Поиск в магазине Отрон | |||
R2, R11 | Резистор | 2 кОм | 2 | Поиск в магазине Отрон | |||
R3, R7 | Резистор | 3.9 кОм | 2 | Поиск в магазине Отрон | |||
R4-R6, R8-R10, R12 | Резистор | 10 кОм | 7 | Поиск в магазине Отрон | |||
L1 | Катушка индуктивности | 10 мкГн | 1 | Поиск в магазине Отрон | |||
Скачать список элементов (PDF)
Прикрепленные файлы:
- car_computer.rar (187 Кб)
- car_computer_bosch.rar (21 Кб)
Комментарии (428) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
Отправил комментарий и сразу нашел причину. Причина в адаптере USB - COM. С железным СОМ портом и с адаптером PCI-SERIAL работает отлично!
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
можете написать какие именно галочки поставить. Спасибо!
Ну вот разобрался, ЗАРАБОТАЛО. Я шью пони прог 2000, там фьюзы реверсивно стоят. Спасибо автору огромнейшее!
Можно разъяснить безграмотному участнику проекта, как реверсивно выставить?
За проект автору огромное спасибо, все работает, штучка классная, осталось прикрутить в машину.
[Автор]
82 10 F1 21 01 A5 80 F1 10 4A 61 01 02 4A 47 6B
D3 00 00 00 00 00 00 00 FF FF FF 40 00 00 7C 69
00 00 00 00 7D 80 00 10 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 01 C2 16 00 00
00 00 00 00 00 80 00 00 00 23 81 00 00 00 7D 00
00 00 F8 80 1F
Где здесь можно взять температуру охлаждающей жидкости и напряжение бортовой сети? Эбу М73.
Лежит на столе. Вместо датчика температуры впаян резистор. В диагностической программе ТОЖ 5.25 градусов, напряжение 12.232 вольт.
[Автор]
Ошибся. 15.56 вольта в диагностической программе. Ацп 12.232 вольта. В той же программе.
[Автор]
[Автор]
[Автор]
Уточню, файл hex из архива "Исходный код ВАЗ 2115", им необходимо прошить ATmega16?
[Автор]
[Автор]
Меня больше интересует схема №2 под тач
[Автор]
Фьюзы на ATmega8:
CKSEL0 = 0
CKSEL1 = 1
CKSEL2 = 1
CKSEL3 = 1
SUT0 = 0
SUT1 = 1
BODEN = 1
BODLEVEL = 1
BOOTRST = 1
BOOTSZ0 = 0
BOOTSZ1 = 0
EESAVE = 1
CKOPT = 0
WDTON = 1
RSTDISBL = 1
[Автор]
[Автор]
[Автор]
[Автор]