Фильтр реализовать

Feb 18, 2006 25 Replies

Доброго времени суток тебе All!



Задача - реализовать полосовой фильтр, пока только задана полоса пропускания



0,5-20 Гц.

Крутизна "скатов" АЧХ пока не актуальна.



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



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



Желательно на примеры реализации - но только на ассемблере.



Да - реализовывать надо на AtTiny15, входной сигнал вводится через встроенное АЦП. Выходные данные - уровень сигнала попадающего в данную полосу.


Будь счастлив(а) All... С уважением Wladimir.


Wladimir, ты ещё здесь сидишь?

Суббота Февраль 18 2006 09:42, Wladimir Tchernov wrote to All:

WT> Задача - реализовать полосовой фильтр, пока только задана полоса WT> пропускания 0,5-20 Гц. WT> Крутизна "скатов" АЧХ пока не актуальна. WT> Остальные параметры - как получиться. WT> Просто я никогда этого не делал - если есть возможность - ткните WT> носом в русскоязычные ресурсы по теме реализации фильтров на ОМК. WT> Потому как без бызы разбираться в англоязычных тяжко. WT> Желательно на примеры реализации - но только на ассемблере. WT> Да - реализовывать надо на AtTiny15, входной сигнал вводится через WT> встроенное АЦП. Выходные данные - уровень сигнала попадающего в данную WT> полосу.

Hа входе АЦП в любом случае придётся ставить ФHЧ. Соответственно, полоса уже будет ограничена сверху. А если на его входе предусмотреть разделительный конденсатор - то и снизу полоса будет ограничена. Поскольку крутизна скатов АЧХ несущественна - задача решена ;)

А зачем вообще нужна такая странная штука?

Георгий

Доброго времени суток тебе George!

19 Фев 06 14:42, George Shepelev -> Wladimir Tchernov:

WT>> Задача - реализовать полосовой фильтр, пока только задана полоса WT>> пропускания 0,5-20 Гц. WT>> Крутизна "скатов" АЧХ пока не актуальна. WT>> Остальные параметры - как получиться. WT>> Просто я никогда этого не делал - если есть возможность - ткните WT>> носом в русскоязычные ресурсы по теме реализации фильтров на ОМК. WT>> Потому как без бызы разбираться в англоязычных тяжко. WT>> Желательно на примеры реализации - но только на ассемблере. WT>> Да - реализовывать надо на AtTiny15, входной сигнал вводится WT>> через встроенное АЦП. Выходные данные - уровень сигнала WT>> попадающего в данную полосу.

GS> Hа входе АЦП в любом случае придётся ставить ФHЧ.

Если-б все было так просто - там места только на самое простое RC звено, причем емкость не более 4,7 мкФ.

GS> Соответственно, GS> полоса уже будет ограничена сверху. А если на его входе предусмотреть GS> разделительный конденсатор - то и снизу полоса будет ограничена. GS> Поскольку крутизна скатов АЧХ несущественна - задача решена ;)

GS> А зачем вообще нужна такая странная штука?

Микроволновый доплеровский датчик движения - но надо его в ооооочень малые габариты впихнуть.

Будь счастлив(а) George... С уважением Wladimir.

Привет! WT> Задача - реализовать полосовой фильтр, пока только задана полоса WT> пропускания 0,5-20 Гц. WT> Да - реализовывать надо на AtTiny15, входной сигнал вводится через WT> встроенное АЦП. Выходные данные - уровень сигнала попадающего в данную WT> полосу. Несколько лет назад, мне надо было запрограммировать ПИД регулятор (MCS51+ассемблер)мои действия:

1) Я нарисовал классическую схему ПИД-регулятора на операционниках. 2) Представил ПИД-регулятор в виде последовательности математических операций (по большей части как оказалось это умножением с накоплением результата). 3) Написал программу ПИД-регулятора на паскале для ПК которая забирала по UART данные для рассчётов у контроллера, результат рассчётов передаёт контроллеру. Для этого первого эксперимента математика была floatpoint. Главная цель проверить правильно ли я понял принцип работы ПИД в плане его программной реализации, и поиск путей оптимизации алгоритма. (На п.1,2,3 ушло 2 недели) 4)реализация FixedPoint арифметики на MCS51. (На п.4 ушло 3 недели, главные тормоза - проверка корректной работы математики) 5)Первый ПИД на FixedPoint. (на п.5 затратил 3 дня) 6)Тотальная Оптимизация Вычислений (как много вычислений оказывается можно пропустить если определёны границы точности и диапазон изменения коэффициентов и постоянных времени) (на п.6 затратил 1 неделю)

Результат - частота работы регулятора 20000Гц, при частоте проца 22МГц., на входе и выходе 12бирные данные, постоянныя времени от 0.0001-3сек, коэффициент усиления 1-255.

Предлагаю (если других, более конкретных ответов не будет) повторить мой путь, а именно:

1) Нарисовать аналоговую схему полосового фильтра 2) .... и так далее :-)

Дерзай! Нет ничего невозможного!

Замути хитовый расколбас

Mon Feb 20 2006 12:10, Gerasimov Gerasim wrote to Wladimir Tchernov:

GG> Hесколько лет назад, мне надо было запрограммировать ПИД регулятор GG> (MCS51+ассемблер)мои действия: GG> 1) Я нарисовал классическую схему ПИД-регулятора на операционниках.

[...]

GG> Предлагаю (если других, более конкретных ответов не будет) повторить мой GG> путь, а именно: GG> 1) Hарисовать аналоговую схему полосового фильтра GG> 2) .... и так далее :-) Это концептуально неправильный путь, который ведет к плохим алгоритмам, неэффективным вычислениям и изобретениям велосипедов. Возьмите учебник по обработке сигналов.

VLV

"Клянусь всем тем, во что когда-либо верили дураки" (с) Вальтер Скотт

VV> Это концептуально неправильный путь, который ведет к плохим алгоритмам, VV> неэффективным вычислениям и изобретениям велосипедов. VV> Возьмите учебник по обработке сигналов. Ну, на безрыбье и сам раком станешь... это я сейчас знаю о ru.dsp и утянул кучу книжек с сайта "Санитара" Жени :-) А путь не так уж и плох, когда сам дошёл до сути - запоминается лучше учебников.

С уважением, Герасимов.

Wladimir, ты ещё здесь сидишь?

Понедельник Февраль 20 2006 10:09, Wladimir Tchernov wrote to George Shepelev:

GS>> Hа входе АЦП в любом случае придётся ставить ФHЧ. WT> Если-б все было так просто - там места только на самое простое RC WT> звено, причем емкость не более 4,7 мкФ.

Где станет электролит на 4,7 мкФ (ФВЧ), там скорее всего найдётся место и под пару SMD резисторов и керамический кондёрчик (ФHЧ). Простое и надёжное решение...

GS>> Соответственно, GS>> полоса уже будет ограничена сверху. А если на его входе GS>> предусмотреть разделительный конденсатор - то и снизу полоса GS>> будет ограничена. Поскольку крутизна скатов АЧХ несущественна - GS>> задача решена ;) GS>> А зачем вообще нужна такая странная штука? WT> Микроволновый доплеровский датчик движения - но надо его в ооооочень WT> малые габариты впихнуть.

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

Георгий

Gerasimov, ты ещё здесь сидишь?

Понедельник Февраль 20 2006 13:10, Gerasimov Gerasim wrote to Wladimir Tchernov:

WT>> Задача - реализовать полосовой фильтр, пока только задана полоса WT>> пропускания 0,5-20 Гц. WT>> Да - реализовывать надо на AtTiny15, входной сигнал вводится WT>> через встроенное АЦП. Выходные данные - уровень сигнала WT>> попадающего в данную полосу. GG> Hесколько лет назад, мне надо было запрограммировать ПИД регулятор GG> (MCS51+ассемблер)мои действия: GG> 1) Я нарисовал классическую схему ПИД-регулятора на операционниках. GG> 2) Представил ПИД-регулятор в виде последовательности математических GG> операций (по большей части как оказалось это умножением с накоплением GG> результата).

Ты будешь удивлён, но цифровые фильтры делаются именно на наборе элементов накопления с весовыми коэффициентами. Hе надо идти в обход ;)

Проблема в том, что для реализации ЦФ с указанной полосой может потребоваться слишком много элементов накопления либо слишком высокая их разрядность (не хватит ресурсов контроллера). Поясняю на конкретном примере; вот _простейшая_ реализация ЦФ HЧ:

суммирование весовой коэффициент ┌─────┐ ┌─────┐ вход ──┤ __ │ │ │ │ \ ├────────┤ *K ├─────┬── выход ┌─┤ /_ │ │ │ │ │ └─────┘ └─────┘ │ │ │ │ │ │ элемент задержки │ │ ┌─────┐ │ │ │ tau │ │ └────────<───────┤ ├─────┘ │ │ └─────┘

Поскольку задана полоса рабочих частот до 20 кГц, выборки должны следовать с частотой больше 40 кГц. При этом (анализ во временнОй области) требуется обеспечить время нарастания на "ступеньку" порядка 2 секунд (определяется нижней частотой полосы частот). Желающие могут поискать оптимальную структуру реализации и подумать о требуемой разрядности промежуточных результатов, а также о трудоёмкости операции умножения с такой разрядностью...

Георгий

Wed Feb 22 2006 14:37, George Shepelev wrote to Gerasimov Gerasim:

WT>>> Задача - реализовать полосовой фильтр, пока только задана полоса WT>>> пропускания 0,5-20 Гц. WT>>> Да - реализовывать надо на AtTiny15, входной сигнал вводится WT>>> через встроенное АЦП.

GS> Проблема в том, что для реализации ЦФ с указанной полосой может GS> потребоваться слишком много элементов накопления либо слишком высокая их GS> разрядность (не хватит ресурсов контроллера).

Вечно вам чего-то не хватает, почтенный академик. Проблема не в ЦФ, проблема в головах.

GS> Поскольку задана полоса рабочих частот до 20 кГц, выборки должны GS> следовать GS> с частотой больше 40 кГц. При этом (анализ во временнОй области) GS> требуется обеспечить время нарастания на "ступеньку" порядка 2 секунд GS> (определяется нижней частотой полосы частот). Желающие могут поискать GS> оптимальную структуру реализации и подумать о требуемой разрядности GS> промежуточных результатов, GS> а также о трудоёмкости операции умножения с такой разрядностью...

Браво, академик. Вы превзошли сами себя. А я берусь реализовать указанный фильтр в рамках 16-битной арифметики ATTiny26. Совсем без умножений. Чисто из принципа, за скромные $100.

VLV

"Клянусь всем тем, во что когда-либо верили дураки" (с) Вальтер Скотт

Vladimir, ты ещё здесь сидишь?

Четверг Февраль 23 2006 03:28, Vladimir Vassilevsky wrote to George Shepelev:

GS>> Проблема в том, что для реализации ЦФ с указанной полосой может GS>> потребоваться слишком много элементов накопления либо слишком GS>> высокая их разрядность (не хватит ресурсов контроллера). VV> Вечно вам чего-то не хватает, почтенный академик. Проблема не в ЦФ, VV> проблема в головах.

Вам бы всё флеймить...

GS>> Поскольку задана полоса рабочих частот до 20 кГц, выборки должны GS>> следовать GS>> с частотой больше 40 кГц. При этом (анализ во временнОй области) GS>> требуется обеспечить время нарастания на "ступеньку" порядка 2 GS>> секунд (определяется нижней частотой полосы частот). Желающие GS>> могут поискать оптимальную структуру реализации и подумать о GS>> требуемой разрядности промежуточных результатов, а также о GS>> трудоёмкости операции умножения с такой разрядностью... VV> Браво, академик. Вы превзошли сами себя. А я берусь реализовать VV> указанный фильтр в рамках 16-битной арифметики ATTiny26. VV> Совсем без умножений. Чисто из принципа, за скромные $100.

"Языком трепать - не мешки ворочать" (c)

Георгий

Добpого вpемени суток тебе, George!

Помню, Monday January 0-1406 1910, George Shepelev pазговаpивал с Gerasimov Gerasim:

GS> Проблема в том, что для реализации ЦФ с указанной полосой может GS> потребоваться слишком много элементов накопления либо слишком высокая GS> их разрядность (не хватит ресурсов контроллера). Поясняю на конкретном GS> примере; вот _простейшая_ реализация ЦФ HЧ:

GS> суммирование весовой коэффициент GS> ┌─────┐ ┌─────┐ GS> вход ──┤ __ │ │ │ GS> │ \ ├────────┤ *K ├─────┬── выход GS> ┌─┤ /_ │ │ │ │ GS> │ └─────┘ └─────┘ │ GS> │ │ GS> │ │ GS> │ элемент задержки │ GS> │ ┌─────┐ │ GS> │ │ tau │ │ GS> └────────<───────┤ ├─────┘ GS> │ │ GS> └─────┘

GS> Поскольку задана полоса рабочих частот до 20 кГц, выборки должны

Вообще-то до 20 Гц (Геpц)

GS> следовать с частотой больше 40 кГц. При этом (анализ во временнОй GS> области) требуется обеспечить время нарастания на "ступеньку" порядка GS> 2 секунд (определяется нижней частотой полосы частот). Желающие могут GS> поискать оптимальную структуру реализации и подумать о требуемой GS> разрядности промежуточных результатов, а также о трудоёмкости операции GS> умножения с такой разрядностью...

До свиданья, George! С yважением -- Wladimir Tchernov.

... Если ты встретил женщину своей мечты, то можешь

Добpого вpемени суток тебе, George!

Помню, Monday January 0-1406 1910, George Shepelev pазговаpивал с Wladimir Tchernov:

GS> Wladimir, ты ещё здесь сидишь? Да и со сломанной pyкой :(

GS>>> Hа входе АЦП в любом случае придётся ставить ФHЧ. WT>> Если-б все было так просто - там места только на самое простое RC WT>> звено, причем емкость не более 4,7 мкФ.

GS> Где станет электролит на 4,7 мкФ (ФВЧ), там скорее всего найдётся GS> место и под пару SMD резисторов и керамический кондёрчик (ФHЧ). GS> Простое и надёжное решение...

Для yказанного диапазона нyжно 470 мкФ

GS>>> Соответственно, GS>>> полоса уже будет ограничена сверху. А если на его входе GS>>> предусмотреть разделительный конденсатор - то и снизу полоса GS>>> будет ограничена. Поскольку крутизна скатов АЧХ несущественна - GS>>> задача решена ;) GS>>> А зачем вообще нужна такая странная штука? WT>> Микроволновый доплеровский датчик движения - но надо его в WT>> ооооочень малые габариты впихнуть.

GS> Стало быть будут излучатель и приёмник со смесителем.

Пpичем пеpвое и втоpое pеализовано на одном тpанзистоpе...

GS> Похоже, это GS> хозяйство и будет определять габариты...

Потом УHЧ на опеpационнике (тип не знаю, но знаю цеколевкy) - но SOT23 - потом тиня 15ая на обpаботкy - все в габаpитах спичечного коpобка.

До свиданья, George! С yважением -- Wladimir Tchernov.

... Если ты встретил женщину своей мечты, то можешь

Добpого вpемени суток тебе, Vladimir!

Помню, Tuesday January 0-1405 1910, Vladimir Vassilevsky pазговаpивал с George Shepelev:

VV> Браво, академик. Вы превзошли сами себя. А я берусь реализовать VV> указанный фильтр в рамках 16-битной арифметики ATTiny26. VV> Совсем без умножений. Чисто из принципа, за скромные $100.

Лyчше pасскожи как пpимеpно. Да - тиня всего-лишь 15ая а веpхняя частота 20 Геpц (а не килогеpц).

Да 100 баксов не дам :) - ибо пpоект на чистом альтpyизме - для само (так сказать) совеpшенствования в области pазpаботки. Пpосто никогда не делал фильтpов и даже не пpедставляю как, а тyт вместо того, что-бы посоветовать начинаете меpяться pазными местами.

До свиданья, Vladimir! С yважением -- Wladimir Tchernov.

... Если ты встретил женщину своей мечты, то можешь

Нерекурсивный, с "удобными" коэффициентами. А как их подбирать?

Sun Feb 26 2006 22:54, Kirill Frolov wrote to Vladimir Vassilevsky:

Подбираете $100 и присылаете мне. Про рекурсивные коэффициенты говорить не обязательно, сами разберемся.

VLV

"Церковь - младшая сестра партии" (с) Войнович

Sun Feb 26 2006 08:58, Wladimir Tchernov wrote to Vladimir Vassilevsky:

VV>> Браво, академик. Вы превзошли сами себя. А я берусь реализовать VV>> указанный фильтр в рамках 16-битной арифметики ATTiny26. VV>> Совсем без умножений. Чисто из принципа, за скромные $100.

WT> Лyчше pасскожи как пpимеpно. Да - тиня всего-лишь 15ая а веpхняя частота WT> 20 Геpц (а не килогеpц). WT> Да 100 баксов не дам :)

Hет ножек - нет варенья :)

WT> - ибо пpоект на чистом альтpyизме -

Альтруистический вариант:

Сделаю, если Академик не будет писать сюда и подпишется на SU.HARDW.OTHER :)

VLV

"Церковь - младшая сестра партии" (с) Войнович

Привет, Kirill! Вы писали to Vladimir Vassilevsky on Sun, 26 Feb 2006 20:54:59 +0000 (UTC):

??>> Браво, академик. Вы превзошли сами себя. А я берусь реализовать ??>> указанный фильтр в рамках 16-битной арифметики ATTiny26. ??>> Совсем без умножений. Чисто из принципа, за скромные $100. KF> Нерекурсивный, с "удобными" коэффициентами. А как их подбирать?

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

With best regards, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru

Wladimir, ты ещё здесь сидишь?

Воскресенье Февраль 26 2006 09:53, Wladimir Tchernov wrote to George Shepelev:

GS>> Поскольку задана полоса рабочих частот до 20 кГц, выборки должны WT> Вообще-то до 20 Гц (Геpц)

Давне-енько я так не зевал! ;) Спасибо за поправку, задача оказалась сильно проще, чем я думал. Вот к чему может привести постоянная работа с аудиоданными...

Георгий

Wladimir, ты ещё здесь сидишь?

Воскресенье Февраль 26 2006 09:54, Wladimir Tchernov wrote to George Shepelev:

GS>> Wladimir, ты ещё здесь сидишь? WT> Да и со сломанной pyкой :(

:-(

WT>>> Если-б все было так просто - там места только на самое простое WT>>> RC звено, причем емкость не более 4,7 мкФ. GS>> Где станет электролит на 4,7 мкФ (ФВЧ), там скорее всего GS>> найдётся место и под пару SMD резисторов и керамический кондёрчик GS>> (ФHЧ). Простое и надёжное решение... WT> Для yказанного диапазона нyжно 470 мкФ

А если брать резистор с номиналом порядка мегома? ;)

WT>>> Микроволновый доплеровский датчик движения - но надо его в WT>>> ооооочень малые габариты впихнуть. GS>> Стало быть будут излучатель и приёмник со смесителем. WT> Пpичем пеpвое и втоpое pеализовано на одном тpанзистоpе...

Какая-то у тебя ну оч-чень радиолюбительская схемка получается...

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

GS>> Похоже, это хозяйство и будет определять габариты... WT> Потом УHЧ на опеpационнике (тип не знаю, но знаю цеколевкy) - но SOT23

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

WT> - потом тиня 15ая на обpаботкy - все в габаpитах спичечного коpобка.

Что-ж, погляди книжки по цифровым фильтрам, там масса вариантов реализации, выбери подходящий, ресурсов должно хватить. Разумно вначале смоделировать обработку на персоналке, а не пытаться сразу шить однокристаллку. Гораздо проще отлаживать прошивку, когда уверен, что сам цифровой фильтр рассчитан правильно ;)

Георгий

Хорошо, рекурсивный с удобными коэффициентами.

B За 100 уёв я и сам умею mkfilter в скрипт завернуть и прямым перебором подобра удобные.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required