Бортовой компьютер для ВАЗ на ATmega8 с цветным дисплеем
С приходом в жизнь автолюбителей инжектора и его окончательной победе над карбюратором, появилась необходимость в «его» периодической диагностике. Поскольку стоимость диагностики отечественной машины варьируется от 300 до 500 руб., а квалификация диагноста порой вызывает сильные сомнения, то практически каждому автолюбителю зачастую приходится вникать в суть проблемы (неисправности) самостоятельно. И как минимум без специального адаптера и компьютера тут не обойтись. А если неисправность возникла где-то в пути и вдали от города? Поэтому порой просто необходимо иметь под рукой эдакий «миникомпьютер», который всегда будет в автомобиле и сможет помочь в пути.
Сам я являюсь обладателем автомобиля ВАЗ 11183 (Калина), поэтому далее повествование пойдет о бортовом компьютере для Калины. А в конце будет несколько слов про бортовой компьютер для ВАЗ 2115.
Цены на подобные устройства, мягко говоря, не очень радуют. Самый простой компьютер-кнопка для отображения каких-никаких кодов категорически не устраивает. Ввиду его убогости. Стоимость таких около 600-700 руб. Ну а что-то посерьёзней, с дисплеем, уже порядка 1800-2000 руб. Ну и самые дорогие модели приблизительно по 5000 руб. Поэтому было принято решение собрать бортовой компьютер для себя и с целью экономии денежных средств и с целью саморазвития.
Что я хотел видеть: параметры в режиме реального времени, текущие ошибки и возможность их сбросить. Замер времени разгона 0-100 км/ч (появилось позднее, так. побаловаться. )
Начался поиск информации. Поиск по интернету дал ответы на некоторые вопросы, но до остального пришлось доходить самому.
Итак: обмен информацией между Электронным Блоком Управления (ЭБУ) и Бортовым Компьютером (БК) происходит при помощи интерфейса K-Line. При этом используются различные протоколы. Вот с этим то как раз и возникает первая трудность. Где взять описание протокола? Мне повезло, я нашел в сети единственное описание протокола для ЭБУ Январь 5. На моей машине 2006 г.в. стоит ЭБУ Январь 7.2+. Подключившись к диагностической линии и запустив программу диагностики, я увидел, что запросы и расшифровка ответов ЭБУ полностью совпадают с найденным описанием. Дело сдвинулось.
Я думаю многие задавались вопросом, зачем вообще используется какой то там адаптер для подключения к машине. Отвечаю: адаптер представляет из себя преобразователь уровней. В стандартном COM порте (он же интерфейс RS-232) логическая единица это -12 вольт, логический 0 это +12 вольт. В K-линии логическая единица это +12 вольт, а логический ноль это 0 вольт. Т.е. размах сигнала 0-12 вольт против «-12» — «+12» у RS232. К тому же разница не только в уровнях, RS-232 имеет 2 сигнальные линии RxD и TxD, а K-Line одну двунаправленную. Итак:
Вариант №1. Калина. Кнопочное управление компьютером
Я использовал:
1. Микроконтроллер фирмы Atmel: Atmega8
2. Дисплей от сотового телефона Siemens S65
3. Обвязка. питание, резисторы, конденсаторы и другая мелочевка.
4. Преобразование уровней на сдвоенном компараторе LM293. Просто и доступно.
Питание. Тут всё просто. LM317 формирует стабилизированный ток 20 мА для светодиодов подсветки дисплея. LM7805 стабилизирует напряжение для питания микроконтроллера. Защитный диод 1N6281 рассчитанный на 27 вольт спасет от возможных всплесков напряжения.
При отладке можно использовать +12 вольт с 16-го пина колодки OBD2. А при постоянной работе напряжение на БК должно подаваться при каждом включении зажигания. Т.е. необходимо протянуть провод от замка зажигания к БК.
Ну и сама радиосхема:
Тут есть маленькая тонкость. Чтобы продлить срок службы дисплея необходимо перед отключением питания отправить в дисплей определенную последовательность команд. Транзистор на схеме в нормальном режиме работы придавливает вывод контроллера к нулю. Вывод настроен как вход с подтяжкой. Как только напряжение пропадет, на выводе появится логическая единица. Энергии накопленной конденсатором 470 мкФ хватит на то чтобы микроконтроллер успел отправить команду выключения в дисплей. Диод 1N5818 не даст разряжаться конденсатору в «сеть», а так же защищает от переплюсовки при подключении питания.
Прошивка для микроконтроллера написана в среде CodeVisionAVR 2.05 на языке Cи.
Описание протокола есть в приложенных к статье материалах. Кратко пробежимся по основным моментам. Чтобы начать диагностику, нам надо отправить в ЭБУ запрос startCommunication:
Запрос startCommunication:
81 10 F1 81 03
Ответ:
83 F1 10 C1 6B 8F 3F
В ответе C1 означает, что ЭБУ готов с нами работать (на связи).
После этого мы можем запросить у него параметры, отправив запрос:
82 10 F1 21 01 A5
ЭБУ моей машины отвечает:
80 F1 10 26 61 01 3B 90 41 04 00 00 00 00 47 80 00 00 00 52 52 80 18 00 8E 00 5C 00 00 00 00 00 00 00 00 00 FF FF DD A4 47 02 CE
Расшифровка (пример):
61 — Положительный ответ readDataByLocalIdentifier
01 — afterSalesServiceRecordLocalIdentifier (что то там. )
.
11-й байт — Температура охлаждающей жидкости
.
Формула для расчета: N=E-40 °C
E — передаваемое значение
N — физическая величина
У меня это значение 47. Берем windows калькулятор. Переводим 47 hex в dec. Получаем 71. Дальше 71-40=31°C. На момент снятия данных машина постояла на улице. До конца не остыла.
И так далее… со всеми остальными параметрами.
Запрос ошибок readDTCByStatus:
84 10 F1 18 00 00 00 9D
ЭБУ моей машины отвечает:
88 F1 10 58 02 04 43 E0 14 26 E0 24
P0443 — всё верно, 2 ошибки у меня сейчас.
P1426
Самое сладкое, сброс ошибок clearDiagnosticInformation:
83 10 f1 14 00 00 98
Запрос значений АЦП:
82 10 F1 21 03 A7
Из АЦП взял напряжение на датчике кислорода и на датчике массового расхода. Хотя необходимость этого пункта под сомнением. Думаю вообще убрать. Всё остальное есть в описании.
Плата разведена на одностороннем фольгированном текстолите. Дисплей приклеен при помощи клея «секунда». Защитное стекло для дисплея сделал из коробки от компакт диска. На самоклеящейся бумаге распечатал лицевую часть (черную), наклеил на пластик, совместил, приклеил к плате. Чтобы под стекло не набивалась пыль, промазал обычным герметиком. Доработал напильником посадочное место в ящике для мелочей и просто вставил туда БК. Подключил питание и диагностическую линию. Левая кнопка смена режимов отображения, правая сброс ошибок (в режиме сброса ошибок) и сброс времени разгона на ноль (в режиме замера времени). На плате имеется место для памяти 24LC512. Но она не использовалась (не хватило flash памяти МК на реализацию). Фьюзы МК выставлены на работу от внешнего кварца.
По себестоимости получилось порядка 450 руб
Вариант №2. ВАЗ 2115. Тачскрин
Далее был изготовлен компьютер под панель ВАЗ 2115. Элементная база остается та же. Только добавляется тачскрин от телефона Sony-Ericsson G900. Цена тачскрина 35 руб. Ну и естественно меняется прошивка. Были небольшие проблемы при калибровке экрана. Хотел сначала ввести алгоритм калибровки по 4-м точкам. Добавить соответствующий пункт в меню. Но, почитав и посмотрев алгоритмы на англоязычных сайтах (под Андройд и прочее), понял, что это довольно сложно и в моём случае не нужно. Просто записываем значения АЦП по 2-м точкам, сопоставляем координаты и через уравнение прямой по 2-м точкам находим промежуточные значения нажатия. У меня получилось:
x = 232 — 0.276*ADC
y = 0.25*ADC — 67.5
Печатная плата претерпела существенные изменения. Теперь используется микроконтроллер ATMega16A.
При помощи ножа, напильника и шпатлевки по пластику тачскрин был вмонтирован в панель, которую потом обтянул карбоновой пленкой.
По началу прикупил стилус, но потом оказалось что проще «тыкать» пальцем в экран. Залапывается он конечно. Но не более чем на телефонах с сенсорным экраном.
Для повторения рекомендую вариант с тачскрином. Его можно использовать как под Калину, так и под Пятнашку. На этом всё.
Модернизация бортового компьютера на atmega8
Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y
Работоспособность сайта проверена в браузерах:
IE8.0, Opera 9.0, Netscape Navigator 7.0, Mozilla Firefox 5.0
Адаптирован для работы при разрешениях экрана от 1280х1024 и выше.
При меньших разрешениях возможно появление горизонтальной прокрутки.
По всем вопросам обращайтесь к Коту: kot@radiokot.ru
©2005-2022
Подбор МК для бортового компьютера
Привествую уважаемых спецов. Прошу совета по подбору МК для бортового компьютера, так как еще пока не заю всех тонкостей этого дела.Вопрос скорее организационный, схему скомпоную и прогрмму напишу сам.
Собственно исходные данные
Вывод информации на графический 12864 или символьный 2004
Функции:
тахометр по сигналу с прерывателя (вывод на дисплей) 1 пин
спидометр по сигналу прерывания от оптопары (вывод на дисплей) 1 пин
время и дата с DS1307 (2 пина данные и 2 кнопки)(вывод на дисплей) 4 пина
ФУОЗ на 2 канала с выходом на катушку(2вх и 2 вых)(вывод через ключи) 4 пина
Напряжение бортовой сети (вход на АЦП 1 пин) (вывод на дисплей) 1 пин
ТЕмпература двигателя от датчика вывод на дисплей
В наличии есть PIC16F877, ATmel AT 49F020,89C51,89c8253, ATmega8(наверное не хватит пинов)
Какой МК нужно взять чтоб он с шустрым кварцем это все быстро обрабатывал?
прикладываю примерную схему для понимания картины, резисторы, транзисторы и т.д взято без подбора, для часов просто отделено 4 пина.
за ошибки просьба сильно не пинать, но если по делу то можно
Спасибо)
Симулятор бортового компьютера машины
Добрый день, по заданию нужно сделать бортовой компьютер машины. Хотелось бы в поле мемо загнать.
Подбор комплектующих для офисного компьютера
Всем привет! Необходимо в офис собрать компьютер общей ценой(без учета лицензии на ОС) не более.
Подбор конфигурации компьютера для сборки.
Здравствуйте. Подбираю конфигурацию компьютера для сборки. Я в этом новичек, поэтому вопрос в.
Подбор компьютера для игры WOW
Компьютер для игр. Вернее сказать только одной — World of Warcraft. Просьба высказать Ваше мнение.
Модернизация бортового компьютера на atmega8
Радиолюбители, электроника — ПАЯЛЬНИК запись закреплена
Модернизация бортового компьютера на ATmega8
После публикации статьи Бортовой компьютер (часы, двухканальный термометр, вольтметр на ATmega8 и LCD 16х2) прошел уже почти год, и за это время я получил много писем с просьбами изменить прошивку под нужды пользователей. Я решил добавить в схему устройства кнопки, организовать меню с настройками, чтобы каждый мог настроить БК под себя.
Модернизация бортового компьютера на atmega8
С приходом в жизнь автолюбителей инжектора и его окончательной победе над карбюратором, появилась необходимость в «его» периодической диагностике. Поскольку стоимость диагностики отечественной машины варьируется от 300 до 500 руб., а квалификация диагноста порой вызывает сильные сомнения, то практически каждому автолюбителю зачастую приходится вникать в суть проблемы (неисправности) самостоятельно. И как минимум без специального адаптера и компьютера тут не обойтись. А если неисправность возникла где-то в пути и вдали от города? Поэтому порой просто необходимо иметь под рукой эдакий «миникомпьютер», который всегда будет в автомобиле и сможет помочь в пути.
Сам я являюсь обладателем автомобиля ВАЗ 11183 (Калина), поэтому далее повествование пойдет о бортовом компьютере для Калины. А в конце будет несколько слов про бортовой компьютер для ВАЗ 2115.
Цены на подобные устройства, мягко говоря, не очень радуют. Самый простой компьютер-кнопка для отображения каких-никаких кодов категорически не устраивает. Ввиду его убогости. Стоимость таких около 600-700 руб. Ну а что-то посерьёзней, с дисплеем, уже порядка 1800-2000 руб. Ну и самые дорогие модели приблизительно по 5000 руб. Поэтому было принято решение собрать бортовой компьютер для себя и с целью экономии денежных средств и с целью саморазвития.
Что я хотел видеть: параметры в режиме реального времени, текущие ошибки и возможность их сбросить. Замер времени разгона 0-100 км/ч (появилось позднее, так. побаловаться. )
Начался поиск информации. Поиск по интернету дал ответы на некоторые вопросы, но до остального пришлось доходить самому.
Итак: обмен информацией между Электронным Блоком Управления (ЭБУ) и Бортовым Компьютером (БК) происходит при помощи интерфейса K-Line. При этом используются различные протоколы. Вот с этим то как раз и возникает первая трудность. Где взять описание протокола? Мне повезло, я нашел в сети единственное описание протокола для ЭБУ Январь 5. На моей машине 2006 г.в. стоит ЭБУ Январь 7.2+. Подключившись к диагностической линии и запустив программу диагностики, я увидел, что запросы и расшифровка ответов ЭБУ полностью совпадают с найденным описанием. Дело сдвинулось.
Я думаю многие задавались вопросом, зачем вообще используется какой то там адаптер для подключения к машине. Отвечаю: адаптер представляет из себя преобразователь уровней. В стандартном COM порте (он же интерфейс RS-232) логическая единица это -12 вольт, логический 0 это +12 вольт. В K-линии логическая единица это +12 вольт, а логический ноль это 0 вольт. Т.е. размах сигнала 0-12 вольт против «-12» — «+12» у RS232. К тому же разница не только в уровнях, RS-232 имеет 2 сигнальные линии RxD и TxD, а K-Line одну двунаправленную. Итак:
Вариант №1. Калина. Кнопочное управление компьютером
Я использовал:
1. Микроконтроллер фирмы Atmel: Atmega8
2. Дисплей от сотового телефона Siemens S65
3. Обвязка. питание, резисторы, конденсаторы и другая мелочевка.
4. Преобразование уровней на сдвоенном компараторе LM293. Просто и доступно.
Питание. Тут всё просто. LM317 формирует стабилизированный ток 20 мА для светодиодов подсветки дисплея. LM7805 стабилизирует напряжение для питания микроконтроллера. Защитный диод 1N6281 рассчитанный на 27 вольт спасет от возможных всплесков напряжения.
При отладке можно использовать +12 вольт с 16-го пина колодки OBD2. А при постоянной работе напряжение на БК должно подаваться при каждом включении зажигания. Т.е. необходимо протянуть провод от замка зажигания к БК.
Ну и сама радиосхема:
Тут есть маленькая тонкость. Чтобы продлить срок службы дисплея необходимо перед отключением питания отправить в дисплей определенную последовательность команд. Транзистор на схеме в нормальном режиме работы придавливает вывод контроллера к нулю. Вывод настроен как вход с подтяжкой. Как только напряжение пропадет, на выводе появится логическая единица. Энергии накопленной конденсатором 470 мкФ хватит на то чтобы микроконтроллер успел отправить команду выключения в дисплей. Диод 1N5818 не даст разряжаться конденсатору в «сеть», а так же защищает от переплюсовки при подключении питания.
Прошивка для микроконтроллера написана в среде CodeVisionAVR 2.05 на языке Cи.
Описание протокола есть в приложенных к статье материалах. Кратко пробежимся по основным моментам. Чтобы начать диагностику, нам надо отправить в ЭБУ запрос startCommunication:
Запрос startCommunication:
81 10 F1 81 03
Ответ:
83 F1 10 C1 6B 8F 3F
В ответе C1 означает, что ЭБУ готов с нами работать (на связи).
После этого мы можем запросить у него параметры, отправив запрос:
82 10 F1 21 01 A5
ЭБУ моей машины отвечает:
80 F1 10 26 61 01 3B 90 41 04 00 00 00 00 47 80 00 00 00 52 52 80 18 00 8E 00 5C 00 00 00 00 00 00 00 00 00 FF FF DD A4 47 02 CE
Расшифровка (пример):
61 — Положительный ответ readDataByLocalIdentifier
01 — afterSalesServiceRecordLocalIdentifier (что то там. )
.
11-й байт — Температура охлаждающей жидкости
.
Формула для расчета: N=E-40 °C
E — передаваемое значение
N — физическая величина
У меня это значение 47. Берем windows калькулятор. Переводим 47 hex в dec. Получаем 71. Дальше 71-40=31°C. На момент снятия данных машина постояла на улице. До конца не остыла.
И так далее… со всеми остальными параметрами.
Запрос ошибок readDTCByStatus:
84 10 F1 18 00 00 00 9D
ЭБУ моей машины отвечает:
88 F1 10 58 02 04 43 E0 14 26 E0 24
P0443 — всё верно, 2 ошибки у меня сейчас.
P1426
Самое сладкое, сброс ошибок clearDiagnosticInformation:
83 10 f1 14 00 00 98
Запрос значений АЦП:
82 10 F1 21 03 A7
Из АЦП взял напряжение на датчике кислорода и на датчике массового расхода. Хотя необходимость этого пункта под сомнением. Думаю вообще убрать. Всё остальное есть в описании.
Плата разведена на одностороннем фольгированном текстолите. Дисплей приклеен при помощи клея «секунда». Защитное стекло для дисплея сделал из коробки от компакт диска. На самоклеящейся бумаге распечатал лицевую часть (черную), наклеил на пластик, совместил, приклеил к плате. Чтобы под стекло не набивалась пыль, промазал обычным герметиком. Доработал напильником посадочное место в ящике для мелочей и просто вставил туда БК. Подключил питание и диагностическую линию. Левая кнопка смена режимов отображения, правая сброс ошибок (в режиме сброса ошибок) и сброс времени разгона на ноль (в режиме замера времени). На плате имеется место для памяти 24LC512. Но она не использовалась (не хватило flash памяти МК на реализацию). Фьюзы МК выставлены на работу от внешнего кварца.
По себестоимости получилось порядка 450 руб
Вариант №2. ВАЗ 2115. Тачскрин
Далее был изготовлен компьютер под панель ВАЗ 2115. Элементная база остается та же. Только добавляется тачскрин от телефона Sony-Ericsson G900. Цена тачскрина 35 руб. Ну и естественно меняется прошивка. Были небольшие проблемы при калибровке экрана. Хотел сначала ввести алгоритм калибровки по 4-м точкам. Добавить соответствующий пункт в меню. Но, почитав и посмотрев алгоритмы на англоязычных сайтах (под Андройд и прочее), понял, что это довольно сложно и в моём случае не нужно. Просто записываем значения АЦП по 2-м точкам, сопоставляем координаты и через уравнение прямой по 2-м точкам находим промежуточные значения нажатия. У меня получилось:
x = 232 — 0.276*ADC
y = 0.25*ADC — 67.5
Печатная плата претерпела существенные изменения. Теперь используется микроконтроллер ATMega16A.
При помощи ножа, напильника и шпатлевки по пластику тачскрин был вмонтирован в панель, которую потом обтянул карбоновой пленкой.
По началу прикупил стилус, но потом оказалось что проще «тыкать» пальцем в экран. Залапывается он конечно. Но не более чем на телефонах с сенсорным экраном.
Для повторения рекомендую вариант с тачскрином. Его можно использовать как под Калину, так и под Пятнашку. На этом всё.
Первый запуск после сборки:
Корпус пилил из оргстекла, дисплей с тачскрином прикрепил на плату как мне кажется очень удачным способом.
Тач посадил на дисплей с помощью двухстороннего скотча.
Ранее я собирал осциллограф на LS020 и меге32, корпус красил краской из баллончика, в 3-4 слоя, а потом еще лаком крыл в 3 слоя. получился очень глубокий и насыщенный цвет.
В этот раз заморачиваться баллончиками не хотелось, да и краски под рукой не было. Решил пока обклеить виниловой пленкой, «самоклейкой».