Перейти к содержанию

Определение Детонации С Помощью Вейвлета Морлета


Рекомендуемые сообщения

Пытаюсь написать программу для микроконтроллера для определения момента детонации с помощью вейвлета Морлета, как реализовано в RUOZ, все попытки сводятся к тому, что получается цифровой программный фильтр низких частот, не более и определить по нему момент детонации не пойму как.

Прошу помощи в реализации этой идеи.

http://alexhobby.narod.ru/Ignition.htm

Изменено пользователем donec
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Я не в теме, но из общих соображений, может, надо определить идеальный вид искомой кривой, получить её коэф-ты в вейвлет разложении и, соответственно, кривые отклонения в сторону опережения и запаздывания. Там и смотреть, как вывести угол опережения/запаздывания, исходя из текущих коэф.

Вообще, вероятно, математика задачи - это ноу-хау руоз, а значит придумывать ее придется самому.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

надо определить идеальный вид искомой кривой, получить её коэф-ты в вейвлет разложении

Частота детонации примерно 6700Гц, в том то и проблема как их правильно получить эти коэффициенты и что с ними делать. Если это будет понятно, за программой дело не станет.

Брал 7 значений вейвлета (значения вершин вейвлета), чтобы в сумме они были равны нулю, и накладывал их на сигнал детонации частотой только 6700Гц (примерно синусоида), ну и естественно сдвигал эти значения вдоль сигнала, в результате получается на выходе разность частот сигнала и вейвлета, что-то вроде фильтра частот.

А на рисунке 2 получается яркая линия т.е. максимальный (или минимальный) сигнал при совпадении этих коэффициентов с сигналом, вот и не могу понять принцип, как найти эти коэффициенты и что с ними делать.

post-135787-0-67557400-1316204600_thumb.jpg

post-135787-0-64679100-1316205056_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Брал 7 значений вейвлета (значения вершин вейвлета), чтобы в сумме они были равны нулю, и накладывал их на сигнал детонации частотой только 6700Гц (примерно синусоида), ну и естественно сдвигал эти значения вдоль сигнала, в результате получается на выходе разность частот сигнала и вейвлета, что-то вроде фильтра частот.

Заранее извиняюсь, если я не понял и объясняю для Вас очевидное. Я так понимаю, нужно не подгонять сигнал под вейвлет, а разложить сигнал по базису вейвлета. Также как ДПФ. Изначально товарищ делал ДПФ, смотрел на полученный спектр. По некоторым значениям из этого спектра определял, а не случилась ли детонация. Предполагаю дальше: частота дискретизации данных с ДД не позволяла получать достаточно данных при высоких оборотах, поэтому возникла проблема более точной локализации во времени при тех же данных. ДПФ был заменен на декомпозицию на вейвлеты (насколько понимаю). То есть вместо коэф. спектра были взяты коэф. разложения по вейвлетам. По сути тоже спектр но не в терминах гармоник, а в терминах базиса выбранного вейвлета.

Если коротко, то Вам нужно самому сделать вейвлет преобразование. Почему-то в асм-коде руоза я ничего такого не нашел. Может, мое понимание не верно.

Ссылка на комментарий
Поделиться на другие сайты

я понимаю это так же, я не могу понять как получить коэффициенты и что с ними делать

Почему-то в асм-коде руоза я ничего такого не нашел

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

Изменено пользователем donec
Ссылка на комментарий
Поделиться на другие сайты

я понимаю это так же, я не могу понять как получить коэффициенты и что с ними делать

Коэф-ты - это результаты вейвлет-декомпозиции.

А что с ними делать - это нужно нарисовать вместе с сигналом и смотреть. Я сам процесс детонации не очень понимаю.

Ссылка на комментарий
Поделиться на другие сайты

Вы бы выложили временную серию измерений ДД и поточнее сформулировали бы задачу. Может, кто и взялся бы помочь. Я хоть и представляю, что такое компрессия, но где на графике давления ВМТ и где должна быть детонация - это вряд ли скажу.

Ссылка на комментарий
Поделиться на другие сайты

До измерения сигнала детонации дело не дошло, хотя для этого все есть, на авто установлен датчик детонации (от Силыча, только не знаю живой он или нет, давно не пользуюсь) и есть плата старой системы зажигания на которой есть фильтр как на РУОЗ.

