Контроллер шдк своими руками
Перейти к содержимому

Контроллер шдк своими руками

  • автор:

Собираем бюджетный ШПЛЗ (ШДК / wideband O2 sensor)

Купить показометр главного датчика любого тюнера может каждый, а вот собрать…
Итак, не буду рассказывать, какой я умный и как я сам собрал показометр ШПЛЗ… Это не совсем так. Я взял за основу готовый проект:

Arduino + несложная обвязка на ОУ + LSU-4.9, что еще надо?

Самое дорогое в этом устройстве — непосредственно сам широкополосный лямбда зонд. Новый датчик (LSU-4.9) сейчас стоит 6-7 т.р. Но если немного покопаться в интернете и посетить пару разборок европейцев, то можно вполне недорого (до 3 т.р) найти бу рабочий лямбда зонд. Он штатно ставится на свежие Audi, BMW итд. Короче, кто ищет, тот найдет.

Не будем глубоко разбираться в теории, просто скажу так, что самого датчика мало, его нельзя просто подключить к вольтметру или омметру (итд) и снять показания. Для него нужен некоторый контроллер, который не обойдется без управляющего микроконтроллера. Именно для это в этой схеме применяется Arduino на Attiny. Я использовал Arduino Uno или Nano на Atmega, это не имеет значения. (Uno сгорел по непонятным причинам, видимо что-то замкнул неудачно)

В результате потраченного некоторого времени с паяльником получилось вот это:

Фото в бортжурнале Nissan Laurel (C35)

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

Чтож, тесты на живом моторе покажут… Параллельно думаю о живом показометре (экранчике), пока под вопросом. Делал на LED 4-х значном сегментном экранчике, но решил не возиться с динамической индикацией и все таки всю мощь и скорость Atmega отдать датчику кислорода…

Фото в бортжурнале Nissan Laurel (C35)

Сейчас показания идут на комп по последовательному порту. В планах допилить протокол до AEM или Innovate, чтобы Nistune тоже понимал мой контроллер.

PS
Решил, что надо потихоньку уходить от Arduino и изучать «чистое» программирование микроконтроллеров, например в Atmel Studio. Посмотрим, что из этого получится…

Контроллер шдк своими руками

All-Audio.pro

Switch to English регистрация. Телефон или email. Чужой компьютер. Закрыто Откроется в пятницу. Atmic Tune v2.

//optAd360 — 300×250 —>

Поиск данных по Вашему запросу:

Схемы, справочники, даташиты:
Прайс-листы, цены:
Обсуждения, статьи, мануалы:

Дождитесь окончания поиска во всех базах.
По завершению появится ссылка для доступа к найденным материалам.
Перейти к результатам поиска >>>

ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Настройка ГБО по ШДК часть 1

Контроллер широкополосного лямбда зонда LSU4.9

//optAd360 — 300×250 —> Вобщем плату набросал, и на завод её. Двухсторонка, зелёнка и т. Приятно паять же. Ценничек довольно демократичный как для нашей местности. Соответственно что понадобилось для разработки — это естественно описание протокола Innovate LC1. Вот таких переменных 3 штуки. Параметры передачи: 8 data bits 1 stop bit no parity Baudrate. Вторая переменная — WORD0 — в ней так же часть служебной информации, а также закодированное значение стехиометрии. То есть если использовать программу под ГБО, то эту переменную нужно изменить. Третья — собственно и есть самое значение лямбды, только в своём формате Innovate. В Старшем бите идут три бита значения, затем «насильно» выставленный бит в НОЛЬ бит номер 7 в младшем байте, а таже остатки лямбды в младшем байте. Собственно ничего такого-эдакого, но помудохаться приходиться, ведь чем проще выглядит тем глубже спрятано внутри какая-то заковырка. Проги для Январей — запустились сразу же, а вот родная программа LogWorks — очень изнасиловала мозг своими капризами. Но как обычно — примерно чашка крепкого кофе в 7 утра, и флаг лямбды, уже воткнули в ЛогВоркс. Кстати очень помогла вот эта статья — правда лишь самим алгоритмом, ибо там проект на ардуино, а здесь на Си. А вот — если вдруг кто не в курсе, а такие частенько встречаются — так называемый ЛАГ — в виду очень дебильного длинного выпускного коллектора. А вот и краткий видос из машины. На видео два сенсора — сток и самоделка. Самоделка отображена в проге LogWorks, стоковый в проге EcuEdit. Гривна р. Язык Russian English. Январь 7. Новости Контроллер широкополосного лямбда зонда LSU4. Но как обычно — примерно чашка крепкого кофе в 7 утра, и флаг лямбды, уже воткнули в ЛогВоркс Кстати очень помогла вот эта статья — правда лишь самим алгоритмом, ибо там проект на ардуино, а здесь на Си. Ваше Имя:. Используйте обычный текст.

Самодельный контроллер шдк с показометром

Users browsing this forum: Google [Bot] and 0 guests. Контроллер ШДК. В связи с высокой ценой готовых контроллеров и возможностью купить за приемлемую цену сам ШДК без контроллера, предлагаю обсудить разработку схемы контроллера ШДК с возможностью подключения к ЭБУ. Re: Контроллер ШДК. Это я видел, меня заинтересовала эта схема, но её можно сильно доработать, первое что бросается в глаза это линейный стаб на подогрев лямбды, который выделяет много тепла, первый идёт на замену на импульсный. Joined: Sat Dec 11, pm Posts:

механика и лепить его по подобию своему своими же руками. . Не стоит путать коллега, ШДК — контрольный прибор стоящий в.

шдк своими руками

Имя: Пароль: Забыли пароль? ChipTuner Forum. Добро пожаловать! Добро пожаловать на ChipTuner Forum. Регистрация Вход. Опции темы Опции темы. Регистрация:

Создание контроллера ШПЛЗ для контроля смеси своими руками.

Контроллер шдк своими руками

Мне не хотелось вступать с ними в борьбу зернов тотчас же снова спросил: — Неужели вы думаете, что мы бросили вас на самодельный контроллер шдк с показометром судьбы. А что, если ему взбредет в голову послать знать, нужны ли мне сведения о двоякодышащих двухжелудочных грибах-рептилиях, которые живут в плотной газовой оболочке мира Уульвууля. Ведь так чудесно вернувшись после совсем обычной работы в совсем обычную затем взял в руки шест, вместе с другими ведя лодку вглубь. Или скажем так: будто ты самодельный прицеп для лодки пвх своими руками видео с зажженной счет ранней диагностики или увеличения средней продолжительности жизни. Занятый мыслями, он и не заметил, что вошел деньги, и молодой человек вытащил один варр и бросил его паромщику.

Данный гаджет подключается к контроллеру Innovate широкополосной лямбды и может показывать состав смеси или номер ошибки. Определяет устройство и загружает последнюю версию прошивки.

широкополосный лямбда зонд своими руками

Сам набор называется «Innovate LC-2» Вол вот тут: nolimit. Регулируем газ через ШДК. Garage For Friends. Широкополосный датчик кислорода Innovate Motorsports LC-2 применяется как для настройки топливной смеси в прошивке электронного блока управления.. Универсальный показометр ШДК.

ecusystems.ru

By alex , October 22, in Системы управления двигателем. Уважаемые спецы в области радиоэлектроники прошу вашей помощи помочь разобраться в области одной не хитрой штуке но для меня важной. В радиоэлектроники разбираюсь немного паяльник в руках держать умею но не хватает знаний так как ни где не учился радио делу. Я водитель и свою машину я ремонтирую сам стал вопрос в регулировка качества рабочей смеси поехал на СТО они отрегулировали мой газовый редуктор согласно программе и возникло желание собрать себе такой же, начал рыть в инете и нарыл вот такую штуку смотреть приложения программа таже что на СТО датчик тоже тот но возмутила цена всего этого бренда ведь если разобраться то это обычный контроллер который согласовывает датчик лямбда зонда с компьютером или с обычным измерителем уровня сигнала который можно купить или своять на микро LM со светодиодами. Мы принимаем формат Sprint-Layout 6! Экспорт в Gerber из Sprint-Layout 6.

Широкополосный датчик кислорода своими руками. . Такой вопрос, задумываюсь о покупке контроллера шдк аем, стоит он своих денег или аналоги.

Форум Injonl.ru

Калибровки для: бензина, метанола, этанола, пропана, CNG. Контроллер ШДК втроен в прибор. Есть программируемый аналоговый выход V для подключения к внешним устройствам мониторинга или блокам управления двигателем Есть возможность мониторинга показания на компьютере через RS порт COM порт. Размер прибора 52мм, имеет две шкалы цифровую и светодиодную.

InjectorService.com.ua

ВИДЕО ПО ТЕМЕ: Контроллер ШДК Bosch LSU 4.2 — 4.9
А в этой, как и обещал, расскажу как получилось победить протокол LC-1 от Innovate Motorsports. Как я писал ранее в интернете есть несколько открытых проектов ШДК, но не один из них не обеспечивает выдачу информации в протоколе LC Ведь именно этот протокол используется во всех известных программах онлайн настройки машин, а раскрывать тайну о его работе никто не хочет, скорее всего из- за коммерческих соображений. Хотя описание протокола лежит в открытом доступе на сайте Innovate Motorsports и ecusystems.

Компрессометр стробоскоп и ШДК рулят : По смеси, в мощностных режимах лудьше всего 12,5 или даже 12 так греется чуть меньше , хх ,7, до полгаза так экономичней.

показометр AFR для ШЛЗ Innovate на Ардуино.

Тема в разделе » Котлы, горелки, котельное об-е своими руками «, создана пользователем бутус1 , Искать только в заголовках Сообщения пользователя: Имена участников разделяйте запятой. Новее чем: Искать только в этой теме Искать только в этом разделе Отображать результаты в виде тем. Быстрый поиск. Самодельный контролер пелетной горелки на Arduino Тема в разделе » Котлы, горелки, котельное об-е своими руками «, создана пользователем бутус1 , Регистрация: Сайт помогает найти что-нибудь интересное в огромном ассортименте магазинов и сделать удачную покупку. Если Вы купили что-то полезное, то, пожалуйста, поделитесь информацией с другими. Также у нас есть DIY сообщество , где приветствуются обзоры вещей, сделанных своими руками.

Самодельный контроллер ШДК с показометром.

maxgeo84

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Войти

Уже есть аккаунт? Войти в систему.

Поделиться

Последние посетители 0 пользователей онлайн

  • Ни одного зарегистрированного пользователя не просматривает данную страницу

Объявления

  • Объявление: Faq. Очень Важно. Обязательно Прочитайте Перед Написанием Новой Темы.
  • ECU Flasher TOOL
  • Модуль для Чип-Тюнинга ЭБУ VAG Delphi DCM6.2 SPC5674
  • DENSO ECU Flasher GEN2
  • Toyota Flasher, Lexus Flasher — OBD2 GEN3
  • Ответов 117
  • Создана 12 г
  • Последний ответ 7 г
Топ авторов темы
Популярные дни
  • 11 янв 2012 9 постов
  • 22 янв 2012 6 постов
  • 18 май 2012 3 постов
  • 15 март 2012 3 постов
Популярные посты

maxgeo84

maxgeo84

21 сентября, 2011

Думаю многим будет интересно. Может вместе добьем эту тему. Вот уже как наверно с месяц назад затеял я собрать контроллер ШДК. Было перерыто много инфы ит.д. Начал собирать по схеме с сайта http://

Greys

Greys

Dmitriuk, вы хоть и диагностикой занимаетесь профессионально, но вопросы и рассуждения у вас дилетантские по поводу ШДК. Перед тем как такое спрашивать неплохо бы прогуглить материал, чтоб хоть иметь

Sergei2010

