ЭСУД под управлением EFI MegasquirtAVR в автомобилях AUDI 84/94 годов выпуска

Тема в разделе "80/90/100/200/А6 С4", создана пользователем locon, 16 авг 2010.

  1. TriZet

    TriZet Новичок

    10 окт 2011
    83
    AUDI 100/45 2.3 93
    Чего там скринить-то? После описания версии в начале файла, есть такие строки:

    // Type declarations global to everything
    #define LC1_WB_SENSOR
    //#define AEM_WB_SENSOR

    Хотите LC1, оставляете как есть, хотите AEM, делаете так:

    // Type declarations global to everything
    //#define LC1_WB_SENSOR
    #define AEM_WB_SENSOR
     
  2. pavel m

    pavel m Участник форума

    30 дек 2010
    483
    Ауди 100/45, 5 цил
    Да это что я просил.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Нажмите, чтобы раскрыть...
  3. 3oPkuu

    3oPkuu Новичок

    18 янв 2011
    77
    audi 100 2.3 aar
    а программно реализовать контроллер ШЛЗ на основе MSAVR реально?
     
  4. 3oPkuu

    3oPkuu Новичок

    18 янв 2011
    77
    audi 100 2.3 aar
    вопрос скорее к михафедору
    можно ли добавить в список используемых контроллеров ШДК вот такой вот http://wbo2.narod.ru/
    покупать жаба душит, а попаять всегда можно )
    сталкивался ли кто с данным контроллером, возникают ли какие проблемы?
     
  5. TriZet

    TriZet Новичок

    10 окт 2011
    83
    AUDI 100/45 2.3 93
    #565 TriZet, 19 окт 2012
    Последнее редактирование: 19 окт 2012
    Что-то не пойму, залил последнюю версию что выкладывал mihafedor, заполнил таблицу VE и весь конфиг с 8*8 перенес. Но время открытия форсунок на работающем двигателе(на джетронике, к MS пока только датчики подключены) по нулям стоит. Только при включении зажигания дает 3мс впрыск, дальше 0.
     
  6. TriZet

    TriZet Новичок

    10 окт 2011
    83
    AUDI 100/45 2.3 93
    #566 TriZet, 19 окт 2012
    Последнее редактирование: 19 окт 2012
    Для mihafedor. Нашел несколько косяков в коде.
    Вот здесь
    /***************************************************************************/
    /*** VE table lookup ***/
    /***************************************************************************/
    void ve_table_lookup(void) {
    uint8_t ve_11, ve_12, ve_21, ve_22;
    uint8_t ve_low_kpa, ve_high_kpa;
    uint8_t afr_low_kpa, afr_high_kpa;
    struct search_table_t kpa, rpm;

    if (config.config13 & _BV(CONTROL_STRATEGY)) { //Alpha-N
    engine.kpa = engine.tps;
    }

    search_table(config.kparangeve, sizeof(config.kparangeve), engine.kpa, &kpa);
    search_table(config.rpmrangeve, sizeof(config.rpmrangeve), engine.rpm, &rpm);

    ve_11 = *(config.VE+12*(kpa.index-1)+(rpm.index-1));
    ve_12 = *(config.VE+12*(kpa.index-1)+rpm.index);
    ve_21 = *(config.VE+12*kpa.index+(rpm.index-1));
    ve_22 = *(config.VE+12*kpa.index+rpm.index);

    ve_low_kpa = linear_interp(rpm.lbound, rpm.ubound, ve_11, ve_12, engine.rpm);
    ve_high_kpa = linear_interp(rpm.lbound, rpm.ubound, ve_21, ve_22, engine.rpm);

    corr.ve = linear_interp(kpa.lbound, kpa.ubound, ve_low_kpa, ve_high_kpa, engine.kpa);


    *************************************************
    думаю это нужно обернуть в if
    и если не используеться ШЛЗ, то незачем считать.
    ************************************************
    ve_11 = *(AFR+12*(kpa.index-1)+(rpm.index-1));
    ve_12 = *(AFR+12*(kpa.index-1)+rpm.index);
    ve_21 = *(AFR+12*kpa.index+(rpm.index-1));
    ve_22 = *(AFR+12*kpa.index+rpm.index);

    afr_low_kpa = linear_interp(rpm.lbound, rpm.ubound, ve_11, ve_12, engine.rpm);
    afr_high_kpa = linear_interp(rpm.lbound, rpm.ubound, ve_21, ve_22, engine.rpm);

    corr.afr = linear_interp(kpa.lbound, kpa.ubound, afr_low_kpa, afr_high_kpa, engine.kpa);
    **********************************************
    }

    Здесь
    /***************************************************************************/
    /*** calc total enrichment ***/
    /***************************************************************************/
    void calc_total_enrichment(void) {
    uint8_t fuel_tmp, batt_tmp, pw;
    uint8_t batt_high, batt_low;
    uint16_t res;

    // 8-bit x 16-bit multiplications
    res = (uint16_t)corr.warm;
    res = mult_div100(corr.tpsfuelcut, res);
    res = mult_div100(corr.air, res);
    res = mult_div100(corr.ego, res);
    res = mult_div100(corr.baro, res);

    if ((res >> 8) != 0) /* проверка на переполнение */
    corr.gammae = 0xFF;
    else
    corr.gammae = (uint8_t)res; /* используется для ведения логов */

    res = mult_div100(corr.ve, res);

    *******************************************************
    Здесь думаю необходимо обернуть в if
    *******************************************************

    res = mult_div100(corr.afr, res); /* корректируем состав смеси до нужного из таблицы */

    *******************************************************

    if (!(config.config13 & _BV(CONTROL_STRATEGY))) // speed-density
    res = mult_div100(engine.kpa, res);

    res = mult_div100(config.req_fuel, res);

    if ((res >> 8) != 0) // противное переполнение "... синий экран смерти!"
    fuel_tmp = 0xFF;
    else
    fuel_tmp = (uint8_t)res;


    /* battery voltage compensation */
    /* вспомним, низкое напряжение бортовой сети только увеличивает время открытия форсунок */
    batt_low = config.injopen + config.battfac;

    if (config.injopen <= config.battfac)
    batt_high = 0;
    else
    batt_high = config.injopen - config.battfac;

    #warning "this should be configurable via configuration struct"
    batt_tmp = linear_interp(61, 164, batt_low, batt_high, sensors[BATT]);

    // final pulsewidth calculation, wuhuw!
    if (fuel_tmp) {
    res = batt_tmp + fuel_tmp + corr.tpsaccel - config.injocfuel;
    if ((res >> 8) != 0)
    pw = 0xFF;
    else
    pw = (uint8_t)res;
    } else {
    pw = 0;
    }

    cli();
    inj_port1.pwcalc = pw;
    inj_port2.pwcalc = pw;
    sei();

    }



    PS: Проверил свои предположения на машине - заработало.
     
  7. TriZet

    TriZet Новичок

    10 окт 2011
    83
    AUDI 100/45 2.3 93
    Думаю можно что угодно подвесить, главное таблицу правильно составить под это.
     
  8. TriZet

    TriZet Новичок

    10 окт 2011
    83
    AUDI 100/45 2.3 93
    Вот любите Вы пустоту писать, никакой конкретики. Или всем надо весь ваш ресурс перечитать, чтоб найти и гдеж там о газе написано? Бегло глянул, не нашел.
    Нельзя привести конкретно в каком месте написано, форсунки ставил такие, редуктор такой и т.д. ?
     
  9. mihafedor

    mihafedor Участник форума

    20 апр 2010
    174
    VW Passat B4 2.0
    #569 mihafedor, 20 окт 2012
    Последнее редактирование: 20 окт 2012
    TriZet, а таблицу желаемого состава смеси вы заполняли? Просто если в таблице будут нули, то и время впрыска тоже будет 0. А РХХ не пробовали крутить?

    Если нет желания работать с этой таблицей, то как вариант можно добавить конфигурационный бит, т.к в принципе коррекция по УДК всё-равно будет утягивать смесь к 14.7 или же как вы и предложили завернуть расчёт топлива в if
     
  10. TriZet

    TriZet Новичок

    10 окт 2011
    83
    AUDI 100/45 2.3 93
    #570 TriZet, 20 окт 2012
    Последнее редактирование: 20 окт 2012
    Так эта таблица вроде для фирокополосного датчика?
    Таблицу afr не заполнял, так-как думал что она не используеться(да и не должна вроде) при работе с узкополоской.

    Я сделал так
    if (config.config13 & _BV(O2_WB_SENSOR))
    {
    ve_11 = *(AFR+12*(kpa.index-1)+(rpm.index-1));
    ve_12 = *(AFR+12*(kpa.index-1)+rpm.index);
    ve_21 = *(AFR+12*kpa.index+(rpm.index-1));
    ve_22 = *(AFR+12*kpa.index+rpm.index);

    afr_low_kpa = linear_interp(rpm.lbound, rpm.ubound, ve_11, ve_12, engine.rpm);
    afr_high_kpa = linear_interp(rpm.lbound, rpm.ubound, ve_21, ve_22, engine.rpm);

    corr.afr = linear_interp(kpa.lbound, kpa.ubound, afr_low_kpa, afr_high_kpa, engine.kpa);
    }
    }

    И второе
    if (config.config13 & _BV(O2_WB_SENSOR))
    {
    res = mult_div100(corr.afr, res); /* корректируем состав смеси до нужного из таблицы */
    }

    Работает с пустой таблицей, проверено.
    Дальше не разбирался, пока нет необходимости в ШЛЗ.
     
  11. mihafedor

    mihafedor Участник форума

    20 апр 2010
    174
    VW Passat B4 2.0
    Для тех кто не хочет изменять код или у кого VE уже откатано, можно просто заполнить таблицу Target AFR значениями 14,7
     
  12. Kiber Pank

    Kiber Pank Новичок

    23 окт 2012
    4
    Ford Scorpio 2.9
    Здравствуйте все)

    Очень хочется посмотреть на исходники MSAVR, но не те старенькие B@G'овские. А те что были позже, до перехода на третью версию.
    Да, пускай они не работают или не компилируются или еще что-то.

    У кого есть, очень прошу поделиться, можно в личку. Насколько помню, Mentat-VVO успел их скачать, до того как их везде потёрли. Народ, отзовитесь!
     
  13. Mentat-VVO

    Mentat-VVO Участник форума

    4 сен 2011
    138
    T.Crown V8 4.0L
    Stop hovering to collapse... Click to collapse... Hover to expand... Нажмите, чтобы раскрыть...
  14. Kiber Pank

    Kiber Pank Новичок

    23 окт 2012
    4
    Ford Scorpio 2.9
    Большое спасибо!

    А другие версии с исходниками есть (промежуточные)?
    В частности интересовала часть, отвечающая за зажигание.
     
  15. Mentat-VVO

    Mentat-VVO Участник форума

    4 сен 2011
    138
    T.Crown V8 4.0L
    #575 Mentat-VVO, 25 окт 2012
    Последнее редактирование: 25 окт 2012
    edis.c отвечает за зажигание. Проект может быть скомпилён под V3, где уже есть выделенные 8 каналов на зажигание через защелку i259. Но поддержка платы V2 для этой версии исходников пока еще оставлена. Других вариантов у меня нет, кроме версии 0.1, мало чем от B&G кода отличающегося.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Нажмите, чтобы раскрыть...
  16. 3oPkuu

    3oPkuu Новичок

    18 янв 2011
    77
    audi 100 2.3 aar
    #576 3oPkuu, 28 окт 2012
    Последнее редактирование: 29 окт 2012
    сделал индикатор, показывающий мгновенный расход в литрах/час. весьма своеобразный показатель. форсунки DEKA 1, от волги. насколько понял производительность 200мл/мин.
    в таком случае формула довольна простая: длительность импульса впрыска умножается на половину оборотов двигателя и делится на 1000.
    на холостом ходу получается порядка 1.1-1.2 литра. уменьшая значение VE машина начинает "подтраивать". длительность импульса на ХХ - 2.7-3 мсек.

    похоже на разумные значения, но итоговый расход, судя по залитому бензину значительно превышает желаемые цифры.
    подтекают магистрали? но тогда и запах должен быть... на 50 литрах проехал 270км, УЖАС
     
  17. aleks300782

    aleks300782 Завсегдатай

    3 окт 2011
    722
    Toyota Corolla
    Народ, кто по узкой лямбде отстраивался, реально отстроить прошивку, или разоряться на ШДК? кто как отстраивал, подскажите
     
  18. Kiber Pank

    Kiber Pank Новичок

    23 окт 2012
    4
    Ford Scorpio 2.9
    #578 Kiber Pank, 29 окт 2012
    Последнее редактирование: 29 окт 2012
    Очень стоит поставить ШДК.

    Если нет желания покупать, то вот __http://www.waltech.com/site/index.php/open-source-projects Пользуюсь им, есть небольшие скачки в показаниях. Но всегда можно подправить код, он открытый. И есть эмуляция узкополосной лямбды)

    На счет рассчетов. Посчитал так:
    Расход(л/ч) = A/1000*(B/1000)*C*D
    A - Производительность
    B - Длительность впрыска
    C - Обороты
    D - Количество отработавших форсунок за оборот

    Если попарно-параллельный, то получается как раз 1,2л/ч при 3мс впрыска. Но это же на холостом. а на ходу частенько ускорительное обогащение, да и карта может быть не точной, потому и расход (ИМХО).

    Может дело в моменте начала впрыска? То есть может стоит изменить время начала впрыска относительно положения датчика холла, кто задумывался над этим? Просто в прошивке не реализованы моменты впрыска Even/Odd и он начинается сразу после сигнала по датчику холла. Возможно тогда смесь будет лучше сгорать?
     
  19. Mentat-VVO

    Mentat-VVO Участник форума

    4 сен 2011
    138
    T.Crown V8 4.0L
    это капиталка или гбо, а потом все равно капиталка...:rock:
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Нажмите, чтобы раскрыть...
  20. 3oPkuu

    3oPkuu Новичок

    18 янв 2011
    77
    audi 100 2.3 aar
    над капиталкой думали. компрессию проверили - в норме, порядка 12 во всех горшках. сказали, что в принципе и маслосъемные кольца могут создавать компрессию при измерениях. решили проверить открутив сопун. если при рабочем двигателе сильно дует из него, то взрыв мимо кассы идет. все в порядке. еле еле то ли дым то ли пар оттуда струится, как от сигареты.
    плюс ко всему до замены впрыска расход порядка 13 литров был. тяги не было, плохо заводилась и не ровно работал движок на ХХ.
    сейчас же ХХ весьма ровный. каких либо внешних признаков капиталки не установлено.
    масло ест в разумных пределах, в глаза не бросается.
    капиталку делать оооочень не хочется. колечки и вкладыши поменять не проблема, а мысль о расточке убивает ) движок то большой, снимать его совершенно не хочется.
    откуда уверенность в необходимости капиталки?