Бортовой компьютер на ваз своими руками
Его комментарии к переработке:
3.убран параметр задержки между опросами, задержка полностью интелектуальна и динамична, новый запрос не отправится пока не будет получен ответ на предыдущий с учетом таймаута.
4.добавлена функция восстановления связи в случае разрыва соединения (параметром потери связи служит отсутствие оборотов двигателя).
5.для работы требуется библиотека OBD.h вложенная в архив с проектом, этот экземпляр имеет несколько изменений от оригинала который можно скачать из интернета, и без неё скорее всего проект не будет работать или будет нестабилен.
папку нужно скопировать в папку " \Documents\Arduino\libraries"
Android приложение со всеми нюансами в Google Play: OliviaDrive
Мы сможем сделать бортовой компьютер, умеющий считать расход топлива, показывать температуру охлаждающей жидкости, скорость авто, расстояние поездки, потраченный бензин за поездку, обороты двигателя, давление во впускном коллекторе, температуру впускного коллектора, УОЗ, коррекции топлива, вольтаж датчиков кислорода, нагрузку двигателя и многое другое.
Список требуемых деталей для сборки БК
1) Arduino Uno R3 — 1 шт. ~ 7 долларов:
2) LCD2004 жк-модуль ~ 6 долларов:
3) Модуль Bluetooth HC-05 ~ 4 доллара:
4) OBD ELM327 Bluetooth сканер ~ 4 доллара:
5) Резистор 10 кОм подстроечный, бипер для звука, 2 кнопки для смены экранов, провода для соединений, корпус ~ 3 доллара.
Настройка блютуз модуля HC-05 для работы
Подпаиваем провода к пинам блютуза: (картинку с выходами смотреть в описании требуемых деталей)
- 1 — это TX
- 2 — это RX
- 12 — это 3.3V
- 13 — это GND
- 34 — на этот вход тоже кидаем 3,3 V (нужен для перевода модуля в режим настройки с помощью AT команд).
- 1 — TX модуля в 6 пин ардуины. (внимание будет TX в TX это не ошибка!)
- 2 — RX модуля в 7 пин ардуины. (аналогично не ошибка!)
- 12 — и 34 пин к 3,3V ардуины.
- 13 — GND ардуины.
void loop()
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
>
После успешной загрузки скетча открываем: Сервис->Монитор порта. Далее снизу ставим скорость 9600 бод и NL+CR вместе.
Далее вводим команды по одной и нажимаем [Послать]. После каждого ввода должен быть ответ ok.
AT // (возможно 1 раз вылетит Error, не пугайтесь… это нормально, повторите опять)
AT+NAME=Car //Присваиваем имя модулю Car
AT+ROLE=1 // Переводим модуль в режим Мастер
AT+PSWD=1234 // Ставим пароль 1234 как на OBD ELM327
AT+BIND=AABB,CC,112233 //Прописываем Mac адрес OBD ELM327.
AT+CMODE=1 // Подключение модуля с фиксированным адресом
AT+UART=9600,0,0 // Скорость работы по UART
Всё, настройка модуля Bluetooth закончена.
Теперь нужно собрать схему Arduino + блютуз + LCD-экран
Схема:
- 1 — TX модуля засовываем в 7 Pin (Rx) арудины (именно TX в RX, не так как ранее);
- 2 — RX модуля засовываем в 8 Pin (Tx) арудины;
- 12 — Pin (3,3V) модуля в Pin 3,3V ардуины;
- 13 — Pin (Gnd) в Gnd арудуины;
- 34 — Pin мы никуда не подключаем (заизолируйте или отпаяйте).
- VSS экрана к GND ардуины;
- VDD экрана к 5V ардуины;
- V0 экрана к центральному выходу резистора;
- RS экрана к 12 пину ардуины;
- RW экрана к GND ардуины;
- E экрана к 11 пину ардуины;
- DB4 экрана к 5 пину ардуины;
- DB5 экрана к 4 пину ардуины;
- DB6 экрана к 3 пину ардуины;
- DB7 экрана к 2 пину ардуины;
- A — к 5V ардуины;
- K — GND ардуины.
Переменный резистор на 10кОм нужен, чтобы управлять контрастностью монитора, так что если при первом включении вы включите и ничего не увидите, попробуйте отрегулировать контрастность шрифта поворотом резистора.
3. Подключаем дополнительную кнопку для переключения экранов с данными.
[1 кнопка]: один конец от нормально-открытой кнопки подключаем в GND ардуино, а второй конец в пин 10.
[2 кнопка]: GND + пин 9.
Бипер для звуковых предупреждений подключить по следующей схеме "+" к пину 13, а минус к GND ардуино.
Заливаем скетч в Arduino с помощью Aduino IDE 1.0.6 (использовал эту версию).
Нужно будет обязательно учесть три переменных:
1) ED=1.998 Например объем двигателя в литрах 1.398;
2) VE_correct=1.0; Корректировка объёмного КПД ДВС по таблице: (если расход реально меньше — то уменьшаем значение в процентном соотношении). Если не хотите калибровать добейтесь чтобы при прогретом двигателе мгновенный расход в л/час был в районе половины обьема двигателя;
5)speed_korrect_val=1; Корректировка скорости машины, смотреть по GPS/
Управление
[Кнопка 1] + [кнопка 2]: 4 секунды — Сброс журнала общего пробега и потраченного бензина на втором экране, также это сброс ошибок на экране информации об ошибках.
Скетч:
Все, идем в машину, вставляем ELM327 в порт, ардуину в зарядку для авто и проверяем.
Сам я являюсь обладателем автомобиля ВАЗ 11183 (Калина), поэтому далее повествование пойдет о бортовом компьютере для Калины. А в конце будет несколько слов про бортовой компьютер для ВАЗ 2115.
Цены на подобные устройства, мягко говоря, не очень радуют. Самый простой компьютер-кнопка для отображения каких-никаких кодов категорически не устраивает. Ввиду его убогости. Стоимость таких около 600-700 руб. Ну а что-то посерьёзней, с дисплеем, уже порядка 1800-2000 руб. Ну и самые дорогие модели приблизительно по 5000 руб. Поэтому было принято решение собрать бортовой компьютер для себя и с целью экономии денежных средств и с целью саморазвития.
Что я хотел видеть: параметры в режиме реального времени, текущие ошибки и возможность их сбросить. Замер времени разгона 0-100 км/ч (появилось позднее, так. побаловаться. )
Начался поиск информации. Поиск по интернету дал ответы на некоторые вопросы, но до остального пришлось доходить самому.
Я думаю многие задавались вопросом, зачем вообще используется какой то там адаптер для подключения к машине. Отвечаю: адаптер представляет из себя преобразователь уровней. В стандартном 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. А при постоянной работе напряжение на БК должно подаваться при каждом включении зажигания. Т.е. необходимо протянуть провод от замка зажигания к БК.
Ну и сама схема:
Прошивка для микроконтроллера написана в среде CodeVisionAVR 2.05 на языке Cи.
Запрос 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 руб
Видео работы устройства:
Вариант №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]
Для контроля работы параметров двигателя решил я сделать бортовик на основе ARDUINO NANO, но только на собственной плате и чтоб он уместился в панели приборов.
Основные отображаемые параметры бортового компьютера:
— Температура двигателя
— Обороты двигателя
— Напряжение бортовой сети
— Скорость
— Расход топлива в час при нулевой скорости
— Расход топлива на 100 км
— Процент открытия дроссельной заслонки
Кроме параметров двигателя дополнительные функции :
— Управление включением вентилятора печки отопителя
— Управление включением/выключением вентилятора радиатора охлаждения на заданных температурах
— Функция АВТОСВЕТ включением/выключением ближнего света в зависимости от освещения на улице
— Яркость подсветки панели приборов
— Температура в салоне
— Часы
Подробнее о некоторых дополнительных функциях:
Управление автовключением вентилятора печки возможно при двух условиях. Если температура в салоне поднялась выше заданного порога( по умолчанию 20С) или двигатель прогрелся выше заданного порога (по умолчанию 70С). Так же можно отключить автовключение печки.
Управление вентилятором радиатора охлаждения двигателя. Насколько я знаю всем не нравится что на инжекторных двигателях семейства ВАЗ температура включения очень высокая (по моему 101С), что часто приводит к закипанию. Данная функция может включить вентилятор при любой заданной температуре в пределах от 90С до 100С, также и выключить его в пределах от 87С до 99С. (По умолчанию установлено включение при 97С, выключение 93С)
Функция автосвет управляет освещением приборной панели и ближним светом с габаритными огнями.
Так при достижении заданного порога освещенности фоторезистора расположенного на лобовом стекле, включается ближний свет и габариты, также притухает подсветка приборки до заданного порога (чтобы ночью не слепить).
Чтобы не колхозить дополнительных кнопок. Управление и настройки бортового компьютера осуществляются поворотом (по часовой/против часовой) кнопки сброса показаний одометра на панеле приборов.
P. S.
Если кому интересно и хотите повторить могу расписать более подробно и помочь в изготовлении. Да, и в схеме, и в плате есть ошибки, так как это был первый макет.
Инструкция по сборке бортового компьютера на ВАЗ Калину и ВАЗ 2115 — схемы, необходимые радиоэлементы, рекомендации по питанию, фото, видео.
Цены на подобные устройства, мягко говоря, не очень радуют. Самый простой компьютер-кнопка для отображения каких-никаких кодов категорически не устраивает ввиду его убогости. Стоимость таких около 600–700 руб. Ну а что-то посерьёзней, с дисплеем, уже порядка 1800–2000 руб. Ну и самые дорогие модели приблизительно по 5000 руб. Поэтому было принято решение собрать бортовой компьютер, который отображал бы параметры в режиме реального времени, текущие ошибки и возможность их сбросить. Также интересен был замер времени разгона от 0 до 100 км/ч.
Итак, обмен информацией между Электронным Блоком Управления (ЭБУ) и Бортовым Компьютером (БК) происходит при помощи интерфейса K-Line. При этом используются различные протоколы. Вот с этим то как раз и возникает первая трудность. Где взять описание протокола? Его придётся поискать в Сети.
Многие конечно задаются вопросом, зачем вообще используется какой-то там адаптер для подключения к машине. Отвечаем: адаптер представляет собой преобразователь уровней. В стандартном COM порте (он же интерфейс RS-232) логическая единица это -12 вольт, логический 0 — это +12 вольт. В K-линии логическая единица — это +12 вольт, а логический ноль — это 0 вольт. То есть размах сигнала 0–12 вольт против -12…+12 у RS232. К тому же разница не только в уровнях, RS-232 имеет 2 сигнальные линии RxD и TxD, а K-Line — одну двунаправленную. Итак:
Бортовой компьютер на ВАЗ Калина — схема и необходимые компоненты
Необходимые детали для сборки:
Питание схемы бортового компьютера на ВАЗ
Здесь всё просто. LM317 формирует стабилизированный ток 20 мА для светодиодов подсветки дисплея. LM7805 стабилизирует напряжение для питания микроконтроллера. Защитный диод 1N6281 рассчитанный на 27 вольт спасет от возможных всплесков напряжения.
При отладке можно использовать +12 вольт с 16-го пина колодки OBD2. А при постоянной работе напряжение на БК должно подаваться при каждом включении зажигания. То есть необходимо протянуть провод от замка зажигания к БК.
- 2 линейных регулятора (VR1, VR2) — LM317 и UA7805 соответственно.
- Диод — 1N6281.
- Диод Шоттки — 1N5818.
- Резистор (R1) — 62 Ом.
- 2 электролитических конденсатора (C1, C2) 470 мкФ и 10 мкФ.
- 3 конденсатора (C3-C5) — 0.1 мкФ.
- Катушка индуктивности (L1) — 100 мкГн.
Бортовой компьютер на ВАЗ — инструкция по прошивке
Прошивка для микроконтроллера написана в среде CodeVisionAVR 2.05 на языке Cи.
В ответе C1 означает, что ЭБУ готов с нами работать (на связи).
После этого мы можем запросить у него параметры, отправив запрос:
ЭБУ автомобиля отвечает, например:
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-й байт — Температура охлаждающей жидкости
.
У нас это значение 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
Из АЦП взято напряжение на датчике кислорода и на датчике массового расхода. Хотя необходимость этого пункта под сомнением. Можно вообще убрать. Всё остальное есть в описании.
Сборка и подключение бортового компьютера на ВАЗ Калину своими руками
-
На самоклеящейся бумаге печатаем лицевую часть (черную), клеим на пластик, совмещаем, клеим к плате.
По себестоимости получилось порядка 450 рублей.
Бортовой компьютер на ВАЗ 2115 с тачскрином
Этот БК изготовлен под панель ВАЗ 2115, но подходит и для Калины. Элементная база остается та же. Только добавляется тачскрин от телефона Sony-Ericsson G900. Цена тачскрина 35 рублей. Ну и естественно меняется прошивка.
Схема бортового компьютера для ВАЗ 2115:
Печатная плата претерпела существенные изменения. Теперь используется микроконтроллер ATMega16A.
При помощи ножа, напильника и шпатлевки по пластику тачскрин монтируем в панель, которую потом обтягиваем карбоновой пленкой.
Выпущен велосипедный компьютер XOSS Sprint
Wahoo выпустил велосипедный компьютер Elemnt Mini
США построят самый мощный суперкомпьютер
Компьютер в корпусе из оргстекла
Читайте также: