Ардуино, среда-проект для удобного обмена и использования сторонних библиотек для энтузиастов. ЭБУ вещь довольно специфическая (целое направление), вряд ли кто то будет писать для этого отдельные библиотеки. Мой проект написан полностью в векторах прерывания связанных между собой. Строка: while(1) {} } остается пустой.... и если кому то интересно, есть желание разбить проект на библиотеки... задача : 1) Обработка сигналов датчика коленвала 35 импульсов + один пропущенный (начало отсчета и дальнейшее проверка на пропуски) 36!=360º оборот коленвала с дискретностью 10º. Частота следования 200-5000 Гц. 2) Увеличение дискретности в 10 раз, что бы контролировать каждый градус поворота (не забываем, что частота может меняться.) 3) Выборка и обработка событий 200-5000*10 ... 2 000-50 000 раз в секунду (зажигание, начало впрыска топлива).....и т.д. И т.к. в мире нет ничего совершенного, хотелось услышать альтернативные решения данной задачи.
Сам проект задумывался как альтернатива чиптюнинга.... т.е. частично отключая функции родного ЭБУ автомобиля, изменять характеристики работы двигателя, добавления таких функций как круиз контроль... Так как он есть, нарушает всю концепцию ардуино. Написан на Atmel Studio, сам на себя завязан без точек выхода.... где простор для творчества? Контроллер пошустрее? 8 бит узкое место, т.к. много операций с 16 битными числами. Переход на 32 разрядный... но это ведь будет совсем другой проект
Для таких задач лучше выбирать что-то повеселее 8ми битных мк, по возможности что-то специализированное. Однозначно весь основной алгоритм будет в обработчиках прерываний, причём понадобится чётко продумать приоритеты прерываний, возможно использовать вложенные прерывания. Это что касается архитектуры программы. Что касается железа: платы ардуино ФИЗИЧЕСКИ не предназначены для такого использования,я имею ввиду климатику, вибрации, удары и т.п. Понадобится развязывать буквально всё от всего - и сигнальную часть и питание. Т.е. кое-как можно такое реализовать, но разумеется это месяцы отладки, даже при хорошо сформулированной задаче и известных алгоритмах и режимах работы и участии квалифицированного программиста/электронщика. Но если, ребята у вас это получится, я хочу это видеть!!!
Очень интересная тема, столкнулся с подобной идеей когда карб на скутере в очередной раз начал чудить сам по себе. Для тех "диагностов" которые не могут сформулировать принцип работы впрыска расскажу все подробнее: 1 задача устройства - с помощью времени полного(не полное не умеет) открытия форсунки при заданном (и постоянном) давлении топлива регулировать количество топлива поступающего в двигатель (форсунка выполняет функцию калибровочного отверстия, если её включить на 20 секунд то она "нассыт" 20мг топлива) Время впрыска на цикл далее удобно представить в процентах от 0 до 100, при этом важно помнить о том что 100% это не "форсунка всегда открыта" а всего лишь состав смеси конкретного двигателя на пиковой полной мощности. 2 откуда брать данные? Данные берутся с двух датчиков - 1 датчик положения коленчатого вала их может быть миллион разных, но суть у самых простых одна - начало цикла - фронт от 0 до 1, потом опять 0, примерно через 10% цикла. Или меандр с выколотым зубом, который обозначает начало цикла в "настоящих" машинах как правило применяется он, но имхо такие сложности не к чему. 2 датчик дроссельной заслонки, этот датчик - банальный потенциометр, который сообщает насколько сильно открыто отверстие для "всоса" воздуха. По сути задача сводится к тому чтобы через ряд калибровочных(индивидуальнвых для каждого мотора) коэфициетов сформировать линейную зависимость времени открытия форсунки на цикл, в зависимости от степени открытия заслонки.
Но очевидно что не все так просто И в "настоящих" машинах обязательно присутствуют следующие системы: ДД датчик детонации - это обычный пьезоэлектрический, по сути микрофон, который сообщает о взрывах в циллиндре вызванных слишком бедной смесью - я считаю что в сильно упрощеной системе этим датчиком можно пользоваться как элементом обратной связи который подтверждает нам что смесь составлена правильно, а составляется она так - стремимся сделать как можно беднее(меньше топлива на цикл) пока не сработает ДД, тогда богатим на несколько процентов и работаем дальше. Поскольку неисправность этого датчика может привести к физическому разрушению двигателя, их нужно поставить 2 и принимать во внимание значение от того который раньше сработает.
Теперь о грустном - о том с какой скоростью это должно работать Вероятнее всего это будет использоваться на малокубатурной технике, генераторы мопеды и прочее где карб все нервы вымотал, а полноценный контроллер "январь" в котором есть все покупать смысла нет ибо обвязка на него будет размером с мотор малокубатурного двигателя. Так же есть разница в количестве тактов - их бывает два или четыре, существенная разница в том, что на двухтактном двигателе цикл равен обороту коленвала. А на четырёх тактном цикл - это два оборота КВ или один оборот распредвала, который можно замерить аналогичным датчиком. А значит границы диапазона оборотов нужно обозначить от 300 до 15000 оборотов в минуту. И готовить смесь и читать датчики не реже 250 раз в секунду. Существенно(более 10%) обороты (количество циклов смесеобразования) могут меняться 10 раз в секунду.
Сразу опережу ряд критических замечаний: 1 почему нет системы зажигания? - Потому что её наличие существенно усложнить систему и из моновпрыска получится безумный комбайн, который будет гладить намного чаще чем работать. Тому кому не нравится трамблер и контактные датчики - возьмите с разборки б/у мпсз от 2108 и все. Для двухтактной техники - за 500 рублей можно купить коммутатор от хонды дио. Да, эта система не будет работать так же хорошо как полноценный инжектор, но она будет на голову выше малокубатурных карбюраторов. 2 где ДМРВ? ДМРВ - не нужен поскольку его стоимость, размеры и тот факт что доступные модели рассчитаны на определённый диапазон измерений. Не идеально но сведения о составе смеси можно получить исходя из данных датчика детонации. 3 лябда и прочая ерунда которая на моновпрыск никогда не ставилась(за исключением десятка извращенских моторов которые были кошмаром своих владельцев в далёкой Европе в конце 80-х) 4 вопрос наличия датчика температуры - предлагаю оставить открытым, поскольку он наверняка будет нужен для успешного холодного пуска(режим когда смесь сильно обогащается топливом) 5 важно предусмотреть возможность "обучения" ЭБУ поскольку параметры датчиков будут плавать, качество топлива будет плавать, производительность форсунок тоже будет плавать, нужно чтобы он сам подбирал такой режим в котором смесь будет достаточно бедной но не вызывать детонации.
6 датчик температуры воздуха на "всосе" он скорее всего понадобится, и его значение будет множителем для датчика положения дросселя, таким образом все это заменит ДМРВ для тех кто в танке - Тоета устанавливала считалки воздуха типа "лопата" до 95 года, и кроме внезапной смерти дорожек проблем с ними нет. 7 система холостого хода - Поскольку в моей голове вся эта штука выглядит как корпус старого карба из которого выкинуто все говно врезана форсунка и на "сопли-клей" приклеен потенциометр положения заслонки, то холостой ход удобно настраивать именно винтом ХХ карбюратора который не надо выкидывать.
Прочие подводные камни: Элементную базу для этого проще использовать от ваз2110 если нужны номера и выходные данные датчиков - спросите напишу, но ним инфы в сети море. Так же есть один момент - в настоящих машинах а особенно в моновпрысках форсунка за один цикл открывается несколько раз(чем больше тем лучше) это позволяет приготовить более равномерную смесь на протяжении всего цикла. Так же следует учесть что - при установки доступных "взрослых" форсунок на малую технику время открытия форсунки может уйти за минимальное значение отклика якоря форсунки, например если использовать форсунку от ВАЗ 2110 на моем скутере 1600(это объем двигателя) делим на 4(это количество форсунок) равно 400(рабочий объем одного циллиндра) делим на 2(это эмпирически доказаный перерасход топлива в 2Т движке) получаем 200, а у меня 50, то есть хоть как но форсунка должна давать в 4 раза меньше расход. То есть в 4 раза должно быть сокращено время когда форсунка открыта, это скорее всего не её штатный режим.
Как ещё можно решить данную проблему - Поскольку мы плюём на систему зажигания - информация о количестве циклов(оборотов) для нас так же может быть просто множителем, при этом форсунка открывается так часто насколько это технически возможно, но время её открытия - зависит от количества циклов в минуту, умноженных на степень открытия воздушной заслонки, умноженной на значение датчика температуры воздуха, и если нет сигнала от датчика детонации то все в таком режиме и работает.
Алгоритм работы: Схема получает питание, восстановиливает корректировочные значения сохраненные от предыдущего сеанса, Читает датчик температуры двигателя - если ниже 60грд то идем в режим прогрева. Читает датчик температуры воздуха, корректирует множитель исходя из значения температуры воздуха. Проверяет датчик заслонки на обрыв и на положение ( здесь формируется холостой ход) Проверяет форсунку на обрыв Проверяет датчики детонации на обрыв Проверяем датчик КВ на обрыв(если индуктивный) Если все ок Зажигаем "чек энжин" тем самым сообщаем юзера о готовности к запуску Ждём сигнала от датчика КВ Если сигнал поступает, то читаем все датчики, готовим множитель. Когда поступает второй сигнал Открываем форсунку на заданое время и опять читаем датчики. полученные изменения применяем, ждём сигнала начала следующего цикла от датчика КВ И далее пока не пропадет питание
Либо совсем альтернативный вариант: Поскольку форсунка является электромеханическим устройством она имеет обусловленную инерцией задержку на срабатывание, предположим 2мс, то есть если мы продаем импульсы в 2мс форсунка закрыта, а если в 2,1 то открыта на 0.1 мс (все цифры взяты с потолка). Таким образом можно отвязать время включение форсунки от частоты вращения двигателя. При этом форсунка работает на той максимальной частоте на которой возможно реализовать режим "максимальной мощности" для понимания графики: П_______________________________П_______________________________П_______________________________ - это сигнал начала цикла __I_______I_______I_______I_______I_______I_______I_______I_______I_______I_______I_______I_______I_______ - это нулевое срабатывание форсунок, сигнал подаётся, но только компенсирует инерцию(скважность настраивается руками, по моменту фактического начала открытия) __ПП____ПП_____ПП____ПП_____ПП____ПП____ПП_____ПП____ПП_____ПП____ПП____ - это открытие форсунок на 50% мощности не синхронно с первым графиком и синхронно со вторым __ПППП_ПППП_ПППП__ПППП_ПППП_ПППП_ПППП__ПППП_ПППП_ПППП__ПППП - а это режим полной мощности (местами интервалы не равны - это особенности отображение, на самом деле три последние графика синхронны по фронту)
Добрый всем день Могу поделиться опытом , если это еще интересно. С 2003 г устанавливаю на Мерсы , ауди . WV с механическим впрыском газ 4-го поколения (свой контроллер на Меге16 8мц тактовая) . Прогу писал на ассемблере , помимо расчетов впрыска газа со всеми корректировками( давление, температура,режимы ХХ ,ускорения,торможения,изменение фазы впрыска в зависимости от режима, 4-8цил ) вложил перерасчет угла опережения (вариатор). Это все заняло < 30% ресурса Меги.
поделись пж. опытом по управлению ДВС ардуиной. Тема очннь интересная. У меня Escudo c распределенным впрыском, есть желание выкинуть с него ЭБУ и впихнуть свою систему управления с возможностью вывода данных на комп или андроид и возможностью корректировки параметров в реальном времени.
Эту тему просмотри http://forum.amperka.ru/threads/ЭБУ-для-авто.12995/page-4 досмотри до конца далее задавай вопросы.....
Где варианть?)) Там больше про то что на планшет вывели лампочками поуправлять. Ну и провод от октан аорректора тудаже завели. Небудет самодельного эбу. Это как уже отмечали, под силу только коллективу и не маленькому. Где каждый будет заниматься своей задачей. В рамках сам себе режисер даже тех задание не составить.
Что такое "Ардуино"- проект для облегчения применения микроконтроллеров AVR. Помочь новичкам освоить технику, А тут ему по ушам "...не твое это дело, тут работа целым институтам...." "В своем Отечестве нет пророков" .... Только за БУГРОМ они бывают А за БУГРОМ они откуда взялись??? Из этого-же ОТЕЧЕСТВА ,которое их не признало!!!!!!! ДЕРЗАЙТЕ, ТВОРИТЕ, КОПАЙТЕ и докопаетесь до ИСТИНЫ МНЕ тоже в 2002 году так-же говорили - не может быть ,там целые институты .....и тд.. А Вот ВАМ РЕЗУЛЬТАТЫ первый блок поставил на машину в 2003, Это только сейчас решился выставить на YOUTUBE ТОТ ,кто не может , тот только и может ,что ХАЯТЬ других ОПРАВДЫВАЯ СВОЮ ЛЕНЬ ===== К сведению некоторых ,в блоке STAG 300 поляки используют ATmega 64 16M ==== Чтобы не заниматься производством блоков ,я использовал их блок,но все равно пришлось внести некоторые изменения в схему. Стер их прогу, Адаптировал свою прогу под их блок. Да . пришлось привлечь "студента" написать оболочку под ВИНДУ (для ускорения процесса). Проект продолжает развиваться,постепенно добавляются новые функции ,режимы. Сейчас стоит задача одним блоком управление и ГАЗОМ и БЕНЗИНОМ и это все на "А Р Д У И Н Е " !!!!!!!
Дык и в лискаре не пенёк4 стоит а PIC простой, и чо? На дурдуине проект по впрыску уже лет 5 как видел рабочий, и, то-же, чо? А в Stag300 мега ничо больно-то не вычисляет, ибо нинуно, т.к. просто умножаем время открытия бенз. форсунок на расчётный коэффициент ифсё, чо? Кто тут кого удивлять собрался и чем? Нипанятно чото.