Эмулятор ПНД
Эмулятор ПНД
Итак имеем авто Audi 100 с системой впрыска KE-Motronic. Основная "болезнь" этих аппаратов - износ потенциометра напорного диска, сам потенциометр находится на корпусе расходомера, имеет 2 резистивные дорожки по которым перемещаются контактные ползунки закрепленные на оси напорного диска, выглядит все это так:
Но хотелось бы сделать своими руками и освоить программирование МК с помощью FL-Prog.
Собственно, просто заменить ПНД на ДАД и конвертировать сигнал при помощи одного только блока "нелинейное масштабирование" + ШИМ на выходе не получится, поскольку механический напорный диск прямо измеряет массовый расход воздуха а ДАД дает нам только давление во впускном коллекторе, то есть показания ДАД и ПНД будет отличаться.
Таким образом для полноценной эмуляции ПНД, нам необходимо иметь в памяти контроллера карту, где по оси X у нас будет разряжение в кПа ( напряжение с ДАД, пересчитанное в давление, по оси Y - обороты двигателя ( здесь я так понимаю нужно использовать блок "скоростной счетчик") а в ячейках карты прописываем заданное напряжение (ШИМ на выходе контроллера) которое будем подавать на вход синала ПНД в ЭБУ KE-Motronic (АЦП там по входу 8-битный).
Базовая карта "УОЗ от сигнал ПНД/обороты", в ЭБУ KE-Motronic имеет следующий вид: Остается вопрос как реализовать карту эмулятора " давление/обороты - напряжение ПНД" в памяти МК, делать из неё выборку в соответствии с оборотами и давлением полученными на входах ацп и скоростном счетчике и выводить напряжение эмуляции ПНД из нашей таблицы в виде шима на цифровой вывод ардуины.
P.S: Пардон за много букв.
Хочу заменить потенциометр на связку Arduino Nano + датчик абсолютного давления во впускном коллекторе ГАЗ 45.3829
Есть уже готовые решения, построенные на данном принципе, например эмулятор Winner-sa.Но хотелось бы сделать своими руками и освоить программирование МК с помощью FL-Prog.
Собственно, просто заменить ПНД на ДАД и конвертировать сигнал при помощи одного только блока "нелинейное масштабирование" + ШИМ на выходе не получится, поскольку механический напорный диск прямо измеряет массовый расход воздуха а ДАД дает нам только давление во впускном коллекторе, то есть показания ДАД и ПНД будет отличаться.
Таким образом для полноценной эмуляции ПНД, нам необходимо иметь в памяти контроллера карту, где по оси X у нас будет разряжение в кПа ( напряжение с ДАД, пересчитанное в давление, по оси Y - обороты двигателя ( здесь я так понимаю нужно использовать блок "скоростной счетчик") а в ячейках карты прописываем заданное напряжение (ШИМ на выходе контроллера) которое будем подавать на вход синала ПНД в ЭБУ KE-Motronic (АЦП там по входу 8-битный).
Базовая карта "УОЗ от сигнал ПНД/обороты", в ЭБУ KE-Motronic имеет следующий вид: Остается вопрос как реализовать карту эмулятора " давление/обороты - напряжение ПНД" в памяти МК, делать из неё выборку в соответствии с оборотами и давлением полученными на входах ацп и скоростном счетчике и выводить напряжение эмуляции ПНД из нашей таблицы в виде шима на цифровой вывод ардуины.
P.S: Пардон за много букв.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Эмулятор ПНД
Отправлено спустя 36 секунд:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Эмулятор ПНД
Если вам достаточно дискретных изменений, то можно попробовать с помощью массивов. Например создаются массивы для оборотов 800, 1000, 1500 ... 5500. Ну а дальше компаратарами смотрите из какого массива делать выборку. Например если значение давления равно 1 и количество оборотов между 700 и 900, то делаем выборку из массива 800 ну и так далее. Точность будет зависить от того сколько массивов вы в нано засунуть сможете.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Эмулятор ПНД
[ref]Technoman[/ref], Увы, нет двухмерного массива в flprog.
Отправлено спустя 52 секунды:
или так.Олег писал(а): 22 фев 2020, 11:28 Если вам достаточно дискретных изменений, то можно попробовать с помощью массивов. Например создаются массивы для оборотов 800, 1000, 1500 ... 5500. Ну а дальше компаратарами смотрите из какого массива делать выборку. Например если значение давления равно 1 и количество оборотов между 700 и 900, то делаем выборку из массива 800 ну и так далее. Точность будет зависить от того сколько массивов вы в нано засунуть сможете.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Эмулятор ПНД
[ref]BormanYA[/ref], ЭБУ KE-Motronic подаёт на 1 контакт ПНД опорное 5вольт, с контакта 2 получает напряжение с потенциометра, 3 контакт это аналоговая земля датчиков. Эмулируем сигнал ПНД ШИМ и через R/C цепочку подаем на вход ЭБУ (2 контакт разьёма ПНД). Если брать сигнал оборотов с минуса катушки - то делаем опторазвязку на той же PC817 или 4n35, что бы брать сигнал с Холла в трамблере достаточно будет резистивного делителя и стабилитрона.
- BormanYA
- Рядовой
- Сообщения: 95
- Зарегистрирован: 10 янв 2018, 18:07
- Откуда: Дмитров
- Имя: Михаил
- Благодарил (а): 2 раза
Эмулятор ПНД
Есть ли датчик линейного перемещения, например магнитный, на постоянном или переменном магнитном поле? Т.е. прикрепил магнит к "лопате", и смотришь как далеко диск расходомера, 0...15...100% и выводишь уже готовое сопротивление в сторону ЭБУ. И не надо таблиц расчета, по оборотам и ДАД, вычислять положение лопаты и конвертировать в положение. Тут мне припомнился бесконтактный ДПДЗ, от тазика например, правда он с пружиной и залитый.
Отправлено спустя 25 минут 7 секунд:
Ах, забыл ДПДЗ все равно нужен, расход воздуха не по оборотам расчитывается, а по положению дросселя.
Отправлено спустя 43 секунды:
А лопата, это древний ДРВ.
Отправлено спустя 25 минут 7 секунд:
Ах, забыл ДПДЗ все равно нужен, расход воздуха не по оборотам расчитывается, а по положению дросселя.
Отправлено спустя 43 секунды:
А лопата, это древний ДРВ.
Эмулятор ПНД
Есть варианты замены ПНД на KMA-200 от бесконтактного ДПДЗ Ваз , поскольку передаточная характеристика "родного" ПНД нелинейная
Я хочу использовать именно ДАД, что дает возможность установить эмулятор вообще без вмешательства в железо, только подключить вакуумную трубку к ДАД, питание и сигнал оборотов с катушки.
Для эмуляции ПНД нам не нужен полный расчет циклового наполнения по ДАД, мы не собираемся вычислять время впрыска. Для определения нагрузки и эмуляции сигнала штатного ПНД, достаточно одной таблицы "Давление/Обороты/Целевое напряжение сигнала ПНД". Саму таблицу естественно придется откатывать. Начальные значения напряжения ПНД известны, например при включении зажигания напряжение сигнала ПНД составляет 0.2в На ХХ напряжение должно быть в пределах 0.4-0.7 в и т.д
- делаем преобразование "нелинейное масштабирование" и как бы все дела. Я хочу использовать именно ДАД, что дает возможность установить эмулятор вообще без вмешательства в железо, только подключить вакуумную трубку к ДАД, питание и сигнал оборотов с катушки.
Для эмуляции ПНД нам не нужен полный расчет циклового наполнения по ДАД, мы не собираемся вычислять время впрыска. Для определения нагрузки и эмуляции сигнала штатного ПНД, достаточно одной таблицы "Давление/Обороты/Целевое напряжение сигнала ПНД". Саму таблицу естественно придется откатывать. Начальные значения напряжения ПНД известны, например при включении зажигания напряжение сигнала ПНД составляет 0.2в На ХХ напряжение должно быть в пределах 0.4-0.7 в и т.д
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Эмулятор ПНД
Набросал первую часть схемы эмулятора - сделал расчёт оборотов и давления, их усреднение и вывод в переменные. Дополнительный блок обеспечивает подачу на выход эмулятора 0.2 вольт при включении зажигания (как на штатном датчике). Ардуино первый раз в руках держу, да и в программировании МК пока что полный ноль, поэтому прошу посмотреть где какие ошибки есть.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Эмулятор ПНД
[ref]Technoman[/ref], В Блоках генератора - не настроено правильно. Найди сам 

мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Эмулятор ПНД
[ref=#ff8000]Sancho[/ref], Действительно, просмотрел. 
Исправил. Теперь вторая, часть - более сложная. Как создать таблицу 16x8 с осями "MAP","RPM" и заданными значениями ШИМ-сигнала "PND-OUT" в ячейках и как делать оттуда выборку. Пытаюсь разобраться с предложенным Вами моделью 2-х мерного массива. Не совсем еще понял как сделать привязку например оборотов из переменной "RPM" к значениям "RPM" в будущей таблице. Значения оси "RPM" в таблице могут быть
жестко заданы,по порядку (400,800,1200,1600) и т.д А полученное значение в переменной "RPM" не является постоянной, соответственно необходим алгоритм анализа переменной, нечто вроде блока "попадание в диапазон", где будет вилка на входе , например если обороты на входе больше "650" но меньше "900" то на выходе даём значение "800". Первое что приходит на ум - нелинейное масштабирование. Или, как предложил ув.Олег, на компараторах? Прошу извинить за сумбур, но программирование для меня, как говорил герой Моргунова в "Операции Ы": ".. Дело это для нас -новое, неосвоенное..."

Исправил. Теперь вторая, часть - более сложная. Как создать таблицу 16x8 с осями "MAP","RPM" и заданными значениями ШИМ-сигнала "PND-OUT" в ячейках и как делать оттуда выборку. Пытаюсь разобраться с предложенным Вами моделью 2-х мерного массива. Не совсем еще понял как сделать привязку например оборотов из переменной "RPM" к значениям "RPM" в будущей таблице. Значения оси "RPM" в таблице могут быть
жестко заданы,по порядку (400,800,1200,1600) и т.д А полученное значение в переменной "RPM" не является постоянной, соответственно необходим алгоритм анализа переменной, нечто вроде блока "попадание в диапазон", где будет вилка на входе , например если обороты на входе больше "650" но меньше "900" то на выходе даём значение "800". Первое что приходит на ум - нелинейное масштабирование. Или, как предложил ув.Олег, на компараторах? Прошу извинить за сумбур, но программирование для меня, как говорил герой Моргунова в "Операции Ы": ".. Дело это для нас -новое, неосвоенное..."

У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Эмулятор ПНД
[ref]Technoman[/ref], Ок, дальше...
P.S. Вам, наверно, будет проще использовать восемь простых массивов - их проще заполнить и редактировать...
P.S. Вам, наверно, будет проще использовать восемь простых массивов - их проще заполнить и редактировать...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Эмулятор ПНД
Произошла небольшая заминка, "по независящим причинам", как говорится.
Спасибо тов.Sancho за терпение и помощь!
Попробовал все таки применить Ваш блок двухмерного массива, расширив его до 16х16 значений, кроме того попробовал получить номер строки не "лесенкой" из 16 компараторов, а разбивкой значения оборотов на 16 частей путем деления, но есть наверное одна проблема - на выходе блока деления мы получим не всегда целое число, так же как в Вашем блоке определения индекса столбца делением АЦП ДАД.
Подключил ДАД к Нано, при любых изменениях разряжения напряжение на выходе D5 неизменно 1.96в В переменную RPM подставлял константу с разными значениями оборотов, для эмуляции - все тоже самое, значение PND OUT всегда 1.96в В мониторе порта значения MAP в кПа изменяются адекватно.
Спасибо тов.Sancho за терпение и помощь!
Попробовал все таки применить Ваш блок двухмерного массива, расширив его до 16х16 значений, кроме того попробовал получить номер строки не "лесенкой" из 16 компараторов, а разбивкой значения оборотов на 16 частей путем деления, но есть наверное одна проблема - на выходе блока деления мы получим не всегда целое число, так же как в Вашем блоке определения индекса столбца делением АЦП ДАД.
Подключил ДАД к Нано, при любых изменениях разряжения напряжение на выходе D5 неизменно 1.96в В переменную RPM подставлял константу с разными значениями оборотов, для эмуляции - все тоже самое, значение PND OUT всегда 1.96в В мониторе порта значения MAP в кПа изменяются адекватно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя