Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Адаптер OBD-II своими руками
Современные автомобили напичканы разнообразной электроникой, и, чтобы получать данные о состоянии автомобиля, проводить его диагностику и выявлять неисправности, существует протокол OBD-II. Чтобы продиагностировать свой автомобиль сегодня не обязательно ехать в автомастерскую или покупать адаптер OBD-II, теперь его можно сделать самому.
Для этого можно воспользоваться открытым проектом obddiag.net. С помощью него можно самостоятельно собрать свой адаптер OBD-II на основе микроконтроллера LPC1517 Cortex-M3. Этот 32-разрядный микроконтроллер LPC1517 работает на тактовой частоте 72 МГц, имеет 64 КБ памяти программ, 12 КБ памяти данных и 4 КБ энергонезависимой памяти EEPROM. Его основное рабочее напряжение 3.3 В, минимальное рабочее напряжение 2.4 В. Микроконтроллер LPC1517 позиционируется своими разработчиками как устройство с низким уровнем потребления энергии. Микросхема расположена в корпусе LQFP-64, который достаточно удобен для пайки и в то же время довольно миниатюрен. Микроконтроллер LPC1517 имеет широкий диапазон рабочих температур от -40 до +105 градусов по Цельсию, поэтому он вполне может применяться в автомобильных приложениях. Впрочем, для данного адаптера OBD-II при необходимости может подойти другой микроконтроллер этого семейства, например, LPC1549 с большим объемом памяти (256 КБ). Микроконтроллеры NXP имеют записанный в ПЗУ загрузчик, который поддерживает загрузку бинарных образов во flash-память с помощью интерфейсов UART или CAN. Что является очень удобным инструментом при программировании микроконтроллеров.
Все программное обеспечение написано на языке программирования высокого уровня C++ для среды разработки NXP LPCXpresso IDE, которая использует набор инструментов GNU для процессоров ARM Cortex-M. Впрочем, написанный код может быть скомпилирован с помощью другого набора инструментов, например, GCC ARM Embedded или даже Keil uVision IDE.
Адаптер обеспечивает интерфейс последовательной передачи данных с помощью набора команд ELM327 и поддерживает все стандарты шины OBD-II такие, как SAE J1850 PWM, SAE J1850 VPW, ISO 9141-2, ISO 14230-4 и ISO 15765-4 CAN.
Схема адаптера в pdf-формате доступна здесь.
Исходный код проекта для среды разработки LPCXpresso IDE можно скачать с github.
Также имеется готовая прошивка для микроконтроллера в hex-формате.
Источник
Разъем OBD-II своими руками
В наши дни практически любой современный автомобиль предусматривает наличие компьютерного контроля с выполнением считывания информации по специальным линиям связи (чаще всего по протоколу OBD-II). Вполне понятно, что при появлении какой либо аварийной сигнализации проще всего воспользоваться услугами ближайшего автосервиса хотя можно попробовать выполнить диагностику своими руками и здесь уж без специального разъема OBD-II, позволяющего подсоединить к бортовому компьютеру тот же ноутбук, просто не обойтись.
Конечно же разъем OBD-II вполне можно приобрести в магазине, однако при этом потребуется потратить немалые деньги и у вас не будет никакой уверенности в том, что приобретение по своей конфигурации подойдет к соответствующему гнезду вашего автомобиля (фантазия некоторых производителей способна привести в полнейший ступор)А также отсутствует гарантия достойного качества изделия (некоторые разъемы изготовленные в Китае просто рассыпаются в руках или выводят из строя бортовой компьютер).
Как бы то ни было самостоятельно изготовить OBD-II достаточно просто и по окончании работы вы без особых затрат не только получите в свое распоряжение надежный и удобный переходник, но и испытаете заслуженное моральное удовлетворение.
Для изготовления OBD-II разъема в предложенном варианте нам необходимы обрезки фольгированного текстолита, паяльник, дрель с набором сверл небольшого диаметра, нож и расходные материалы в виде припоя и технического лака. Также понадобятся контакты и их извлекаем из любого LPT- разъема или же соответствующего соединителя «военного» назначения (можно без особого труда подобрать на любом «развале» радиодеталей).
Сразу оговоримся, что от плоских контактов лучше отказаться: возни с ними гораздо больше, а окончательный результат с круглыми штырьками оказывается не хуже. Что касается размеров штырьков, то они должны быть диаметром от 0.75мм до 1 мм и длиною от 8 до 10 мм. Для окончательной отделки и максимального упрощения конструкции дополнительно подыскиваем защитный резиновый колпак от автомобильного разъема и около полуметра толстой медной или латунной проволоки.
Теперь несколько слов о конструкции OBD-2I разъема. В общем-то в стандартной детали такого типа имеется 16 гнезд причем большинство из них в реальной работе не задействовано. Иными словами для подключения к большинству ЭБУ с головой хватает четырех контактов, а именно:
- Контакт 4 — «-» питания;
- Контакт 16 — «+» питания;
- Контакт 6 — K-Line линия;
- Контакт 15 -L-Line линия.
Разумеется, в зависимости от модели авто возможны различные варианты распиновки
( тут уж лучше подстраховаться и обратится к технической документации именно на свой автомобиль).
В какой-то мере могут принести пользу еще три контакта, причем только для того чтобы обеспечить более надежную фиксацию разъема в горизонтальной плоскости (их располагают по трем углам, а четвертый угол уже занят «плюсом» питания).
В качестве основы для крепления штырьков вырезаем две пластинки из стеклотекстолита ориентируясь на размеры контрольного гнезда на вашем автомобиле. Если у вас под рукой имеется двухсторонний текстолит (с фольгой на обоих сторонах) достаточной толщины, то можно вырезать одну пластину и затем аккуратно расщепить ее на две части. Перед вырезанием этих достаточно миниатюрных деталей рекомендуется, предварительно, выполнить всю необходимую разметку и просверлить отверстия под штырьки (так будет гораздо удобнее). Сверлить пластинки следует сверлом, соответствующим тонкому диаметру штырьков и уж, затем, рассверливаются отверстия на одной из пластин под утолщенные участки штырей.
На следующем этапе подготавливаем контактные площадки под штыри, удаляя лишнюю медь хлорированным железом или просто процарапывая механическим способом диэлектрические дорожки вокруг каждой площадки. Готовые площадки зачищаем шкуркой и залуживаем припоем.
Далее начинаем собирать нашу конструкцию, вставляя штыри в пластину с меньшими отверстиями таким образом, чтобы к автомобильному разъему была обращена «текстолитовая» сторона, а утолщения на штырях прижимались к контактным площадкам. Пропаиваем все штыри и одеваем на них вторую пластину.
Теперь займемся корпусом разъема, и как предполагалось выше, он будет состоять из проволочного каркаса и резинового чехла. Через каркасную петлю и чехол, предварительно продеваем жгут устройства и после того как все провода жгута будут припаяны на свои места паяем концы каркаса к свободным контактным площадкам и обжимаем им выход жгута.
Последнее, что нам остается, так это насадить на конструкцию защитный резиновый чехол.
Источник
OBD-сканер на базе Arduino
Мастер сделавший этот сканер владелец автомобиля Toyota Prius. Это гибридный автомобиль и на его приборной панели отсутствуют некоторые привычные приборы, например, тахометр или датчик температуры охлаждающей жидкости. Также интересно узнать о текущем расходе топлива или рассчитать среднее значение.
Все эти значения рассчитываются компьютером двигателя автомобиля, а для считывания данных просто требуется сканер.
Есть различные коммерческие решения, таким как Scan Gauge. Также можно использовать сканеры ELM327 работающий через Bluetooth. Популярными моделями являются Carista , BlueDriver или обычный диагностический сканер Innova / Bosch.
Мастер решил сделать сканер самостоятельно и установить его в свой автомобиль на постоянной основе.
Шаг первый: о шине CAN
Работа с CAN-шиной требует осторожности, при неправильных действиях можно вывести автомобиль из строя. Если вы не понимаете, что делаете, лучше приобретите готовый сканер.
CAN-шина — это система цифровой связи и управления электрическими устройствами автомобиля, позволяющая собирать данные от всех устройств, обмениваться информацией между ними, управлять ими.
Шина CAN — это протокол дифференциальной связи. Это означает, что для нее нужно всего два провода. Обычно это витая пара. Мы будем получать доступ к устройству через порт OBD. Если вы решите повторить самоделку, то вам не обязательно понимать, как этот протокол работает на фундаментальном уровне, но вы должны понимать его достаточно, чтобы иметь возможность писать или изменять код Arduino.
Почти каждый автомобиль сегодня имеет порт OBD II. Все они имеют одинаковый электрический разъем под панелью приборов. Однако существуют совершенно разные протоколы связи в зависимости от производителя автомобиля. Любой автомобиль, проданный в США после 2008 года, использует шину CAN ISO 15765 и именно его мастер будет использовать.
Шаг второй: схема подключения
Питаться устройство будет от блока предохранителей. Конкретно он берет питание от цепи стеклоочистителя. Можно использовать любую цепь главное, чтобы она отключалась при вытаскивании ключа из замка зажигания. В противном случае устройство может посадить аккумуляторную батарею автомобиля.
12В может приходить и на порт OBD. Но здесь нужно быть уверенным, что провод именно питание, не сигнальная цепь.
Шаг четвертый: предохранитель и понижающий преобразователь
Изначально мастер подключил Ардуино к бортовой сети автомобиля 12 В без понижающего преобразователя. К сожалению устройство долго не проработало и сгорело. Тогда он установил понижающий преобразователь.
Подключает Vin- понижающего преобразователя к заземлению OBD. Подключает Vin + понижающего преобразователя к 12 В автомобиля (через предохранитель).
Теперь нужно отрегулировать выходное напряжение. Мастер подключает нагрузку к выходу преобразователя и устанавливает необходимый диапазон.
Шаг пятый: Arduino
Дальше нужно все смонтировать.
Мастер использует плату Teensy 4.0. Если будет использована другая плата, то распиновка может отличатся. Подключает напрямую контакты к плате CAN модуля:
MOSI (slave in)
MISO (slave out)
SS (chip select/slave select)
CLK (clock)
Возможно понадобиться подтягивающий резистор для интерфейса i2c.
Дисплей: подключайтесь напрямую (при условии, что используется тот же OLED-дисплей, что и у мастера) —
SDA (serial data)
SCL (serial clock)
Для питания дисплея подключает Vcc и GND. Эти четыре провода мастер установил в один разъем. Дисплей будет установлен на передней панели авто и при необходимости его можно будет снимать.
Источник
Овд 2 своими руками
продаётся раскрученный сайт недорого обращаться в личку
Это, вероятно, случалось с каждым из нас: вы едете в своем автомобиле и вдруг желтая лампочка «Check Engine» загорается на приборной панели как тревожное предупреждение о том, что возникли какие-то проблемы с двигателем. К сожалению, это оно само по себе не дает каких-либо намеков на то, что именно является причиной неполадки и может означать все что угодно, начиная от неплотно закрытой крышки топливного бака до проблем с каталитическим конвертером. Я помню, как Honda Integra 94-го года имела ЭБУ под креслом водителя и красный светодиод начинал мигать, если возникали какие-то проблемы с двигателем. Подсчитав количество «блинков», можно было определить код ошибки. По мере того, как ЭБУ автомобилей становятся все более и более сложными, количество кодов ошибок возрастает экспоненциально. Использование бортовой диагностики автомобиля On-Board Diagnostic (OBD-II) позволяет решить эту проблему. Данный адаптер позволяет использовать персональный компьютер для OBD диагностики и является дальнейшим развитием адаптера, описанного в РадиоХобби №2/2007, с.51-56. Адаптер AllPro функционально совместим с ELM327 и поддерживает все существующие OBD-II протоколы обмена данными:
— ISO 9141-2
— ISO 14230-4 (KWP2000)
— SAE PWM J1850 (Pulse Width Modulation)
— SAE VPW J1850 (Variable Pulse Width)
— ISO 15765-4 Controlled Area Network (CAN)
— VPW, PWM и CAN
Первых два протокола ISO описаны в указанной выше предыдущей публикации. Детальное описание OBD протоколов выходит за рамки данной статьи, я лишь их кратко перечислю.
J1850 VPW (Variable Pulse Width) — протокол автомобилей General Motors и некоторых моделей Chrysler со скоростью передачи 10.4 кбит/с по одному проводу. Напряжение на шине VPW изменяется от 0 до 8 В, данные по шине передаются чередованием коротких (64 мкс) и длинных (128 мкс) импульсов. Реальная же скорость передачи данных по шине изменяется в зависимости от битовой маски данных и находится в пределах от 976 до 1953 байт/с. Это самый медленный из OBD протоколов.
J1850 PWM (Pulse With Modulation) используется в автомобилях корпорации Ford. Скорость передачи здесь 41.6 кбит/ с с использованием дифференциального сигнала по двум проводам. Напряжение на шине изменяется от 0 до 5 В, a длительность импульса составляет 24 мкс. Работа с этим протоколом требует аккуратности в программировании микропроцессора, так как скорость выполнения инструкций языка «С» на PIC микропроцессоре даже с улучшенной PIC18 архитектурой становится сопоставимой с длиной короткой посылки PWM протокола (7 мкс).
Рисунок 1
CAN (Controlled Area Network) протокол разработан Robert Bosch в 1983 году и окончательно стандартизирован в ISO 11898. Использование CAN шины данных в автомобиле позволяет различным устройствам общаться друг с другом, минуя центральный процессор, так называемый multi-master режим. Плюсами является также повышенная скорость передачи, до 1 Мбит/с и лучшая помехоустойчивость. Изначально протокол предназначался для использования в автомобилях, но теперь применяется и в других областях. Чтобы повысить надежность передачи данных, в шинах CAN применяется способ дифференциальной передачи сигналов по двум проводам. Образующие эту пару провода называются CAN_High и CAN_Low. В исходном состоянии шины на обоих проводах поддерживается постоянное напряжение на определенном базовом уровне, приблизительно 2.5 В, называемым рецессивным состоянием. При переходе в активное (доминантное) состояние напряжение на проводе CAN_High повышается, а на проводе CAN_Low снижается, рис.1. Существует также два формата сообщений или фреймов — стандартный с 11 битным адресным полем (CAN 2.0A) и расширенный с 29 битным полем (CAN 2.0B). Стандартом ISO 15765-4 определяется использование для целей OBD как CAN 2.0A, так и CAN 2.0B. Вместе со скоростями передачи по шине 250 и 500 кбит/с это создает 4 различных CAN протокола.
Поддерживает ли ваш автомобиль OBD-II?
OBD является обязательным только в Северной Америке и Европе. Если в Америке это правило действует с 1996 года, то Евросоюз принял EOBD вариант автодиагностики, основанный на OBD-II, сравнительно недавно. В Европе OBD стал обязательным, начиная с 2001 года, а для дизельных двигателей даже с 2004. Если ваш автомобиль выпущен до 2001 года, то он может вообще не поддерживать OBD даже при наличии соответствующего разъема. Например, Renault Kangoo 99 года не поддерживает EOBD (хотя редакционная Kangoo dcI60 2004 года с CAN протоколом прошла успешную стыковку с описанным адаптером — примечание редакции «РХ»), а Renault Twingo поддерживает! Те же самые автомобили, сделанные для других рынков, например Турции, могут тоже не быть совместимыми с OBD протоколом. Как определить, какой протокол поддерживается электронным блоком управления автомобиля? Первое — можно поискать информацию в интернете, хотя там много неточной и непроверенной информации. К тому же, многие автомобили выпускаются для разных рынков с различными протоколами диагностики. Второй более надежный способ — найти разъем и посмотреть, какие контакты в нем присутствуют. Разъем обычно находится под приборной панелью со стороны водителя. Протокол ISO 914-2 или ISO 14230-4 определяется наличием контакта 7, как показано в таблице 1. Большинство автомобилей последних лет выпуска поддерживает только CAN протокол с контактами 6 и 14 соответственно. В Европе и Северной Америке все новые автомобили, начиная с 2007/ 2008 года, должны использовать OBD только на основе CAN.
Таблица 1
Таблицу поддержки OBD протокола различными моделями можно также найти в [2]. Замечу, однако, что, как правильно отмечено в комментарии, «Если марка присутствует в таблице, то это не дает гарантии поддержки OBD-II». Использование L-line в ISO 9141/14230 Отдельно хочется сказать по поводу L-линии в ISO 9141-2/ 14230-4 протоколах. Сейчас она практически нигде не используется, так как для процедуры инициализации связи вполне достаточно только K-линии. В стандарте же, однако, сказано, что сигнал инициализации должен передаваться по двум линиям одновременно, K и L. Владимир Гурский из www.wgsoft.de, автор программы «ScanMaster ELM», собрал большую коллекцию различных ЭБУ. В качестве примера необходимости L-линии он приводит Renault Twingo 1.2л 2005 года выпуска. Использование здесь при иницилиазации только K-линии приводит к неверному адресу двигателя в ответах ЭБУ. Если же инициализация производится по K и L одновременно, то тогда все работает правильно.
AllPro адаптер на PIC18F2455
Схема моего всепротокольного OBD-II адаптера показана на рис.2. Основой является микроконтроллер Microchip PIC18F2455, имеющий модуль USB интерфейса. Устройство использует напряжение питания 5 В от шины USB. Конденсатор C6 служит фильтром внутреннего стабилизатора 3.3 В для обеспечения работы USB шины. Светодиоды D2 и D3 являются индикаторами приема/передачи, а светодиод D1 использован для контроля статуса USB шины. Выход ISO 9141/14230 интерфейса управляется половинкой драйвера IC2-2, а входной сигнал подается через делитель R12/R13 на вход RX (вывод 18), который является триггером Шмидта, как и большинство входов PIC18F2455, что обеспечивает достаточно надежное срабатывание. Для контроля L-линии используется IC3-1 и R10. Шина J1850 VPW требует напряжения питания 8 В, получаемого от стабилизатора L78L08 IC4. Сигнал на выход VPW подается через инвертор IC3-2 и буферный полевой транзистор Q1. Делитель R7/R8 и внутренний триггер Шмидта на входе RA1 составляют входной интерфейс J1850 PWM протокола. Внутренний компаратор (входы RA0 и RA3) PIC18F2455 вместе с резисторами R4, R5 выделяет дифференциальный сигнал PWM. Для контроля выхода PWM шины используются IC2-1 и полевой транзистор Q2.
Рисунок 2
Отдельно хочется сказать по поводу поддержки CAN. Microchip не выпускает контроллеры, содержащие и CAN, и USB. Можно использовать контроллер с CAN модулем и внешний USB чип типа FT232R. Или наоборот, подключить внешний CAN контроллер, как сделано в этом адаптере. CAN интерфейс здесь образуют контроллер MCP2515 (IC5) и трансивер MPC2551 (IC6). MCP2515 подключен через SPI шину к PIC18F2455 и программируется каждый раз при подаче питания адаптера. Согласующие (bus termination) RC цепочки R14/ C10 и R15/C11 предназначены для уменьшения отражений на CAN шине согласно стандарту ISO 15765-4. Использование их не обязательно, при относительно коротком кабеле отражениями можно пренебречь. Вместо PIC18F2455 можно использовать PIC18F2550 с той же самой прошивкой, см. варианты замены в таблице 2. Внешний вид устройства показан на рис.3 и обложке, а печатная плата на рис.4.
Таблица 2
Рисунок 3
Рисунок 4
OBD-II кабель
Для подключения к бортовому компьютеру адаптер использует «стандартный» DB-9/OBD-II кабель. Разводка кабеля показана в таблице 3.
Таблица 3
Подключение и тестирование устройства
Правильно собранный адаптер в налаживании не нуждается и распознается Windows как USB устройство. Микропроцессор PIC18F2455 не имеет собственного драйвера и использует Windows 2000/XP/Vista CDC (Communication Device Class ) драйвер usbser.sys виртуального Com порта. Установка драйвера подробно описана в предыдущей статье и на моем сайтe[1]. По поводу использования драйвера хочется, однако, добавить, что согласно информации www.usb.org [7]. Microsoftисправил баги в usbser.sys только начиная с Windows XP SP2 и использование адаптера с Windows 2000 может быть проблематично. После того, как адаптер распознался как USB устройство и драйвер установлен, можно приступать к тестированию. Для этого требуется подключить источник стабилизованного напряжения 12 В на выводы 1 и 9 разъема J2 и подключить адаптер к персональному компьютеру через USB кабель. Проверяется наличие напряжения 8 В на выходе стабилизатора IC4. Следующим шагом является запуск Windows приложения HyperTerm и подсоединения к Com порту адаптера. Устройство имеет процедуру самодиагностики с проверкой прохождения сигнала со выхода на вход по всем протоколам. Для этого используется команда «АТ@3», рис.8.
Рисунок 8
Рисунок 9
Прохождение проверяется по следующим цепям:
— IC2-1, R4 для отрицательной шины PWM
— Q2, D6, R5 для положительной шины PWM
— IC3-2, IC4, R11, Q1, D5, R7, R8 для VPW
— IC2-2, R9, R12, R13 для ISO 9141/14230
— Ответ контроллера MCP2515 по шине SPI
Например, отсутствие IC2 приведет сразу к двум ошибкам, рис.9. Процедура самодиагностики не включает проверку CAN трансивера MCP2551, здесь можно просто замерить напряжение на выводах 6 и 7. Оно должно быть в пределах 2.5 В.
Работа с Адаптером
Адаптер совместим по системе команд с ELM327 и может использоваться с приложениями, работающими с ELM327. Я предпочитаю использовать «ScanMaster ELM» Владимира Гурского [8], рис.10. Адаптер работает также со следующими приложениями:
— ScanTool.net for Windows v1.13
— Digimoto
— PCMSCAN
— EasyObdII Pro
Рисунок 10
В качестве примера приведу ситуацию, которая случилась с VW Passat моего знакомого. В автомобиле загорелась лампочка «Check Engine», подключение AllPro адаптера определило ошибку Р0118 -«engine coolant temperature circuit high input», т.е. высокий уровень сигнала с датчика температуры охлаждающей жидкости, рис. 11. Дальнейшее расследование выявило неисправный датчик. После замены датчика ошибка была стерта с помощью «Clear Trouble codes» кнопки, см. рис.12. Ошибка исчезла и больше не появлялась, рис. 13.
Рисунок 11
Рисунок 12
Рисунок 13
Заключение
Другой вариант схемы AllPro адаптера находится на моем сайте и использует специализированные (но труднодоступные) микросхемы от Freescale Semiconductor MC33290 и MC33390. Там же приведен вариант разводки адаптера с использованием SMD компонентов. Если у вас есть собственный вариант разводки адаптера, присылайте мне, я помещу его на сайте. Информация о приобретении готовых печатных плат адаптера находится также на моем сайте.
Источник