Эмулятор ПНД

Эмулятор потенциометра напорного диска.

Вопросы от новичков
Ответить
Technoman
Рядовой
Сообщения: 8
Зарегистрирован: 15.02.2020{, 10:27}
Репутация: 0
Имя: Дмитрий

Эмулятор ПНД

#1

Сообщение Technoman » 22.02.2020{, 10:58}

Итак имеем авто Audi 100 с системой впрыска KE-Motronic. Основная "болезнь" этих аппаратов - износ потенциометра напорного диска, сам потенциометр находится на корпусе расходомера, имеет 2 резистивные дорожки по которым перемещаются контактные ползунки закрепленные на оси напорного диска, выглядит все это так:
Ползунки.jpg
ПНД.jpg
График_ПНД_1.jpg
График_ПНД_1.jpg (34.01 КБ) 830 просмотров
Хочу заменить потенциометр на связку Arduino Nano + датчик абсолютного давления во впускном коллекторе ГАЗ 45.3829
45.3829.jpg
Есть уже готовые решения, построенные на данном принципе, например эмулятор Winner-sa.
Но хотелось бы сделать своими руками и освоить программирование МК с помощью FL-Prog.
Собственно, просто заменить ПНД на ДАД и конвертировать сигнал при помощи одного только блока "нелинейное масштабирование" + ШИМ на выходе не получится, поскольку механический напорный диск прямо измеряет массовый расход воздуха а ДАД дает нам только давление во впускном коллекторе, то есть показания ДАД и ПНД будет отличаться.
Таким образом для полноценной эмуляции ПНД, нам необходимо иметь в памяти контроллера карту, где по оси X у нас будет разряжение в кПа ( напряжение с ДАД, пересчитанное в давление, по оси Y - обороты двигателя ( здесь я так понимаю нужно использовать блок "скоростной счетчик") а в ячейках карты прописываем заданное напряжение (ШИМ на выходе контроллера) которое будем подавать на вход синала ПНД в ЭБУ KE-Motronic (АЦП там по входу 8-битный).
Базовая карта "УОЗ от сигнал ПНД/обороты", в ЭБУ KE-Motronic имеет следующий вид:
Карта UOZ -PND KE-Motronic 1.png
Карта UOZ -PND KE-Motronic 1.png (47.72 КБ) 830 просмотров
Остается вопрос как реализовать карту эмулятора " давление/обороты - напряжение ПНД" в памяти МК, делать из неё выборку в соответствии с оборотами и давлением полученными на входах ацп и скоростном счетчике и выводить напряжение эмуляции ПНД из нашей таблицы в виде шима на цифровой вывод ардуины.
P.S: Пардон за много букв.

Technoman
Рядовой
Сообщения: 8
Зарегистрирован: 15.02.2020{, 10:27}
Репутация: 0
Имя: Дмитрий

Эмулятор ПНД

#2

Сообщение Technoman » 22.02.2020{, 11:05}

Карта UOZ -PND KE-Motronic 2D.png
Отправлено спустя 36 секунд:
Карта UOZ -PND KE-Motronic 3D.png

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

Эмулятор ПНД

#3

Сообщение Олег » 22.02.2020{, 11:28}

Если вам достаточно дискретных изменений, то можно попробовать с помощью массивов. Например создаются массивы для оборотов 800, 1000, 1500 ... 5500. Ну а дальше компаратарами смотрите из какого массива делать выборку. Например если значение давления равно 1 и количество оборотов между 700 и 900, то делаем выборку из массива 800 ну и так далее. Точность будет зависить от того сколько массивов вы в нано засунуть сможете.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Эмулятор ПНД

#4

Сообщение Sancho » 22.02.2020{, 11:33}

Technoman, Увы, нет двухмерного массива в flprog.
Массив двух мерный.flp
(23.83 КБ) 60 скачиваний
Отправлено спустя 52 секунды:
Олег писал(а):
22.02.2020{, 11:28}
Если вам достаточно дискретных изменений, то можно попробовать с помощью массивов. Например создаются массивы для оборотов 800, 1000, 1500 ... 5500. Ну а дальше компаратарами смотрите из какого массива делать выборку. Например если значение давления равно 1 и количество оборотов между 700 и 900, то делаем выборку из массива 800 ну и так далее. Точность будет зависить от того сколько массивов вы в нано засунуть сможете.
или так.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
BormanYA
Рядовой
Сообщения: 95
Зарегистрирован: 10.01.2018{, 18:07}
Репутация: 12
Откуда: Дмитров
Имя: Михаил

Эмулятор ПНД

#5

Сообщение BormanYA » 22.02.2020{, 18:40}

Technoman, А решен вопрос по аппаратной части, связь МК и ЭБУ? Оптопара?

Technoman
Рядовой
Сообщения: 8
Зарегистрирован: 15.02.2020{, 10:27}
Репутация: 0
Имя: Дмитрий

Эмулятор ПНД

#6

Сообщение Technoman » 22.02.2020{, 21:47}

BormanYA, ЭБУ KE-Motronic подаёт на 1 контакт ПНД опорное 5вольт, с контакта 2 получает напряжение с потенциометра, 3 контакт это аналоговая земля датчиков. Эмулируем сигнал ПНД ШИМ и через R/C цепочку подаем на вход ЭБУ (2 контакт разьёма ПНД). Если брать сигнал оборотов с минуса катушки - то делаем опторазвязку на той же PC817 или 4n35, что бы брать сигнал с Холла в трамблере достаточно будет резистивного делителя и стабилитрона.

Аватара пользователя
BormanYA
Рядовой
Сообщения: 95
Зарегистрирован: 10.01.2018{, 18:07}
Репутация: 12
Откуда: Дмитров
Имя: Михаил

Эмулятор ПНД

#7

Сообщение BormanYA » 23.02.2020{, 00:35}

Есть ли датчик линейного перемещения, например магнитный, на постоянном или переменном магнитном поле? Т.е. прикрепил магнит к "лопате", и смотришь как далеко диск расходомера, 0...15...100% и выводишь уже готовое сопротивление в сторону ЭБУ. И не надо таблиц расчета, по оборотам и ДАД, вычислять положение лопаты и конвертировать в положение. Тут мне припомнился бесконтактный ДПДЗ, от тазика например, правда он с пружиной и залитый.

Отправлено спустя 25 минут 7 секунд:
Ах, забыл ДПДЗ все равно нужен, расход воздуха не по оборотам расчитывается, а по положению дросселя.

Отправлено спустя 43 секунды:
А лопата, это древний ДРВ.

Technoman
Рядовой
Сообщения: 8
Зарегистрирован: 15.02.2020{, 10:27}
Репутация: 0
Имя: Дмитрий

Эмулятор ПНД

#8

Сообщение Technoman » 23.02.2020{, 12:49}

Есть варианты замены ПНД на KMA-200 от бесконтактного ДПДЗ Ваз , поскольку передаточная характеристика "родного" ПНД нелинейная
График_ПНД_1.jpg
График_ПНД_1.jpg (34.01 КБ) 654 просмотра
- делаем преобразование "нелинейное масштабирование" и как бы все дела.
Я хочу использовать именно ДАД, что дает возможность установить эмулятор вообще без вмешательства в железо, только подключить вакуумную трубку к ДАД, питание и сигнал оборотов с катушки.
Для эмуляции ПНД нам не нужен полный расчет циклового наполнения по ДАД, мы не собираемся вычислять время впрыска. Для определения нагрузки и эмуляции сигнала штатного ПНД, достаточно одной таблицы "Давление/Обороты/Целевое напряжение сигнала ПНД". Саму таблицу естественно придется откатывать. Начальные значения напряжения ПНД известны, например при включении зажигания напряжение сигнала ПНД составляет 0.2в На ХХ напряжение должно быть в пределах 0.4-0.7 в и т.д

Technoman
Рядовой
Сообщения: 8
Зарегистрирован: 15.02.2020{, 10:27}
Репутация: 0
Имя: Дмитрий

Эмулятор ПНД

#9

Сообщение Technoman » 25.02.2020{, 11:31}

Набросал первую часть схемы эмулятора - сделал расчёт оборотов и давления, их усреднение и вывод в переменные. Дополнительный блок обеспечивает подачу на выход эмулятора 0.2 вольт при включении зажигания (как на штатном датчике). Ардуино первый раз в руках держу, да и в программировании МК пока что полный ноль, поэтому прошу посмотреть где какие ошибки есть.
Эмулятор эскиз1.png
Эмулятор ПНД эскиз1.flp
(164.1 КБ) 47 скачиваний

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Эмулятор ПНД

#10

Сообщение Sancho » 25.02.2020{, 12:05}

Technoman, В Блоках генератора - не настроено правильно. Найди сам :)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Technoman
Рядовой
Сообщения: 8
Зарегистрирован: 15.02.2020{, 10:27}
Репутация: 0
Имя: Дмитрий

Эмулятор ПНД

#11

Сообщение Technoman » 25.02.2020{, 14:03}

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

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Эмулятор ПНД

#12

Сообщение Sancho » 25.02.2020{, 15:17}

Technoman, Ок, дальше...

P.S. Вам, наверно, будет проще использовать восемь простых массивов - их проще заполнить и редактировать...
Вложения
Эмулятор ПНД эскиз_03.flp
(321.12 КБ) 42 скачивания
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Technoman
Рядовой
Сообщения: 8
Зарегистрирован: 15.02.2020{, 10:27}
Репутация: 0
Имя: Дмитрий

Эмулятор ПНД

#13

Сообщение Technoman » 16.03.2020{, 12:27}

Произошла небольшая заминка, "по независящим причинам", как говорится.
Спасибо тов.Sancho за терпение и помощь!
Попробовал все таки применить Ваш блок двухмерного массива, расширив его до 16х16 значений, кроме того попробовал получить номер строки не "лесенкой" из 16 компараторов, а разбивкой значения оборотов на 16 частей путем деления, но есть наверное одна проблема - на выходе блока деления мы получим не всегда целое число, так же как в Вашем блоке определения индекса столбца делением АЦП ДАД.
Подключил ДАД к Нано, при любых изменениях разряжения напряжение на выходе D5 неизменно 1.96в В переменную RPM подставлял константу с разными значениями оборотов, для эмуляции - все тоже самое, значение PND OUT всегда 1.96в В мониторе порта значения MAP в кПа изменяются адекватно.
Массив_двухмерный_16х16_(CODE).ubi
(15.09 КБ) 40 скачиваний

Ответить

Вернуться в «Начинающим»