MSP430F 0 11 июня, 2014 Опубликовано 11 июня, 2014 · Жалоба Всем доброго времени суток! Коллеги, помогите пожалуйста. Такая вот задача. Реализовал в цифре полосовой фильтр 50-250 Гц с крутизной спада -50 дБ/октава с пульсацией в полосе пропускания 0,15 дБ и срезом на границах полосы пропускания на этом же уровне (ФНЧ с частотой среза 250 Гц + ФВЧ с частотой среза 50 Гц). Частота дискретизации = 1250 выб/с. И тут выясняется, что аналоговая часть схемы, с которой на АЦП приходит сигнал имеет АЧХ как на рисунке ниже. В цифрах это выглядит так: 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 дБ было бы очень хорошо! Подскажите, как мне рассчитать такое корректирующее звено ? (а то проект уже горит). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FatRobot 0 11 июня, 2014 Опубликовано 11 июня, 2014 · Жалоба Там где ваш аналоговый фильтр ослабляет, корректирующий цифровой должен усиливать. в командной строке матлаба doc fdesign.arbmag или в fdatool найти опцию Arbitrary Magnitude А затем те пожелания по АЧХ, которые вы здесь так подробно изложили, нужно в формальном виде сообщить матлабу. Можно совместить функцию корректора ачх с вашим эллиптическим фвч (я бы поступил именно так), задав результирующую ачх, а можно сделать отдельное звено. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 11 июня, 2014 Опубликовано 11 июня, 2014 · Жалоба Реализовал в цифре полосовой фильтр 50-250 Гц с крутизной спада -50 дБ/октава с пульсацией в полосе пропускания 0,15 дБ и срезом на границах полосы пропускания на этом же уровне (ФНЧ с частотой среза 250 Гц + ФВЧ с частотой среза 50 Гц). Частота дискретизации = 1250 выб/с. И тут выясняется, что аналоговая часть схемы, с которой на АЦП приходит сигнал имеет АЧХ как на рисунке ниже. Подскажите, как мне рассчитать такое корректирующее звено ? (а то проект уже горит). Поднимите усиление на 50-100 Гц и все сетевые помехи будут ваши! Так можно сделать только если аналоговый тракт низкоомный и не подвержен помехам... И еще. Если в аналоговом сигнале есть пульсации, то они тоже усилятся. Чтобы это проверить попросите в аналоговом тракте поставить побольше конденсаторов. И проверьте, что получится... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FatRobot 0 11 июня, 2014 Опубликовано 11 июня, 2014 · Жалоба Т.е. вы серьезно считаете, что затухание в 1 дб позволяет побороть сетевые помехи? Поднимите усиление на 50-100 Гц и все сетевые помехи будут ваши! Так можно сделать только если аналоговый тракт низкоомный и не подвержен помехам... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 12 июня, 2014 Опубликовано 12 июня, 2014 · Жалоба АЧХ объясняется в основном наличием конденсаторов не очень высокой емкости в цепи прохождения сигнала. Необходимо эту АЧХ нейтрализовать в цифре. "Зачем делать сложным то, что проще простого?" Добавьте емкости, навесьте параллельно. И шабаш. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MSP430F 0 12 июня, 2014 Опубликовано 12 июня, 2014 · Жалоба "Зачем делать сложным то, что проще простого?" Добавьте емкости, навесьте параллельно. И шабаш. Вашими бы устами да медку! Там все очень не просто. Кондеры и так взяли с максимальной емкостью, габариты девайса не позволяют уже бОльшие номиналы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 12 июня, 2014 Опубликовано 12 июня, 2014 · Жалоба Вашими бы устами да медку! Там все очень не просто. Кондеры и так взяли с максимальной емкостью, габариты девайса не позволяют уже бОльшие номиналы. А если сделать без конденсаторов вообще. Как усилитель постоянного тока. Взять операционники с малым дрейфом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 12 июня, 2014 Опубликовано 12 июня, 2014 · Жалоба Там все очень не просто. Кондеры и так взяли с максимальной емкостью, габариты девайса не позволяют уже бОльшие номиналы. ФВЧ состоит из двух компонентов - конденсатора и резистора. :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BratherLU 0 16 июня, 2014 Опубликовано 16 июня, 2014 · Жалоба http://www.dsplib.ru/content/allpasseq/allpasseq.html как вариант Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 16 июня, 2014 Опубликовано 16 июня, 2014 · Жалоба Более приемлемым кажется добавление некого корректирующего цифрового звена. Вот только как его рассчитать ? Делал как-то корректор интерливинга двух АЦП,нужно было компенсировать разность неравномерностей АЧХ порядка 0,3дБ в полосе 500МГц. Применил обычный фильтр КИХ, его ИХ рассчитывал методом частотных выборок. Получился очень даже неплохой результат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MSP430F 0 16 июня, 2014 Опубликовано 16 июня, 2014 (изменено) · Жалоба Там где ваш аналоговый фильтр ослабляет, корректирующий цифровой должен усиливать. в командной строке матлаба 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 ) правильно оформить с моими данными ??? Изменено 16 июня, 2014 пользователем MSP430F Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FatRobot 0 16 июня, 2014 Опубликовано 16 июня, 2014 · Жалоба Вы невероятно далеко продвинулись в деле проектирования корректора. Осталось совсем чуть-чуть. 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, а не в дБ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MSP430F 0 16 июня, 2014 Опубликовано 16 июня, 2014 · Жалоба 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 ? Это подтверждает также то, что если задать вектор, состоящий из единиц, то получается очень неточная компенсация АЧХ. Так в каких же единицах задается этот вектор ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FatRobot 0 16 июня, 2014 Опубликовано 16 июня, 2014 · Жалоба На здоровье. Хорошо, что у вас все получилось хорошо. По поводу 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, что там вызывается, во что пересчитываются веса, как они используются. Заодно и здесь расскажете. Будет интересно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться