Arduino&микроконтроллеры
Всевозможные электронные девайсы значительно способны облегчить контроль за вождением, увеличить безопасность и комфорт. Иногда просто изменить внешний вид внутри и снаружи автомобиля к лучшему. Однако подобные доработки и апгрейд требуют определенных навыков и умений. Именно такую полезную и нужную информацию для автолюбителей и можно будет найти в этой категории сайта. Здесь будет рассказано об электронных поделках на платформе Ардуино и отдельных микроконтроллерах.
В своих статьях о микроконтроллерах, а вернее о их работе и работе с ними, я уже не раз реализовывал несколько интересных проектов на таких «букашках» как Attiny 13. Все их вполне можно применить для использования на машине, на что и были изначально ориентированы все замыслы и поделки.
В этот же раз речь пойдет также о весьма прагматичном, а самое главное о совершенно новом в плане реализации и алгоритме работы проекте, о работе микроконтроллера в режиме АЦП. Сейчас я буквально пару слов расскажу о том, что же такое АЦП и как я его собрался применять. . и да, конечно же для чего я его собрался применять.
Ардуино проекты для автомобиля
Ардуино отлично подходит для исполнения автомобильных проектов. В этой статье попытаюсь раскрыть тему применения ардуино на гражданских автомобилях. Посмотрим, что за проекты ардуино для автомобиля можно собрать своими силами.
Первым делом нужно определиться с платой Ардуино, которая отлично подойдет для эксплуатации в авто. На мой взгляд, лучший выбор – это Arduino Pro Mini. Ее размеры позволят спрятать прибор в самых укромных местах. Производительности платы хватит для реализации большого множества проектов.
Вот некоторые проекты ардуино для автомобиля:
— прибор для диагностики;
— измерительные приборы: от напряжения бортсети, до спидометра;
— датчик дождя лобового стекла;
— управление светодиодной подсветкой салона;
— климат контроль ардуино;
Это лишь небольшой список проектов ардуино для автомобиля, которые при желании можно реализовать своими силами. Хотелось бы отметить, что Ардуино – это один из немногих микроконтроллеров способный предоставить возможность реализовать вышеперечисленные ардуино проекты для автомобиля, без глубоких знаний микроконтроллерной техники, электроники и программирования.
Если все-таки решитесь на реализацию подобных проектов, то следую начать непосредственно с самых легких: измерение напряжения бортовой сети. А к таким мощным проектам, как сигнализация подходить с особой настороженностью и только в ознакомительных целях. Все-таки сигнализации разработанные специализированными фирмами с многолетним опытом разработки, гораздо надежнее поделок самоучек.
UnoArduSim: симулятор для изучения программирования плат Arduino
Arduino Uno – одна из самых популярных в настоящее время микроконтроллерных плат, поддерживаемая очень большим сообществом разработчиков. Стоимость и простота использования делают платы Arduino привлекательным вариантом для создания простых электронных проектов своими руками (DIY). Но как быть, если платы Arduino … Читать далее →
Бортовой компьютер
Чесались руки сделать что-то для свежекупленного автомобиля, остановился на полезной вещи – бортовой компьютер. Автомобиль Nissan Almera N15 1.6SR, двигатель GA16DE. Лепил из того что было, и хотелось поскорее, так что за конструкторскую проработку не пинайте.
В передней панели, под магнитолой имеется небольшое углубление, для хранения всякой мелочи, я решил в нем разместить БК.
Место не самое удобное для бардачка и для БК, но ничего более подходящего не нашел. Корпус БК – сам бардачок, передняя панель – кусок обычного фольгированного текстолита с наклеенной черной пластиковой самоклеящейся пленкой (такой холодильники обклеивают).
После перелопачивания определенного количества материала на тему БК, пришел к выводу, что самый правильный подход реализован вот тут http://multi-set.ru/. Только дисплей все же у них слишком аскетичный. Поэтому и решил делать БК в том же русле, весь теоретический материал есть на их сайте. Брать поток данных с БУ двигателя не хотелось, т.к. в нем не все есть, что надо, и это привязывает БК к конкретной марке автомобиля. Перегружать БК огромным количеством функций тоже считаю не нужным, только то, что нужно мне, но одновременно. С другой стороны исходники открыты и хорошо комментированы, ног свободных в контроллере много – дописывайте сами все что хотите. (Извините за работу со знакогенератором индикатора через ж, вверх ногами ставил дисплей, для лучших углов видимости сверху).
Кнопка, индикатор и его подсветка размещены на передней панели. Печатная плата под устройство не разрабатывалась, все спаяно на обычной макетке. Дополнительное гнездо прикуривателя с огромным конденсатором – не силовое, а для питания, чтобы при старте двигателя не перезагружался FM-MP3-трансмиттер, или навигатор.
Уличный термодатчик лучше всего выносить внутрь бокового зеркала, но тащить провода в дверь очень неудобно. У меня он расположен в самой левой передней части бампера, достаточно низко, подальше от противотуманки и радиаторов. Непосредственно на ножках датчика припаяны конденсаторы по 0.1 мкф. Необходимо обеспечить герметичность датчика термоусадкой, эпоксидкой или другим способом. Внутренний термодатчик расположен прямо на передней панели. Можно попытаться найти для него лучшее место, но меня устраивает и так.
МК PIC18F258 или PIC18F252 в DIP корпусе, установлен в панельке. Термодатчик TMP36 – заменим на микрочиповский MCP9700. MCP1525 – источник опорного напряжения +2.5 В, заменим на TL431 + резистор 680 Ом к +3.3 В. Индикатор TIC-120 и LED подсветку к нему TB1084 можно купить в Тритоне или Гамме, там же можно купить МК, опорник и термодатчик. Можно использовать и другие индикаторы 64х32 точки на контроллере PCF8531. LP2950-3.3 – стабилизатор питания на 3.3 В, можно применить LM1117-3.3, или какой-нибудь регулируемый. Хотя, по большому счету, тут надо использовать специализированый стабилизатор для автомобильного применения. На все детальки даташиты без труда можно найти гуглем. Дополнительный прикуриватель – от какой-то нашемарки.
Подключение. Все подписано на схеме, добавлю только, по цепи «+12v»ON»3» – провод, на котором появляется +12 В только при 3 положении ключа зажигания. Все цепи не силовые, и по автомобильным меркам ничего не потребляют, кроме цепи «Масса» и «+12V Accu», их нужно подключить толстым проводом. К форсунке в автомобиле подходят два провода: +12 В и сигнальный, к БК нужно подключить сигнальный.
Внешний вид экрана (в дежурном режиме и при включенном зажигании):
На первой строке отображается температура в салоне автомобиля (символ «мордочка») и на улице («солнышко»).
На второй строке отображается скорость вращения двигателя (обороты в минуту) и разница в процентах от скорости вращения, которое было запомнено по длительному нажатию кнопки.
Коротким нажатием на кнопку сбрасывается счетчик израсходованного топлива. Одновременно с ним можно сбросить штатный счетчик километража, тогда можно будет видеть количество топлива потраченного в пути.
На третьей строке отображается мгновенный расход топлива – это скорость расходования топлива при текущем положении педали газа в текущем режиме работы двигателя. Т.е. количество топлива проходящее через инжектор за единицу времени, в пересчете к литрам в час. Сначала был сделан еще и прогресбар этой величины, (графическое отображение) но пришел к выводу, что это интересно только первые дни использования БК.
В дежурном режиме, и первые 10 секунд после старта на месте мгновенного расхода отображается напряжение бортсети автомобиля. Остальное время оно в общем не нужно, если не будет заряда при работе двигателя – загорится сигнальная лампа на приборной панели.
Длительным нажатием на кнопку, текущее значение параметра «F» принимается за 0% и запоминается. Параметр «F» – это усредненное значение времени на которое открывается форсунка за один цикл работы двигателя.
На четвертой строке отображается количество израсходованного топлива и параметр «dF».
Блок управления двигателем во время работы на основе сигнала с датчика кислорода (лямда-зонда) непрерывно корректирует время, в течении которого открыта форсунка. Параметр «dF» – это разница(разброс) между максимальным и минимальным значением времени на которое блок управления открывает форсунку в течении 10 циклов работы двигателя. Параметр «dF» отображается в микросекундах. Его увеличение говорит о разбалансировке системы например в следствии плохой свечи, или не качественной работе одного из клапанов.
При отображении всех величин, если это необходимо, автоматически передвигаются десятичные запятые, гасятся незначащие нули и отбрасываются не несущие информации младшие значащие цифры.
Кнопка активна только при включенном зажигании. Простое нажатие – сброс счетчика накопленного расхода топлива, сопровождается кратковременной надписью «Reset» в нижней строке индикатора. Длительное нажатие – запоминание значений оборотов и времени открытого состояния форсунки. Сопровождается надписью «Save» в третьей строке.
На основе показаний параметров «F» и «dF» можно судить о качестве работы различных систем (впускная, зажигания, питания) и датчиков (воздуха, положения дроссельной заслонки). Величины ухода параметров можно получить, если заранее сымитировать каждую из этих неисправностей.
Использование параметра «F»:
- На холостых оборотах прогретого двигателя блок управления подает через форсунки определенную порцию топлива в цилиндры (параметр «F»), длительным нажатием на кнопку принимаем величину этой порции за начальную точку отсчета – 0%.
- Теперь при последующей эксплуатации автомобиля, выведя двигатель на холостые обороты всегда можно будет увидеть на сколько изменилось это значение, по отношению к запомненному. Его увеличение означает, что для того же режима работы, двигателю требуется больше топлива, а значит времени для впрыска, например из-за засорения инжектора, или было заправлено не качественное топливо. Уменьшение будет наблюдаться наоборот, при заправке более качественным топливом, после чистки инжектора, или после правильных регулировок различных систем двигателя. А чтобы увидеть, что на эту величину повлияли изменившиеся холостые обороты – их отклонение в процентах так же отображается.
- Резко, до пола, нажать на одну секунду педаль газа и тут же отпустить. Число до которого увеличится параметр «F» – это «приемистость» двигателя. По сравнению с холостыми оборотами, объем топлива должен возрасти примерно в 3 раза, т.е. до 300%. Через короткое время после этого параметр «F» должен уменьшиться примерно до 100% – это работа экономайзера, который уменьшает подачу топлива. Для правильной работы экономайзера необходимо правильно выставленное начальное положение датчика дроссельной заслонки.
- Плавно нажать на педаль газа и придержать 3000 об/мин. Параметр «F» должен показать некоторое уменьшение объема топлива на один цикл, т.к. на таких оборотах возрастает КПД двигателя. В идеальном случае – 20%, т.е. на пятую часть меньше, по сравнению к объему топлива холостых оборотов.
Производительность форсунки двигателя GA16DE – 181-189cc, 185 см 3 /мин = 3.0833 мл/с = 11.1 л/час. Данные для других форсунок можно взять тут (47 kb).
Для использования БК с другими автомобилями нужно скорректировать исходник.
Файлы для MPLAB, прошивка, а так же исходники находятся в архиве – mplab.zip (26 kb).
Среду разработки MPLAB можно взять на сайте Microchip.
Программаторов для прошивки МК очень много, один из них, например, описан на моей страничке.
#12 OGD
За основу брался проект: https://geektimes.ru/post/255012/
но полностью перерабатывал алгоритм взаимодеиствия с elm327, из кода оставил только основу бортового (сколько литров потрачено, пробег), все остальное (меню под конкретный экран, управление кнопками, рассчет л/100км и другие функции) разработал сам, времени на это потрачено наверное месяца 2 до доведения до рабочего состояния. Почему так долго спросите, отвечу, ребенок, семья)))) не всегда приходилось посидеть за программированием, но бывало и ночами сидел))) но оно того стоило.
Работает только с тем адаптером который выше выкладывал v1.5, нет гарантий что с другим адаптером будет работать из за разных версий.
Если кто решится повторить, могу выложить, накидать позже схемку подключения и код программы, денег брать не буду, но оставлю карточный счет свой, вдруг кому понравится и за труды мои отблагодарит немного
В данный момент жду цветной экранчик от китайцев побольше немного размером, буду под него все переделывать
с вывода датчика топлива в приборной панели
Подскажите где найти этот вывод. Т.е. к этом выводу Вы подключили ELM327?
Сообщение отредактировал OGD: 19 March 2016 — 05:30 PM
Бортовой компьютер для ВАЗ с цветным дисплеем и тачскрином
С приходом в жизнь автолюбителей инжектора и его окончательной победе над карбюратором, появилась необходимость в «его» периодической диагностике. Поскольку стоимость диагностики отечественной машины варьируется от 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 S653. Обвязка… питание, резисторы, конденсаторы и другая мелочевка.
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 руб
Зимой было очень удобно следить за температурой двигателя при прогреве. А не ждать когда же стрелка от отметки 50 градусов «оторвется»…
Вариант №2. ВАЗ 2115. Тачскрин
Далее был изготовлен компьютер под панель ВАЗ 2115. Элементная база остается та же. Только добавляется тачскрин от телефона Sony-Ericsson G900. Цена тачскрина 35 руб. Ну и естественно меняется прошивка. Были небольшие проблемы при калибровке экрана. Хотел сначала ввести алгоритм калибровки по 4-м точкам. Добавить соответствующий пункт в меню.
Но, почитав и посмотрев алгоритмы на англоязычных сайтах (под Андройд и прочее), понял, что это довольно сложно и в моём случае не нужно. Просто записываем значения АЦП по 2-м точкам, сопоставляем координаты и через уравнение прямой по 2-м точкам находим промежуточные значения нажатия. У меня получилось:x = 232 — 0.276*ADC
Печатная плата претерпела существенные изменения. Теперь используется микроконтроллер ATMega16A.
При помощи ножа, напильника и шпатлевки по пластику тачскрин был вмонтирован в панель, которую потом обтянул карбоновой пленкой.
По началу прикупил стилус, но потом оказалось что проще «тыкать» пальцем в экран. Залапывается он конечно. Но не более чем на телефонах с сенсорным экраном.
Для повторения рекомендую вариант с тачскрином. Его можно использовать как под Калину, так и под Пятнашку. На этом всё.
— Прошивка и файлы печатных плат для ЭБУ Январь: [car_computer.rar]— Прошивка для ЭБУ Bosch (Обновлено 17.03.2014): [car_computer_bosch.rar]
Шапкин Дмитрий Александрович или mr_smit ([email protected])