моменты времени. Теперь нужен алгоритм обнаружения детонации. Моё видение того, что можно для начала
реализовать.
Перед началом интегрирования нужно загрузить в HIP коэффициент усиления для данного режима работы (допустим из таблицы в зависимости от оборотов). Постоянную времени интегрирования делаем для начала постоянной.
После завершения интегрирования обрабатываем полученное из АЦП значение.
Факт детонации определяем по следующему условию: текущее значение интегратора больше значения уровня шума с учётом допустимого разброса. Если факт детонации не установлен, то обновляем значение уровня шума.
Code: Select all
if ((value > noise)
&& ((value - noise) > threshold)
) {
knock_count++;
} else {
noise = noise + (value - noise) * k
}
Что касается настройки интегратора и усилителя HIP9011.
Устанавливаем максимальный коэффициент усиления и затем на работающем на холостом ходу двигателе подбираем постоянную времени интегрирования так, чтобы средний уровень шума был в районе половины допустимого напряжения на входе АЦП. После этого составляем табличку коэффициентов усиления для разных оборотов, чтобы выполнялось озвученное ранее условие.
Для определения допустимого разброса считаем среднеквадратическое отклонение и умножаем на некий (нужно подобрать) коэффициент (https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BE%D1%82%D0%BA%D0%BB%D0%BE%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5#.D0.9F.D1.80.D0.B0.D0.B2.D0.B8.D0.BB.D0.BE_.D1.82.D1.80.D1.91.D1.85_.D1.81.D0.B8.D0.B3.D0.BC), чтобы избежать ложных срабатываний.
Возможно, что допустимый разброс будет иметь зависимость от другим параметров. Это всё надо смотреть на практике.