Предполагаю, что сигнал детонации выглядит как на рисунке 1, его частота для моего двигателя равна 6900Гц и может меняться от оборотов двигателя.

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

На DELPHI написал программу чтобы хоть как-то понять процес обработки сигнала вейвлетом, при обработке на компе используются команды которые может выполнять микроконтролер. В качестве сигнала детонации использована синусоида (какой реальный будет незнаю), в качестве вейвлета использована пародия на вейвлет Морлета, коэфициенты 2*2*2...(-2, 2, -8, 16, -8, 2, -2). Ширина окна (45 градусов по коленвалу) выбирается в зависимости от оборотов двигателя (где-то читал, что измерение начинается с 6 градусов после ВМТ).

Если в сигнале от датчика детонации есть частота равная частоте вейвлета, то на выходе получаем ровную линию, т.е. коэфициенты не изменяются (рисунок 2), если в сигнале нет этой частоты или она не совпадает с частотой вейвлета, то коэфициенты начинают изменяться (рисунок 3), и чем больше разница между частотой сигнала и частотой вейвлета, тем на бОльшую величину изменяются коэфициенты.

post-135787-0-42506800-1316888353_thumb.jpg

post-135787-0-11000900-1316890058_thumb.jpg

post-135787-0-00385500-1316890314_thumb.jpg

Project1.7z

Изменено пользователем donec
Ссылка на комментарий
Поделиться на другие сайты

А есть чисто данные и чисто формулировка, что нужно получить? Математически. То есть я предполагаю, что нужно получить момент детонации на графике показаний ДД, но из Ваших картинок не понятно, что Вы хотите. Насколько я понял, Вы декомпозицию не реализовывали, но взяли точки экстремумумов вейвлета (строго говоря, одного из собственных векторов/функций вейвлета, так как вейвлет - это базис, то есть набор) и подогнали их под данные, исходя из, вероятно, среднеквадратичного отклонения. Но это не декомпозиция.

Вот исходный код для матлаба, фортрана. Наверняка, можно найти на С/C++.

http://atoc.colorado.edu/research/wavelets/software.html

Ссылка на комментарий
Поделиться на другие сайты

Если простым языком, то нужно получить выходные данные которые бы однозначно говорили о том, что в сигнале имеются признаки детонации (наличие сигнала частотой 6900Гц). У меня получилось, что признаки детонации выявляются постоянством во времени выходных данных (не изменяются коэффициенты) и на основе этого можно задать какую-то максимальную величину изменения коэфициентов, ниже которой можно считать, что детонация есть, и эту программу необходимо будет реализовать на микроконтроллере. В глубине души я конечно понимаю, что иду не тем путем :), поэтому и создал эту ветку. Вы знаете я с математикой в свое время дружил, но не до такой степени что-бы манипулировать высокими названиями :) , да и было это очень давно, если можете простым языком, то буду признателен, а вот с английским вообще худо. Из языков для РС работаю только с Паскалем (Delphi), а для микроконтроллера программирую только на ассемблере (AVRStudio). Из описания декомпозиции понял, что каким-то образом нужно разделять сигнал на частотные составляющие и потом в расчет брать необходимые части, не знаю правильно ли это и каким образом.

Изменено пользователем donec
Ссылка на комментарий
Поделиться на другие сайты

Вот мы по кругу ходим. Дайте _данные_. CSV, TXT - что угодно.

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

Сигнал снимался звуковой картой ноута с частотами дискретизации 192000Гц - для наглядности, и 35446Гц - частота с которой смогу снимать сигнал микроконтроллером. Сигнал снимался сплошной, реально будет сниматься в окне, сейчас в окне не могу потому, что МК не сможет передать такой объем информации в реальном режиме времени на комп. При беглом просмотре сигнал, что при детонации, что без по частоте одинаковый (примерно 6600Гц) разница в амплитуде, но надо еще разбираться. Выкладываю, что есть, информация в названиях файлов и на рисунках, если есть вопросы, задавайте. Задача выявить детонацию.

post-135787-0-02056500-1317549012_thumb.jpg

post-135787-0-01613000-1317549021_thumb.jpg

post-135787-0-35302600-1317549026_thumb.jpg

post-135787-0-37405100-1317549033_thumb.jpg

Wave_PCM_8бит_35446Гц урезанный.rar

Wave_PCM_8бит_35446Гц с детонацией урезанный.rar

Wave_PCM_8бит_192000Гц урезанный.rar

Wave_PCM_8бит_192000Гц с детонацией урезанный.rar

Project1.rar

Изменено пользователем donec
Ссылка на комментарий
Поделиться на другие сайты

Если я правильно понял, то детонация - это щелчки при прослушивании вав-а. К примеру от начала два первых щелчка:

70204m.png

второй график - это коэф-ты Фурье

третий - коэф-ты непрерывного вейвлет-преобразования для в-та Морле со сдвигом (тау в формуле по последней ссылке) равным 0.

И Фурье и Морле на окне шириной 7.

Если увеличить кусок, выделенный красным (точнее, самое начало этого куска, то есть начало детонации), то выглядит так:

76351m.png

Внизу получается каша, но, в общем, можно поиграть шириной и сдвигом. Например, ширина - 3, сдвиг - 5:

87614m.png

106033m.png

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

Локализация в смысле максимум коэф. выше чем некоторый порог.

Назад к 7,0:

77361m.png

Здесь красным максимум кэф. Морле, черным - макс коэф. Фурье. Видно, что чуть вейвлет быстрее растет, чем Фурье, но, в общем, выигрыш - пара едениц времени.

Это все, конечно, относится к одной первой детонации в Вашем wav-е, по=хорошему, нужно смотреть на всех реализациях детонации, но это лень и вот по какой причине: если посмотреть на самый первый график в моем посте, то первая мысль: а зачем вообще эти Фурье, Морле, почему бы не установить тупо порог и превышение сигналом (абс. значением) этого порога и будет считаться детонация. См. след график, зеленым на нижнем графике - максимум изначального сигнала:

76336m.png

105052m.png

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

Немного отстает от вейвлета, но зато никакой мороки с вейвлетами.

Изменено пользователем hable
Ссылка на комментарий
Поделиться на другие сайты

Фурье (БПФ): ссылка - там и код на С++

Морле - я ссылку выше на математику давал, как минимум стоит прочитать. Реализация... это надо искать. Я считал на R, пакет wmtsa, но он считает через ifultools. Последний в исходниках на С, при желании можно вытянуть конкретно расчет коэф. Морле, но придется повозиться с отрезанием всего лишнего.

Может, это и не ближайший путь. Попробуйте поискать что-то попроще, но чтобы понимать, что ищете, почитайте все-таки ссылку.

Изменено пользователем hable
Ссылка на комментарий
Поделиться на другие сайты

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

Изменено пользователем donec
Ссылка на комментарий
Поделиться на другие сайты

Вот из гугла ;) :

википедия

Какое-то введение

Вообще, там все понятно. Из непонятного и опасного только factors и иногда неожиданное преобразование типов из матриц в вектора и наоборот.

1. Ставите R

2. Запускаете в директории, где лежит Ваш .R файл (подправить рабочую директорию в ярлыке в windows или перейти в нужную директорию в linux и уже оттуда запустить R)

3. появится командная строка R

4. поставить дополнительные пакеты (из командной строки R):

install.packages('audio');

install.packages('wmtsa');

5. выполнить команду: source('detonation.R')

detonation.txt в аттаче, переименуйте его в detonation.R

detonation.txt

Изменено пользователем hable
Ссылка на комментарий
Поделиться на другие сайты

Вчера инсталировал R, подключил пакеты (подключал через меню, но думаю это не важно), скачал руководство на украинском, вечером попробую то, что Вы сейчас прислали.

Вчера попробовал дискретное преобразование Фурье на Делфи по Вашей ссылке из Вики, что-то оно не пошло, то-ли ошибка в коде, то-ли я неправильно перенес в модуль, но сильно не разбирался, поздно уже было.

Изменено пользователем donec
Ссылка на комментарий
Поделиться на другие сайты

  • 9 месяцев спустя...

Всем, приветики!

donec, случайно наткнулся на это - файл в прицепе...., может тебе приготится.

А.Н. ЯКОВЛЕВ ВВЕДЕНИЕ В ВЕЙВЛЕТ-ПРЕОБРАЗОВАНИЯ.pdf

Больше дела, меньше слов! Не ошибается тот, кто ничего не делает!

ВАЗ-2104(2004г); мотор:1,5куб; КПП:5; СЗ:ДПКВ(60-2)+ФУОЗ(своя схема, МК: SiLabs C8051F310)+ДКЗ-006м(статика).

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

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