Делаем «вечный» датчик массового расхода воздуха на ATiny13
Этот проект появился из-за нежелания покупать бывшую в употреблении около 30 (тридцати) лет деталь за совсем немаленькую сумму в 3000 — 5000 руб. Можно сказать что это будет проба пера в схемотехнике и программировании микроконтроллеров. Если интересно — продолжение под катом.
Осторожно много фото!
Итак, начинаем подпирать велосипеды костылями.
Вводные данные
BMW E30 в кузове купе 1986г с мотором M10B18 (4 цилиндра, 1.8л, инжектор):
Проблемы
1. Чихает
2. Не едет
3. Жрет и не толстеет
Годы в России не пощадили её. Высококачественный бензин, соляные ванны, «пористые дороги». Однако, больше всего ей досталось от бывших хозяев и суровых Русских автомехаников, бессмысленных и беспощадных, производивших ремонты сомнительной необходимости и эффективности. Ярким примером одного из таких ремонтов вы можете полюбоваться на КДПВ. А что это там такое беленькое, все в припое? Это керамическая плата— основная деталь ДМРВ , на нее нанесены пленочные резисторы и дорожка по которой должен бегать подвижный контакт. Как видно на фото она треснула, и некто пытался восстановить ее таким вот варварским методом. Безуспешно. Вот он — корень всех проблем! Тут нужно сказать что ДМРВ является основным датчиком, влияющим на смесеобразование.
Немного теории
Наша машинка оснащена чудом Немецкой промышленности системой распределенного впрыска L-Jetronic.
Система распределенного впрыска L-Jetronic является системой импульсного впрыска с электронным управлением количественным и качественным составом топливно-воздушной смеси. Для обеспечения импульсного впрыска топлива в системе применены форсунки с электромагнитным управлением.
Ну, распределённого — это громко сказано, тут все 4 форсунки соединены параллельно и, соответственно пшикают одновременно, хотя да, это я придираюсь, установлены они каждая напротив своего цилиндра в разных местах впускного коллектора — т.е. распределённо. Мозг здесь довольно глупенький — холостым ходом, зажиганием, прогревочными оборотами не управляет.
Все что ему подвластно — это несколько датчиков и форсунки.
Вернемся к ДМРВ. Здесь установлен электро-механический ДМРВ, в народе именуемый «лопата», очевидно за характерную форму подвижной заслонки.
Принцип действия его довольно прост: воздух потребляемый мотором проходит через входное отверстие, и в зависимости от интенсивности (считай массы воздуха в единицу времени) отклоняет измерительную заслонку на определенный угол. На оси заслонки установлен подвижный контакт, который и бегает по дорожке нашей многострадальной платы из первой картинки.
Варианты решения проблемы:
1. Купить новый ДМРВ — стоит космических денег 35000-60000 руб, сопоставимо со стоимостью авто.
2. Купить БУ ДМРВ — 30 лет эксплуатации, никаких гарантий, стоит 3000 — 5000 руб.
3. Купить новую плату (неоригинал, делают малыми партиями) — цена 300р+пересыл, выглядит так:
Как видно, конструкция отличается от заводской. Надежность под вопросом, в интернете можно найти негативные отзывы о якобы недолговечности сего решения, подтвержденные фотографиями изношенных плат подобного типа.
4. Купить ДМРВ современного типа без движущихся деталей + так называемый конвертер — цена вопроса немного отпугивает, так же необходимо будет адаптировать впускной тракт, наращивать длину патрубков и т. д.
5. Придумать что-то своё.
Для меня выбор был очевиден.
Я решил оставить механическую часть, так как никаких признаков износа не обнаружил. Думаю она прослужит дольше чем остальная машина.
Задача немного упростилась, необходимо преобразовывать угол поворота в напряжение. Хотя нет, постойте, не все так просто… Дело в том что как я уже говорил мозг здесь довольно глупенький и, соответственно на вход он хочет получать максимально готовые данные. Это отразилось в конструкции ДМРВ — график зависимости выходного напряжения от угла поворота оси заслонки нелинеен, и дополнительная сложность — он масштабирован сопротивлением датчика температуры воздуха, который так же встроен в ДМРВ. Соответственно характеристика датчика должна меняться в зависимости от температуры воздуха.
Поиск готового схемотехнического решения не привел к успеху. Проблема с износом ДМРВ подобного типа многих коснулась, много тем на специализированных форумах где на десятках страниц люди обсуждают как же её решить.
Для начала хотелось бы получить данные об угле поворота оси. Переменные резисторы и прочую механику я сразу отбросил, как ненадежные. Оптический датчик — хорошо, но пыль может доставить неприятности, а пыли в дороге хватает. Магнитные датчики — вероятно это то что нужно.
Нашёл вот такой: KMA-200.
С ходу не смог купить его в своей глуши. И случайно наткнулся на вот такой готовый ДПДЗ в котором и применен KMA-200.
В нагрузку получаю магнит с креплением, датчик уже на плате с необходимой обвязкой, покрыт лаком, защищающим от влаги и статики. Нашёл кстати похожий проект.
На выходе у такого датчика напряжение от 0 до 5 вольт зависимость от угла поворота линейная. Нужно как-то преобразовать ее в нужную нам характеристику. Аналоговые схемы в принципе могли бы обеспечить это, но были бы довольно сложны в проектировании и наладке, например какой-нибудь интегратор на операционниках с термокомпенсацией, но это для меня сложновато…
Тут я вспомнил что у меня есть горсть ATiny13, почему бы не использовать их?
Набросал и смоделировал схемку:
Немного о схеме.
- Микроконтроллер тактируется от внутреннего генератора частотой 8МГц.
- Использованы 2 канала АЦП, считывается угол поворота оси заслонки и уровень напряжения на резистивном делителе частью которого является датчик температуры.
- Выходной сигнал ШИМ с частотой около 18кГц
Далее простой фильтр и операционный усилитель LM358 из старой материнки (КУ=1+(330000/100000)=4.3), управляющий полевиком (из той же материнки). Максимальное выходное напряжение = 4.3 * 2.5 = 10,75В.
Зачем полевик спросите вы? А кто его знает отвечу вам я! Лишним не будет. С помощью этой схемы я управлял мощной нагрузкой в виде нескольких автомобильных ламп соединенных параллельно просто для проверки что она это тоже может.
Вообще все детали у меня были в наличии кроме датчика поворота.
Время писать прошивку! Это первая моя прошивка МК, так что конечно все не оптимально, и конечно я выбрал немного странноватый инструмент BascomAVR, в котором писать приходится на каком-то псевдо-кубейсике. Очевидно встроенный туда компилятор не очень оптимизирован, прошивка получается жирная, и полиномиальная интерполяция которую я хотел туда впихнуть к сожалению не влезла. Пришлось реализовать аппроксимацию тремя прямыми отрезками. Почему тремя? Потому что больше не влезло (Bascom + 1 кб flash).
Чтобы выяснить уравнения прямых буквально минут за 10 набросал тупую софтинку в Qt Creator, пошевелил контрольными точками, определился с положением прямых.
Красная линия это искомая характеристика, синяя это аппроксимация прямыми. Далее компиляция и заливка прошивки в эмулятор. Все шевелится так как я и ожидал.
На скорую руку разводим плату и расчехляем лазерный утюг.
Травим, паяем, исправляем косяки разводки (ну куда же без них).
Внимательный читатель и опытный радиолюбитель заметит 2 ошибки которые я допустил при запайке.
Далее включение, проверка основных параметров, и суточная прогонка в разных режимах. Проверка показала что все работает так как и задумывалось. Время сборки и установки на авто.
После настройки подстроечником, машина начинает работать так как и должна, в дальнейшем был проверен расход бензина и динамика, все оказалось в норме, те соответствовало заявленным характеристикам. Машинка каталась на юга из средней полосы России, никаких проблем не появилось.
Я считаю, что первый опыт программирования микроконтроллеров, да в принципе и создания схем, был для меня удачен. Конечно есть огрехи: например выбор среды программирования. В следующем проекте я уже использовал CVAVR, прошивка получается намного компактнее. Выбор микроконтроллера тоже можно было бы назвать не удачным, хотя я его и не выбирал, он у меня был, и было желание его использовать. Сразу по окончанию работы с этим проектом я заказал несколько ATiny85, которые имеют в 8 раз больше памяти, но пока шла посылка эту машину внезапно купили, и ДМРВ так и остался с не идеальным алгоритмом).
Источник
BMW 318 E30 вопросы по расходомеру
Новичок
Пользователь
Сообщений: 11
Регистрация: 19.11.2007
Из: Киргизстан г.Бишкек
Всем многоуважаемым форумчанам привет !!
У меня есть несколько вопросов по расходомеру на BMW 318 e30, мотор м10, LE-JET, у меня стоит расходомер с номером — 0280202025 — но судя по найденной информации это расходомер для 6 цилиндрового мотора.
А у меня должен быть расходомер с номером — 0280202050 -.
Так ли это?
Если так, то вопрос, в чём их отличия?
И не подскажите где найти данные по этим расходомерам?
Если не затруднит, поделитесь фотографиями платы расходомера
— 0280202050 — и данными на сопротивление датчика всасываемого воздуха.
Заранее всем большое спасибо
P.S
Сильно не пинайте я тут новенький.
Гордость Клуба
Пользователь
Сообщений: 2043
Регистрация: 16.11.2005
Из: Ростов на Дону
Постоянный Житель
Пользователь
Сообщений: 165
Регистрация: 17.11.2007
Из: астрахань
Гордость Клуба
Пользователь
Сообщений: 2043
Регистрация: 16.11.2005
Из: Ростов на Дону
Постоянный Житель
Пользователь
Сообщений: 165
Регистрация: 17.11.2007
Из: астрахань
СПАСИБО! только где найти образцовый расходомер? может купить. ипонему настроить свой! 😆 тогда уж лучше «от булды»,но читал здесь на форуме ,расхдмер попеля настраивали именно от напруги на выходе рсхдмр обороты: примерно так 2вольт на выходе -обороты такие-ето итд .даже таблица есть там ,только расходомер марки другой (IMG:https://forum.bmwland.ru/style_emoticons/default/ohmy.gif)
Добавлено спустя 6 минут 37 секунд:
думаю,что подсоединять образцовый и настраиваемый нужно последовательно: так будет точнее
Гордость Клуба
Пользователь
Сообщений: 2043
Регистрация: 16.11.2005
Из: Ростов на Дону
Новичок
Пользователь
Сообщений: 11
Регистрация: 19.11.2007
Из: Киргизстан г.Бишкек
Вот и я думаю как мне настроить этот не родной раходомер а то кушает 15 литров и не особо едит.
А про сопротивление датчика всасываемого воздуха спрашиваю потому что он звонится уменя при комнатной тепературе 90 ом, а в интернете находил разнообразную информацию о его сопротивлении от 100 ом до 3 ком при 20 градусах.
Нашел также вот такую картинку и судя по ней есть зависимость оборотов и напряжения на выходе. И также есть зависимость от температуры всасываемого воздуха о которой я не увидел информации, и нет данных для какого мотора этот расходомер.
Только вот добиться таких напряжений у меня не получилось, на холостых выставляется а вот на 2000 напряжение на выходе больше на 1 вольт от указанного на картинке.
Потом заехал на станцию они мне там отрегулировали СО и теперь вот имею расход 15 литров. По моему это многовато для М10 мотора.
Просьба о фотографии платы расходомера и данных на термо датчик актуальна.
Источник