Меню

Схема бортового компьютера для автомобиля

Модернизация бортового компьютера на ATmega8

После публикации статьи Бортовой компьютер (часы, двухканальный термометр, вольтметр на 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». Описание внутри архива.

Читайте также:  Вилка сцепления газ 31105 406 двигатель

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

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

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

Схема бортового компьютера для автомобиля

Бортовой компьютер для автомобиля ВАЗ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 по сравнению с изначально задуманными.

Итак, на момент написания статьи, функционал получился следующий.

  1. Показ времени (RTC в МК есть, почему бы не использовать).
  2. Измерение температуры в салоне и на улице (датчики DS18b20, невероятно удобная штуковина в плане подключения).
  3. Связь с ЭБУ через K-Line и получение таких параметров, как: Напряжение, Расход топлива (путевой/часовой), Температура двигателя, Обороты, Скорость движения, Массовый расход воздуха, Цикловой расход воздуха, Положение дроссельной заслонки, Длительность импульса впрыска, Положение регулятора холостого хода. Чтение и сброс ошибок.
  4. Слежение за уровнем охлаждающей жидкости и уровнем масла в двигателе, с выдачей звукового и визуального уведомления (раз уж есть датчики, то почему бы их не задействовать).
  5. Напоминание о замене масляного и воздушного фильтров.
  6. Управление фарами и ДХО в зависимости от уровня освещенности с настройкой уровня срабатывания.
  7. Показ максимального/минимального/среднего уровня таких параметров, как: часовой расход топлива, скорость за поездку, напряжение в бортовой сети, температура за бортом. А также вывод примерных графиков данных величин.
  8. Сохранение параметров и ошибок, полученных с ЭБУ, на SD карту в *.txt файл.
  9. Ведение статистики поездки (время, расстояние, количество израсходованного топлива, расход на 100км.).
  10. Управление освещением салона. У родного блока управления была такая функция, вот и сюда встроил.
Читайте также:  Тест драйв со стиллавиным 2021 года

Внешний вид всего устройства представлен на рисунке:

Конструктивно оно состоит из 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. Может еще чего придумаю. Пока на этом у меня все =)

Adblock
detector