Пользователь
0,0
рейтинг
23 октября 2013 в 15:29

Разработка → Как начать делать блок управления автодвигателем с нуля из песочницы

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


Итак, старенькая Киа Прайд. Под капотом у неё есть вот такая штука, к которой подходит десяток проводов — это распределитель зажигания, в корпус которого заодно встроены датчики положения распредвала и катушка зажигания.



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



Если поразбирать еще немного, то мы увидим и внутреннее колесо, и сами датчики.



Эти два жестяных колеса сидят на валу, вращаются вместе с ним — и, о чудо, формируют в двух торчащих наружу проводах вот такой очень простой сигнал:



На этом наше везение не заканчивается: хотя мы и знаем, что аккумулятор в автомобиле обычно двенадцативольтовый — сигнальная электроника работает обычно на пяти вольтах! А это значит, что этот сигнал можно вот абсолютно как он есть подключить к например stm32f4discovery — это такая плата с микроконтроллером, в которой цена менее тысячи рублей сочетается с 32ых битным процессором частотой 168 МГц и даже арифметическим сопроцессором.



Если решить программировать это чудо с использованием ChibiOS/RT, хотя бы для упрощения интерфейсов работы с периферией, то вот таким несложным кодом мы получим в консоль работающий тахометр.

volatile int rpm = 0;
int lastInputEventTime = -10 * CH_FREQUENCY;

void icuWidthCallback(ICUDriver *driver) {
    int now = chTimeNow();
    int diff = now - lastInputEventTime;
    rpm = 60000 * TICKS_IN_MS * 2 / 4 / diff;
    lastInputEventTime = now;
}

ICUConfig wave_icucfg = { ICU_INPUT_ACTIVE_LOW, 100000, icuWidthCallback, NULL };

int main(void) {
    halInit();
    chSysInit();

    // this thread would blink one of the LEDs, that would look cool
    chThdCreateStatic(blinkingThreadStack, sizeof(blinkingThreadStack), NORMALPRIO, blinkingThread, NULL);

    // serial-over-usb initialization
    usb_serial_start();

    // configure input signal pin
    palSetPadMode(CRANK_INPUT_PORT, CRANK_INPUT_PIN, PAL_MODE_ALTERNATE(GPIO_AF_TIM2));

    // start input capture - we will handle input events and calculate RPM based on the timestamps
    icuStart(&CRANK_DRIVER, &wave_icucfg);
    icuEnable(&CRANK_DRIVER);

    while (TRUE) {
        // RPM value is updated by the input event handler
        chprintf(&SDU1, "rpm: %d\r\n", rpm);
        chThdSleep(100);
    }

    return 0;
}




По-моему, достаточно просто. Но, всё-таки одно дело — считать что-то с датчиков, и совсем другое дело — сгенерировать какой-то управляющий сигнал.
Давайте разберёмся, как же управляются форсунки?

Чтоб не экспериментировать сразу же с большим и железным двигателем, продолжим пока только с оригинальным блоком управления — даже если мы его хотим заменить на свою плату со своим кодом, всё равно будет полезно собрать побольше информации. Например, будет полезно
собрать информацию о ширине управляющего форсунками сигнала в зависимости от оборотов двигателя.

Итак, берём блок управления и кладём его на стол.



Аккумулятор у нас в машине на 12 вольт? так и старый ATX блок питания — тоже на 12 вольт, его и используем для питания блока управления на время экспериментов.



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



И немного кода для генерации сигнала.

static PWMConfig pwmcfg_slow = { 10000, 1000, NULL, { {
PWM_OUTPUT_DISABLED, NULL }, { PWM_OUTPUT_ACTIVE_LOW, NULL }, {
PWM_OUTPUT_DISABLED, NULL }, { PWM_OUTPUT_DISABLED, NULL } },
/* HW dependent part.*/
0 };

int main(void) {
    halInit();
    chSysInit();

    // this thread would blink one of the LEDs, that would look cool
    chThdCreateStatic(blinkingThreadStack, sizeof(blinkingThreadStack), NORMALPRIO, blinkingThread, NULL);

    // serial-over-usb initialization
    usb_serial_start();

    pwmStart(PWM_SLOW, &pwmcfg_slow);
    palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(2));
    pwmEnableChannel(PWM_SLOW, 1, 600);

    while (TRUE)
        chThdSleep(100);

    return 0;
}



Форсунки впрыска топлива управляются заземлением идущего к ним от блока управления провода. Чтоб интерпретировать такой сигнал от лежащего на столе блока, нам понадобятся один диод и один резистор:



Соберём это всё и запустим. И, опять чудо! Стандартный блок управления нам поверил, и на основании всего лишь одного эмулированного датчика — датчика положения распредвала — начал пытаться управлять форсунками!



На самом деле, для получения осмысленной таблицы подачи топлива нам нужно будет начать эмулировать еще и датчик расхода воздуха. Когда мы начнём управлять настоящими форсунками, нам уже не хватит простого транзистора для заземления этого примерно одноамперного соленоида — но всё это детали. Главное — сделать блок управления двигателем с нуля кажется реальным — так что я продолжаю этим заниматься.

www.youtube.com/watch?v=GcxLY697WwM


update: раз вопрос возник в комментариях и раз я ссылку уже дал в комментариях — я добавлю сюда тоже:
rusefi.com
rusefi.com/forum
sourceforge.net/projects/rusefi
Андрей @andrey239
карма
39,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (134)

  • +6
    А зачем?
    • +15
      Стандартный блок управления управляет только двигателем в стандартной конфигурации, и настроить его поведение возможности нет. Я занимаюсь любительскими гонками — для повышения производительности (вместе со снижением ресурса) хочется конфигурацию двигателя поменять — а значит нужно поменять и программу.

      Существуют несколько коммерческих универсальных блоков и один открытый, но мне некоторые решение из этого открытого проекта кажутся устаревшими — вот и решил сделать сам.
      • +4
        А не проще принять участие в открытом проекте, доработав его, вместо того чтобы изобретать велосипед, делаю все с нуля?
        • +10
          Единственный живой открытый проект зацементовался на чипе пятилетней давности и программирует… Не очень элегантно. Я программист, я так не могу просто :(
          • 0
            Ну так у них же есть наработки в виде алгоритмов, схемотехники и пр. Сделать порт на другой контроллер, либо переписать все с нуля, имея на руках алгоритм, легче, чем с нуля изучить работу и пр. Если будет форк на более современном железе, глядишь люди и переползут на это железо.
            Да и старое железо — это не всегда плохо ) Зачем там такие мощности контроллера?
            • 0
              Мощности лишними не будут. Математики много, размерности таблиц хватает не всегда, так что запас это только в плюс.
            • +8
              Все существующие системы живут без сопроцессоров — значит печаль фиксированной точки.

              Все существующие системы видимо без мощности контроллера экономят на спичках и пишут ОЧЕНЬ платформо-зависимый код — за счёт излишка мощности я планирую позволить себе использовать rtos, которая даст мне более простой api и примитивы многопоточности.
          • НЛО прилетело и опубликовало эту надпись здесь
            • 0
              Например, меня не устраивает, что мне нужно покупать отдельно программатор? :)
              • НЛО прилетело и опубликовало эту надпись здесь
                • 0
                  Я не из этой области, у меня отвертки нет. Я вижу что сейчас эта отвёртка перестала использоваться — мне проще без неё.

                  Ну и мой любимый аргумент про сопроцессор.
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • 0
                      Нет конечно, можно обойтись фиксированной точкой и можно обойтись восемью битами, если нужно.

                      Мой внутренний фильтр не разрешает мне базировать что-то на тех исходниках, которые я видел — я слишком программист.
      • +1
        Мне, как человеку профессионально занимающемуся электронными системами впрыска, кажется очень устаревшей ваша система впрыска и зажигания. И это не пустые слова. Если вы хотите запилить реально толковые мозги — ориентируйтесь на современные датчики и исполнительные механизмы. Очень серьезно проштудируйте все основные существующие решения и выберите то, чем вы будете управлять и с чего получать информацию.
        Алсо спортивный мозг и для гражданского авто — абсолютно разные вещи с существенно различающимися требованиями.
        Опять таки нужно сразу определиться что вы хотите сделать.
        • 0
          Да, вы вероятно очень правы.

          Я очень точно знаю, что я хочу сделать: я хочу сделать ЭБУ лучше текущего на моей конкретной бюджетной гоночной машинке с конкретным условием: сама железка, которая будет ездить — должна стоит очень дёшево. До $50. При этом мой труд не учитывается. (я планирую впаяться в тело дефолтового блока, выпаяв оттуда изначальный dip42 чип)

          Будет ли stm32 мозг лучше дефолтового мозга мазды 1990 года?

          С чего-то то нужно начинать. Ничего открытого, удобного и универсального я не нашёл. Если такое есть — пожалуйста, покажите.
          • +4
            ИМХО, С бюджетом в 50$ вам вообще нечего делать в этой области! Я просто собрал SECU-3 и то дороже вышло.
            Недавно покупал шкив коленвала под ДПКВ + сам ДПКВ. как раз 50$ вышло ) и это на ВАЗ! Что говорить о вашей иномарке…
            >Будет ли stm32 мозг лучше дефолтового мозга мазды 1990 года?
            Давайте определимся что значит лучше? У него просто цифромельница будет мощнее.
            Я считаю, что система впрыска должна поддерживать заданное соотношения воздух/топливо AFR в зависимости от режима работы ДВС.
            И поверьте, исправная система впрыска 1990г с этим справляется на ура! В какую сторону её нужно улучшать?

            Вы хотите поставить более широкий вал, доработать впуск-выпуск, меняется наполнение цилиндров, а стандартная система впрыска об этом ничего не знает? Вы хотите гибкости за относительно небольшие деньги?
            Тогда возьмите Январь 7.2. Переделайте систему впрыска под набор поддерживаемых им датчиков и эксперименируйте себе на здоровье. Все калибровки вам будут доступны прямо мышкой без единой строчки кода. Поверьте, до того момента, как вы упретесь в возможности Января со спортивными прошивками вы получите столько новой информации и опыта, что поймете, что готовые спортивные системы впрыска на подобие Абит Корвет решают и сделать лучше в одиночку вы не сможете.
            А знаете сколько ещё нужно оборудования и опыта, чтобы настроить систему впрыска как раз для того, чтобы AFR и угол зажигания во всех режимах был «правильным»… ооо, это отдельная большая тема. А вы хотите и программированием заниматься и настройкой. Нет, инициатива хорошая, но надо реально смотреть на вещи )))
            • +1
              Мне как раз AFR нужно поднять, я так понимаю. И да, доработанный впуск — а стандартная система впрыска об этом ничего не знает.

              С Январём есть нюансы — я живу в Чикаго :)
              • +3
                Нда, с Январём действительно как-то не очень весело получилось… ))

                Ну на чем в Чикаго корчи строят я не скажу, но в любом случае нужно начать с этого. 90% гарантии, что есть ни разу не open source мозг, который так же как и январь довольно серьезно реверснули и делают с ним что хотят. По любому должна быть ниша рэйсеров-нищебродов(не в обиду) которые делают что-то похожее))
              • +2
                С этого и надо было начинать :-D
              • +1
                Купите в России, почувствуете как идёт вам посылка Порчей Почтой России :). Не вижу проблем в век высоких технологий.
      • 0
        Т.е. обычный чип-тюнинг вас уже не устраивает?
        • 0
          Что такое обычный чип-тюнинг? Расскажите пожалуйста.

          В контексте автомобиля Mazda Protege 1993 1.8 dohc
          • +1
            Прошу прощения, у меня в голове всё ВАЗ да ВАЗ…
  • 0
    Здорово! Только жаль, что у тебя не БМВ. Лучшие умы бьются, никто не может вскрыть ЭБУ на F-ках.
    • 0
      А что такое F-ки?
      • +1
        новая серия F10 — пятерка, F30 — тройка, а засада в защите ЭБУ
      • +1
        Название кузовов последних поколений, F30 и т.п.
    • +6
      Изначально вашу фразу воспринял как «Лучшие умы бьются на БМВ», простите
  • 0
    Задумка интересная, но смысл? Взять и перепилить msextra на свой лад — нет никаких проблем. А там уже будет видно, надо ли свое городить или нет. Железо можно купить готовое, не дорого, проверенное, а код уже править на свой вкус.
    • 0
      У меня ощущение, что msextra требует родного железа, иначе этот нарушение лицензии?
      • 0
        Да, если вас беспокоит этот вопрос можно купить родное железо, оно продается.
        Как, впрочем, и неродное.
        • 0
          megasquirt это не open-source проект, а коммерческая разработка с открытым исходным кодом. Open-source проект это например FreeEMS, но там используется довольно редкий и трудно доставаемый дальше чем в США микроконтроллер. Идея заключается в том, чтобы реализовать всё на массовом микроконтроллере.
          • 0
            Я не говорил про opensource, но megasquirt это простой вариант получить ожидаемый результат. Положительный результат.
            Дальше можно изучать алгоритмы, откатывать свои, но только в случае если это потребуется. Потом, когда станет понятно чего хочется и чего не хватает — можно хвататься пилить свое, с оглядкой на многолетний опыт других. Это разумно.
  • +16
    Сейчас набежит куча человек с комментариями, типа: «зачем делать своё, если можно взять готовое?»
    Вы, ТС, знайте: это ардуинщики и распберипийщики, весь опыт которых в разработке встраиваемых систем заключается в скачивании готовых сырцов и заливании их в устройство.
    Я вас не знаю, мне не понравился ни ваш код ни ваш подход к электронике, но мне нравится, что вы решили этим заняться и я верю, что у вас всё получится!
    Удачи вам и пусть ваша идея не перестаёт вам казаться реалистичной!
    • +2
      Да идея то реалистичная, вопрос в разумном расходовании ресурсов. Почему бы не опираться на чужой опыт, которому не один год?
      • +1
        Все понятно, вы и я — «ардуинщики и распберипийщики, весь опыт которых в разработке встраиваемых систем заключается в скачивании готовых сырцов и заливании их в устройство»
        • +2
          Даже как-то стыдно стало за нас :D
      • +1
        А почему нет? Если у человека есть время и желание учиться, путь и гуляя по граблям, это замечательно! Сегодня сделает свой блок управления, завтра пойдет работать на сервис, послезавтра его возьмут на работу в инженерный отдел Киа разрабатывать ЭБУ для новых моделей.
        • +1
          Пожалуйста, не отдавайте меня в Kia…
    • 0
      Да проблема не в своем, чужом… проблема в безопасности и надежности. Ну для гонок ладно, пару часов проехал, в экипировке, если что в больничку.
      даже если мы его хотим заменить на свою плату со своим кодом,

      а если кто-то повторит, и на общественную дорогу… могут и жертвы в результате.
      stm32f4discovery отладочная плата хорошая, но это не образец надежных систем… да и automotive детали придется применять.
      • 0
        Точнее, 9 часов в субботу и 6.5 часов в воскресенье. Это если не 24-ех часовая гонка, которая раз в году…
  • +2
    Продолжайте, очень интересно!
  • +4
    Городить с нуля может и не выгодно, зато кругозор расширяет.
    Не было мыслей немножко в сторону шагнуть? Насколько я знаю, сейчас нет простого и недорогого решения, которое может проверить ЭБУ отдельно от машины и диагностика неполадок именно с ЭБУ чаще всего не производится (езжай в другой сервис) или производится методом тыка (меняется на заведомо исправное и пр. — но это не всегда удобно и возможно). Правда тут есть небольшая проблема — зоопарк различных ЭБУ с vendor-specific разъемами и т.п. Также, очень был бы полезен девайс, врезающийся между колодкой ЭБУ и самим ЭБУ — для проверки адекватности сигналов на нее приходящих, т.к. с датчика может идти нормальный сигнал, а по пути к колодке или наводки поймает, или контакт плохой — диагностировать такие вещи тоже очень и очень не весело. Только вот проблема тут же — зоопарк ЭБУ и их разъемов.
    • 0
      Что-то примерно чуть-чуть близкое я делаю — я делаю стимулятор стандартного ЭБУ, чтоб считать с него стандартные шаблоны сигналов.

      Зоопарк разъемов не так страшен — разъёмы делают поставщики разъёмов. Мазда Киа Ауди Ниссан БМВ — разъёмы этих автомобилей, как минимум некоторых есть в каталоге на сайте www.te.com если знать, как искать.
      • 0
        Форсунками не управлял, а с зажиганием побороться получилось: www.moto.com.ua/forum.php?id=104999
        Код в том проекте ужасный, но мне очень помогла понять принцип работы опережения зажигания табличка (экселевская, кажется) для расчёта задержек.
        Удачи с проектом :) Постарайтесь от написания специфичных костылей перейти к созданию универсального кода, с подгрузкой настроек.

        Успешные примеры есть, правда, в других областях (я про MultiWIi для коптеров и smoothie для управления CNC-станками).
        • 0
          У меня уже есть работа со всроенной flash и интеграция с популярной программой для настройки — именно в направлении от костылей я и пытаюсь двигаться. Нет ли желания поучаствовать? :)
  • 0
    Глобально — с удовольствием помог бы, чем смог.
    Конкретно сейчас я, наверное, буду бесполезен: за последние полтора года мытарств у меня в руках не было толком ни одного ДВС.

    А код сейчас где? Есть и публичный репозиторий?

    Мне в целом нравится модель Smoothie — открытый код без каких-либо гарантий переносимости, но и без привязки к железу. Благо для управления тяжёлой железкой по таблицам до 15-20 тыс. оборотов хватает даже атмеги, по формулам — где ж их ещё взять :)

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

    Ещё есть вкусная тема — задавать программно число, порядок и ориентацию цилиндров, тогда при правильных формулах можно будет прицепить такой софт на любой движок, работающий по циклу Отто.
    • 0
      Публично код лежит в sourceforge.net/projects/rusefi/ — это зеркало, в которое кидаю по случаю каких-то осмысленных изменений. Ну и вообще есть сайтик с форумом и так далее www.rusefi.com/

      Ну помочь можно и без ДВС — там есть задачи разъёмы порисовать или некоторые вопросы просто поисследовать.
      • 0
        Здорово.

        А что с разъёмами?
        Могу вспомнить разъёмы ЭБУ Bosch и Magneti Marelli со своих машин — они были заметно крупнее нарисованного Вами.
        Но мне кажется, мы повесимся поддерживать каждое новое ЭБУ.

        Для того, чтобы завести мотор, нужно обеспечить зажигание вовремя и впрыск топлива (если у нас не карбюратор, хехе). Подключить катушки, датчик положения коленвала, узнать, когда он выдаёт импульс, и выдать искру. А, РХХ дёрнуть при необходимости.
        Остальные датчики можно довешивать потом, интеграция может занять чуть ли не больше времени, чем разработка. :)
        На Лянче в косе на ЭБУ у меня шёл даже провод от кондиционера. :)
        • +2
          А РХХ бывают с шаговым двигателем и редуктором, бывают моментные с двумя катушками и одной и пружиной. Надо ли говорить, что управление очень разное у них всех?
          Датчик коленвала бывает индуктивный(с размахом синусоиды ±100В), а бывает и 5В датчик холла. Бывает разное кол-во импульсов на оборот…
          Датчик положения дросселя бывает переменным резистором, а бывает и двумя концевиками, дающими информацию лишь о том, что дроссель полностью закрыт или полностью открыт.
          Бывают системы впрыска с датчиком массового расхода воздуха(ДМРВ), а бывают с датчиком абсолютного давления+датчиком температуры воздуха.
          ДМРВ бывает частотным, а бывает амплитудным.
          Надо ли говорить, что каждый датчик даже если принципиально не отличается — обязательно отличается кривой характеристики…
          Датчик температуры охлаждающей жидкости более стандартизирован, но американцы и японцы любят повыделываться и тут…

          Парни, вы просто утонете во всем этом! Какие разъемы? Я вас умоляю, остановитесь и хорошо подумайте )))
          • 0
            Зачем делать всё и сразу? Начать можно с того, что нужно участникам проекта.
          • 0
            Примерно в том и проблема.
            Лучше отточить алгоритмы, дать исходники и понимание принципов работы, а конкретный шилд под свой двигатель придётся всем делать с полным осознанием дела.

            Я вообще за то, чтобы зафиксировать пару распространённых кейсов (мне приходит в голову переделка какого-нибудь VW Golf 2 на такой КСУД, благо подобная схема — разве что с распределённым впрыском — стоит на всех ВАЗах).
            • 0
              Нет, я все-таки почти уверен, что ни один ВАЗ не умирает своей смертью… :)
              Вот-вот должен развалиться, но нет… попадает в руки и опять по кругу — переварка, переборка, чып-тюнинг, новые фары, бортовик и т.п. :)
        • 0
          Да нет, конечно же мы все разъёмы никогда не нарисуем.

          Но некоторые разъёмы очень популярные — например вот такой разъём применялся в 1990ых очень многими — rusefi.com/hardwave/176122-6/ — от корейцев до Ягуара.

          А вот такой разъём — rusefi.com/hardwave/368255-2/ — сейчас применяется Ниссаном, корейцами и БМВ мини. Такие популярные у разных производителей разъёмы нарисовать стоит — тем более, что у меня есть и Ниссан, и Мини :) 368255-2 мне уже нарисовали KiCad модуль разъема (пока не успел даже открыть) — но нужно нарисовать к модулю разъёма еще и платку, аналогично 176122-6
          • 0
            А распиновка у них одинаковая? Что-то подозрительная унификация.
            Хотя… После BOSCHа на японцах…

            Мне ближе (привычнее ;)) примерно такие вот динозавры: images.thesamba.com/vw/gallery/pix/724709.jpg

            Давайте лучше зафиксируем поддерживаемое железо и составим план улучшения core product.

            Код на SF прикольный уже сформировался, Вы молодец, хотя мне не всё нравится :)
            Я бы предложил создать в репозитории два каталога — current и releases, текущее содержание репозитория положить в releases (в смысле, старые версии), а в current складывать мало-мальски запускающийся рабочий код, чтобы упростить синхронизацию задач.
            • 0
              А распиновка конечно же совершенно разная. Но для целей изготовления удобного модуля просто разъёма — распиновка не важна :) Силовыми могут быть только толстые ножки так что ко всем силовым пинам ведём дорожку пошире, к остальным — узкую. Такую плату можно к фанерке прибить гвоздиком и как удобно распаять — всё лучше, чем фишла плавающая в пространстве.
              • 0
                Тоже верно, если тестировать на живой машине.
                Я вот вспоминаю расположение ЭБУ на своих машинах и предпочёл бы работать на каком-нибудь отдельном движке ;)
            • 0
              Плиз поясните, где я молодец на SF и где я менее молодец. Заранее спасибо за конструктивизм :)
              • 0
                Молодец в том, что код есть, собирается и уже модульный.

                Без тестирования на машинке что могу сказать: вся табличка выводов процессора должна быть выведена в какие-нибудь заголовочники (даже так придётся вникать, что PD7 процессора — это его 123я нога в TQFP144, она выведена на 41й вывод макетки, тот соединён с 7-м аналоговым каналом, на котором висит MAP… уф).

                На мой взгляд, в эот заголовочник нужно вывести абсолютно всё, включая serial console. (вспомню один проект, GRBL, правда, он для AVR — да земля ему будет нулём).

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

                Вообще, если можно, расскажите, пожалуйста, про выбор схемотехнических решений — MCP3208, OP2340 и минимально необходимый для работы системы камень, в смысле mainMCU
                • 0
                  Да, распиновка уже начала переползать в явный файл конфигурации — но пока целиком туда не доползла. Это мне нужно доделать, возможно даже станет планом на вечер.

                  Про шесть силовых выходов немного не понял, о чём речь — если про мою текущую плату. так это просто revision -5. Шести выходов хватает, чтоб управлять 4мя форсунками + клапаном холостого хода и отлаживаться, пока стандартный блок управляет зажиганием. Тем более у зажигания другой транк управления.

                  MCP3208 — результат блужданий в темноте и попытка использовать дизайн без делителя (минус stm32f4 — трёхвольтовый АЦП), видимо в итоге будет использоваться всё-таки внутренний АЦП с делителем.

                  Вопрос о минимально-необходимом камне это тема отдельного серьёзного исследования. Мне проще сначала сделать на камне с запасом, а если вопрос встанет — я смогу посмотреть на переход на камень проще. Примерно в следующей жизне :)
  • +1
    Яро плюсую и жду продолжения статей! =)
  • +1
    Я просто требую продолжения банкета!

    Сам помаленьку ковыряю ЭБУ своего авто. Сейчас с ЭБУ АКПП разбираюсь.
    • +1
      Ссылку на сайт этого проекта тут дать уместно? www.rusefi.com
  • +1
    О, наконец в нашем кое что интересное :) Сам тоже потихоньку собираю материалы и железки, хочу впихнуть в свою бибику автоматику, перенести все управление на контроллер(управлением температурой в салоне, обдувом стекл, блокировками, камерами, замер погоды снаружи, голосовое приветствие и возможно управление и т. п.), сделать управлением с точ дисплея, недавно правда посетила еще более безумная мысль о полной замене проводки на свою разработку. В общем удачи в работе, и держите нас в курсе дел.
  • 0
    на карбюраторные есть http://secu-3.org/ проект
    • 0
      Мне нравится этот проект.
      Уже давно собрал полностью в домашних условиях. Всё не было времени… Но не далее чем вчера активизировал работы, скомпилил прошивку, залил… надеюсь скоро поставить в тазик и испытывать в деле )
      • 0
        закончу капиталку и тоже буду устанавливать себе, уже есть в нашем городе те кто установил себе и подписались помогать.
    • 0
      Да, я знаю — но это только зажигание. Но чувак огромный молодец умница — у него есть готовый продукт в корпусе и чуть ли не сеть дилеров. Очень большой молодец.

      Впрыск они договориться что-то не могут как делать, или устали.
      • +1
        Мне понравилось как Шепунов однажды сказал: «Когда решаешь техническую задачу — просто бывает в двух случаях: когда ты её уже успешно решил и пока к решению ещё не приступил.»
        Так вот парни приступили и поняли, что моментную модель не потянут, а табличную как-то вроде не охота… Ну и как-бы плюс ещё и подустали может тоже ))
  • 0
    У stm есть специальные платы для хака автомобилей- stm8a-discovery
    Оно, конечно менее мощное, зато сразу 2 платы, шина CAN между ними, система питания от бортовой сети и гораздо более брутальная микросхема МК, которая больше подходит для работы в условиях сильных помех электросети авто.
    • 0
      it's all about the money

      Ну и я программист — я бы хотел менее железную, более программную реализацию.
      • 0
        stm8 не предназначен для того, чтобы решать задачи свойственные автомобильному ЭБУ. То есть на нём можно конечно сделать ЭБУ, как и на atmega (пример тому VEMS), но удобства разработки не будет. 8 битные мк применялись в ЭБУ разве что в начале 90 годов.
        • 0
          Ну может быть, конечно, хотя stm8a — это именно автомобильная серия, да и эти чипы помощнее атмег в плане периферии и таймеров.
          Да, по удобству с stm32 намного удобнее. Если не будет гореть — то ради бога.
        • 0
          В начале 90-х в ЭБУ применялись исклюительно 8051 и на них до сих пор тысячи корчей ездят :)
          Впрочем, ни в коем случае не повод в 2013 году начинать так.

          С другой стороны, если есть понимание на программном уровне, можно оценить сложность алгоритма и портировать куда надо.
          С третьей стороны, при цене STM8 примерно как Cortex M0 от них же, смысл мучаться?
          • 0
            Плюсы STM8A заканчиваются на том, что он автомобильный и 5 вольтовый :) Если кому-то этого хватит, то хорошо. И, если я не ошибаюсь, под него нет бесплатного компилятора C без ограничений по объёму кода.
      • 0
        Ознакомьтесь с ценой на этот комплкт:)
        Хотя, конечно, МК там не самый мощный, надо заранее оценить, пойлдет или нет по возможностям.
        А вот не заморачиваться с цепями питания авто, а взять готовое все — это как раз должно было понравиться программисту.
  • 0
    У меня чайниковский вопрос — а как в ЭБУ заводится инфа с педали газа? Её можно «программно» нажимать? Я это к тому, что хочу сделать простую штуку — кнопки 30, 50, 60, 80, 100, 120 — и вот чтобы жамкаешь по соответствующей кнопке и машина едет с соответствующей скоростью (если передача позволяет, ессно), ну то есть круиз-контроль, но с предустановками. У меня была мысль к CAN шине подцепиться, но там, похоже я могу только читать, но не писать. Авто — VW без бортового компьютера MFA.
    • +1
      Если автомобиль оснащен электронным дросселем — то можно погазовать с диагностического оборудования. Но вам нужен протокол, чтобы договориться с ЭБУ. А с этим очень большие проблемы. Если педаль газа на тросике — без вариантов. Сильно газануть не получится. В ооочень маленьких пределах путем открытия регулятора холостого хода, но это копейки вообще…
      • 0
        нет, ну если электронный дроссель — можно впаяться между педалью и ЭБУ и эмулировать нажатие на педаль. Но нужно делать это оооочень аккуратно.
        • 0
          Ну человек же по CAN просил вариант. Есть такой вариант, но протокол надо либо снифить как-то, либо я не знаю… никто его ему не даст. На секретах протоколов весь бизнес диагностического оборудования держится однако.
          • 0
            По CAN мне было бы удобнее всего — там готовый разъём есть. Если же по CAN принципиально невозможно, то впаяться межу педалью и ЭБУ. Тут у меня тоже здоровые сомнения есть — педаль напрямую к ЭБУ подключена, или на той же шине CAN висит? Я потому и спросил.
            • 0
              Педали, к сожалению, бывают разные.

              Как минимум некоторые педали — это просто два потенциометра (прямой и обратный — для возможности диагностировать ошибку)
    • 0
      Во-первых, дроссель не однозначно определяет скорость движения. Дело даже не в передаче (хотя и в ней тоже), но и в профиле дороги, например.
      Поэтому собирать нужно сразу и данные про скорость, и обороты двигателя.
      Вообще проекты круиз-контроля есть в Сети. На Казусе, помнится, даже сделали (в противоположность «делали» :)). Добавить в прошивку предустановки не так сложно, если уже написан регулятор скорости.

      Во-вторых, педаль газа электронная? Или есть тросик?
      Интересно, MFA нет, a СAN есть. Это пассат четвёртый, что ли?
      • 0
        Это понятно, но я в принципе в ПИД регуляторах немного разбираюсь — профиль дороги и прочее я буду учитывать. В идеале хочу также потом прирастить туда измеритель дальности до впереди идущей машины, а потом картинку с камеры анализировать и знаки ограничения скорости отслеживать… А авто у меня — Caddy — там вроде как всё на CAN шине висит, если я не путаю ничего. Педаль газа электронная.
        • 0
          Хорошо.
          А в чём тогда проблема?
          У Вас есть CAN-анализатор? Без него Вы вряд ли разберётесь, не думаю, что VW публикует стандарты по управлению устройствами.
          Если разберётесь — то, насколько я понимаю принцип работы сети, каждое из устройств может отправить команду любому устройству.
          Если не будет гонки команд (педаль говорит «Дроссель на 10%», а Ваше устройство — «Дроссель на 50%»), то проблем я не вижу, только некоторый объём работ.
  • +1
    Я сначала отвечу одной строчкой: code.google.com/p/open5xxxecu/

    Теперь много букв:
    1. Необходимо хорошее железо automotive grade, правильно разведённое, с защитами на входах и выходах, и всё такое. Из процессоров отлично подходит линейка MPC5xx от Freescale — там, например, в железе реализован сопроцессор таймеров, который может делать всю работу по работе с форсунками и катушками, ориентируясь при этом на сигнал с ДПКВ. То есть, по сути, вы в этот модуль запихиваете углы открытия/закрытия форсунок, он дальше всё делает.

    2. Всякая защищённость. От воды, от КЗ, от замыкания на плюс, на массу, от пиков и прочее. Тут нет ничего лучше готового железа, которое делают производители автокомпонентов. Заодно и разъём нормальный сразу. Ну и драйверы все будут в наличии, правильного номинала.

    3. Алгоритмы. Если делать ЭБУ сейчас — то ориентироваться надо на электронный дроссель и моментную модель работы двигателя. Остальное — прошлый век. Естественно, нужна будет возможность онлайн отстройки и поддержка широкополосной лямбды. Например, вот очень вводная статья: nyet.org/cars/info/ME7sw.pdf.

    И именно этим мне нравится проект open5xxxecu — они пытаются использовать готовое стоковое железо от GM и положить туда свой алгоритм. Альтернативный вариант — попробовать саабовский Trionic T7, там стоит моторола 68332, предыдущая реинкарнация MPC5xx серии.

    В плане железа есть интересный проект от одного из инженеров Freescale: MS quorivva, но у меня ощущение, что он загнулся. Вот статья от этого инженера: community.freescale.com/community/the-embedded-beat/blog/2011/06/07/calling-all-petrolheads-configurable-aftermarket-ecus-for-sale
    • 0
      В этом URL много слов. А я отвечу Вам вопросом — сколько двигателей пытались заводить на code.google.com/p/open5xxxecu/?

      Я знаю ответ — ответ 0. Я говорил с Марком по телефону полтора часа. В «хорошем автомобильном железе» есть закрытый сопроцессор обработки ДПКВ. Закрытый — это в смысле что исходников нет и компилятор стоит пятизначную сумму. Стандартный декодер поддерживает только один тип колеса, но алгоритм очень нежный и в итоге стабильного сигнала от ДПКВ у них нет.

      А еще я читал код open5xxxecu и слеза наворачивалась.

      За что я Марку очень благодарен — он помог мне очень с интеграцией с tunerstudio, и через него на меня вышел помогающий мне сейчас электронщик.
      • 0
        >В «хорошем автомобильном железе» есть закрытый сопроцессор обработки ДПКВ
        Ну так они и не пятивольтовый прямоугольный сигнал обрабатывают )
        Алсо для таких вещей как тест эффективности цилиндров и регистрации пропусков воспламенения используется вычисление ускорения КВ по сигналу ДПКВ. Вот для таких вещей скорее всего и используются отдельные модули с готовыми функциями, конкретно «ускоренными» железом.
        • 0
          Вы правы — задумка очень правильная и удобная. В теории — если бы производитель обеспечивал нормальную поддержку — было бы здорово. Но похоже, что проект этой идеи у них пошёл не очень и покупателей они своих кинули.

          А по факту в итоге — у Марка есть много кода и он не может запустить ни один двигатель.
      • 0
        Слов много, и картинок, а до того, как у них форум упал — вообще было ещё больше всяких картинок про GM-овские блоки :) Но 0 двигателей не означает, что ребята двигаются в неправильном направлении, во всяком случае я так считаю. Сейчас чуть ниже по ветке выскажу своё мнение про их путь. Что же про код… Это же опен сорс, все могут править и делать лучше :)

        Компилятор $2400 стоит. Дорого, конечно, тут полностью согласен.

        А ещё я вам сейчас пришлю интересную доку бошевскую про алгоритмы, не знаю уж, видели ли вы её.
        • 0
          У них там еще есть человеческая драма — они там поделились на два проекта уже.

          Да, open source — я посылал им три патча два месяца назад. Патчи пока ждут аппрувала, хотя на словах было озвученно что да, рефакторинг им нужен. Есть мнение, что в форке более чистый код — но я признаться пока код форка не читал. Без двигателей как привязки к реальности там я так понимаю всё немного заглохло. Но как только мне придёт время добавлять какой-то алгоритм, я обязательно подумаю взять имплементацию у них.
        • 0
          А с общественностью можете поделиться этот докой?
    • 0
      На таких МК нужно строить коммерческие блоки управления. Для open-source это тупиковый путь. Цель заключается в разработке блока на доступном камне.
      • 0
        Это надо у автора спросить, какая у него цель. Я вижу как минимум 2 варианта:

        1. open source + open hardware — это примерно путь megasquirt. Bowling и Grippo начинали проект EFI332 на 68332 процессоре, но поняли, что плату будет очень сложно паять в домашних условиях, и именно поэтому откатились с отличного процессора на 8-битный слабенький контроллер.

        2. Сделать open source блок, который конкурирует с коммерческими решениями от AEM, Motec и прочими. Естественно, у него должно быть отличное железо, и тут как раз проще всего брать готовое железо. В крайнем случае брать процессорную плату, например ru.mouser.com/ProductDetail/Freescale-Semiconductor/TRK-MPC5634M/?qs=vmkU9SbkviT0YXVE7urinw==, и делать периферию руками, как в последних мегаскиртах. В этом плане с MPC5хх никаких проблем нету, процессорные платы на любой вкус в наличии за совсем небольшие деньги.

        И лично я считаю, что второй путь имеет право на жизнь, и именно этим (во всяком случае, у меня сложилось такое мнение после штудирования их вики и форума) занимаются парни в проекте open5xxxecu. Это аналог Linux'а: да, пусть некоторые модули проприетарные, зато в целом система не хуже коммерческих юниксов.

        И да, это не означает, что я не верю в подход автора. У мегаскирта же получилось, прецедент есть.
    • +1
      Всё верно. Только на сколько я понял — без серьёзного оборудования моментную модель толком не настроить.
      Я вообще в маленьком городе Ялта проживаю, так что мог отстать от жизни немного, но по крайней мере низко и среднебюджетные проекты(имею ввиду спорт корчи) ни разу не видел чтобы строились на электродросселе и моментной модели. Это всё просто не нужно. По сути пришли к этому только ради экологии!
      В общем в доказательство приведу информацию, что по различным данным, то там то тут мелькающим в Сети, кол-во калибровок мозгов с моментной моделью переваливает за 1000.
      Вот я просто загуглил и сразу нашел подтверждение Парни продают редактор калибровок и утверждают, что
      М75 модуль 1: Включает карты калибровок для прошивок блоков ВАЗ М75 (ELCAR ECU M75). Для редактирования доступен расширенный набор калибровок (более 1500) и сокращённый (для оптимизации процесса небольших настроек),

      Добавьте туда ещё пляску с настройками коэффициентов адаптации, да и сами алгоритмы.
      И это же только «наружу» светится более 1000 параметров. А ведь нужна ещё сама модель )
      В общем нужно быть очень умным, чтобы подобные вещи с нуля делать…
      • 0
        А сейчас вообще есть aftermarket мозги с моментной моделью? Проблема отстройки штатных понятна, недостаточно иметь возможность менять параметры, надо знать, на что конкретно они влияют в модели, а эту информацию получить крайне сложно. А умным быть вообще хорошо :)

        Что же про дроссели — в формуле 1 электронный дроссель, в WRC — тоже, и, судя по всему, во всех серьёзных гоночных сериях так. На сколько я понимаю, электронный дроссель позволяет лучше контролировать переходные процессы. Но это ИМХО, буду раз ссылкам на эту тему, если вдруг попадутся.
        • 0
          Электродроссель конечно рулит, но я с поправкой на низко и средне-бюджетный тюнинг сказал, что он не нужен.
          Даже нет. Не правильно я выразился. Он нужен, но не удаётся за разумные деньги раздобыть достаточно быстродействующий + нужны спортивные мозги и люди, которые заставят это всё взлететь. Вот и получается, что всё это могут себе позволить только на формуле, в WRC и ещё в нескольких серьёзных конторах. Но я как-бы оооооочень очень от них далёк, поэтому и рассуждаю немного «со своей колокольни»…

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

          P.S. А вообще я за технологии типа ValveTronic. Вот это реально красивая идея, решающая все вопросы одним разом!
          шепотом: дроссель там вообще не нужен.
          • 0
            Я несколько месяцев читал статью про одну из реализаций электронного дросселя, там работа описывалась примерно так: дроссель и угол опережения зажигания — это 2 канала, которыми можно изменять момент двигателя, причём дроссель — «медленный» канал, а УОЗ — быстрый. Изменения момента происходят по запросам, а именно: система круиз-контроля (медленный канал), педаль газа (медленный канал, но при резком нажатии и быстрый), антибукс (быстрый канал) и т.д. При этом мозги стараются держать некоторый запас в быстром канале. Плюс некоторая логика, которая учитывает задержку между открытием заслонки и поступлением воздуха в цилиндры. В итоге резкое нажатие на педаль газа отрабатывается сразу двумя каналами, антибукс слегка придушивает по быстрому каналу, а заслонку можно сначала приоткрыть слегка сильнее, а потом прикрыть обратно. Как результат — более правильный отклик двигателя.

            Кстати, на сколько я в курсе, даже стоковые дроссельные заслонки довольно быстрые, по скорости сравнимы с возможностями человеческой ноги.
            • 0
              Стоковую заслонку я открывал PID регулятором за 100 мс. Может ли быстрее человеческая нога, я не знаю. www.youtube.com/watch?v=K3ESl0wD4X4
              • 0
                Ну что ж, значит я немного ошибся и скорость актуатора тут не является узким местом…
                • 0
                  >Может ли быстрее человеческая нога, я не знаю
                  Встану осциллографом на ДПДЗ и как можно быстрее топну на газ… посмотрим, даже самому интересно стало.
                  • 0
                    отпишите потом результат плиз :)
  • +1
    В общем сходил я к вам на сайт, почитал малехо, мнение мое изменилось. Я думаю, что все у вас получится. Дело правильное, подход толковый, буду внимательно следить за развитием событий. Сначала показалось, что очередной школьник собрался строить ракету, оказалось, что это не так.
    Удачи!
    • +1
      Спасибо за тёплые слова :)

      Через сколько месяцев здесь будет вежливо писать новый пост, чтоб никого не расстроить?
      • 0
        Лучше не затягивать и писать в некотором графике. Пускай не слишком часто, но регулярно. Я так понимаю, писать есть о чем.
        • +1
          Ну всё-таки раз в две недели писать явно будет неприлично. Минимум месяц? Минимум два?
          • +1
            Раз в две недели вполне нормально. Я бы даже чаще читал, например.
            Месяц — все забудут, что там было вообще.
  • –1
    Переделать тачку на Январь и шить в свое удовольствие? не?
    • 0
      Почитать топик и найти ответ на этот вопрос? не?
  • 0
    У меня друг занимался багги и лет 10 назад я писал ему программу управления зажиганием под Atmel AT2051. Задачи было поставлено две: реализовать изменение опережения зажигания согласно таблицы диапазона оборотов двигателя (и возможность редактирования этой таблицы в полевых условиях); включение красной лампы при заданных оборотах (чтобы подсказать пилоту когда переключить передачу на более высокую, поймав пик крутящего момента двигателя).

    Машина была на карбюраторном двигателе, поэтому управление форсунками я не реализовывал. Сразу могу сказать, что мы натолкнулись на неожиданную проблему: отладив весь функционал на генераторе и двухлучевом осциллографе, мы обнаружили, что на реальном двигателе процессор не работает совсем: помехи от катушки зажигания так сильны, что процессор моментально сбивается и уходит в RESET (или вообще Бог его знает куда).

    В итоге пришлось хорошо продумать систему развязок (оптроны использовали) и экранирования. Но этой частью уже занимался сам товарищ, т.к. он — специалист по силовой электронике.

    Добавлю, что в старых BMW блок зажигания и блок впрыска являлись отдельными блоками. Так что вам, вероятно, тоже для начала имеет смысл разделить этот функционал. Конечно, управление впрыском сложнее: вы должны считывать положение педали газа и соответственно управлять скважностью ипульсов. При этом, форсунки можно соединить все вместе и открывать их одновременно.

    И ещё добавлю… Возможно, эти эксперименты полезны только как эксперименты, чтобы чему-то научиться и что-то узнать. Конечно, намного проще купить готовый так называемый Plug N Play блок. Плюс, в процессе эксприментов вы можете лишиться двигателя (например, может треснуть блок), либо всё может закончиться пожаром. Имейте это в виду обязательно и держите огнетушитель наготове.
    • 0
      Где-то выше я написал — повторю.

      По регламенту моей гоночной серии, я не могу позволить себе Plug N Play блок — у меня машина по регламенту должна стоить дешевле Plug N Play блока. Плюс интереснее самому :) Время есть и хочется учиться вещам.

      Для текущих тестов выделена специальная машина-камикадзе. И именно поэтому сначала я делаю более безопасный (для двигателя) впрыск, зажигание — позже. Где-то в районах датчика детонации.
      • 0
        Возможно, под PnP понимался Январь 5.1 :)
  • 0
    Стоило бы в названии статьи уточнить, что двигатель — автомобильный. А то в нынешней трактовке кажется, что у вас 100500-й велосипед по управлению шаговиком.
    • 0
      Поправил :)
  • 0
    Заодно спрошу, а ни у кого случаем нет протокола, да и вообще описания подробного по взаимодействию с датчиками давления в шинах?
  • 0
    От рисунка включения транзистора у меня кровь из глаз пошла.
    • 0
      да, я немного варвар. простите
  • 0
    Когда я ковырял прошивки отечественных ВАЗов, в том числе работу в режиме closed loop, мне пришла в голову идея вместо алгоритмической подстройки коэффициентов коррекции использовать нейронную сеть, предварительно обученную на стандартные таблицы. Понятно что на фиксированной точке ее делать не имеет смысла, а вот на вашем плавающем ядре — запросто. Вкупе с использованием широкополосного лямбда-зонда можно попробовать вообще отказаться от ручного выкатывания прошивки. Целевой функцией можно сделать, кроме стехиометрии на средних режимах, например сигнал от акселерометра (в мощностном режиме)
    • 0
      Офигенная идея! Может мы с вами свой блок управления разработаем?
      Начать откатывать алгоритм можно будет даже не приступая к разработке железа. Январь с инженерным блоком и вперед!
      • 0
        ой, в Январе придётся немного вернуться к жестокий мир фиксированной точки :)

        Глеб, присоединяйтесь. Но перед самообучением у нас долгая дорога в песках
        • 0
          Кажется я немного неточно выразился. Я имел ввиду все вычисления на PC, Январь с инженеником как интерфейс PC-ДВС. ШДК тоже подключаем к PC отдельно.
          Кажется для откатки основных алгоритмов вполне сгодилось бы.
          • 0
            ПАК Матрица, только на нейронках? :) Или вы хотите комп в цепочку управления ДВС-датчики-блок-актуаторы-ДВС включить?

            Я считаю, что это крайне важная штука для любого aftermarket блока — возможность самостоятельно отстроиться под двигатель. У AEM, на сколько я знаю, есть штука под названием autotune.
            • 0
              Ну я предположил, что для начала январь можно использовать грубо говоря как интерфейс. Ну это всё так… всего-лишь прикидка. Там возможно вылезет столько косяков, что идея эта окажется не состоятельной
              • 0
                Да, в такой конфигурации и правда вариант — январь просто январит себе сам, а PC его просто постоянно динамически перепрошивает.

                Но и для такой конфигурации наверное нужно вложить порядочно труда, лучше сначала помочь нам с rusefi и потом на его базе уже приятненько и аккуратненько :)
                • 0
                  Да даже не динамически перепрошивает, а январь работает на т.н. инженерной прошивке с инженерным блоком. Для редактирования в реальном времени доступны все переменные и таблицы.

                  Так надо сразу в rusefi нейронную сеть ))
        • +2
          [OFF] Решил Вас проверить — ведь суффикс 239 не может быть случайным. Так и есть )

          По делу — я не совсем уверен, что 100% поддерживаю выбранный вами путь — так как, по моему мнению, надежно управлять двигателем, с приемлемой точностью дозируя топливо, соблюдая тайминг зажигания, поддерживая несколько режимов работы, и обмениваясь с диагостическим оборудованием неплохо удается даже на 8-битных процессорах со скромной тактовой порядка 20 МГц и производительностью 4-5 MIPS (правда, не без аппаратной поддержки), а сам по себе переход на плавающее ядро никакой существенной выгоды не даст, ибо:

          а) точность расчета смеси и зажигания не имеет смысла делать выше точности стоковых датчиков, и
          б) работа системы в режиме обратной связи позволяет нивелировать как производственные, так и расчетные погрешности — систематические и случайные.

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

          Поэтому я не уверен, что плавающее ядро само по себе — достаточное условие успеха проекта, и начинать надо именно с него. И наоборот, удачная модель будет хорошо работать независимо от способа реализации. То есть, я бы начал не с программирования, а с теории и практики работы ДВС.

          Кроме того, практический анализ существующих прошивок говорит о том, что реальный продукт — это множественные костыли, костылики и воркэраунды, призванные эвристически сгладить недостатки теормодели — а значит, вам придется пройти весь этот путь еще раз, причем этот этап шлифуется не на эмуляторе, а на реальном моторе и реальной дороге (беговые барабаны в неограниченном доступе у вас вряд ли есть). И силами коммьюнити (в отличие от отладки софта) его не сделать — только в один тред — а значит:

          а) путь будет долгим,
          б) результат будет хорошо применим только к конкретному двигателю (это с натяжкой, но в целом так)

          Навскидку, вам придется реализовать и отладить:
          а) надежную детекцию режимов работы мотора (пуск, холостой ход, экономичный, мощностной, принудительный ХХ)
          б) плавный переход между режимами
          в) надежную работу в а) и б) при всем диапазоне температур ОЖ и ОВ
          г) управление ХХ во всем диапазоне температур
          д) алгоритмы пуска во всем диапазоне температур (существенно различаются для холодного — например, вы знаете, для чего при холодном пуске меняют фазы открытия форсунок?)
          е) работу с датчиком детонации и УОЗ в диапазоне температур и нагрузок
          ж) учет топливной пленки при расчете времени открытия форсунок
          з) алгоритмы долговременной и кратковременной коррекции в режиме ОС
          и) накапливание, обработка и вывод диагностической информации
          итд

          Вы к этому готовы?

          • 0
            [офф] ну конечно суффикс не случайный :)

            Плавающая точка не принципиальна. Скорость тоже не принципиальна, и то и другое — это просто средства, позволяющие как мне кажется программировать понятнее.

            а) точность стоковых датчиков я не изменю, но у меня к этой неточности хотя бы накопится чуть меньше ошибки математики. Понятно что и плавающая точка имеет свою точность (тем более одинарная), но вопрос просто в маштабе этой ошибки
            б) ну и третий раз — плавающая точка — это просто деталь комфорта имплементации, ни в коем случае не самоцель и не принципиальное преимущество.

            Я более чем в курсе, что это всё не тревиально. С другой стороны, это всё-таки достаточно не сложно :) Я никуда не тороплюсь, этот проект моё текущее хобби, а главное я ничем не рискую :) Я за этот год научился уже очень многому и мне до сих пор интересно учиться, так что да — я готов довести этот проект до конца.

            Я сейчас должен съездить на последнюю в этом сезоне гонку и допаять плату новую — и будет отдельный новый пост уже не про то, как начинать делать ЭБУ — а про текущий статус именно этого проекта ЭБУ. Ну, или заходите на форум — там много флейма и немного информации о текущем статусе.
            • 0
              Так что там на счёт суффикса 239 то?
              • 0
                это номер питерской физматшколы, когда-то лучшей в городе по ГxШxВ даваемых знаний, и по крайней мере, одной из лучших сейчас.
            • 0
              Ну если только для спорта, то как ни странно, требования к прошивке будут менее жесткими, чем к гражданским. Можно забить на тщательную реализацию:
              а) алгоритмов пуска, прогрева, холостого хода
              б) экономичность и выбросы [если в US за это не прижмут, конечно — там вроде вмешиваться в системы, влияющие на emissions (например, ставить обманку лямбда-зонда) — чуть ли не уголовка]
              в) вообще работу движка не на ВСХ. Достаточно лишь обеспечить более-менее хороший выход на ВСХ с частичных нагрузок, чтобы мотор не хлебал и не дергался

              Однако, подбор углов УОЗ, фаз впрыска и AFR (они взаимозависимы!) по максимуму отдачи мотора вам придется делать по-любому
          • 0
            Навскидку, вам придется реализовать и отладить:

            На базовом уровне все или почти все это реализовывается достаточно просто. Главное наработать базу, а там уже можно развивать. Достаточно много алгоритмов и принципов просто описано и доступно.

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

            ЗЫ при нормальном темпе разработки, я думаю, к весне уже можно будет использовать.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.