Как сделать бортовой компьютер
Бортовой компьютер для автомобиля ВАЗ2110
Автор: КАШАК, neo-bars@yandex.ru
Опубликовано 20.09.2014
Создано при помощи КотоРед.
Участник Конкурса «Поздравь Кота по-человечески 2014»
ПОЗДРАВЛЯЮ уважаемого кота с днем рождения! Желаю ему доброго здравия, а его его замечательному ресурссу — процветания!
По случаю торжества хочу представить свой проект.
Итак, я являюсь “счастливым” обладателем творения отечественного автопрома под названием ВАЗ-2110. Как и любая техника машина имеет свойство ломаться в самый неподходящий для этого момент. Но оставим обсуждение поломок для других сайтов, все-таки тут собрались радиолюбители, а не автомеханики =)
В общем история данного проекта началась примерно год назад, когда я остался без генератора в 300км от цели поездки и пришлось продолжать путешествие на АКБ чтобы встретиться с другим авто и далее ехать на его АКБ. В добавок к этому, уже начинало смеркаться. Вот тут-то и оказалось, что на приборной панели отсутствует такой полезный прибор, как вольтметр. Видимо, разработчики посчитали, что раз двигатель инжекторный, то и напряжение на АКБ знать совершенно не обязательно. Во время поездки я уже серьезно подумывал о том, чтобы подключить к бортовой сети обычный мультиметр, т.к. слышал, что падение напряжения на АКБ может вызвать порчу памяти ЭБУ двигателя и в тот момент проверять справедливость этого утверждения совершенно не хотелось. Естественно по приезду домой я решил встроить нечто, измеряющее напряжение. Но тут вспомнилась еще одна неприятная особенность инжекторного двигателя, а именно контрольная лампа Check Engine. Которая умеет загораться совершенно неожиданно и почему-то обычно достаточно далеко от какого-либо сервиса. Такое, конечно, случается довольно редко, но все же случается. Первой мыслью было пойти, купить маршрутный компьютер и не морочить голову. А он уже покажет и напряжение, и ошибки, много чего еще. Но после похода на авторынок энтузиазм поубавился. Оказалось, что железка, содержащая деталей рублей на 300-400, может стоить в несколько раз дороже.
Вот тогда и было принято решение собрать такой девайс самому. Сначала думал сделать что-то простое на AVR МК и небольшом дисплее от мобильника. Но т.к. в то время я начал активно изучать МК STM32, то делать на AVR было не интересно, особенно учитывая тот факт, что у меня в городе стоимость того же Mega32 превышает стоимость STM32 103 серии. Кроме этого, на просторах интернет-магазинов я наткнулся на очень интересную штуковину под названием TFT дисплей. Вот такой:
Диагональ целых 3,2”, сенсор с АЦП, слот для SD карты, да еще и на плате запаян. Вот только шина данных у него параллельная и для управления требуется целых 21 вывод (16 бит сама шина данных и 5 служебных выводов). После некоторого времени поисков в интернете, я выяснил, что данная железка достаточно легко и просто подключается к STM32 МК при наличии у них FSMC (Flexible static memory controller). Если объяснять в двух словах, то это некий интерфейс, к которому можно подцепить память с параллельным интерфейсом, при этом МК будет работать с ней, точно так же, как и со своей внутренней. Т.е. просто указываем адрес и пишем данные. Очень удобно. А вот теперь, если подключить туда дисплей, то можно просто засылать туда данные по неким адресам, при чем аппаратно и очень быстро.
Далее подобрал и сам МК, выбор пал на STM32F103VCT6, это 100-лапое чудище содержит на борту блок FSMC, ЦАП (к тому времени уже решил, что обычные звуковые уведомления в виде писка будут только раздражать), целую пачку USART, SPI и т.п., 256 Кб памяти, тактовую частоту 72МГц, да еще и USB модуль. Все описывать не буду, дабы не захламлять статью, остальное можно найти в даташите. Заказав дисплей и МК, начал разводить плату. К слову, плату под корпус LQFP предстояло изготавливать впервые. Не смотря на это, плата удалась (пусть и не с первого раза), делал методом ЛУТ.
Запаяв МК и дисплей, сел за написание программы. После пары недель плясок с бубном, удалось запустить дисплей и немного оптимизировать библиотеку. Уже тогда было решено, что весь интерфейс будет представлен в виде набора картинок, а звуковые уведомления в виде WAV файлов. Вот тут и ждало первое разочарование. При проектировании платы я подключил SD карточку через SPI, и если с проигрыванием звуков он справлялся на отлично, то для чтения изображений у него катастрофически не хватало скорости. На вывод картинки 320х240 пикселей уходило около 3 секунд. Промучившись еще недели три, начал искать другое решение и довольно скоро нашел. Оказывается, помимо прочих полезностей, у данного МК есть интерфейс под названием SDIO (Secure digital input/output interface), который предназначен для работы с SD (и не только) картами памяти. Отложив программирование, я заказал мешок слотов для MicroSD карточек и занялся новой платой. В итоге на отдельной плате уютно разместились MicroSD карточка и Mini USB разъем, а основная плата дополнилась выводами под SDIO, а также некоторыми полезностями, пришедшими на ум в процессе разработки. После очередных плясок с бубном все это дело завелось. Картинки выводились с приемлемой скоростью. Дело осталось за малым, сделать интерфейс пользователя, реализовать задуманные функции и заставить все это дело работать. Как раз на разработку интерфейса ушла примерно половина всего времени, во-первых, надо было придумать нечто удобное, а во-вторых создать всю графику, с которой я в принципе не особо дружу. Подробно этот момент я описывать не буду, чтобы не утомлять читателей, скажу только, что была еще раз переработана библиотека дисплея, созданы с нуля несколько шрифтов, отдельно буквенные (сразу решил делать только английские, надписи получаются короче) и отдельно цифровые. И графику я все-таки сделал.
Но, когда оставалось дописать примерно 30% прошивки, стало ясно, что придется переделать плату еще раз. Причинами послужило то, что из-за некоторых недоработок не получалось реализовать все задуманное, и просто адски грелись линейный стабилизаторы в питании схемы. (понижение до 3.3В было сделано в 2 ступени, 12В->5В, 5В->3.3В). В итоге был применен DC-DC Step-Down преобразователь на 3.3В, исправлены предыдущие недоработки, и наконец-то получена финальная версия платы, на которой и дописывалась прошивка.
В процессе написания программы количество функций увеличилось процентов на 30 по сравнению с изначально задуманными.
Итак, на момент написания статьи, функционал получился следующий.
- Показ времени (RTC в МК есть, почему бы не использовать).
- Измерение температуры в салоне и на улице (датчики DS18b20, невероятно удобная штуковина в плане подключения).
- Связь с ЭБУ через K-Line и получение таких параметров, как: Напряжение, Расход топлива (путевой/часовой), Температура двигателя, Обороты, Скорость движения, Массовый расход воздуха, Цикловой расход воздуха, Положение дроссельной заслонки, Длительность импульса впрыска, Положение регулятора холостого хода. Чтение и сброс ошибок.
- Слежение за уровнем охлаждающей жидкости и уровнем масла в двигателе, с выдачей звукового и визуального уведомления (раз уж есть датчики, то почему бы их не задействовать).
- Напоминание о замене масляного и воздушного фильтров.
- Управление фарами и ДХО в зависимости от уровня освещенности с настройкой уровня срабатывания.
- Показ максимального/минимального/среднего уровня таких параметров, как: часовой расход топлива, скорость за поездку, напряжение в бортовой сети, температура за бортом. А также вывод примерных графиков данных величин.
- Сохранение параметров и ошибок, полученных с ЭБУ, на SD карту в *.txt файл.
- Ведение статистики поездки (время, расстояние, количество израсходованного топлива, расход на 100км.).
- Управление освещением салона. У родного блока управления была такая функция, вот и сюда встроил.
Внешний вид всего устройства представлен на рисунке:
Конструктивно оно состоит из 5 отдельных блоков: дисплей, плата-адаптер K-Line, плата с Micro SD и USB, УНЧ и центральная “материнская” плата. Модульная система была выбрана специально, т.к. это заметно упрощает разводку плат и установку в авто. Кроме этого я не был уверен, что тот же адаптер K-Line будет нормально работать, а переделывать из-за него всю плату совершенно не хотелось. Рассмотрим каждый блок подробнее.
На центральной плате расположено сердце все конструкции – МК STM32F103VCT6 со всей необходимой обвязкой. На этой же плате находятся DC-DC преобразователь 12В->3.3В на MC34063 для питания всей электроники, два реле для управления фарами, мощный MOSFET для управления светом в салоне (даже излишне мощный, но их был целый мешок, поэтому его и поставил) и батарея 3В для часов реального времени.
Адаптер K-Line сделан по распространенной схеме на компараторе LM339. Так же на этой плате установлена пара транзисторов, которые служат связующим звеном между датчиками в авто и МК.

Плата с USB и Micro SD вообще ничем ни примечательна и содержит только пару разъемов и горсть резисторов.

Рассматривать УНЧ особого смысла не имеет, сделан он на TDA2003 по схеме из даташита. Тут уже каждый выбирает то, что ему удобнее. У меня была в наличии данная микра, на ней и сделал.
На плюсовом проводе питания установлен предохранитель.
Подключение дисплея осуществляется гибким шлейфом, который раньше служил для подключения IDE диска к материнке. Он обладает большей прочностью, чем обычные китайские, спокойно выдержал около месяца издевательств без единого обрыва. Кроме того, он одножильный, что заметно ускорят процесс пайки и дает гарантию, что случайно загнувшаяся незамеченная “волосинка” что-нибудь замкнет.

Установил девайс возле прикуривателя, вместо пепельницы, т.к. ей все равно не пользуюсь. Сама пепельница была успешно извлечена, на ее месте закреплены дисплей и платы, после этого сзади установил на место крышку, которая закрывала пепельницу, а лицевую панель вырезал из оргстекла и обтянул карбоновой пленкой. Получилось очень даже не плохо:
Для подключения датчиков температуры использовал обычную телефонну лапшу. Наружний датчик установлен под задним бампером, а внутренний под декоративную накладку на стоке между дверьми. Наружний датчик был заказан у китайцев и по их заверениям абсолютно водонепроницаем. Проверить пока возможности не было, сезон дождей еще не начался. Всего ушло около 3-3,5м провода. При такой длинне провода подтягивающий резистор на линии 1-Wire пришлось уменьшеить до 1К. Фотодатчик подключен экранированным микрофонным кабелем. Для установки статусного светодиода была использована стандартная фишке датчика иммобилайзера, которая бесцельно торчала в панели. Красный светодиод заменил на желтый.
А вот и схема всего девайса:

Теперь постараюсь описать его работу. В дежурном режиме экран погашен и питние УНЧ отключено. Каждые 5 сек. вспыхиввает статусный светодиод, показывая, что девайс жив. Потребление тока в этом режиме 30-35мА. Можно его еще уменьшить, если перевести МК в спячку, но пока такое потребление никакого пагубного влияния на АКБ не оказывает.
Для того, чтобы вдохнуть в него жизнь, требуется либо просто коснуться экрана, либо повернуть ключ в замке зажигания. Кстати, при прикосновении к экрану зажигается статусный светодиод, и гаснет при отпускании, сигнализируя тем самым, что касание произошло и МК его зарегистрировал. В первом случае будет включена подсветка и предоставлен доступ ко всем функциям, но без соединения с ЭБУ. Т.е. сразу же будет включен главный экран программы без заставок, мелодий и т.п. Так же не будет проводиться контроль состояний датчиков. Если же в течении 20 секунд пользователь не предпринимает никаких действий, то экран погаснет.

Во втором случае сначала будет показана заставка и через 5 секунд будет осуществлено соединение с ЭБУ и выключение произойдет только после выключения зажигания. Задержка в 5 секунд обусловлена спецификой работы ЭБУ BOSCH, установленного в моей машине, первые 5-6 секунд после включения он шлет какую-то белиберду и на входящие данные не реагирует. Иными словами – это рабочий режим. В данный момент заставка выглядит так:

После перехода на главный экран, осуществляется попытка соединения с ЭБУ. Если по каким-то причинам соединиться с первых двух попыток не удалось, на экран выводится вот такая пиктограмма и попытки наладить соединение продолжаются.

После 8 неудачных попыток будет выведено сообщение об ошибке, если после этого коснуться экрана в любом месте, процедура соединения повторится сначала.

Вся основная информация выводится на Главном экране в виде таблицы. Данные обновляются каждые 100мс. Кроме напряжения (1с) и температуры с DS18b20 (2с). Главный экран разделен на две области. В верхней, большей, области отображаются параметры представленные в виде таблицы, как:
- Напряжение в сети (MAIN VOLT.)
- Температура в салоне (TEMP. INT.)
- Температура за бортом (TEMP. OUT.)
- Время
- Температура двигателя (ENGINE TEMP.)
- Количество оборотов (ENGINE RPM)
- Скорость движения (SPEED)
- Часовой расход топлива (FUEL RATE)
Нижняя область отведена под иконки статуса и кнопки. Слева направо:
- Уровень масла

- Уровень охлаждающей жидкости

- Напоминания о замене фильтров

- Переключение режимов управления наружным светом

- Включение/отключение звука

- Меню


В случае возникновения проблем, пиктограмма выделяется красным цветом, это же относится и к напряжению. Кроме этого о неполадке сообщается частым миганием статусного светодиода (5 раз с интервалом 300мс.) и звуковым сигналом (в том случае, если включен звук). Уведомления об уровне масла/тосола/напряжения повторяются раз в минуту, а уведомления о замене фильтров раз в час. Пробег перед заменой взят из справочной литературы и для воздушного фильтра составляет 15000км, а для масляного – 10000км.
Значок “минус” для отрицательной температуры уже никак не помещался, поэтому отрицательная температура выводится синим цветом. Четвертая цифра в количестве оборотов тоже не поместилась, пришлось ее заменить точкой. Теперь если точка стоит после числа (123.) то это означает, что обороты превысили 1000, в данном примере — это 1230 об/мин. А если точка стоит слева от числа (.876), то обороты меньше 1000, в данном случае — 876 об/мин. (на фото не совсем верная информация, оно было сделано во время одного из тестов).
Часть пунктов таблицы кликабельна, это:
- Напряжение
- Температура за бортом
- Время
- Скорость
- Расход топлива
Нажатие на перечисленные пункты, кроме времени, открывает экран статистики, в верхней части которого представлены минимальное/максимальное/среднее значение параметра, а в нижней примерный график.

Первые 18 раз запись данных производится с интервалов в 10с, далее в 1мин, а потом с интервалом в 5 мин.
Нажатие на часы откроет экран статистики за поездку:

Статистика ведется в двух режимах. Пока не нажата кнопка START, статистика сбрасывается через минуту, после выключения зажигания. Если же нажать кнопку START, то ведение статистики будет работать до нажатия кнопки RESET даже с выключенным двигателем. Это будет полезно, если движение осуществляется с остановками и требуется узнать общее время, проведенное в пути, или же общее количество израсходованного топлива.
Нажатие на пикограммы с надписями AIR/OIL откроет экран статистики фильтров.

Здесь отображается расстояние, пройденное с момента замены фильтра. Соответственно, после замены фильтра требуется сбросить пробег удерживанием кнопки RESET. При выключении зажигания и по прошествии часа, значения пробега сохраняются на карту памяти.
Далее идет кнопка управления внешним освещением. При нажатии происходит перебор режимов, на что указывает изменение вида кнопки. Всего режимов 3:
— управление выключено 
— включение габаритных огней 
— включение фар и габаритных огней 
Габаритные огни включаются после 2 минут работы двигателя если машина не движется, либо сразу после начала движения, либо при достижении температуры двигателя равной 60 градусам. Выключение происходит через минуту после выключения зажигания.
С фарами все гораздо интереснее, они реагируют на уровень освещенности. Как только этот уровень станет ниже порогового (устанавливается в меню) и продержится в этом состоянии не менее 15сек. Будет произведено включение фар. Выключение произойдет либо через 3сек. после выключения зажигания, либо в том случае, если уровень освещенности продержится выше порогового не меньше минуты. Включение фар или габаритных огней сопровождается звуковым уведомлением и миганием статусного светодиода (3 раза с интервалом 800 мс.).
Следующая кнопка управляет звуком. Тут все просто:
— звук выключен 
— звук включен 
При отключенном звуке уведомления будут выводиться только при помощи статусного светодиода и пиктограмм.
При нажатии на кнопку меню откроется экран настроек девайса:

Он состоит из 6 пунктов:
- Расширенный экран параметров двигателя

- Экран чтения ошибок

- Подключение USB

- Настройка часов

- Настройка порога включения фар

- Настройка яркости дисплея

Начнем по порядку. Расширенный экран параметров представляет собой вот такую таблицу:

Тут можно увидеть:
- Напряжение в сети (MAIN VOLT.);
- Обороты (ENGINE RPM);
- Расход воздуха (AIR FLOW);
- Датчик массового расхода воздуха (MAF SENSOR);
- Положение дроссельной заслонки (THROTTLE POSITION);
- Время впрыска (IHJECT. TIME);
- Регулятор положения ХХ (REG-R IDLE);
- Угол опережения зажигания (IGNITION ANGLE).
Все это дело можно сохранить в текстовый документ diagnost.txt. на карту памяти нажатием на кнопку SAVE. Если все прошло успешно, рядом с кнопкой появится зеленый квадрат, а в случае ошибки – красный.
Экран чтения ошибок.

Здесь выводятся ошибки, содержащиеся в памяти ЭБУ, конечно, если они вообще есть (у меня, к счастью, ни одной не было). Ошибки так же можно сохранить на карту памяти в файл errors.txt, а кроме этого произвести сброс удерживанием кнопки RESET.
Подключение USB. Тут, к сожалению, не все так хорошо. С USB подключением я не успел разобраться на момент написания статьи, поэтому пока только выводится вот такая картинка:

Настройка часов. Тут все просто, в этом разделе можно произвести установку времени.

Устанавливаемое значение выделяется красным цветом и стрелкой. После выставления часов, можно настроить минуты, а после минут снова часы, и так по кругу. Сохранение значений происходит по нажатию кнопки APPLY, а при нажатии кнопки CANCEL все остается без изменений.
Настройка порога включения фар. Данный экран выглядит следующим образом:

Вверху отображается текущий уровень освещенности, получаемый с датчика, а внизу тот уровень, который был настроен. Соответственно настройка осуществляется простым нажатием на ползунок. Как и ранее применение настроек происходит после нажатия кнопки APPLY. Для контроля за освещенностью применен обычный фоторезистор. Его сдедует установить так, чтобы на него попадал свет, прошедший через лобовое стекло.
Настройка яркости дисплея. Тут всего один ползунок:

Изменения яркости при настройке можно увидеть сразу после нажатия на ползунок. Далее будет происходить автоподстройка уровня яркости по показаниям, полученным с датчика освещенности, на основе заданного уровня. Сохранение все той же кнопкой APPLY.
На этом различные менюшки заканчиваются. Все настройки системы сохраняются на карту памяти в файлик settings.bin. Как можно заметить, вся работа устройства завязана на карте памяти. Поэтому проводится контроль ее наличия, чтобы избежать ошибок в работе. Если карта памяти по каким-то причинам не отвечает, то производится попытка инициализации карты памяти, а в том случае, если это не помогает, на экран выводится вот такое сообщение:

При нажатии в любой точке экрана будет предпринята попытка инициализировать карту памяти. Также без карты памяти девайс не включится, а на экране будет выводится сообщение об ошибке. Лично у меня подобной проблем с картой памяти пока не было, она прекрасно выдерживает тряску и из разъема не выпадает.
Также стоит остановится на первом включении, когда никакие настройки не сделаны. Т.к. экран сенсорный, то ему просто необходима такая вещь, как калибровка. Именно в этот режим и переходит устройство при первом включении:

Для выполнения данной процедуры следует коснуться экрана в точках, указанных перекрестием. Всего таких точек 4. После этого экран погаснет и устройство перейдет в режим ожидания каких-либо действий.
И последняя функция – управление освещением салона. В момент открытия двери начинает плавно наращиваться яркость светильника. Полная яркость достигается за 13 секунд. После закрытия двери, по прошествии 10 секунд освещение начинает плавно гаснуть. При этом если начать движение, то освещение будет погашено практически мгновенно.
Теперь расскажу о формате картинок и звуков для интерфейса. Картинки представляют собой обычные BMP файлы, но сохраненные в цветовом формате RGB565 и с вертикальным зеркальным отображением. Со звуками все проще, это WAV фалы, моно, 8 бит. Частота дискретизации не важна, в программе предусмотрена автоподстройка. Т.е. смена интерфейса проводится очень легко без необходимости изменения чего-либо в прошивке. Карта памяти должна быть с файловой таблицей FAT32. Лично мной проверена работа с карточками объемом до 8 ГБ. включительно.
По идее данная схема будет работать с любым ЭБУ, который использует Keyword Protocol 2000. В планах на будущее допилить USB и добавить функцию диагностического адаптера. Также, возможно, сделать поддержку других протоколов обмена данными с ЭБУ, с простой заменой. Например, хранить необходимые команды в файлике на карте памяти или записывать по USB. Может еще чего придумаю. Пока на этом у меня все =)
Бортовой компьютер своими руками? — легко!

Давно была идея сделать бортовой/маршрутный компьютер в авто.
Есть готовые очень неплохие мультитрониксы — но с ними проблема, они не поддерживают наши старые тоетки по OBD (точнее авто не поддерживает OBD диагностику).
Решено сделать свое универсальное устройство, которое будет уметь все и все.
В качестве "мозга" — AVК контроллер Atmel AtMEGA640/1280/2560 серии.
Тем более, что плата готовая и подходящая по всем параметрам и возможному функционалу — давно валяется в загашнике, запасы от старого проекта 🙂
Функционально состоит из 2х частей — слева БП от 220В, справа собственно сам процессор.
Т.к. в авто уже есть 12В — то соответственно БП на 220 — нам не нужен. Сделано для универсальности.
На данной плате все сделано по максимуму именно для универсального применения — можно реализовать от примитивной елочной "мигалки", до системы "умный дом" — на сколько хватит фантазии.
Ну а касательно нашей задачи, функционал будет примерно следующий:
— вывод информации со всех датчиков, как штатных так и допольнительных, а это —
— температура ОЖ ДВС
— температура масла двигателя
— температура ОЖ доп датчик (верхний патрубок радиатора)
— температура масла в АКПП, в поддоне
— температура воздуха во впуске
— давление во впускном коллекторе (наддув)
— время открытия форсунок / % загрузки
— положение дросселя (% открытия)
— напряжение в сети
— ведение логов и возможность записи информации на компьютер (ноутбук) по RS232
Функции маршрутного компьютера:
— скорость/пробег — суммарный/за поездку
— расход средний/за поездку
— снятие ограничителя скорости (для сток мозга)
— текущая передача АКПП (если кому интересно)
Любые доп. функции — кому на сколько хватит фантазии.
Можно как снимать данные с любых датчиков — например, поставить акселерометр (ADXL*) — и измерять ускорение. Либо управлять любыми внешними исполнительными устройствами.
На текущий момент стадия проектирования функционала, для наглядности пара "скринов" — экранчик пока такой, что под рукой было. Со временем может переделаю на графический — посимпатичнее будет внешний вид.

WAT — температура воды радиатор/ДВС
OIL -температура масла в двигателе/АКПП
IAT- температура воздуха во впуске INJ — время открытия форсунок
BST — давление во впуске (наддув) DRS — % открытия дросселя

FULLRUN — суммарный пробег/расход топлива
AVG — средняя скорость движения, средний расход топлива
CUR — текущая поездка, пробег/расход
SPD — текущая скорость движения, (можно еще добавить сюда же мгновенный расход топлива)
Вариант представления данных в виде "прогресс бара". На скрине буст и % открытия дросселя.
Все данные даны для примера. Пока на неподключенном к авто устройстве.
Может у кого еще какие мысли и предложения будут — каменты приветствуются.
H Бортовой компьютер для авто на Arduino своими руками в черновиках Из песочницы
UPD 27.12.2017: Решил дополнить статью что проект был доработан другим пользователем, улучшен скетч в плане автоматической задержки, восстановления связи в случае разрыва соединения и много других нюансов… спасибо. Oleg его почта для вопросов: 2003shef@gmail.com
Его комментарии к переработке:
1.вся проводка и соединение всех модулей и узлов сохранены из первоначального проекта.(кроме подключения блутуз модуля, он теперь на серийном порте «1»)
2.программа жестко заточена под ардуино МЕГА 2560. на серийном порте «0» присутствует Дебаг при условии раскоментирования дефайна.
3.убран параметр задержки между опросами, задержка полностью интелектуальна и динамична, новый запрос не отправится пока не будет получен ответ на предыдущий с учетом таймаута.
4.добавлена функция восстановления связи в случае разрыва соединения (параметром потери связи служит отсутствие оборотов двигателя).
5.для работы требуется библиотека OBD.h вложенная в архив с проектом, этот экземпляр имеет несколько изменений от оригинала который можно скачать из интернета, и без неё скорее всего проект не будет работать или будет нестабилен.
папку нужно скопировать в папку » \Documents\Arduino\libraries»
Android приложение со всеми нюансами в Google Play: OliviaDrive
Мы сможем сделать бортовой компьютер, умеющий считать расход топлива, показывать температуру охлаждающей жидкости, скорость авто, расстояние поездки, потраченный бензин за поездку, обороты двигателя, давление во впускном коллекторе, температуру впускного коллектора, УОЗ, коррекции топлива, вольтаж датчиков кислорода, нагрузку двигателя и многое другое.

Список требуемых деталей для сборки БК

2) LCD2004 жк-модуль

3) Модуль Bluetooth HC-05

4) OBD ELM327 Bluetooth сканер

5) Резистор 10 кОм подстроечный, бипер для звука, 2 кнопки для смены экранов, провода для соединений, корпус
Настройка блютуз модуля 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 ардуины.
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(6, 7); // TX | RX
void setup()
<
Serial.begin(9600);
Serial.println(‘Enter AT commands:’);
BTSerial.begin(38400);
>
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
Заметьте, что mac-адрес вида: «AA:BB:CC:11:22:33» вводится как «AABB,CC,112233». MAC- адрес своего модуля ELM327 можете посмотреть, подключившись для начала на него со своего мобильника. (Стандартные пароли обычно: 1234, 6789, 0000).
Всё, настройка модуля 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] — листать экран вперед назад.
При включении при надписи «Connecting»… держать [кнопку 1] вход в режим показывания технологических экранов и параметров отдаваемых ЭБУ в 16-чном формате. Если будете включать БК не в машине то нужно отключить функцию опроса блютуз, надо продолжать держать две кнопки при надписи «Recovery»… до появлении надписи «All off»… а то экран будет все время пустой.
[Кнопка 1] + [кнопка 2]: 4 секунды — Сброс журнала общего пробега и потраченного бензина на втором экране, также это сброс ошибок на экране информации об ошибках.
Скетч:
Старый скетч был удален в плане многих дефектов в работе… новая версия по ссылке вверху статьи… он был доработан пользователем Oleg, спасибо ему большое. его почта для вопросов: 2003shef@gmail.com
Все, идем в машину, вставляем ELM327 в порт, ардуину в зарядку для авто и проверяем.
бортовой компьютер для автомобиля своими руками

Как из смартфона сделать бортовой компьютер автомобиля

У многих есть старые мобильные телефоны, которые лежат дома без дела. Однако им еще можно найти хорошее применение. Например, установить устаревший смартфон в салон автомобиля, где он будет выполнять функцию бортового компьютера (выводить данные системы управления двигателем, показывать, расшифровывать ошибки, сбрасывать их и пр.). Рассказываем, как доработать конструкцию телефона своими руками.
Советом поделился один из владельцев Lada Granta ( kumaxx ), который решил использовать свой старый смартфон Philips Xenium W3568 в качестве бортового компьютера (БК).
1. Снять аккумулятор телефона.
2. Определить на смартфоне, какой контакт (+) и какой (-). В данном случае 4 контакта: (+), (-), (датчик температуры) и (ID).
3. Срезать с аккумулятора плату контроллера и подключаются через нее. Если этого сделать не удается, тогда придется имитировать два дополнительных контакта, используя сопротивление. Необходимые сопротивление для подключения к этим контактам было подоброно опытным путем (было замерено сопротивление между доп.контактами и землей).

4. Подать на контакты штатные 3.7 вольта и используем резисторы.

5. На место аккумулятора устанавливаем плату DC-DC преобразователя, понижающего напряжение до 3.7В. К нему же подпаиваем необходимые резисторы.

6. Для того чтобы телефон не выключался в моменты краткосрочного пропадания питания (работа стартера, либо заглушение двигателя), необходимо установить в батарейный отсек ионистор.
7. Выводим наружу уже готовый провод с USB разъемом, который подключим в USB розетку в машине.
8. Смартфон-БК размещаем в удобном месте. Теперь, используя ПО, подключаемся к ЭБУ автомобиля через ELM327.

А вы будете использовать смартфон в машине в качестве БК?
Бортовой компьютер своими руками

Итак начнем, для наших целей нужна arduino mega 2560 oled дисплей 128х64.
Контактные плашки я с ардуино выпаял для удобства монтажа, да и вообще они нам тут не нужны

Прошиваем ардуино, программа собственной разработки)

Установка в приборную панель:
Для монтажа лучше всего использовать провод мгтф, очень удобно с ним работать,
подпаивался напрямую к плате,
саму плату ардуино и другие к приборной панели на двусторонний скотч:

для подключения кнопок, elm и динамика вне приборной панели, для этого сделал такой вот разъемчик,
в принципе можно любой:


Теперь про крепление экранчика.
Всю лишнюю пластмассу откусываем
на фото еще видно подключение к основным контактам на плате
12в, зажигание, минус, датчик бензина:

сам экранчик от платы аккуратно отделяем,
он приклеен на 2х стороннем скотче

вырезаем окошко для него с лицевой стороны, окошко делаем по размерам видимой части экрана 12х23мм,
т.е. чуть меньше самого стеклышка, вырезаем по принципу 10раз отмерь, один отреж))
чтоб потом с обратной стороны проблем не возникло при установке экрана

крепим его в приборной панели термоклеевым пистолетом
и тут я понял, что фот будет 12 (не ломать)

Теперь про доработку elm327:
разбираем его, тут на фото уже доработан у меня.

нам нужны 2 контакта Tx и Rx, на фото я их отметил стрелочками,
bluetooth модуль нам ненужен, можем смело его выпаивать и выводим эти 2 контакта через разъем наружу

я сделал разъем вот так:
Добавлено в 20:10
ну и тянем все это в приборную панель.
Кнопки я вывел на руль, через свободные контакты пружины (снимал пружину и подпаивался),
можно и отдельно куда нибудь вывести, если неохота ковыряться с пружиной и рулем.
а так задействовал кнопки mode и mute, перерезав пару дорожек на плате кнопок и подключившись к ним.
У меня все,можно пинать)))))))))))))

как нарисовать сову

А это зачем?
Все регистраторы умеют сами отключаться.
На тазах бортовик штатная вещь, если не брать в расчет классику и зубилы.
А что в ЭБУ этого нет?
Минусят любители колхозников тюнинга
| МЕХАНИЗМ | Подозрение на: сопли Статья #8 дезинформационного кодекса Выполненное действие: пользователь предупрежден Погрешность принятого решения: 1% |

проще, но его нужно постоянно включенным держать, а для точного расхода топлива его нужно будет еще всегда коннектить как завожу мотор.
и опять же, все как бэ штатное, встроенное. ничего никому не мешает
Такого вот нехочу:

есть куда интересней, полноценные мини пк, на который можно также прикрутить кучу датчиков, размером с пачку сигарет, под линухой, как пример rapsberry https://ru.farnell.com/raspberry-pi/raspber. Yj4pBoCQHDw_wcB

И да, китайский олед дисплейчик выгорает быстро. Плюс интересно посмотреть, как это будет работать в мороз, т.к. Дешевые китайские кварцы на китайской плате могут и не стартовать даже при 0 температуре, как кстати и контроллер(как то попадал на такую херню).
| Цитата |
| решил запилить себе в авто бортовой комп и ни какой-то там мультитроникс за бешеные деньги, а свой, под свои нужны и главное дешевый!! И чтоб «как тут и было» cool.gif |
ТС, как ты отключил функцию самоуничтожения АРДУИНО?
| Скрытый текст |
| Не напрягайся, я пошутил |
БОРТОВОЙ КОМПЬЮТЕР СВОИМИ РУКАМИ

Дисплей самодельного бортового компьютера представляет собой прозрачное подсвеченное изображение автомобиля, на котором просверлены 9 отверстий, в которых установлены миниатюрные лампочки (светодиоды), красного цвета. Акустический сигнализатор расположен в любом удобном месте за дисплеем. Если авто стоит на ручном тормозе, и при этом включить зажигание, то зажигается лампочка НЗ и раздается двойной предупредительный сигнал, повторяющийся каждые несколько секунд, пока включено зажигание. Индикатор разгерметизации тормозной системы. При возникновении этой неисправности он горит, и постоянно звучит прерывистый звуковой сигнал. Н1 зажигается когда падает давление в смазочной системе двигателя авто при включенном зажигании. При этом раздается четырехкратный акустический сигнал, повторяющийся каждые 2 минуты.
Кроме датчиков тормозов «Т.Ц.» (тормоз центральный) и «Р.Т.» (ручной тормоз) используется еще и датчик недостаточного давления масла (клемма «М») без переделки. Датчики дверей «Д1-Д4», капота «К» и багажника «Б» установлены дополнительно. Это такие же микровыключатели как штатные выключатели внутрисалонного освещения, расположенные в проемах дверных дверей. Когда дверь закрыта и кнопка выключателя ею прижата, контакта нет. При открывании двери кнопка освобождается и замыкает проводник на массу. Такие датчики дополнительно установлены в проемах всех четырех дверей, а также у замка капота и на проеме крышки багажника (пятой двери).
Схема самодельного бортового компьютера, взятая из журнала радиоконструктор 2002, показана на рисунке ниже.

Тактовые импульсы частотой 32 Гц поступают на вход двоичного счетчика D2 от мультивибратора на элементах D1.2 и D1.2. Обнулением счетчика управляет «И-НЕ» D5.1. В момент включения питания зарядный ток С2 через R2 устанавливает счетчик в нуль. Включение питания происходит одновременно с включением зажигания. Во время включенного зажигания счетчик постоянно работает по кругу.

Есть три RS-триггера микросхемы D3. Первый триггер устанавливается в нуль в момент включения зажигания. На его выходе станет нуль, который там присутствует до тех пор пока счетчик D2 будет считать от нуля до трех полусекундных импульсов, имеющихся на его выходе «8». Если перед включением зажигания не будет закрыта одна дверь или несколько дверей, капот, багажник, то на точке соединения диодов VD10-VD15 и R8 возникает низкий логический уровень. На оба входа «2ИЛИ-НЕ» D4.1 поступают нули, и на выходе D4.1 будет единица. Это приводит к появлению нуля на выходе «4ИЛИ-НЕ» D6.1 и элемент D6.2 начинает пропускать импульсы с выхода «8» D2 с частотой 2 Гц, на вход запуска мультивибратора D5.2-D5.3, вырабатывающего импульсы частотой 1 кГц, которые, через VT1 поступают на излучатель В1.

Поэтому, если перед включением зажигания у машины было не все закрыто, то, кроме световой индикации на дисплее, раздается три предупредительных звуковых тональных сигнала. Второй триггер D3 работает с ручным тормозом. Если он поднят, клемма «Р.Т.» замыкается на массу. Зарядный ток С4 устанавливает на ноль счетчик D2 и триггер Т2. На выходе триггера Т2 возникает ноль, и так же, как и в случае с открытой дверью, включается звуковой сигнализатор. Спустя два звуковых импульса появляется логическая единица на выходе «32» счетчика D2. И это возвращает триггер Т2 в единичное состояние. Звуковой сигнализатор выключается. Однако, если замкнутое действие датчика ручного тормоза не прекращено, спустя четыре секунды на выходе «128» D3 появляется единица, которая, при помощи цепи C9-R14 создает положительный импульс, сбрасывающий триггер Т2. И двукратный звуковой сигнал повторяется снова. И так, каждые четыре секунды, пока рычаг ручного тормоза не будет опущен.

Так же работает устройство и при срабатывании датчика недостаточного давления масла. Но здесь участвует другой триггер ТЗ, звуковой сигнал четырехкратный, а повторяемость каждые 2 минуты. При нарушении герметичности тормозной системы или утечке тормозной жидкости замыкается на массу катод VD4. На выходе D1.4 возникает единица и прерывающийся звуковой сигнал звучит постоянно.

Бортовой компьютер для автомобиля – схема
Бортовой компьютер для автомобиля – схема, печатная плата и программа микроконтроллера имеется. Собран датчик дождя на односторонней печатной плате из фольгированного стеклотекстолита, изображённой на рис. 5. Как видно на фотоснимке рис. 6, выводы подстроечных резисторов R28 и R29 изогнуты под углом 90°, чтобы сами резисторы оказались установленными широкими гранями параллельно поверхности платы и в основном в не её контура. Так как шестиконтактный разъём Х7 не удалось уместить между подстроечными резисторами, он разделён на две части: установленную на плате четырёхконтактную (контакты 3—6) и подвешенную на соединительных проводах двухконтактную (контакты 1 и 2, соединённые с цепью подогрева R30R31).


Излучающий диод и фотодиод каждой пары наклонены навстречу один другому так, чтобы их продольные оси — направления максимального излучения и чувствительности — пересеклись точно на внешней поверхности лобового стекла, образовав прямой угол. Чтобы добиться этого, наклон диодов подбирают при установке датчика на стекло либо изменяют толщину клейкой прокладки между корпусом и стеклом.


рис 7 (1,2)


рис 8 (1.2)
Чертёж основной двусторонней печатной платы БК из фольгированного стеклотекстолита толщиной 1,5 мм изображён на рис. 7, а расположение на ней деталей показано на рис. 8. Эта плата рассчитана на установку постоянных резисторов и конденсаторов в основном типоразмера 0805 для поверхностного монтажа. Резисторы R3 и R36 — обычные МЛТ, С2-33 или им подобные импортные. Подстроечные резисторы — PV36W или другие многооборотные. Конденсаторы С1 и С12 — типоразмера 3216. Реле К1 — К5 G5CLE-14-DC12, их можно заменить другими с обмотками на 12 В, например автомобильными.
В изображённые на рис. 8 залитыми переходные отверстия необходимо вставить и пропаять с двух сторон короткие отрезки неизолированного провода. Лишь после этого можно приступать к пайке компонентов для поверхностного монтажа, а затем остальных деталей, разъемов и трех проволочных перемычек. Для литиевого элемента G1 на плате необходимо установить держатель, который можно найти на материнскои плате старого компьютера, там же можно найти и звукоизлучатель (НА1).
По окончании монтажа движки всех подстроечных резисторов устанавливают в среднее положение и приступают к загрузке программы в микроконтроллер. Для этого подойдёт любой внутрисхемный программатор, способный работать с микроконтроллерами ATmega64. Отдельно хочу порекомендовать тот, что описан в статье С. Сокола “Миниатюрный USB-программатор для микроконтроллеров AVR” (“Радио”, 2012, № 2, с. 27—30). Программатор подключают к разъёму Х10. Конфигурацию микроконтроллера задают в соответствии с рис. 9 в окне программы, обслуживающей программатор.

Подав напряжение +12 В на контакт 2 разъёма Х1 БК, выполняют процедуру программирования. Если она прошла успешно, можно подключить ЖКИ HG1 к разъёму ХЗ, а кнопки SB2—SB5 — к разъёму Х5 и начать налаживание БК. Теперь сразу после подачи питания на экране ЖКИ должно появиться изображение, подобное показанному на рис. 10.

Подключив вольтметр постоянного напряжения между контактами 2 (+) и 1 (-) разъёма Х1, с помощью подстроечного резистора R7 добиваемся равенства показаний этого вольтметра и выведенного на ЖКИ БК. Затем устанавливаем подстроечным резистором R20 желаемую яркость подсветки экрана ЖКИ. Если планируется использовать стрелочный спидометр, его нужно активировать в меню “Остальное”, а затем перейти в меню калибровки спидометра.
Сразу после включения БК переходит в рабочий режим. Если теперь нажать на кнопку SB3 “Выбор”, место надписи “STOP”, означающей, что двигатель не работает, займут показания часов. Повторные нажатия на ту же кнопку выведут на ЖКИ показания суточного одометра, затем постоянного (не обнуляемого) одометра и снова тахометра (“STOP” при остановленном двигателе).

Нажатие на кнопку SB2 “Меню” выведет на ЖКИ главное меню БК (рис. 11). Повторное её нажатие приведёт к перемещению курсора (выделения текста инверсией) на одну позицию вниз, а по достижении конца меню — к его началу. Выделив нужный пункт, нажмите на кнопку SB3 “Выбор”. При выделении пункта “Выход” нажатие на эту кнопку возвращает БК в основной рабочий режим.
Рассмотрим пункты меню “НАСТРОЙКА” по порядку:
“Режим”. В этом пункте предоставляется возможность выбрать один из четырёх предусмотренных в программе микроконтроллера доступных режимов вывода информации на ЖКИ. Чтобы перейти к его выбору, следует, выделив этот пункт, ещё раз нажать на кнопку SB2. Изображение сменится показанным на рис. 12.

Возле действующего режима выведена надпись “ok”, для выбора другого режима следует выделить нужную строку и нажать на кнопку SB3. Надпись “ok” переместится к выбранному пункту. Для возврата в главное меню выделите строку “Выход” и нажмите на кнопку SB3 или независимо от положения курсора нажмите на кнопку SB4.
“Режиму 1” соответствует изображение на рис. 10. При выборе “Режима 2” место показания спидометра и тахометра поменяются местами с соответствующим изменением размера цифр, а пиктограммы будут перенесены в другое место экрана (рис. 13).


Такой режим удобен для автомобилей, на щитке приборов которых нет тахометра. В “Режиме 3” (рис. 14) показания спидометра и тахометра на ЖКИ отсутствуют. Вместо них выводятся результаты работы одометров: суточного (обнуляемого), а ниже его — постоянного (не обнуляемого). Кнопка SB3 в этом режиме не действует. Такой режим подойдёт тем, кого устраивает работа установленных в автомобиле заводских спидометра и тахометра. “Режим 4” пока не реализован. При его выборе будет выведено сообщение об этом и установлен “Режим 1”.
“Замена масла“. Выбрав этот пункт, можно увидеть, сколько километров осталось проехать до плановой замены масла в двигателе автомобиля (рис. 15).

Строка “Следить ДА” означает, что после того как до замены останется меньше 2000 км, при каждом включении зажигания на ЖКИ в течение 2 с будет выводиться сообщение “Замена масла через: ХХХХ км”. Выключить эту функцию можно нажатием на кнопку SB3 при выделенной строке “Следить ДА”. Текст изменится на “Следить НЕТ”. Тем же способом включают выключенную функцию. Заменив масло, необходимо выделить строку “Заменили?” и нажать на кнопку SB3. БК попросит ещё раз подтвердить команду и только после этого начнёт новый обратный отсчёт пройденного после замены пути, начиная с 10000 км.

“Установка времени”. При выборе этого пункта экран ЖКИ имеет вид, показанный на рис. 16. Нажатия на кнопку SB3 изменяют значение выделенной на экране позиции. Например, в позиции часов значение меняется от 0 до 23. К следующим позициям переходят нажатиями на кнопку SB2. Установленные значения заносятся в память БК только после выбора пункта “Выход”. Если выключить зажигание, не сделав этого, они не будут сохранены.
“Калибровка”. На экран ЖКИ выводится подменю, изображённое на рис. 17.

Оно даёт возможность выполнить калибровку, регулировку и задать необходимые параметры различных аппаратных и программных блоков БК.
“Спидометр”. Для точной калибровки спидометра необходим спутниковый навигатор, с которым необходимо совершить поездку, наблюдая за значениями скорости, которые в один и тот же момент времени показывают навигатор и БК. Например, скорость по БК — 50 км/ч, а по навигатору — 75 км/ч. Составляем пропорцию:
50 – 75
15625 — X
Число 15625 (оно может быть и другим) берём из меню калибровки спидометра (рис. 18). Решаем пропорцию:
X=15625•75 и всё это делим на 50 = 23437,5
Полученное значение X округляем до целого (оно должно находиться в интервале 2000—35435) и, пользуясь пунктами “+100”, “-100”, “+10”, “-10”, заменяем им число 15625. Учтите, цифру в разряде единиц изменять нельзя, так что будет установлено 23435. Теперь выделяем пункт “Сохранить” и нажимаем на кнопку SB3. На экране появится надпись “Значение сохранено”. При необходимости выйти из меню калибровки спидометра, отменив сделанные изменения, выберите пункт “Выход”. После выполнения калибровки для проверки её точности рекомендуется сделать ещё одну контрольную поездку с навигатором.
Схема бортового компьютера изображена на рис. 2. Его основа – микроконтроллер ATmega64-16AUR (DD1), работающий с тактовой частотой 16 МГц, заданной кварцевым резонатором ZQ1. К разъему Х10 для программирования уже установленного на плату БК микроконтроллера подключают программатор.
Через трёхконтактный разъём Х1 бортовой компьютер питается от бортовой сети автомобиля, с корпусом которого соединяют контакт 1 разъёма. Контакт 2 подключают непосредственно к плюсовому зажиму аккумуляторной батареи. На контакт 3 подают напряжение +12 В после замка зажигания. Оно обозначено на схеме UACC и должно появляться только при повороте ключа зажигания в соответствующее положение.
С контакта 2 разъёма Х1 напряжение бортовой сети поступает на интегральный стабилизатор LM317S (DA1), резисторы R1 и R2 подбираются так, чтобы получить на выходе стабилизатора 5 В для питания всех узлов бортового компьютера, кроме ЖКИ HG1. Напряжение 3В для индикатора получено с помощью интегрального стабилизатора 78L03 (DA2).
Напряжение UACC через ограничитель из резистора R10 и стабилитрона VD2 поступает на вход PD3 микроконтроллера DD1. Если созданный ограничителем на этом входе высокий логический уровень отсутствует более минуты, микроконтроллер переходит в спящий режим с пониженным энергопотреблением. Работа БК (за исключением счёта времени) приостанавливается. С появлением этого уровня при повороте в соответствующее положение ключа зажигания микроконтроллер “проснётся” и БК заработает.
Напряжение UACC использовано также для питания подключаемого к разъёму Х4 датчика пути. Пригоден любой, формирующий от 600 до 27000 импульсов на километр. В процессе калибровки одометра и спидометра это число будет учтено автоматически. Можно использовать заводской установленный в коробке передач автомобиля датчик. С контактом 1 разъёма Х4 соединяют его общий (минусовый) провод, с контактом 2 — провод, на котором при движении формируются импульсы, число которых пропорционально пройденному пути, а с контактом 3 – – плюсовой провод питания датчика.

Если автомобиль оснащён ABS, можно воспользоваться датчиком, имеющимся в этой системе. Его выход соединяют с контактом 2 разъёма Х4 экранированным проводом (оплётку – с контактом 1 разъёма). К сожалению, на практике работа схемы бортового компьютера с таким датчиком не проверена, хотя согласно расчётам всё должно функционировать правильно.
Наконец, можно применить самодельный датчик пути, например, состоящий из четырёх—восьми постоянных магнитов, закреплённых по окружности на одной из полуосей автомобиля, и датчика Холла, реагирующего на их поочерёдное приближение при вращении полуоси.
Независимо от типа датчика его импульсы поступают на усилитель, собранный на транзисторе VT5, а усиленные – на вход PD0 микроконтроллера DD1.
“Одометр”. Его калибровка очень похожа на калибровку спидометра. Обнулив показания одометра нажатием на кнопку SB1, необходимо проехать по прямому маршруту известной длины, например, измеренной с помощью спутникового навигатора. Затем, выбрав в меню “Калибровка” пункт “Одометр”, получаем на ЖКИ изображение, подобное показанному на рис. 19. Здесь 6980 м — длина маршрута, измеренная БК, 326 — калибровочное число, которое должно находиться в интервале 5—9999. Зная точную длину маршрута, составляем пропорцию, подобную использованной при калибровке спидометра, учитывая, что увеличение калибровочного числа в данном случае уменьшает показания одометра БК, и наоборот. Решив пропорцию, находим новое значение калибровочного числа и вводим его, пользуясь пунктами “+10”, “-10”, “+1”, “-1”. Результат калибровки заносим в память БК, пользуясь пунктом “Сохранить”.
“Дат. света”. Для правильной регулировки датчиков освещённости следует дождаться вечера, чтобы она была такой, при которой уже нужно включить габаритные огни, но ещё рано включать фары. При выборе пункта “Дат. света” изображение на ЖКИ примет вид, показанный на рис. 20.
Строка “Упр. светом ДА” означает, что управление осветительными приборами по сигналам датчика освещённости начнёт действовать сразу после включения зажигания. При установке в этой строке слова “НЕТ” такое управление нормально выключено, но его можно включать и выключать нажатиями на кнопку SB4 “Свет” либо управлять освещением с помощью заводских выключателей.
Параметры “д1” и “д2” — текущие уровни сигналов датчиков (фотодиодов VD22 и VD23). Обратите внимание, что на индикатор выводятся шестнадцатеричные значения этих параметров, а также порогов включения габаритных огней и фар. Для установки порогов переходим нажатиями на кнопку SB2 в строку “Вкл. габарит”, а затем “Вкл. фар” и с помощью кнопки SB3 устанавливаем нужные значения. Обычно порог включения фар устанавливают на 3—7 единиц меньше порога включения габаритных огней.
Два датчика освещённости используются для уменьшения вероятности ложных срабатываний. Включение световых приборов произойдёт только при уровнях сигналов обоих датчиков ниже порога. Если необходимо, согласно требованиям ПДД, включать фары или дневные ходовые огни с началом движения независимо от внешней освещённости, это делается с помощью рассмотренной ниже функции “Включение дополнительных фар”. Пороги включения фар и габаритных огней по сигналам датчиков освещённости в таком случае нужно установить заведомо высокими, например 35 единиц.
“Дат. дождя”. Соответствующее этому пункту изображение на ЖКИ показано на рис. 21. Обратите внимание, что и здесь все числа — шестнадцатеричные. Верхняя строка позволяет включать и выключать датчик дождя. Во второй и третьей строках выведены значения уровней сигналов фотодиодов, измеренные при выключенных (off) и включённых (on) излучающих диодах. В четвёртой строке выведены значения разности уровней off и on для первой (VD8, VD10) и второй (VD9, VD11) пар диодов. В следующей строке задают пороговое значение разности (в данном случае 19), при превышении которого стеклоочиститель будет включён.
Регулировку датчика необходимо производить непосредственно на автомобиле. Делать это рекомендуется вечером или в пасмурную погоду, чтобы свести к минимуму влияние солнечного света. Прежде всего, подстроечными резисторами R46 и R47 устанавливают значения “off” в пределах 1—4 и равными для обеих пар. Затем подстроечными резисторами R28 и R29 устанавливают равные значения “on”. Если при изменении положения движка переменного резистора значение “on” не меняется, необходимо немного, буквально на доли градуса, изменить угол взаимного наклона диодов соответствующей пары. Разность значений “off” и “on” должна быть не менее 15 единиц.

Добившись этого, наносим на внешнюю поверхность лобового стекла с помощью шприца в чувствительных зонах пар диодов по капле воды. Значения разности должны уменьшиться на 5—7 единиц, но после вытирания стекла вернуться к исходным. Порог срабатывания рекомендуется установить равным или немного меньшим среднеарифметического значения разности, полученного для двух пар при наличии на стекле капель воды.
Если в дневное время значения “off” достигнут FF и их невозможно уменьшить подстроечными резисторами R46 и R47, между лобовым стеклом и датчиком прокладывают светопоглощающую плёнку, например, используемую для тонирования стёкол автомобиля. Регулировку датчика повторяют заново.
За несколько месяцев эксплуатации не наблюдалось ни одного ложного срабатывания датчика дождя, программа отслеживает и корректирует его работу, если это возможно, а если нет — датчик на некоторое время отключается.
“Уст. одом.”. Этот пункт относится к постоянному (необнуляемому) одометру, подсчитывающему суммарный пробег автомобиля. Он доступен только при первых двадцати включениях БК. Здесь можно установить начальное значение показаний одометра с тем, чтобы он продолжил подсчёт пробега, начатый ранее имевшимся на автомобиле прибором. Экран ЖКИ принимает вид, показанный на рис. 22. Нажатиями на кнопку SB2 перемещают выделение от цифры к цифре, а с помощью кнопки SB3 выделенную цифру меняют в интервале 0—9. Это даёт возможность задать любое начальное значение, вплоть до 999999 км. Когда пробег набран, переходим к пункту “Сохранить”, нажимаем на кнопку SB3 (Выбор), и, если всё набрано правильно, на экране появится надпись “Значение сохранено”. Пункт остаётся доступным для внесения изменений, пока БК не насчитает 20 включений.
“Остальное“. Это последний пункт главного меню. При его выборе на ЖКИ выводится подменю, изображённое на рис. 23.
В строке “Ст. спидом.“ может быть включён или выключен стрелочный спидометр. Чтобы пользоваться таким спидометром, его нужно предварительно откалибровать, выбрав при активированном стрелочном спидометре пункт “Спидометр” меню “Калибровка”. При этом в изображении на ЖКИ, в отличие от ранее рассмотренного (см. рис. 18), появится новая строка “Стрелка=80” (рис. 24), а стрелка спидометра плавно отклонится до положения, соответствующего скорости 80 км/ч.
С помощью подстроенного резистора R21 её нужно установить точно на соответствующее деление шкалы. Далее следует выделить строку “Стрелка=80” и нажать на кнопку SB3. Значение скорости начнёт плавно увеличиваться до 120 км/ч и плавно уменьшаться до нуля. Стрелка спидометра станет следовать за ним. Затем цикл будет повторяться. Это позволит проверить правильность и точность работы стрелочного спидометра.
В строке “Дат. дождя ” включают и выключают управление стеклоочистителем от датчика дождя, а в строке “Упр. дворн.” — управление стеклоочистителем с помощью кнопки SB5. Можно выбрать первый или второй способ управления либо вообще запретить БК управлять стеклоочистителем.
При выборе строки “Статистика” на ЖКИ выводится информация о времени работы двигателя и времени в пути в часах и минутах (рис. 25). Обнулить её можно двумя способами: выбрав соответствующий пункт меню или длительным (более 3 с) нажатием на кнопку SB1. В последнем случае произойдёт обнуление и статистики, и одометра.
Строка “Доп. свет“ позволяет включить или выключить управление дневными ходовыми огнями. Если в ней имеется надпись “ok”, эта функция активна. Огни будут включены сразу после начала движения независимо от погодных условий и времени суток и выключены при остановке двигателя.
Все установленные параметры, результаты работы одометров и статистика хранятся в энергонезависимой памяти микроконтроллера и сохраняются при отключении питания.

Согласно заложенному в программу микроконтроллера алгоритму сразу после поворота ключа зажигания БК начинает работать, отображая на ЖКИ информацию согласно выбранному режиму. Если функция предупреждения о необходимости замены масла включена и до неё осталось проехать менее 2000 км, будет выведено соответствующее сообщение, а спустя 2 с БК вернётся в рабочий режим. После запуска двигателя тахометр отобразит частоту вращения коленчатого вала, а как только автомобиль начнёт движение, спидометр покажет его текущую скорость.
Когда наступят сумерки и БК автоматически включит габаритные огни, на ЖКИ появится их пиктограмма. Когда же станет совсем темно и включится ближний свет фар, пиктограмма примет вид включённой фары.
Если зажигание включено в тёмное время суток, то габаритные огни включатся немедленно, а ближний свет — с началом движения автомобиля. На рассвете первыми будут выключены фары, а затем габаритные огни. Эти огни, а при необходимости и фары включатся и при въезде в тёмный туннель. Если в ночное время автомобиль более 5 мин остаётся неподвижным, фары будут выключены, а габаритные огни останутся включёнными. Фары включатся, как только автомобиль начнёт движение. Можно принудительно выключить габаритные огни и фары, нажав на кнопку SB4. Повторное нажатие на неё вернёт БК управление освещением. Поскольку установленный на заводе переключатель освещения остаётся на своём месте, можно воспользоваться и им.
Там, где правила дорожного движения требуют во время движения включать освещение независимо от времени суток, можно воспользоваться соответствующей функцией. Когда она активна, трогание автомобиля с места при заведённом двигателе приведет к включению дневных ходовых огней. Они выключатся, как только двигатель будет заглушен.
Если включено управление стеклоочистителем по датчику дождя, то он заработает, как только на лобовом стекле в зоне действия датчика появятся дождевые капли. Скорость работы стеклоочистителя выбирается автоматически в зависимости от интенсивности дождя и от скорости движения автомобиля. Принудительно выключить стеклоочиститель можно нажатием на кнопку SB5, а её повторное нажатие вновь включит управление по сигналам датчика. Включить стеклоочиститель и смыватель лобового стекла вручную можно с помощью штатного переключателя.
Если в меню “НАСТРОЙКА” задано управление стеклоочистителем кнопкой SB5, то первое нажатие на неё включит работу стеклоочистителя с паузами, продолжительность которых зависит от скорости движения автомобиля. Повторное нажатие включит непрерывную работу стеклоочистителя с малой скоростью, третье — включит высокую скорость, а четвёртое — выключит. Прекратить работу стеклоочистителя, независимо от выбранного режима, можно длительным (более 5 с) нажатием на кнопку SB5. Все режимы работы стеклоочистителя отображаются пиктограммами на ЖКИ.
Если напряжение бортовой сети автомобиля вышло за допустимые пределы, на ЖКИ появятся пиктограмма аккумулятора и описание проблемы, трижды прозвучит звуковой сигнал и столько же раз замигает подсветка ЖКИ. Затем БК вернётся в обычный режим работы. Когда температура за бортом автомобиля близка к нулевой, на ЖКИ появляется пиктограмма “Скользкая дорога” и надпись “Внимание! Возможен гололёд”. Заблокировать эти предупреждения нельзя.
БК постоянно контролирует состояние дверей, капота и багажника. Как только будет открыта хотя бы одна дверь, капот или багажник, на ЖКИ появится рисунок, отображающий их состояние (рис. 26). Возвращение в рабочий режим произойдёт, когда всё будет закрыто, или после нажатия на кнопку SB3.
После поворота ключа зажигания в положение “OFF” фары габаритные огни и стеклоочиститель (если они были включены) выключатся мгновенно, а сам БК — приблизительно через минуту. Если после поворота ключа остались открытыми дверь, капот или багажник, БК не выключится, отображая их состояние, пока всё не будет закрыто.
