Бортовой компьютер схем нет

Обновлено: 04.07.2024

После публикации статьи Бортовой компьютер (часы, двухканальный термометр, вольтметр на ATmega8 и LCD 16х2) прошел уже почти год, и за это время я получил много писем с просьбами изменить прошивку под нужды пользователей. В основном нужно было добавить в устройство такие функции как предупреждения о низком уровне заряда аккумуляторной батареи, перегреве охлаждающей жидкости двигателя, измерение остатка топлива в баке. Но для одних напряжение на аккумуляторе, например, 11.9 В считается предельно низким, другие могут позволить разрядиться батарее до 10.7 В. Кто-то считает двигатель перегретым уже при 95°С, а кто-то при 105. Поэтому я решил добавить в схему устройства кнопки, организовать меню с настройками, чтобы каждый мог настроить БК под себя и теперь имеет следующие функции:

  • индикация текущего времени
  • измерение температуры двигателя
  • измерение напряжения бортовой сети
  • измерение остатка топлива в баке

Из дополнительных функций устройство имеет:

  • установку порога предупреждения о перегреве (90 - 125°С)
  • установку порога предупреждения о низком уровне заряда аккумуляторной батареи (10.0 - 12.0В)
  • калибровку штатного датчика уровня топлива (0 - 70Л)
  • установку инерционности индикации уровня топлива (2 - 10)
  • установку порога предупреждения о низком уровне оставшегося топлива (1 - 20Л)
  • настройку яркости подсветки дисплея
  • возможность отключения звуковых предупреждений

Схема состоит из распространенных и недорогих радиоэлементов:


Как видно, предусмотрена защита от переполюсовки - диод SK24, вместо него можно поставить любой другой Шоттки или вообще его не ставить, если уверены, что при сборке однажды случайно неверно подадите питание, перепутав полярность. RV1 - подстройка измеряемого напряжения. RV2 - штатный датчик уровня топлива типа БМ150 сопротивлением 330 Ом при пустом баке. Про RV3 скажу чуть позже. RV4 устанавливает контраст дисплея.


На ней предусмотрен 6-пиновый разъём IDC-06 для внутрисхемного программатора USBASP, а так же штыревые разъёмы для подключения датчиков температуры и уровня топлива, разъём для подключения кнопок. В прикрепленном архиве есть файл в формате Sprint Layout, в котором подписаны все элементы.

Почти готовая плата:


При пайке элементов, для удобства, сначала нужно запаять все проводные перемычки, затем SMD компоненты, и только после этого - подстроечные резисторы, разъемы, отсек для батарейки, звуковой излучатель и дисплей. Прошиваем микроконтроллер внутрисхемным программатором. Фьюзы выставляются на тактирование от внутреннего RC генератора на 8МГц:


Будьте очень осторожны при прошивке фьюзов, потому что в некоторых программах-прошивалках их нужно выставлять инверсно. Чтобы избежать неверной расстановки чекбоксов, сначала считайте с МК фьюзы и посмотрите: если RSTDISBL не отмечен галочкой, то нужно расставлять как на картинке. Если отмечен, то фьюзы выставляются инверсно. По окончании прошивки, при правильно собранной схеме, устройство запускается от питания программатора, и раздаётся звуковой сигнал. Теперь нужно установить напряжение на выходе ОУ при пустом баке. Подаём питание 12 вольт. К плате подключается датчик уровня топлива (можно временно заменить на переменный резистор сопротивлением 330 Ом), устанавливается на максимальное сопротивление (бак пуст). С помощью RV3 на ноге ADC1 (PC1) микроконтроллера устанавливается напряжение ровно 5 вольт. Устройство готово:


Плата с кнопками:


Напишу как ими управлять. При основном экране (когда на дисплее отображаются все параметры) при нажатии кнопки MUTE/ESC включается/выключается звук предупреждений и звук нажатия кнопок. При этом на дисплей выводится соответствующая информация: - звук включен и - звук выключен. При нажатии кнопки HR/+ устанавливаются часы, при нажатии MIN/- - минуты. При нажатии MENU/OK на дисплее появляется основное меню. С помощью кнопок + и - выбираем нужный пункт меню:





При нажатии OK заходим в выбранный пункт.

1. Перегрев двигателя. Здесь кнопками + и - устанавливается порог температуры от +90 до +125°С , при которой устройство будет предупреждать о перегреве двигателя. После установки жмём OK, на месте значения темпратуры порога на секунду появляется надпись "Сохранено". Выходим, нажав ESC.
2. Разряд аккумулятора. В этом пункте устанавливается порог разряда аккумулятора от 10.0 до 12.0В так же как и в п.1.
3. Калибровка уровня топлива начинает производиться при пустом топливном баке автомобиля. На экране отображается следующая информация: количество залитого топлива, под ним значение АЦП для данного уровня, значение АЦП с датчика уровня топлива в настоящий момент.


Итак, бак пустой. Кнопками + и - устанавливаем "литры 0". Неспеша заливаем топливо до тех пор, пока не начнёт изменяться значение ADC. Жмём OK. Это будет нулевой уровень. Далее заливаем в бак 1 литр топлива, при этом значение ADC должно увеличиться, кнопкой + устанавливаем "литры 1". Жмём OK - в EEPROM МК записалось значение АЦП, соответствующее уровню 1 литр. Заливаем ещё литр топлива, кнопкой + устанавливаем "литры 2", нажимаем OK, и так до полного бака. После калибровки нужно перезагрузить устройство.

4. Инерция уровня топлива. Устанавливается количество измерений уровня топлива для вывода на дисплей усредненного значения. Устройство измеряет уровень топлива 1 раз в секунду. Если, например, инерция имеет значение 5, то в программе в массив со сдвигом будут записываться данные 5-ти последних измерений, соответственно за 5 секунд (одно измерение - одна секунда), из этих измерений вычисляется среднее значение остатка топлива и выводится на дисплей. Управление кнопками аналогично п.1.
5. Низкий уровень топлива. Здесь устанавливаем порог предупреждения о низком уровне топлива от 1 до 20 литров. Как управлять кнопками, уже ясно.
6. Яркость дисплея. Я думаю, тут всё понятно.

Все установки записываются в энергонезависимую память микроконтроллера (EEPROM), за исключением звука - при запуске устройства звук всегда включен.
При переходе измеряемых параметров через установленные значения порогов, на дисплее начинает мерцать значение соответствующего параметра, и каждые 30 секунд раздаётся тройной звуковой сигнал.

В архиве "MBC_.rar" находятся проект Proteus, печатная плата в формате Sprint Layout, схема и 2 прошивки: одна для русифицированных дисплеев, вторая - для нерусифицированных (меню на английском языке). У меня дисплей оказался нерусифицированным, поэтому на видео меню на английском.

Исходники прошивок написаны в компиляторе Bascom AVR. Их можно приобрести на торговой площадке exDIY : архив с исходниками (содержит 6 исходников - основной, с переключением типов датчиков уровня и с выводом для подключения вентилятора - все русской и английской версии) и исходный код новой прошивки с упрощенной калибровкой ДУТ

Дополнение 29.11.2013 - добавил архив "Прошивки для датчиков 0л - 0Ом.rar" с прошивками для датчиков уровня топлива, у которых при пустом баке сопротивление 0 Ом.

Дополнение 17.12.2013 - добавлен архив "Исправленные прошивки.rar". Причина исправления - глюк индикации остатка уровня топлива при полном баке - на дисплей выводилось число 69 или 71. Если бак уже откалиброван, то перед тем как прошивать МК, не забудьте сначала отдельно прошить конфигурацию фьюзов, отметив EESAVE, иначе при заливке hex все данные о калибровке бака будут стерты.

27.12.2013 - обновил архив "Исправленные прошивки.rar". Исправлен недочет звуковых предупреждений о переходе через установленные пороги.

Дополнение 11.02.2014 - добавлен архив "Прошивки с переключением типов датчиков уровня топлива.rar". Описание внутри архива.

Дополнение 12.05.2014 - добавлен архив "Прошивки с управлением вентилятора.rar". Описание внутри.

Дополнение 9.03.2016 - добавлен архив с файлом печатной платы для DIP-компонентов от пользователя Sergio.

6.07.2016 - в статью добавлен архив с новыми прошивками "Прошивки с упрощенной калибровкой уровня топлива.rar". Описание внутри архива.

Современный автомобили в большей степени оснащены бортовым компьютером учёта мгновенного и среднего расхода. Являясь обладателем авто Фиат Мареа 1.9JTD данной функции в нем не было предусмотрено. Заводские девайсы отказывались работать или выводили скудную и маловажную информацию.

Я являюсь приверженцем простоты и надёжности своих разработок. Что вполне и показала эксплуатация собранного устройства.

Самодельный бортовой компьютер (БК) через интерфейс K-Line для Итальянских авто. Испытан на JTD евро 2 и 3 (CF2, CF3). Схема согласования уровней микроконтроллера с К-линией взята с диагностического адаптера ELM327, команды (PIDs) опроса ЭБУ авто сканированы по К-линии при работе диагностического софта Multiecuscan. Также изучалась документация [АО “АвтоВАЗ” Генеральный Департамент Развития Управление Проектирования Электроники и электрооборудования], [ISO/WD 14230-1 - Road Vehicles - Diagnostic Systems - Keyword Protocol 2000 - Physical layer].
Протокол ISO14230. Для приёма/передачи по К-линии был задействован аппаратный USART интерфейс PIC16F628. Но поскольку вывод передатчика (ТХ) не имеет функции инверсного режима работы, требуемого по условию схемы, был задействован соседний вывод. Который программно работает в режиме ТХ передатчика, инвертируя его состояние.
В основу схемы взят индикатор 16х2 HD44780 (распиновка питания может отличаться), контроллер PIC16F628A и немного пассивных элементов smd (габарит 1206 и 805), номинал не критичен. Транзисторы можно MMBT2222 SOT-23 (2N2222). Кренка на 5В в layoute вверх радиатором для схемы с dip PICом. В зависимости от подсветки ЛСД (>20mA) может потребоваться небольшой радиатор для кренки. Цепочка R10 и D16 выполняют защитную функцию схемы. Сама плата вписывается в габариты и клеится с обратной стороны дисплея.

При подключении схемы к авто К-линию подключать в последнюю очередь, не допускать замыкание К-линии БК на плюс!.

Программная часть работы схемы начинается с инициализации LCD и подключению к ЭБУ авто. Для ЭБУ тип евро 2 и 3 отличается адресация подключения к блоку, выбор выполняется удержанием кнопки UP до появления надписи нужного типа CF2 или CF3. При успешном подключении к ЭБУ включится подсветка LCD. Далее чтение HW и SW номера ЭБУ для JTD. И переход в первое меню, 4 параметра (мгновенный и средний расход, скорость и температура двигателя), другие меню могут быть по 2, 3 параметра. Переход по
меню клавишей UP или Down (индикация нажатия - закрашенный первый сегмент). Можно сохранить текущее меню (с 0 по 12) как стартовое при включении бортового компьютера - длительно удержав UP (более 2 сек.).

В 13 меню - чтение ошибок, выводиться количество ошибок и до 4 кодов (слитно Р***), удаление ошибок - длительно удержав UP.
В 14 меню (мгновенный расход и общее количество газойля) - можно менять число цилиндров в авто (4 или 5) для правильного расчёта расхода топлива - длительно удержав UP.
В 15 меню сброс показаний средней скорости и среднего расхода, и также регулирование подсветки LCD - длительно удержав UP.
Регулирование подсветки LCD представляет собой цепочку: pin13 через Т2 - стандартная яркость; и pin3 через R12 - пониженная яркость подсветки.

В обновлении схемы, архив №2, меню смещены и 15 меню выделено под плавное регулирование яркости подсветки экрана (ШИМ). При длительном удержании кнопки - плавное нарастание яркости от 0 до 255 и так по кругу. При отпускании кнопки - сохранение значения яркости в энергонезависимой памяти. При этом возможна потеря связи с ЭБУ, т.к. опрос прерывается.
Расчёт расхода топлива выполняется по показаниям общего количества газойля, оборотов и скорости авто. И расчёт происходит при активном меню расхода. Мгновенный расход выводиться в литрах/час при скорости до 10км/ч, а выше - в литрах на 100км. Обесточив БК средний расход сброшен и =0. Формула расчёта расхода =. Литры*100/. км. При пройденном расстоянии равном нулю, средний расход стремится к бесконечности. По мере движения и увеличения пройденного пути средний будет приближаться к мгновенному значению расхода.
Меню включает в себя набор следующих параметров: обороты двигателя, текущую скорость, скорость круиз-контроля, температура двигателя, температура топлива и воздуха, подогрев свечей накала и топлива, общее количество газойля, расход воздуха, давление топлива и его регулятор, давление наддува и его регулятор; расчёт мгновенного и среднего расхода, и средней скорости; чтение/удаление ошибок авто.

Обновление 30.05.2015: Добавил ШИМ управление яркостью подсветки LCD. Открыл для себя, что в 16F628 есть выход PWM. В архиве №2 новая схема и прошивки "r4", (не тестировал).


Для контроля работы параметров двигателя решил я сделать бортовик на основе ARDUINO NANO, но только на собственной плате и чтоб он уместился в панели приборов.

Основные отображаемые параметры бортового компьютера:
— Температура двигателя
— Обороты двигателя
— Напряжение бортовой сети
— Скорость
— Расход топлива в час при нулевой скорости
— Расход топлива на 100 км
— Процент открытия дроссельной заслонки

Кроме параметров двигателя дополнительные функции :
— Управление включением вентилятора печки отопителя
— Управление включением/выключением вентилятора радиатора охлаждения на заданных температурах
— Функция АВТОСВЕТ включением/выключением ближнего света в зависимости от освещения на улице
— Яркость подсветки панели приборов
— Температура в салоне
— Часы

Подробнее о некоторых дополнительных функциях:
Управление автовключением вентилятора печки возможно при двух условиях. Если температура в салоне поднялась выше заданного порога( по умолчанию 20С) или двигатель прогрелся выше заданного порога (по умолчанию 70С). Так же можно отключить автовключение печки.

Управление вентилятором радиатора охлаждения двигателя. Насколько я знаю всем не нравится что на инжекторных двигателях семейства ВАЗ температура включения очень высокая (по моему 101С), что часто приводит к закипанию. Данная функция может включить вентилятор при любой заданной температуре в пределах от 90С до 100С, также и выключить его в пределах от 87С до 99С. (По умолчанию установлено включение при 97С, выключение 93С)

Функция автосвет управляет освещением приборной панели и ближним светом с габаритными огнями.
Так при достижении заданного порога освещенности фоторезистора расположенного на лобовом стекле, включается ближний свет и габариты, также притухает подсветка приборки до заданного порога (чтобы ночью не слепить).

Чтобы не колхозить дополнительных кнопок. Управление и настройки бортового компьютера осуществляются поворотом (по часовой/против часовой) кнопки сброса показаний одометра на панеле приборов.

P. S.
Если кому интересно и хотите повторить могу расписать более подробно и помочь в изготовлении. Да, и в схеме, и в плате есть ошибки, так как это был первый макет.


Бортовой компьютер на ардуино, с программным обеспечением собственной разработки.
И так все началось с того что кому не скажешь, что в моём ланосе нет тахомета все удивлялись как на нем ездить? Кроме этого будучи начинающим водителем ломал себе голову как научиться стилю экономичной езды, если не знаешь какой у машины расход? Показания датчика топлива нелинейны, условны, плавают, а у меня ещё и датчик сам датчик топлива сломался, периодически показывал пустой бак.
В интернете нашёл три варианта исполнения бортового компьютера:
1. Небольшой монохромный экран вместо часов на приборную панель со всеми функциями бортового компьютера украинского производства;
2. Бортовой компьютер фирмы Multitronics в разных исполнениях;
3. Bluetooth адаптер elm-327.
Вариант 1 меня не устроил по внешнему виду, вариант 2 устраивал всем кроме цены (около 5000 т.р), вариант 3 хоть и не был полноценным бортовым компьютером мне приглянулся возможностью просмотра данных на экране телефона или планшета и стоимостью 1200р.
Были сомнения по поводу совместимости адаптера с моим ЭБУ по протоколу OBD1, но адаптер я купил, и как оказалось зря. Адаптер не подошёл по разъему, попытка подключения проводами не дала результата.
Начитавшись в интернете про платформы микроконтроллеров из серии ардуино, решился собрать бк сам.
Была куплена простенькая плата arduino uno, bluetooth шилд к ней, k-line adaptor мастеркит. В результате долгих поисков информации по протоколу obd1 GM, ALDL, перехвата потока от программы диагностики, изучения открытых исходников программы диагностики, изучения языка программирования ардуино и платформы андроид бк был создан. Ушло на все это около пол года. На данный момент бк и программы к нему выполняют основные функции:
— вывод основных текущих параметров;
— расчёт израсходованного топлива, наработки двигателя, количества пусков, проиденный путь;
— расчёт среднего расхода;
— сохранение данных при пусках и остановке двигателя;
— сохранение потока данных.
Однако программное обеспечение еще сыровато и находится в постоянной доработке. В планах собрать бк на более мощной плате ардуино мега с tft сенсорным экраном, подключение gsm gprs модуля, стыковка с автосигнализацией и ещё кое что по мелочи.
Недавно нашел на украинском форуме, что я не один такой. Люди также ведут проект по созданию устройства и программы под андроид с возможностью не только диагностики, но и перепрошивки эбу!

Читайте также: