25 May 2015

Самодельный блок управления для дизельного двигателя

DIY


Автомобили уже давно обросли всякой электроникой, так обросли, что просто жуть: в дверях контроллер, в фарах контроллер, в тормозах контроллер, ну и в двигателе, как без него. Обычно, когда речь заходит о блоке управления двигателем (ECU) представляется бензиновый мотор, обвешанный датчиками, исполнительными элементами и жгутами проводов. Блок управления чутко считывает параметры датчиков, корректирует смесь и начало искрообразования. Сложно! Но энтузиасты создают свои блоки управления, пишут альтернативные прошивки чтобы выжать лишнюю «пони», обойти какую-то неисправность или просто для повышения навыков. Причем, как правило, на такой шаг авторов толкают обстоятельства, к примеру недовольство контактной системой зажигания у бензиновых моторов, легкий некомплект электрики и так далее.

Именно о таких обстоятельствах и о дизельном двигателе и пойдет речь.

Итак, постановка задачи:

Дано:
  • Дизельный двигатель с механическим насосом DW8, производства концерна PSA, 2000 г.в. Насос издох от времени.
  • Новый топливный насос, приобретенный по случаю, с электронным управлением опережения впрыска от модификации мотора DW8B (Те самые обстоятельства).
  • Полное отсутствие проводки под электронное управление, самого блока управления.
  • Желание разобраться с нехитрой электроникой насоса, поднять навык, поглубже изучить работу таких насосов.

Требуется: исправный двигатель после «сращения».

Немного теории

Раньше, когда дизельные двигатели были большие, они управлялись рядными насосами высокого давления. Всё очень просто — на каждый цилиндр плунжер, который давит топливо через форсунку. На плунжер давит кулачковый вал, который имеет изменяемую высоту подъема кулачков, так получается управление двигателем.

Потом стали делать насосы посложнее, распределенного типа. Плунжеров там один-два, топливо под давлением уже распределяется по цилиндрам специальным механизмом. Управление посложнее, но всё же механическое — рычаг газа и всё.

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

Мой насос застрял где-то между механическим распределительным и электронным. По сути — распределительный насос роторного типа (производитель Lucas-Delphi), с одним единственным исполнительным элементом: клапаном опережения впрыска.
Когда я только приобретал насос, я не придал значения странному соленоиду в боку насоса, и решил «станет».

Что за опережение впрыска? Как выяснилось позже, необычайно важный параметр в работе двигателя. От него зависит и приемистость, и максимальные обороты, и расход двигателя. Аналог на бензиновых моторах — УОЗ (угол опережения зажигания).

Суть этого самого угла опережения впрыска проста: чтобы сгореть топливу в цилиндре требуется время. Чем выше обороты двигателя, тем меньше времени есть у топлива, и поэтому его надо впрыснуть в цилиндр пораньше, чтобы после прохождения поршня через ВМТ топливо уже горело и отдавало энергию маховику. На низких оборотах наоборот, впрыскивать топливо надо сразу у ВМТ, чтобы оно начало гореть не заранее, и не создавало нагрузку на идущий вверх поршень. На холодном двигателе впуск надо делать раньше, на горячем — позже. Под нагрузкой — раньше (топлива больше), без — позже. Вот такая вот наука в одном параметре.

Беглое гугление показало довольно скудный объем информации по вариантам регулирования — очевидно это удел разработчиков топливной аппаратуры, даже ремонтники не оперируют какой-то теорией. Особенно печально с абсолютными значениями углов — для разных двигателей значения немного разные, и всё покрыто мраком тайны.

Понимание начало строиться с этой диаграммы:



Ну, за исключением отсутствия абсолютных значений, ничего сложного.

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

Проще всего с последними. Их ровно одна штука, клапан опережения впрыска, два провода. Представляет из себя соленоид, который отпирает топливную магистраль, тем самым понижая давление на кольцо опережения в насосе. Полностью открытый клапан соответствует минимальному опережению, закрытый — максимальному. Регулирование производится при помощи ШИМ на частоте около 50Гц. Степень регулировки высока, этим клапаном можно вытянуть целый зуб на ремне ГРМ, диапазон около 25-30 градусов. Это из плюсов. Из минусов — одному углу соответствуют разные значения заполнения управляющего сигнала в зависимости от температуры топлива. Это автоматически исключает открытую систему регулирования, и значит, пора посмотреть на датчики.

Итак, главный параметр, который контролируется системой — текущий угол опережения зажигания. Угол подразумевает значение в градусах между чем-то и чем-то. У дизельного двигателя это два датчика: датчик положения коленчатого вала и датчик подъема иглы в форсунке первого цилиндра.

Датчики в моем двигателе выполнены индуктивными. Вот картинка, которая примерно соответствует датчику положения коленвала:



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

