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

Цифровая коррекция АЧХ, что-то типа цифрового фильтра

Всем доброго времени суток!

Коллеги, помогите пожалуйста. Такая вот задача.

Реализовал в цифре полосовой фильтр 50-250 Гц с крутизной спада -50 дБ/октава с пульсацией в полосе пропускания 0,15 дБ и срезом на границах полосы пропускания на этом же уровне (ФНЧ с частотой среза 250 Гц + ФВЧ с частотой среза 50 Гц). Частота дискретизации = 1250 выб/с. И тут выясняется, что аналоговая часть схемы, с которой на АЦП приходит сигнал имеет АЧХ как на рисунке ниже.

 

afr_2.jpg

 

В цифрах это выглядит так:

F, Гц A, дБ

50 -1.072

60 -0.726

70 -0.502

80 -0.352

90 -0.242

100 -0.165

110 -0.107

120 -0.066

130 -0.036

140 -0.016

150 -0.004

160 0.000

До 250 Гц 0 дБ сохраняется. АЧХ объясняется в основном наличием конденсаторов не очень высокой емкости в цепи прохождения сигнала. Необходимо эту АЧХ нейтрализовать в цифре.

Было предложение подкрутить коэффициенты фильтра ФВЧ (тот, который на 50 Гц), но мне этот вариант как-то не очень нравится, так как фильтр эллиптический 5-го порядка, коэффициентов в нем 14 штук, рассчитаны с помощью fdatool в Матлабе и что и как крутить не ясно, да и стремно как-то – может и зазвенеть фильтр.

Более приемлемым кажется добавление некого корректирующего цифрового звена. Вот только как его рассчитать ? Еще момент. Экстраполяция в Excel этого графика АЧХ показала, что на частоте 25 Гц спад будет около -2,5 дБ. Если корректирующее звено даст такой же подъем, это не страшно, так как запас по крутизне небольшой есть. Но вот на более низких частотах что будет ? То есть было бы очень желательно, чтобы корректирующее звено давало необходимый подъем на 1.072 дБ на 50 Гц, а на более низких частотах этот подъем не превышал бы +2..+3 дБ. Понятно, что в точности скомпенсировать АЧХ вряд ли возможно, даже результируюшие -0,3 дБ на 50 Гц вместо имеющихся -1,072 дБ было бы очень хорошо!

Подскажите, как мне рассчитать такое корректирующее звено ? (а то проект уже горит).

 

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


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

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

 

в командной строке матлаба

 

doc fdesign.arbmag

 

или в fdatool найти опцию Arbitrary Magnitude

 

А затем те пожелания по АЧХ, которые вы здесь так подробно изложили, нужно в формальном виде сообщить матлабу.

 

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

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


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

Реализовал в цифре полосовой фильтр 50-250 Гц с крутизной спада -50 дБ/октава с пульсацией в полосе пропускания 0,15 дБ и срезом на границах полосы пропускания на этом же уровне (ФНЧ с частотой среза 250 Гц + ФВЧ с частотой среза 50 Гц). Частота дискретизации = 1250 выб/с. И тут выясняется, что аналоговая часть схемы, с которой на АЦП приходит сигнал имеет АЧХ как на рисунке ниже.

 

 

Подскажите, как мне рассчитать такое корректирующее звено ? (а то проект уже горит).

Поднимите усиление на 50-100 Гц и все сетевые помехи будут ваши! Так можно сделать только если аналоговый тракт низкоомный и не подвержен помехам...

И еще. Если в аналоговом сигнале есть пульсации, то они тоже усилятся. Чтобы это проверить попросите в аналоговом тракте поставить побольше конденсаторов. И проверьте, что получится...

 

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


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

Т.е. вы серьезно считаете, что затухание в 1 дб позволяет побороть сетевые помехи?

 

Поднимите усиление на 50-100 Гц и все сетевые помехи будут ваши! Так можно сделать только если аналоговый тракт низкоомный и не подвержен помехам...

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


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

АЧХ объясняется в основном наличием конденсаторов не очень высокой емкости в цепи прохождения сигнала. Необходимо эту АЧХ нейтрализовать в цифре.

"Зачем делать сложным то, что проще простого?" Добавьте емкости, навесьте параллельно. И шабаш.

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


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

"Зачем делать сложным то, что проще простого?" Добавьте емкости, навесьте параллельно. И шабаш.

 

Вашими бы устами да медку!

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

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


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

Вашими бы устами да медку!

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

А если сделать без конденсаторов вообще. Как усилитель постоянного тока. Взять операционники с малым дрейфом?

 

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


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

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

ФВЧ состоит из двух компонентов - конденсатора и резистора. :rolleyes:

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


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

Более приемлемым кажется добавление некого корректирующего цифрового звена. Вот только как его рассчитать ?

Делал как-то корректор интерливинга двух АЦП,нужно было компенсировать разность неравномерностей АЧХ порядка 0,3дБ в полосе 500МГц. Применил обычный фильтр КИХ, его ИХ рассчитывал методом частотных выборок. Получился очень даже неплохой результат.

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


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

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

 

в командной строке матлаба

 

doc fdesign.arbmag

 

или в fdatool найти опцию Arbitrary Magnitude

 

А затем те пожелания по АЧХ, которые вы здесь так подробно изложили, нужно в формальном виде сообщить матлабу.

 

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

 

Спасибо за совет.

Вот наконец-то кончились праздники и я занялся MATLABом. Решил сделать корректирующее звено.

Нашел в fdatool опцию Arbitrary Magnitude. Чуть модифицировал default пример и получил фильтр 2-го порядка с похожей на желаемую формой АЧХ. Форма-то похожа, но точность 0,5 дБ, так как я менял в Freq vector, Freq edges, Mag vector, Weight vector только те 4 элемента, которые там и были. Догадываюсь, что надо загнать в них все мои точки желаемой АЧХ, которых 12 штук.

Даже привел частоты к нормальному виду (в частоте Найквиста) и усиление в 1, а не в дБ. Получил вот что:

частоты 0.08 0.096 0.112 0.128 0.144 0.16 0.176 0.192 0.208 0.224 0.24 0.256

усиление 1.131 1.087 1.059 1.041 1.028 1.019 1.012 1.008 1.004 1.002 1.000 1.000 .

 

Вот только не понимаю и гугл мне не помог, как все эти четыре вектора ( Freq vector, Freq edges, Mag vector, Weight vector ) правильно оформить с моими данными ???

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

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


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

Вы невероятно далеко продвинулись в деле проектирования корректора. Осталось совсем чуть-чуть.

 

Freq edges - для multiband фильтра границы полос. у вас 2 полосы если фвч, и 1 полоса, если корректор. Оптимизация делается в каждой полосе отдельно, а на границах полос - что получится.

 

Freq vector - Вектор частот.

 

Mag vector - Вектор амплитуд, соответствующий частотам из Freq vector

 

Weight vector - вектор весов. Т.е. насколько точно должно быть выполнено требование по амплитуде Mag_vector(i) на частоте Freq_vector(i) относительно других точек. Начните с равновесной оптимизации: всем точкам одинаковые веса.

 

посмотрите здесь примеры

http://www.mathworks.co.uk/help/signal/ref...ign.arbmag.html

думаю, вы сможете даже найти что-то близкое к вашему случаю

 

Даже привел частоты к нормальному виду (в частоте Найквиста) и усиление в 1, а не в дБ.

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


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

Weight vector - вектор весов. Т.е. насколько точно должно быть выполнено требование по амплитуде Mag_vector(i) на частоте Freq_vector(i) относительно других точек. Начните с равновесной оптимизации: всем точкам одинаковые веса.

 

Решил последовать Вашему совету и рассчитал ФВЧ сразу с коррекцией. Получилось. ФВЧ 5-го порядка и спад АЧХ имеет около 50 дБ/октаву и филигранно компенсирует неравномерность АЧХ аналогового тракта. Огромное человеческое Вам СПАСИБО!

 

Но осталось два вопроса.

 

1. В чем разница опций Least Pth-norm и Constrained least Pth-norm ?

 

2. Если я задаю вектор Weight vector [10 10 10 10 10 10 10 10 10 10 10 10 10 10 10], получаю одни коэффициенты, если

[100 100 100 100 100 100 100 100 100 100 100 100 100 100 100] - другие.

Если в векторе Weight vector задать на 1 элемент меньше, то вылезает ошибка "The frequency, desired value, and error weighting must be vectors of the same length.". Из чего можно сделать опосредованный вывод, что этот вектор определяет какие-то error weighting ?

Это подтверждает также то, что если задать вектор, состоящий из единиц, то получается очень неточная компенсация АЧХ.

Так в каких же единицах задается этот вектор ?

 

 

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


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

На здоровье. Хорошо, что у вас все получилось хорошо.

 

По поводу costrained/unconstrained начните отсюда:

http://www.mathworks.co.uk/help/optim/ug/fminunc.html

http://www.mathworks.co.uk/help/optim/ug/u...ms.html#brnoxxo

http://www.mathworks.co.uk/help/optim/ug/c...l?s_tid=doc_12b

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

 

Про вектор весов я написал в своем предыдущем сообщении. И здесь

http://www.mathworks.co.uk/help/dsp/ref/iirlpnormc.html

 

Что касается единиц весов, то я не знаю, почему так получается. Я до настоящего момента считал, что веса нормируются внутри полос. Посмотрите код функции iirlpnormc, что там вызывается, во что пересчитываются веса, как они используются. Заодно и здесь расскажете. Будет интересно.

 

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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