Pull to refresh

Самодельный расходомер для автомобиля

Reading time4 min
Views94K
Привет! Расскажу вам о своей попытке сделать бортовой расходомер на основе Arduino Nano. Это моё второе изделие из ардуинки, первым был шагающий паучок. После экспериментов с лампочками и сервоприводами хотелось сделать что-нибудь более полезное.

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

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

Image #1326265, 1.2 MB

Прибор вычисляет и отображает на дисплейчике километровый расход топлива: на нижней строке мгновенный, на верхней — средний за последний километр.

Мысль сделать эту штуку мне пришла давно, но этому мешала нехватка информации о том, что и как устроено в моей машине. Она у меня достаточно старая — Corolla E11 с двигателем 4A-FE. О двигателе мне было известно, что он инжекторный и что форсунки имеют более-менее постоянную производительность, на что рассчитывает и собственный блок управления. Поэтому основная идея измерения расхода — измерение суммарной длительности открытия форсунок.

ЭБУ, как подсказал хороший человек и как потом подтвердила инструкция, управляет форсункой следующим образом: плюс на неё подаётся всегда, а минус открывается и закрывается в зависимости от пожеланий ЭБУ. Стало быть, если подключиться к минусовому проводу форсунки, то можно отслеживать момент её открытия, измеряя потенциал: когда ЭБУ замыкает форсунку на массу, 14 вольт падают до нуля. Эта простая мысль меня посетила далеко не сразу, т. к. мои познания в электронике ограничены школьным курсом физики и законом Ома. Далее потребовалось превратить +14В в +5В, которые можно подавать на логический вход контроллера. Тут я каким-то образом допёр до известной всем электронщикам схемы шунтирования, но перед этим пришлось изучить мануалы и убедиться, что сопротивление форсунки пренебрежительно мало, а сопротивление логического входа почти бесконечно.

Чтобы вычислить километровый расход, необходимо было получить данные с датчика скорости. С ним оказалось всё проще, т. к. он выдаёт ступеньки 0… +5В, чем больше ступенек, тем больше пробег. Эти ступеньки пошли сразу на логический вход без преобразований.

Очень хотелось выводить данные на ЖК-дисплей. Я рассматривал разные варианты и остановился на текстовом дисплее МЭЛТ за 234 рубля на основе микроконтроллера Hitachi HD44780, с которым ардуино умеет работать с рождения.

После долгих и мучительных размышлений была составлена вот такая схема:

Image #1326286, 30.8 KB

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

Вслед за схемой я накидал разметку печатной платы (да, я сразу ломанулся печатать, т. к. возиться с копной проводов на монтажной плате не очень хотелось):

Image #1326302, 1.3 KB

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

Image #1326307, 1.1 MB

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

Image #1326310, 1.1 MB

После сверления дырок, лужения и пайки плата стала выглядеть вот так:

Image #1326316, 1.2 MB

И с лицевой стороны:

Image #1326319, 1.2 MB

Тут я по глупости припаял лишний стабилизатор, который впоследствии был заменён на резистор.

После того, как изделие было готово, я приступил к тестированию в боевых условиях, т. е. прямо на машине. Для этого по моей просьбе провода от форсунки и датчика были выведены в салон. Для микроконтроллера я написал тестовую программу, которая писала в COM-порт сырые данные — число импульсов с датчика скорости и милисекунды, в течение которых была открыта форсунка. Посидев в машине с ноутбуком и увидев, что данные соответствуют действительности, я несказанно обрадовался и пошёл домой писать рабочую версию программы.

После двух-трёх сеансов тестирования программа стала показывать годные данные. Поначалу я вычислял средний расход по временному интервалу (5-10 минут), что вызвало интересный эффект: после пяти минут стояния на светофоре (даже не пробка, а лёгкое подобие) километровый расход подскакивал до запредельных величин в 50-100 литров на 100 км. Я поначалу недоумевал, а потом понял, что это обычное дело, т. к. расход километровый, а усредняю я по времени: часики тикают, бензин льётся, а машина стоит. После этого мне пришла в голову светлая идея усреднять по пробегу: в текущей версии программа вычисляет, сколько бензина было израсходовано за последний километр, и показывает, сколько литров уйдёт, если проехать 100 км в таком же темпе. «Моментальный» же расход вычисляется как средний за последнюю секунду и каждую секунду обновляется.

Исходный код (если кому интересно) я выложил на PasteBin. Тут ещё найдётся что доработать, хотя бы сам стиль программы, т. к. она писалась довольно спонтанно.

Пока ещё не окончательный результат:

Image #1326346, 1.1 MB
Tags:
Hubs:
+91
Comments87

Articles