Когда эйфория от первых запусков прошла и новый год отошел на задний план, приступаем к фазе "Г". Итак, машина заводится, но х.х. напоминает судрожные подергивания. Для начала учим мозги распознавать положение дроссельной заслонки — подключаем датчик дроссельной заслонки. 4 провода: плюс 5 вольт, минус и два сигнала о положении дросселя. Почему два? Потому что фольксваген. :) Датчик положения дроссельной заслонки сдвоенный, один работает на всем диапазоне открытия, и имеет линейную зависимость напряжения, которое изменяется от 0 до 4,5 вольт (примерно) при открытии заслонки от 0 до 90 градусов, второй тоже линейный, тоже от 0 до 4,5… но работает в диапазоне малых углов открытия заслонки. Дело в том, что нас интересует не столько угол, сколько проходное сечение дросселя. А это сечение в зоне малых углов открытия очень сильно зависит от угла, а в зоне больших — слабо. Т.е. изменение сечения между 4 и 5 градусами в десятки раз больше разницы между 74 и 75, т.о. второй датчик позволяет точнее измерить угол на малых открытиях дросселя. Но мы пока ограничимся вторым датчиком, тем что работает на всем диапазоне. Подключаем его выход к ножке АЦП контроллера и изменяем программу. ДА! В приведенной раньше программе ошибка, во втором цикле борьбы с дребезгом я неправильно указал метки переходов (WF1 вместо WF2), однако, несмотря на это, она работала удовлетворительно. Исправляем, добавляем канал АЦП. АЦП у нас 10 бит, я пока ограничился 4-мя старшими битами. Подключаем к контроллеру 4 светодиода — при открытии дросселя они красиво вспыхивают, показывая в двоичном коде 1 из 16 распознаваемых положений дросселя. Теперь учим мозги распознавать обороты двигателя. Есть два способа — измерять период между искрами, получается точнее на малых оборотах, но для получения оборотов нужно деление, да и точность подает с ростом оборотов, а можно считать число искр за период времени. Зависимость линейная, правда для получения большой точности на малых оборотах нужен большой интервал измерения. Практически на 3000 об/мин двигатель крутится 50 об/с, одна искра на каждый оборот — 50 искр в секунду. Для того чтобы намерять 50 искр — нужна секунда, для 25 — полсекунды и т.д. Для начала четверть секунды и 12-13 условных единиц соответствующих 3000 об/мин — приемлимое время измерения, и я останавливаюсь на втором варианте. Переписываем программу. Поскольку нужно одновременно и заниматься форсункой, и считать, и отмерять точный интервал — появляются аппаратный таймер (но территориально он внутри микроконтроллера) и прерывания. Точнее одно прерывание — именно таймера. Для более стабильных измерений приходится привязать начало периода измерения к искре. Проверяем — на тех же светодиодах виден двоичный код изменяющийся пропорционально оборотам. Это я так пишу "проверяем" — в реальности это двадцать перепрограммирований, корректирования программы, выдергиваний волос из головы и прихлебываний чая. Но вот все работает. Что мы можем теперь? Мы можем сделать ОТСЕЧКУ! :) Это просто праздник какой-то :) Все просто — как только обороты больше определенной величины — отключаем форсунку. Программируем — проверяем. Запуск, набор оборотов, форсунка отключается, это видно по осциллографу… но мотор ведет себя как то не так…Оказалось что после отключения форсунки мотор работает еще несколько секунд и даже неплохо "газует"… Что за фигня? Чем газует? Время открытия форсунки у меня все еще такое же как и в первый раз — 18h умноженное на FFh условных тактов. В реальности это — около 6 мс. Как оказалось даже для холодного мотора это ОЧЕНЬ много. Бензина столько что на х.х мотор давится и троит, а стекая по коллектору он обеспечивает работу мотора и после отключения форсунки. Уменьшаем время впрыска. перебором я останавливаюсь на 2 мс. Мотор глохнет при небольшом открытии дросселя, но уверенно пускается. Если сделать еще немного меньше — мотор заводится (при отключении/включении зажигания форсунка включается на короткое время и в коллектор попадает немного топлива, обогащая смесь в первые секунды запуска), но потом глохнет и уже не заводится, смесь слишком бедная для запуска. Холостые стали красивые, значительно поднялись обороты (значит смесь оптимальнее предыдущей), но мотор не дает разогнать его, тут же глохнет при открытии дросселя. Вот как это работает на х.х.:
Звук на записи какой-то неправильный, рядом стоит дизель молотящий на х.х. Ну это для понимания как все работает просто. Переходим к фазе "Д" — вводим коррекцию времени впрыска от угла открытия дросселя. У нас 16 значений оцифрованных, начальную цифру знаем — 2 мс на х.х., механический датчик давления показывает на этом режиме около 0,5 бар, стоит чуть приоткрыть дроссель — 1 бар сразу. Значит на режиме "газ в пол" делаем 4 мс и примерно такое распределение: 2,3,4,4, 4,4,4,4, 4,4,4,4, 4,4,4,4. Прошиваем — по осциллографу видно изменение длительности импульса, но все равно реакция на газ неудовлетворительная. Лучше чем было, но хуже чем надо. Отсечка тоже занятная, я же просто отключаю форсунку по достижении определенных оборотов, а на практике это выглядит как — обороты чуть больше порога — отключили, обороты тут же падают — включили, форсунка хаотично отключается/включается вблизи оборотов отсечки, на слух воспринимается как работа мотора с перебоями ( тем более что из "моника" в этот момент периодически стреляет пламенем). Но обороты упираются в эту самую "отсечку". Делаем по другому, на 16 искрах за период выключаем топливо, на 10 включаем. Пробуем — очень похоже. Только мотор у нас медленный, цикл занимает около секунды. Но красиво. Теперь что? Разбираемся с подачей топлива дальше. Очевидно что газодинамическое (красивое слово ввернул) сопротивление дросселя потоку воздуха зависит не только от угла открытия, а еще и от оборотов. Учим мозги менять таблицу "подачи топлива от угла дросселя" в зависимости от оборотов. Таблица фактически становится двумерным массивом. 16 диапазонов угла дросселя и 16 диапазонов оборотов. 0 — мотор стоит, 15 — предельные обороты, дальше отсечка. Таблица превращается в такую:
2,3,4,4, 4,4,4,4, 4,4,4,4, 4,4,4,4
2,2,3,4, 4,4,4,4, 4,4,4,4, 4,4,4,4
2,2,3,3, 4,4,4,4, 4,4,4,4, 4,4,4,4
2,2,2,3, 3,3,4,4, 4,4,4,4, 4,4,4,4
и т.д. Можно рассмотреть характерные особенности. Диагональ таблицы идущая вправо-вниз — режим малой нагрузки двигателя, режим х.х. — обороты при плавном открытии дросселя могут расти вплоть до отсечки, но без нагрузки, давление в коллекторе около 0,5 бар. Все что выше — режим максимальной мощности, дроссель почти не оказывает сопротивления потоку воздуха, наполнение цилиндров максимально. Все что ниже — режим мощности менее необходимой для работы мотора на х.х. — режим торможения двигателя. В принципе там можно поставить 0 (отключить топливо) и получим быстрый сброс газа и обороты вернутся к оборотам холостого хода для текущего положения дросселя. Правильно, виднеется режим имитирующий родной ЭПХХ (экономайзер принудительного холостого хода).
Итак, у нас появилась отсечка и дозирование смеси в зависимости от открытия дросселя и оборотов двигателя. Таблица топлива 16х16, точность дозирования менее 0,1 мс. Что дальше? Дальше регулирование оборотов х.х. Фаза "Е".
Продолжение следует.









Комментарии 23
Блин столько гемора, почему не поставил родной комп и через VAG отстроил, от гольфа3 легко дресируется
И куда будем ставить датчик температуры? А трамблер менять?
Трамблер вроде не проблема заменить, а вот с датчиком это вопрос, а что если датчик подсоеденить и паралельно ему 850 Ом резистор поставить, пусть думает что прогретый движок.
Пожалуйста, войдите, чтобы пользоваться всеми функциями Drive2
Войти