Однако, на дизельных автомобилях, датчик этот выполнен немного иначе — на картинке датчик взаимодействует с зубцами на маховике, в моем случае на маховике есть два углубления напротив датчика по диаметру. Они дают два импульса на оборот маховика, что означает 4 импульса на один оборот вала топливного насоса. Эту нехитрую мудрость я познал, получив сигнал, в 4 раза превышающий по частоте расчетный. В этом подходе есть плюс: так как импульса 4, можно снимать сигнал с любой форсунки.



Датчик подъема иглы выполнен так же, но в корпусе форсунки. Топливо, под давлением подрывает иглу распылителя, одновременно наводя в катушке форсунки слабый импульс.

Итак, для минимальной работоспособности системы необходимо два датчика. В моем атомобиле был (к счастью) один — датчик положения коленвала. Форсунку с датчиком пришлось приобрести отдельно, благо, на разборке стоит она совсем ничего.

Теперь сигналы надо обработать и ввести в контроллер, очередная трудность. Трудность потому, что готовой схемотехники входных цепей что-то в интернете не видать. В угаре конструирования был собран на коленке простейший формирователь сигнала: дифференциальный усилитель на LM358 и триггер Шмидта. Коэффициент усиления был выбран наобум, и равнялся примерно 50. Какова же была радость, когда с обоих датчиков я получил вполне нормальный сигнал!

Самое время было оценить реальные параметры двигателя. Так же на коленке была собран простейший измеритель угла между двух сигналов с приемлемой точностью в 1 градус. Конструкция — микроконтроллер ATMEGA8A и семисегментный индикатор для наглядности.

Данные получились немного странными. Итак, максимальное опережение согласно моему прибору — 25 градусов, минимальное, при котором двигатель не глохнет — 8. Это не вязалось с графиком из начала статьи, где фигурируют отрицательные величины угла опережения. Пришлось сделать стробоскоп, чтобы проверить, а не брешет ли кто. Выяснилось что не брешет, просто метки на маховике сдвинуты относительно ВМТ примерно на 10 градусов.
Ох, что-то многовато «примерно» для регулировки одного параметра. Сначала график зависимости в попугаях, а потом неизвестная константа. На помощь пришла настройка двигателя «на слух», «на запах» и по реакции на педаль. Радости добавило то, что бывалые дизелисты на форумах дают прямо противоположные советы по настройке. У многих звон поршней и громкая работа двигателя — это запаздывание впрыска, а на деле как раз наоборот. Безумная, дизельная тяга «на низах» — следствие чрезмерного опережения впрыска, на деле — наоборот. Из собственного опыта были вынесены такие умозаключения:

На низких оборотах угол должен быть минимальным, границу можно обнаружить при запуске полностью холодного двигателя. Если глохнет после отключения свечей накала — слишком поздний угол, увеличиваем опережение. В моих попугаях это 8-9 градусов. При такой установке двигатель не глохнет при резком отпускании педали сцепления, тянет на холостых даже на 4-й передаче, ну в общем красота. Такой статический угол не подходит для комфортной работы по одной причине — двигатель невозможно раскрутить выше 1500 оборотов, и при этом он жутчайше греется, выкидывая солярку в выхлопную трубу.

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

Пришло время собрать всё это воедино, красиво оформить и откатать блок управления. Однако, радость была кратковременной. Сначала я выяснил, что простейший формирователь сигнала с форсунки очень сильно сбоит и даёт пачку импульсов вместо одного при повышении оборотов до 1800-2000 об/мин, совершенно не помогли в борьбе с этим ни защитные диоды, ни экранировка кабелей, ни игра с коэффициентом усиления, ни сборка типовой схемы формирователя из бензинового ECU. Поиск решения данной проблемы периодически всплывает на просторах рунета. Там же и был подсказан правильный ход мыслей — воспользоваться специализированной микросхемой.



Зовется она MAX9926, это целая линейка специализированных ИС для датчиков положения коленвала, датчиков ABS и прочих индуктивных. По отзывам — ну просто панацея, вытягивает полезный сигнал с уровня шумов и при наличии помех. Однако, ни найти её по месту жительства (даже не слышали), ни заказать из Китая (дорого и только крупные партии) я её не смог. Но есть ведь даташит с внутренней структурой, чего бы не повторить?

В результате родилась вот такая схема:



Небольшие пояснения

На микросхеме U5 собран дифференциальный усилитель с умеренным усилением. Никаких особенностей тут нет, разве что однополярное питание без резисторов сдвига, они не нужны для данного ОУ.

Интересная часть собрана на компараторе U6. По сути, это базовый компаратор-одновибратор с защелкой. Гистерезис вводится резистором R24, а резистор R23 и диод D10 задерживают задний фронт сигнала примерно на 5мс, что позволяет игнорировать все сигналы с частотой повторения выше 200 гц.

Опорный вход компаратора висит под изменяемым потенциалом, благодаря диоду D11 и резисторам R26, R27. Чем выше уровень сигнала на входе компаратора, тем выше порог его срабатывания. Это решает проблему разного уровня полезного сигнала в зависимости от частоты вращения двигателя.

Это заработало! Теперь без помех принимается сигнал и от форсунки, и от датчика коленвала. Самое время регулировать опережение впрыска. Очевидно, что для регулирования просто таки напрашивается ПИД-регулятор. Сложность, как всегда, в его настройке.

Какие-то численные методы для вычисления ПИД-коэффициентов разбиваются о полное отсутствие любых данных по реакции насоса на управление. Значит надо подбирать. Начинают все с пропорционального коэффициента, попробовав значение 1 я уже увидел работу регулятора. Время реакции такого регулятора удручает, заданный угол устанавливается примерно за 3-4 секунды и имеет склонность к колебаниям. Всё бы ничего, но в данном применении можно допустить ошибку регулирования в сторону опережения, но нельзя ни градуса в сторону запаздывания. Особенно болезненно запаздывание угла сказывается на высоких оборотах, машина вроде только ехала 100 км/ч, а вот уже тормозит двигателем как тормозами. Тогда я ввёл прямой пропорциональный коэффициент и обратный, в 4 раза больший. При уходе угла в запаздывание контроллер быстро возвращает его в безопасные величины.
П- и И- коэффициенты подбирались «на глазок» по критерию отсутствия автоколебаний.

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

Датчик педали газа в насосе выполнен в виде переменного резистора на оси рычага насоса, ползунок резистора подключен к АЦП микроконтроллера. Нажатие педали «в пол» изменяет заданный угол на 2 градуса. По ощущениям — самое то, приемистость и набор оборотов двигателем хорошие.

О железе

Так так процессы в данном регуляторе текут медленно, то и особого быстродействия не требуется. С задачей справился AVR-микроконтроллер MEGA8A на частоте всего 1МГц. Он комфортно успевает считать ПИД, обрабатывать прерывания по датчикам, отображать текущий угол на семисегментном индикаторе и выводить отладочную информацию в последовательный порт.

Устройство, сначала собранное на чем попало и висевшее на проводах у мотора, перекочевало в культурный корпус блока управления тахометром, который так кстати освободился. Освободился не просто так, а вместе с герметичным 15-и контактным разъемом, куда и была подведена «коса» мотора, а штатный тахометр теперь получает сигнал с нового формирователя.



В общем, можно и нужно подводить итоги.

Разработка определенно удалась. Пару сотен километров на новом насосе не показали разницы в поведении по сравнению со старым, механическим. Расход топлива даже немного упал, и составил приятные 7.5л на сотню в городском цикле.

Навыков было получено бессчетное множество, как по теории топливной аппаратуры, так и по программированию микроконтроллеров.

Планы на будущее

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

UPD:


В статье забыл упомянуть важное отличие дизельного двигателя от бензинового. В бензиновом моторе приготовление топливной смеси начинается с воздуха. Отсюда обязательные атрибуты любого ЭБУ для безнина: датчик давления воздуха (относительного или абсолютного), расходомер, датчик температуры. Регулировка двигателя тоже воздухом — дроссель.

На дизеле же смесь всегда обеднена, ни о каком стехиометрическом составе смеси нет и речи. В любом режиме воздуха хватает, это заложено самой конструкцией дизельного двигателя. Регулировка исключительно количеством топлива, и учитывать воздух при работе ЭБУ не нужно. Ситуация поменялась у Common Rail дизелей, там воздух считается так же как и на бензинках, хотя ошибки по количеству воздуха дизелям не критичны.

Ресурсы:

1. Жаркие дебаты на форуме по поводу угла опережения с крупицами информации
2. Аналогичные заботы владельцев бензиновых моторов, подсмотрена схемотехника
3. Программирование ПИД-регулятора
4. Графики с живой форсунки
5. Исходники на GitHub
6. Схема контроллера целиком
Tags:DIYECUдизельный двигательтроллейбус
Hubs: DIY
+86
50.2k 292
Comments 40
Popular right now
Senior Frontend Engineer
from 160,000 to 220,000 ₽Jamakase TechnologiesRemote job
Back-end QA-инженер
from 63,000 to 135,000 ₽CSSSRRemote job
Frontend Developer (React)
from 140,000 ₽4Real LTDRemote job
Бэкенд-разработчик (Ruby on Rails)
from 120,000 ₽FunBoxТомскRemote job
Бэкенд-разработчик (Ruby on Rails)
from 120,000 ₽FunBoxМоскваRemote job