Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 12:34:33

Добрый день!

Хочу сделать Эмулятор ДПКВ на ардуино с корректировкой по автомобильному датчику холла.

смысл в том, чтобы эмулятор выставлял количество оборотов по срабатыванию Холла

На текущий момент готов сам эмулятор. Мозги его видят и понимают.

Прошу помощи с подключением датчика Холла и корректировкой кода.

Код эмулятора:
Код:
const uint16_t rpm_D = 1000;        // по дефолту  1000 об/мин
const uint16_t tooth_quantity = 60; // выбираем количество зубчиков датчика коленвала
const uint16_t tooth_size = 3;      // выбираем длину зуба    в градусах
const uint16_t hole_size = 3;       // выбираем длину впадины в градусах
//    зуб+впадина = 360/количество зубов (проверяем это) !!!
const uint16_t missed_teeth = 2; // выбираем количество пропущенных зубьев
const bool CKPbeginLogic = 0;    // логика начала сигнала колена  (0 или 1)
#define CKPpin PB4               // пин коленвала
uint32_t T1, T2;                 // переменные времени прохождения шторки
uint32_t rpm_test = 0;           // количество оборотов коленвала по шторке
boolean running = false;         // маркер прохождения шторки

void setup()
{
    attachInterrupt(0, deteccion, RISING); //детекция
    Serial.begin(115200);
    if ((tooth_size + hole_size) * tooth_quantity != 360)
        Serial.println("Неправильно выбрано количество и/или размер зубьев!!!");
    Serial.print(rpm_D);
    Serial.println(" rpm");
    Serial.println();
    DDRB |= _BV(CKPpin); // пин дпкв на выход
    if (!CKPbeginLogic)
        PORTB |= _BV(CKPpin); // задаем начальный уровень сигнала дпкв
    //ниже настраиваем аппаратный таймер ардуино
    TCCR1A = 0;
    TCCR1B = 8;
    TCCR1B |= 1;
    OCR1A = 2666666ul / rpm_D;
    TIMSK1 |= (1 << OCIE1A);
}

void loop() // луп в формированиим сигнала дпкв не участвует, здесь только задаются обороты коленвала через терминал
{
    if (running == true) // обновление оборотов двигателя
    {
        rpm_test = 60000000 / ((T2 - T1) * 2); // количество микросекунд в минуте / ((время полуоборота)*2)
        T1 = T2;
        running = false;
        Serial.println(rpm_test);
        OCR1A = 2666666UL / rpm_test;
    }
    if (Serial.available())
    {
        byte inbyte = Serial.read();
        if (inbyte >= '1' && inbyte <= '9') // в консоль вводим от 1 до 9, чтоб выбрать обороты(без символов конца строки)
        {
            uint16_t rpm = (inbyte - '0') * 1000;
            Serial.print(rpm);
            Serial.println(" rpm");
            OCR1A = 2666666UL / rpm;
        }
    }
}

void deteccion()
{
    T2 = micros();
    running = true;
}

ISR(TIMER1_COMPA_vect) // обрабочик таймера, сюда заходит раз в градус поворота коленвала

{
    static byte countT = 0;                                                                 // счетчик градусов зуба/впадины
    static byte counttooth = 1;                                                             // счетчик зубов
    static bool tooth_or_hole = 1;                                                          // флаг зуб/впадина
    countT++;                                                                               // прибавляем счетчик градусов зуба/впадины
    if ((tooth_or_hole && countT >= tooth_size) || (!tooth_or_hole && countT >= hole_size)) // если по градусам достигли зуба или впадины
    {
        tooth_or_hole = !tooth_or_hole; // меняем состояние зуб/впадина
        countT = 0;                     // сбрасываем счетчик градусов зуба/впадины
        counttooth++;                   // увеличиваем номер текущего зуба
        if (counttooth > (tooth_quantity * 2))
            counttooth = 1; // сбрасываем увеличение номера зуба в случае достижения максимума
        // ниже дергаем ногой (сигнал ДПКВ), если это не пропущенные зубья.
        if ((tooth_quantity * 2 - counttooth) > (missed_teeth * 2 - 1))
            PORTB ^= _BV(CKPpin);
    }
}

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 13:14:52

Вы хотите заменить индукционный датчик положения коленчатого вала на эмулятор? А вчем смысл?

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 13:22:24

Вы хотите заменить индукционный датчик положения коленчатого вала на эмулятор? А вчем смысл?

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

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 15:40:15

Индейка конечно не очень, но имеет место быть, яб конечно лучше венец воткнул.
А с датчиком холла какие проблемы?

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 15:49:09

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

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 15:54:52

Дело в том что сигнал ДПКВ является основным и по нему устанавливается момент искраобразования. А вам придется формировать 60 тип. + пропуск 2 имп на следующий оборот, из-за чего в динамические моменты будет смещатся угол искраобразования. Плюс придется отключить датчик фаз, чтобы ЭБУ меньше обращал внимание на расихронизацию.

Добавлено after 5 minutes 2 seconds:
То что делаете на буратино (ардуино) разницы нет. Лучше конечно писать конечно на асм, но что имеете. Пробуйте.

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 15:57:37

Разница есть. Ардуино - это плата, рассчитанная на работу на столе. Не более. А вот ассемблер или нормальный голый Си (то есть, не скетчи всякие) - разницы особо нет.

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 15:59:16

Да почему не стоит на Ардуине? Вон в старых ЭБУ Бош и Январь стояли 8-битные МК на базе 8051, и ничо, работало жеж. А в ардуине нужно не проводками на макетке собрать, а на плате, залив её компаундом и поставив в место похолоднее. На ардуине народ че только не делает. Просто напишите прогу по правилам MISRA и плату понадежнее изолентой смотайте.
Последний раз редактировалось НовыйДень Вс июн 12, 2022 16:00:44, всего редактировалось 1 раз.

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 16:03:42

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

Добавлено after 3 minutes 13 seconds:
8-битные МК на базе 8051,.... На ардуине народ че только не делает.

дело не в мк, можно хоть 4-бит, там вполне хватит, а в отсутствии каких-либо правил помехозащищённости при трассировке и изготовлении Ардуино. Народ-то да, дохрена делает, только вот мало рассказывает, как оно потом глючит. Или же начинает задавать вопросы, а чё это оно глючит... Хотя просто всё то же самое потом пересобрать нормально - и глючить не будет.

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 16:10:59

Я видел и довольно толковые творения на ардуине. Конечно есть и ахтунг, которого в принципе то больше. Но сделать грамотную разводку и схему платы - задача в принципе непростая даже если не на ардуине делать. Еще не факт, что получится лучше у кого-то. Ардуину, как плату с МК, можно и нужно ставить на материнскую плату с остальными деталями и разводкой.

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 16:17:50

..ассемблер или нормальный голый Си - разницы особо нет.
разница очень большая.

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 16:23:53

Между прочим, накосячить на ассемблере можно куда легче, чем на Сях. А обскакать на асме современные компиляторы С/С++ не шибко то выйдет. Для Си есть набор правил MISRA, почитайте про них.

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 16:26:30

Если руки растут ниже пояса, то и в тарелке с макаронами накосячить можно (почитайте про них).

Давайте вернёмся к сути проблемы (хорош флудить).

В чем у вас проблема с датчиком холла?
Последний раз редактировалось korsaj Вс июн 12, 2022 16:28:27, всего редактировалось 1 раз.

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 16:40:40

Сейчас при нынешнем железе и нынешних развитых компиляторах нет смысла корячиться на ассемблере. На Сях нужно просто соблюдать конвенцию MISRA (почитайте еёйную) об однозначном поведении и не допускать кода в стиле i = i++ + ++i; (почитайте о проблемах приоритетов и однозначности поведения)

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 17:24:57

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

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

по поводу того, что будет учитываться количество оборотов с небольшим запозданием - я в курсе.
Хочу попробовать такой вариант, особенно вот после вот этого видоса:


по поводу того, что ардуино не предназначено и надо ваять на отдельных схемах/платах:
в сети, в частности на драйве куча проектов фуозов, блоков управления и т.д. на ардуино.
в частности speeduino. все нормально ходит, если правильно установить и защитить от влаги

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 17:34:18

На 600 об/мин коленвала период одного оборота будет равен 100 мс. Замеряем этот период между двумя срабатываниями датчика. И просто делим на N-зубьев, получая период сигнала между зубьями.
Чтобы перевести период между срабатываниями датчика холла в обороты, нужно сделать 1/T.

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 17:35:40

1 - как и в автомобиле: питание 5 вольт, масса и сигнальный выход.
2 - измерять время между сигналами и вычислять обороты.
У вас сейчас диск со шторками? Сколько шторок на оборот? Имеют равное заполнение на диске? Как определяется ВМТ?
Сколько зубьев у штатного для ЭБУ венца?

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 19:43:26

Сейчас стоит диск со шторками, зажигание работает от датчика холла. Шторка выглядит примерно вот так:
Изображение

За один оборот распредвала коленвал делает два оборота.
Шторка крепится на распредвале пасиком, ВМТ выставляется меткой на маховике

У штатного вазовского венца - 60 зубьев, два из которых спилены

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 19:52:26

Получается у вас окно (начало или конец?) это ВМТ?

Добавлено after 4 minutes 7 seconds:
Первым делом нужно настроить таймер таким образом, чтобы вы могли измерить время одного оборота. Так как таймер 16ти разрядный, думаю в один период счета можно уложить обороты от 400 (лучше с запасом от 200) до 8000. Нужно посчитать дискретность.

Re: Эмулятор ДПКВ с корректировкой

Вс июн 12, 2022 20:11:06

Получается у вас окно (начало или конец?) это ВМТ?


В инструкции написано: момент выхода выреза шторки должен примерно совпадать с ВМТ
Ответить