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

Помогите разобраться с обратной связью...

Приветствую!

На МК делаю некий генератор звука заранее заданной частоты на базе ШИМ. В схеме стоит цифровой микрофон.

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

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

Т.е. запустили 1 период ШИМ синуса, получили разницу между максимумом и минимумом, запомнили ее. Далее изменили коэффициент заполнения для 1-го отсчета, запустили 2 период ШИМ синуса, получили разницу между максимумом и минимумом, сравнили ее с предыдущим значением, если меньше, то оставляем текущий коэффициент, если больше, то возвращаем предыдущий коэффициент. И так далее для каждого отсчета ШИМ синуса.

Будет ли такой алгоритм работать? Может есть варианты попроще и получше?

Поделиться сообщением


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

1. Считаем фурье.

2. Достаём из п.1 амплитуды и фазы гармоник.

3. Добавляем их в сигнал в противофазе.

Если не помогло повторяем вычисления и добавляем новые гармоники к ранее посчитанным. 

Пробуем смотрем что происходит. Если сойдётся радуемся. Если не сходится разбираемся почему.

Поделиться сообщением


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

А зачем микрофон в генератор звука? 
Если хотите убрать несущую частоту ШИМ, так это обычные RC и LC фильтры

Поделиться сообщением


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

38 minutes ago, EdgeAligned said:

А зачем микрофон в генератор звука? 
Если хотите убрать несущую частоту ШИМ, так это обычные RC и LC фильтры

Генерируем заданную синусоиду, известную. Аппаратные ресурсы ограничены. Сейчас стоит фнч 2-порядка. Его улучшить никак нельзя.

Есть микрофон (для другой задачи), но хочу его использовать для подавления 2, 3 гармоник и артефактов самого динамика.

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

2 hours ago, MegaVolt said:

1. Считаем фурье.

2. Достаём из п.1 амплитуды и фазы гармоник.

3. Добавляем их в сигнал в противофазе.

Если не помогло повторяем вычисления и добавляем новые гармоники к ранее посчитанным. 

Пробуем смотрем что происходит. Если сойдётся радуемся. Если не сходится разбираемся почему.

Вас понял, спасибо.

Фурье за 1024 такта на 48 МГц без FPU успеет посчитаться?

Изменено пользователем BIK14

Поделиться сообщением


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

Сигнал с микрофона будет ловить всё, что происходит вокруг, а не только звучащую частоту.

Если параметры фильтра улучшить нельзя, то можно поднять саму частоту ШИМ.

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

Изменено пользователем EdgeAligned

Поделиться сообщением


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

Quote

Фурье за 1024 такта на 48 МГц без FPU успеет посчитаться?

Все зависит от оптимизации. Можно считать в целых. Кроме того, Вам почти все равно за сколько оно будет считаться. Никто не заставляет корректировать ШИМ на каждом буфере. Ну будет сходиться помедленнее.

Поделиться сообщением


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

5 часов назад, BIK14 сказал:

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

Что за "паразитные гармоники"? И откуда они должны возникать?

Или - зачем генерировать сигнал с этими самыми "паразитными гармониками", чтобы потом с ними бороться? Может лучше уж генерить сигнал без них? И бороться не нужно будет. Если конечно борьба - не самоцель всего действа....

5 часов назад, BIK14 сказал:

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

Написан какой-то бред.... :wacko2:

Откуда в синусе какие-то "гармоники"??? Вы вообще понимаете - что называют "гармониками" ("гармоническими составляющими")? Их по определению не может быть в синусоидальном сигнале. Так как там всего одна единственная гармоника - основная частота.

5 часов назад, BIK14 сказал:

Может есть варианты попроще и получше?

Лучше сначала разобраться хотя-бы с базовыми понятиями....

Поделиться сообщением


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

5 часов назад, BIK14 сказал:

для подавления всяких паразитных гармоник,

Каких конкретно гармоник? "Всяких" - это конкретно каких?

Поделиться сообщением


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

57 минут назад, BIK14 сказал:

Есть микрофон (для другой задачи), но хочу его использовать для подавления 2, 3 гармоник и артефактов самого динамика.

Поэтому и вопрос как правильно организовать акустическую обратную связь.

Может вы всё-таки - хотите измерить АЧХ вашего акустического тракта? А не мифические "паразитные гармоники" в генерируемом сигнале искать.

АЧХ тракта исследуется совсем другими методами. И никакие БПФ для этого не нужны.

57 минут назад, BIK14 сказал:

Какой сигнал с микрофона будет отражать улучшение качества генерируемой синусоиды.

Качество генерируемого сигнала известно априори - без всяких микрофонов. Определяется оно качеством вашего кода и параметрами ШИМ/ЦАП. Никакие микрофоны на него никак не могут влиять.

 

PS: В генерируемом синусоидальном сигнале нет и не может быть никаких гармоник. По определению. Там всего одна только гармоническая составляющая - основная частота. Топикстартеру совет - начинать с чтения букварей. Чтобы не писать галиматью.

Поделиться сообщением


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

Справедливости ради, это только в идеальном синусе нет гармоник, - одна единственная, она же основная.

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

А что там у автора за "синус", он не показывает.

Поделиться сообщением


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

7 минут назад, eddddy сказал:

Справедливости ради, это только в идеальном синусе нет гармоник, - одна единственная, она же основная.

А почему синус должен быть неидеален? Из-за ограничения полосы ШИМ? Ну так - гармонические составляющие, возникающие из-за ограничения полосы ШИМ, никакими микрофонами не скомпенсировать. Их можно уменьшить только увеличением частоты ШИМ. Или переходом на ЦАП. Микрофон для этого не нужен.

А неидеальности синусоиды из-за кривого алгоритма генерации побеждаются корректно написанным кодом и отладчиком. Микрофон тут также без надобности.

Поделиться сообщением


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

Синус, как тригонометрическая функция f(x) = sin(x), не содержит никаких гармоник.

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

Поделиться сообщением


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

2 минуты назад, jcxz сказал:

А почему синус должен быть неидеален?

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

Поделиться сообщением


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

7 минут назад, eddddy сказал:

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

Ну так это уже называется измерение и коррекция АЧХ аудио-тракта. О чём я выше писал:

21 минуту назад, jcxz сказал:

Может вы всё-таки - хотите измерить АЧХ вашего акустического тракта? А не мифические "паразитные гармоники" в генерируемом сигнале искать.

И никакие БПФ для этого не нужны. А нужен простой генератор синусоидального сигнала качающейся частоты. С простым амплитудным детектором на приёмном конце. И никакие паразитные гармоники искать не нужно. Измеряем текущий уровень сигнала на приёмном конце тракта и всё.

7 минут назад, eddddy сказал:

Да и рождается зачастую так же.

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

Поделиться сообщением


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

15 минут назад, jcxz сказал:

измерение и коррекция АЧХ аудио-тракта

АЧХ - это про не гармоники )

15 минут назад, jcxz сказал:

А искажения при программной генерации синуса

Разрядность формирования не бесконечна, ЦАП не линеен (иногда очень), последующий фильтр тоже.

15 минут назад, jcxz сказал:

Ими можно пренебречь.

Поэтому и вопрос к автору - какой величиной гармоник можно пренебречь.

Или вообще забить, издали, с трех метров глядя на осциллограф, похоже оно на синус - и ладно. Может, этого вполне хватит для задачи.

Изменено пользователем eddddy

Поделиться сообщением


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

×
×
  • Создать...