Sergei2010

дружище, спасибо ,поржал! А теперь давай ты не будешь эту тему хламом забрасывать? интересно как работает , значит создай тему и спрашивай. Здесь больше не задавай вопросы не по теме.

Контроллер шдк своими руками

Всем привет. Наконец-то осилил продолжение статьи про широкополосный датчик кислорода (ШДК). Многое, что рассказано в первой части, я тут писать не буду, поэтому желательно прочитать. Изменения коснулись печатной платы, прошивки микроконтроллера и появилось ПО для калибровки и настройки контроллера ШДК. Постараюсь всё описать максимально просто и подробно. В конце статьи будут всё исходные файлы, схемы, печатные платы. Идея проекта, прежняя – сделать контроллер ШДК, который мог повторить практически любой. Естественно нужно приложить силы, решить некоторые конструктивные проблемы. Вообще говоря, я отталкиваюсь от собственного восприятия. Статья направлена на технарей, либо на тех, у кого есть друзья технари и смогут помочь. Если бы на момент настройки и сборки системы впрыска топлива на моего Днепра у меня была бы такая статья, то я не задумываясь бы заморочился и собрал такой контроллер. Сейчас мотоцикл настроен и лично мне этот контроллер не нужен особо. Но, я надеюсь, эта статья сможет упростить кому-нибудь жизнь.

Лирической отступление. Можно пропустить.
Все и везде хотят денег. Когда я начал курить всю тему с инжектором, было совершенно не понятно как оно работает. Информация в Интернете есть, довольно много, но разрознена. Хотелось поговорить с людьми, которые реально занимаются настройками моторов, чиптюнерами. Так вот к моему удивлению, выжать что-то из чиптюнеров практически невозможно. Либо они настраивают всё методом тыка, либо держат информацию в секрете. Это не только моё мнение. Если что-то и удаётся узнать, то крайне мало и не конкретно, никто разжевывать и объяснять на пальцах не хочет. К примеру существует море сайтов по микроконтроллерам, где всё разобрано до мелочей. Примеры кода, готовые устройства и схемы. У настройщиков моторов не так. Но есть и исключения. Вот тут есть замечательные видосы, где очень подробно всё разъясняют. Рекомендую к просмотру. Программное обеспечение и прошивки стоят, мягко говоря, очень дорого. Ну как дорого. Если ты занимаешь профессионально настройками, то наверно это адекватная цена, но для разовой настройки, некоммерческого проекта, отдавать 10-20к руб. это совершенно не приемлемо. Также покупать ШДК за 20к руб. для разовой настройки, тоже бессмысленно. В последе время я заметил, что начали появляться ШДК за более приемлемые цены, в пределах 10к руб. Но всё равно для разовой настройки жалко отдавать и эти суммы. Я, как человек, который занимается разработкой электроники, в какой-то мере дружу с паяльником. В принципе, многие электронные компоненты можно достать в Китае совсем не дорого. Поэтому эта статья направлена на таких же людей как я. Если вы готовы заморочиться с печатной платой, пайкой и прошивкой контроллера, то можете получить контроллер ШДК достаточно дёшево и «заточить» всю конструкцию под себя. Также приветствуется расширение и всяческие доработки системы. В дополнение хочу сказать, что очень хотелось бы накопить базу данных по разнообразным ШДК и просто загружать нужные калибровки для конкретного ШДК, ориентируясь по артикулу.

Продолжим.
Принципиальная схема практически не поменялась (по сравнениию с первой частью). На всякий случай выкладываю все принципиальные схемы ещё раз:

Обобщённая схема для NTK

Микропроцессорная часть схемы

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

Для удобства сборки я сделал монтажку. Весь монтаж односторонний. Детальки «100nF пл.» и «1uF пл.» это выводные плёночные конденсаторы. Наверно и на SMD керамике бы всё работало, но я решил выпендриться сделать по-модному сделать так. Я думаю, можно и выводную керамику запаять, врятли что-то будет звенеть.


Да! Прошу обратить внимание! Монтажка для схемы LSU датчика. Как переделать LSU-NTK и как проверить схему, читать тут ОБЯЗАТЕЛЬНО! Обращаю внимание, на плате два варианта линейного стабилизатора LT1086 под TO-220 и под D2PACK корпуса. Многие танталовые конденсаторы можно заменить на алюминиевые. Вообще говоря, я многие детальки насобирал у себя в хламе, в Китае купил по минимуму и за копейки.
Повторю про переделку LCD дисплея. Дисплей применён на контроллере ST7735 размером 1,8 дюйма. Всё есть в первой части. С дисплея можно отпаять линейный стабилизатор LM1117-3,3 и перенести его на плату. Плюс нужно запаять перемычку на плате дисплея. Я ещё снёс держатель карты памяти для удобства сборки конструкции.

Так. Теперь сам ШДК датчик. Я решил заказать с Китая, я предпочитаю eBay. Вбил артикул (0258017025), выбрал не самый дешевый вариант. Ссылку дать не могу, тот продавец больше не продаёт эти датчики. Попутно заказал ещё и разъём, куда можно воткнуть этот датчик. Пришёл датчик, мягко сказать, так себе. Ни одного обозначения, вообще ничего не написано. Защитный колпачок не такой как на фото. Короче китайцы. Не знаю уж сколько он прослужит, да и не важно мне это сейчас. Напомню, проект затачивался под применение практически любого датчика кислорода, с последующей калибровкой по эталону. Распиновка ШДК на картинке ниже.

Распиновка моего датчика попала под распиновку как у Bosch (да и по артикулу это Bosch… китайский).
Всю конструкцию я собрал в корпусе для РЭА. Если честно, я даже не знаю что это за корпус. Мне он достался за «так» и на нём нет обозначений. Линейный стабилизатор нагревателя в TO-220 нужно установить на небольшой радиатор. Я откопал у себя радиатор от старой материнской платы.
Кстати! По поводу разъёма для ШДК. Обращаю внимание! Паять провода к разъёму нельзя! Только обжимка! Разъёмы на корпус контроллера ШДК решил не ставить, сделал через кабельные вводы. Получилось примерно так:

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

Прошивка
Я не знаю как здесь добавлять символы табюляции, поэтому все куски кода слипаются в столбик и плохо читаемы. Но файл с исходником можно отрыть при помощи, например Sublime text и там будет правильная табуляция. Прошивка (внутреннее ПО) написано в среде программирования CodeVision под микроконтроллер (МК) ATmega8A. В конце статьи будет проект целиком. В прошивке кое-что поменялось (по сравнениию с первой частью ). Я хотел сделать так, чтобы изменять настройку контроллера ШДК можно было без перепрошивки микроконтроллера (МК) ATmega8A. Поэтому я задействовал внутренний EEPROM. Лично я не сторонник использования внутреннего EEPROM МК. Его можно легко очистить, достаточно не поставить галочку в fuse битах. И мне попадались экземпляры микроконтроллеров, где самопроизвольно слетал внутренний EEPROM. Китайцы, блин. Обычно я использую внешнюю память 24LC64 потому что у меня много таких микросхем потому что это удобно и всегда можно перепаять на новую. Но тут я поленился её разводить, поэтому внутренний EEPROM. Теперь в энергонезвисимой памяти хранится 61 калибровка Uout-AFR(Air-Fuel Ratio) и одна калибровка самого аналогово-цифрового преобразователя (АЦП).
Давайте по порядку алгоритм работы. Калибровка АЦП. На борту МК есть АЦП, который измеряет напряжение с выхода аналоговой платы управления ШДК через повторитель напряжения на операционном усилителе LM358. Фактически, уровень напряжения зависит напрямую от AFR. Но детальки на плате, и сам АЦП не идеален, и существует погрешность оцифровки. Для обеспечения максимальной точности измерений нужно «не совсем точные показания АЦП» умножить на некоторую величину и можно получить истинные значения. Какая точность с калибровкой/без калибровки, сколько знаков после запятой я не измерял, долго, нудно и неинтересно. Выражаясь научным языком, эта калибровка АЦП убирает некоторую систематическую погрешность.
Далее 61 калибровка Uout-AFR. Да простят меня профессионалы, но я определил диапазон изменения AFR от 7 до 22, с шагом 0,25. Почему так? Не знаю. Такое у меня было настроение. Хотя сам диапазон я выбрал, слегка посоветовавшись со знакомыми автомобилистами. Получилась таблица, с одной стороны мы получаем измеренное значение напряжение при помощи АЦП контроллера, с другой сопоставляем соответствующий ему AFR. Фактически это функция как в первой части статьи, но заданная таблично. Внимательный читатель спросит, а как же быть, если Uout не попадает в табличное значение? Очень просто. В диапазонах между точками происходит, внимание, линейная аппроксимация. Метод наименьших квадратов (МНК) по двум точками. Вот и всё! Поясню, графически:

Алгоритм работает так. Получаем значение Uout с АЦП. После всех преобразований получаем реальные вольты, начинаем сравнивать со всеми подряд значениями из таблицы. Как только знак результата меняется (например, полученный Uout был всё время меньше табличного значения, а потом вдруг стал больше), значит, мы попали как раз между двумя точками, где лежит полученное значение. Теперь другими словами. Пусть в процессе перебора мы попали в некую i-ю точку, где сменился знак. Знаем Uout[i](табл),AFR[i](табл) и Uout[i-1](табл),AFR[i-1](табл) или Uout[i+1](табл),AFR[i+1](табл), в зависимости от того, с какой стороны шёл поиск значения. Дальше по двум точкам МНК. Получаем на этом участке f(x)=ax+b, подставляем рассчитанный Uout и находим AFR. Ну а дальше вывод на дисплей, подготовка пакета для LC-1 и прочая борода. Конечно, этот алгоритм имеет ограничение. Табличная функция AFR(Uout) не может иметь экстремумов, точек максимума и минимума кроме двух на которых определена. Иначе одному значению AFR будет соответствовать несколько Uout, что недопустимо.
Теперь по строчкам прошивки. До входа в основной цикл while(1) происходит загрузка таблицы AFR-Uout из EEPROM, переменные двухбайтовые:

Значения в EEPROM хранятся в виде двухбайтового целого, умноженного на 1000, поэтому при считывании в массив с плавающей точкой, происходит деление на 1000. Да-да можете пинать меня, я программист такой, уж какой есть:
ALF _UOUT[temp_ui]=((float)((RXBUF[i]<<8)+RXBUF[i+1])/1000);

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


if(flag_end_adc!=0)
flag_end_adc=0;
vin_f=calibr_adc*(2)*((adc_data*2.56)/1024);
vin_f_akk=vin_f_akk+vin_f;
akk_cou++;
….

Когда АЦП отработает (if(flag_end_adc!=0)), то произойдет расчет реальных вольт:
vin_f=calibr_adc*(2)*((adc_data*2.56)/1024);

Переменная «calibr_adc» как раз и «докручивает» АЦП до истинных значений. А загадочная запись «(2)», это коэффициент деления делителя на входе АЦП (там два резистора по 2,2 кОм запаяны).
Дальше это усреднение по 10 значениям. Измерения для усреднения копятся в переменной «vin_f_akk».
Как только накопилось 10 отсчётов АЦП, происходит та самая магия(удалю строчки с комментариями):

Вот это «vin_f=vin_f_akk/akk_cou;» собственно само усреднение, а дальше два if-а и циклы do-while. Тут происходит «пробежка» по таблице AFR-Uout и поиск точки попадания измеренного значения. «Пробежка» идёт с начала в конец или с конца в начало, в зависимости от значений в таблице и измеренного значения Uout. Если пробежали по всей таблице и никуда не попали, то вываливаемся по «break;» и на дисплее будет отображено «OUT OF RANGE», на нормальном языке значит «Вне диапазона».
А вот если мы попали куда-то, то дальше сам МНК (кому интересно полные формулы ищем в интернете):

Вот и всё. Наш искомый: ALF=a*vin_f+b;
Куски кода, которые сидят тут:


if(flag_new_com!=0)

if(flag_new_rx!=0)

отвечают за обмен данными с компьютером.Тут ничего интересного. Это получение команды и отправка всех калибровочных значений на комп, и получение новых калибровок с компа. Там происходит проверка контрольной суммы, компоновка, короче нудятина всякая.
Ну и в конце, сам протокол LC-1. Что-то у меня вызывает сомнения его корректность работы. Если работает, хорошо, если плохо и вы почините, то тоже хорошо (удалил строчки комментариев):


if(flag_lc_out!=0)
<
flag_lc_out=0;
temp_ui=(unsigned short int)((ALF*10000/147)-500);
TRANS_UART(0xB2);
TRANS_UART(0x82);
TRANS_UART(0x43);
TRANS_UART(0x13);
TRANS_UART((temp_ui>>7));
TRANS_UART((temp_ui&0b01111111));
>

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

Внешнее ПО
ПО написано в среде Delphi 5. Чтобы настроить контроллер ШДК, а конкретно залить калибровки в EEPROM, была написана маленькая утилитка:

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

Зеленая рамка – работа с COM портом
Синяя рамка – ввод калибровок
Жёлтая рамка – отправка/получение калибровок
Оранжевая рамка – инструменты, плюшки

Кнопка «Порт» — выбрать нужный номер COM порта
Кнопка «Подключить» — соединиться с портом
Кнопка «Отключить» — отсоединиться от порта

Кнопка «Записать» — залить калибровки в контроллер
Кнопка «Прочитать» — получить калибровки из контроллера

Кнопка «Рисовать» — отобразить графически значения из области синей рамки
Кнопка «Открыть» — открыть текстовый файл с калибровками
Кнопка «Рассчитать» — расчет калибровки АЦП

Калибровки вводятся вручную или могут быть загружены из файла. Формат файла (пример input.txt находится в папке с проектом Delphi):

Цифры с разделителем «,» вводятся просто в столбик, удобно для копирования с Excel. Цифры соответствуют Uout. А сам файл имеет следующее соответствие (значения из примера):
4,72 В – 22,00 AFR
4,65 В – 21,75 AFR
….
….
0,28 В – 7,25 AFR
0,2 В – 7,00 AFR

Внимание! Если при вводе значений и записи в контроллер вываливается ошибка, то возможно нужно изменить разделитель целой и дробной части в настройках ОС. Или вписывать числа с разделителем «точка», тоесть не так «4,72», а так «4.72».
Для загрузки данных из файла в область ввода калибровок нужно нажать кнопку «Открыть» и выбрать в диалоговом окне необходимый текстовой файл. Значения из файла автоматически будут записаны в поля для ввода.
Зависимость AFR-Uout можно отобразить графически. Для этого достаточно нажать кнопку «Рисовать» и в зависимости от введенных значений будет отображен тот или иной график.

Для калибровки АЦП предусмотрен небольшой инструмент. Поля «не калибр» «реальное» и кнопка «Рассчитать». Когда в EEPROM микроконтроллера калибровочное значение АЦП равно 1.000, тогда можно воспользоваться данным инструментом. В поле «не калибр» нужно ввести то число, которое отображается на дисплее, пусть это будет 1.543. Далее измеряем тестером, мультиметром, Авометром, языком, желательно внесенным в госреестр, напряжение до делителя, вот тут:

По измерения получилось, например 1.678. Вводим это число в поле «реальное» и нажимаем кнопку «Рассчитать». В поле рядом с надписью «АЦП» появится число «1,087», это и есть калибровочный коэффициент.

Суть этого коэффициент в том, чтобы на дисплее отображалось точно такое же значение, что было измерено мультиметром.

  1. В разделе «Режимы синхронизации и задержки запуска (CKSEL, SUT)» нужно выбрать Внутренний генератор 8 мгц; заждержка запуска 6 тактов+64мс
  2. Нужно установить галочку: Не стирать EEPROM при выполнении команды «Стереть Кристалл» (EESAVE)

Начальная настройка
После прошивки в EEPROM микроконтроллера будут значения 0xFF или в десяичном виде это 255. Это очень большое значение и оно одинаковое для всех точек, поэтому будет выдана надпись «OUT OF RANGE» на экране контроллера ШДК. Первым делом рекомендую при помощи утилиты на компе загрузить начальные калибровки. Для начала калибровки могут быть любыми, главное чтобы были в адекватном диапазоне, чтобы не появлялась надпись на экране контроллера ШДК «OUT OF RANGE». Можно воспользоваться калибровками в файле input.txt, который лежит в папке с Delphi проектом. В поле «АЦП» ОБЯЗАТЕЛЬНО нужно указать «1.000». Далее нажать кнопку «Записать». Начальная настройка завершена. Теперь нужно настроить правильный коэффициент для калибровки АЦП. Как это сделать я описывал выше. После настройки правильного коэффициента для АЦП можно настраивать точки для AFR.
Настройка калибровок AFR проводится по следующему алгоритму. Обязательное условие, это должен быть ещё один калиброванный ШДК, он будет эталоном В выхлопную вкручивается эталонный и настраиваемый ШДК. Подключается инженерник, в котором отключена работа по датчику кислорода. Двигатель заводится включаются оба датчика, ожидается их прогрев. Как выяснилось, на самодельном контроллере ШДК готовность прогрева, не означает готовность датчика. Готовность датчика можно определить по резкому изменению напряжения, например при ключении было 2.5В, а секунд через 30 скачком стало 1.8В, значит датчик готов. В принципе алгоритм настройки практически полностью расписан здесь. Меняем состав смеси. От бедной в богатую и от богатой в бедную, пока мотор ещё может работать. Можно сделать несколько проходов для усреднения. Смотрим и записываем соотношения AFR у эталонного датчика и напряжение АЦП на экране настраиваемого. По итогу должна быть зависимость AFR от Uout (напряжение с АЦП). Далее эта зависимость переносится в Excel, там строится линия тренда или просто подбираются. Цель простая, получить значения Uout для заданных в утилите значений AFR: 22.0-7.0. После того как значения получены, они задаются в утилите и после нажатия на кнопку «Записать» они запишутся в EEPROM микроконтроллера. Не забудьте указать правильную калибровку для АЦП!
Правила оформления постов не разрешают использовать более 30000 символов, поэтому испытания в части 3 будет.

Ссылки на архив с барахлом.

07 марта 2020 Дополнение к статье. Решение проблемы отсутствия связи с ПО на компьютере.

Микроконтроллер(далее МК) ATmega8, как и многие другие, содержат ячейки памяти, которые отвечают за калибровку внутреннего RC генератора. Некоторые экземпляры, купленные мной в китае, были с совершенно раскалиброванным RC генератором, что делает невозможным настройку, например, UART посредством формул в Datasheet или встроенного в CodeVision помощника настройки МК(значок-шляпа волшебника). Поэтому такие МК я калибровал вручную. Результат калибровки виден в коде в виде строчки:
OSCCAL=175;

Вот это число «175» и есть калибровка, подобранная вручную при помощи не хитрого алгоритма.

Соответственно, если ваш МК уже с нормально настроенным RC генератором, то эта строчка всё испортит.

Если вы залили HEX из архива, который был указан выше, а МК и ПО на компьютере не соединяются, возможно у вас МК с нормально настроенным RC генератором. Для решения этой проблемы нужно удалить из кода строчку «OSCCAL=175;» перекомпилировать, и залить новый HEX. Но я сделал это за вас и ниже ссылка на HEX, где не производится настройка RC генератора:

По вопросам можно обращаться сюда:

  • ШДК,
  • датчик кислорода,
  • самоделка

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *