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

 
 
> Обработать результаты измерения
SergSit
сообщение Apr 15 2009, 08:13
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031



Честно говоря незнаю в какой раздел форума писать. Если не по адресу поправте. Задача стоит следующая: обработать результаты измерения(которые снимаются с частотой 100Гц) на предмет удаления из измерений влияние медленно меняющихся процесов (изменения температура и влажность среды скажем за время большее 3 сек). Размерность результатов измерения 8 или 16бит. Только просьба не отправляйте к чтению литературы по DSP. Меня интересует не теория , а практика построения такого медленного фильтра. Из того , что успел почитать понял, что мне вроде нужен БИХ фильтр ФНЧ 1-го порядка. Как это практичеки реализовать в программе не нашел. То, что попадалось касается построения более быстрых фильтров. Может кто поделиться ссылками, где обьяснено как это сделать. Заранее сильно не пинайте, делаю это первый раз и могу не понимать суть проблемы. Реализовать надо на AVR.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
Палыч
сообщение Apr 15 2009, 08:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Насколько я понял задачу - Вам нужен не ФНЧ, а ФВЧ. И почему 1-го порядка? Какие частоты нужно отсечь? Вот программка синтеза фильтров. Поиграйтесь - выбирите себе нужный. По структуре фильтра поймёте как его программно реализовать (т.е. как получить Y[i ] от X[i])...
Go to the top of the page
 
+Quote Post
xemul
сообщение Apr 15 2009, 08:54
Сообщение #3



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Занятный подход. Нужно удалить зависимость от температуры и влажности, но вместо этого опять хочется пофильтровать...
Не находите, что методически верным было бы определить зависимости измеряемой величины от влияющих факторов, а в процессе - измерять эти факторы, корректировать соответственно результат измерения измеряемой величины, а уже потом, при желании, фильтровать.
Т.е. набираете сначала достаточное для обработки количество экспериментальных данных (измеряемая величина (измеренная более другим средством измерения более высокого класса точности) + результат измерения Вашим измереметром + измерения влияющих факторов) в интересующих диапазонах изменения измеряемой и влияющих величин, строите модель, связывающую результаты Вашего измереметра с измеряемой величиной с учетом влияющих факторов, воплощаете эту модель в AVR.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 15 2009, 09:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(xemul @ Apr 15 2009, 11:54) *
Занятный подход.
Всё зависит от того, что получаем при обработке данных... Например, при обработке ЭКГ для получения частоты сердечных сокращений (к примеру) не важно как изменяется (вследствие движения человека) средняя линия сигнала. Измерить напряжения мышц человека - затруднительно, да и не нужно - легче отфильтровать...
Go to the top of the page
 
+Quote Post
SergSit
сообщение Apr 15 2009, 10:13
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031



Палыч
Почему 1-го порядка? На сколько понимаю порядок определяется числом предыдущих измерений. Для 1-го порядка мне необходимо хранить предыдущие выходное и входное значение (На сколько понимаю). Поэтому боюсь мне не хватит памяти на хранение значений более чем для 1-го порядка, т.к тип МКуже определен до меня. Спасибо за программку. К сожалению она не помогла, т.к синтезирует фильтры со 2 и выше порядка.

xemul
Цитата(xemul @ Apr 15 2009, 11:54) *
Т.е. набираете сначала достаточное для обработки количество экспериментальных данных (измеряемая величина (измеренная более другим средством измерения более высокого класса точности) + результат измерения Вашим измереметром + измерения влияющих факторов) в интересующих диапазонах изменения измеряемой и влияющих величин, строите модель, связывающую результаты Вашего измереметра с измеряемой величиной с учетом влияющих факторов, воплощаете эту модель в AVR.

Это все понимаю. У меня стоит задача другая: усреднить и отфильтровать.

Хотелось где нибудь именно о цифровой фильтрации медленно меняющихся процессах и использование их на практике.(именно на практика)
Go to the top of the page
 
+Quote Post
stells
сообщение Apr 15 2009, 10:15
Сообщение #6


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



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

Сообщение отредактировал stells - Apr 15 2009, 10:18
Go to the top of the page
 
+Quote Post
xemul
сообщение Apr 15 2009, 10:41
Сообщение #7



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Палыч @ Apr 15 2009, 13:20) *
Всё зависит от того, что получаем при обработке данных... Например, при обработке ЭКГ для получения частоты сердечных сокращений (к примеру) не важно как изменяется (вследствие движения человека) средняя линия сигнала. Измерить напряжения мышц человека - затруднительно, да и не нужно - легче отфильтровать...

Я не специалист по обработке ЭКГ, но Вы описАли простейший случай, когда возможно разделить спектры измеряемой величины и влияющих факторов. И, насколько мне известно, обработка ЭКГ производится не по абсолютной амплитуде сигналов и в этом отношении носит скорее качественный, чем количественный характер.
Например, если нас интересует только изменение температуры, измеряемой термопарой, то мы можем просто стабилизировать температуру ее холодных концов. Если же нас интересует абсолютное значение температуры, то температуру этих концов придется измерять.
Автор пока умалчивает о интересующем диапазоне частот измеряемой величины, предоставляя нам возможность всласть потелепатировать.smile.gif

Цитата(SergSit @ Apr 15 2009, 14:13) *
Почему 1-го порядка? На сколько понимаю порядок определяется числом предыдущих измерений. Для 1-го порядка мне необходимо хранить предыдущие выходное и входное значение (На сколько понимаю). Поэтому боюсь мне не хватит памяти на хранение значений более чем для 1-го порядка, т.к тип МКуже определен до меня. Спасибо за программку. К сожалению она не помогла, т.к синтезирует фильтры со 2 и выше порядка.

Т.е. организовать два (кольцевых) буфера на 3-5-... значений Вы уже не сможете из-за хардварных ограничений?
Цитата
Это все понимаю. У меня стоит задача другая: усреднить и отфильтровать.

Хотелось где нибудь именно о цифровой фильтрации медленно меняющихся процессах и использование их на практике.(именно на практика)

Т.е. Вы уверены, что фильтрации будет достаточно?
Порядок фильтра (и количество потребных для фильтрации отсчетов) будет определяться требуемым подавлением в полосе задержания, которое можно рассчитать, зная коэффициенты, связывающие результат измерения и влияющие факторы, и требуемую точность измерения.
Без теории будет тяжко.
А быстро или медленно... В этом мире, благодаря т. Эйнштейну, все относительно.
Go to the top of the page
 
+Quote Post
SergSit
сообщение Apr 15 2009, 10:49
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031



Цитата(xemul @ Apr 15 2009, 13:30) *
Автор пока умалчивает о интересующем диапазоне частот измеряемой величины, предоставляя нам возможность всласть потелепатировать.smile.gif

Ничего не умалчиваю. В начале указано, что период измерения сигнала составляет 100Гц. А отфильтровать нужно изменениние сигнала которое происходит за время более 3сек. Поясню: например за 3сек произошло изменение внешней температуры. Это изменение повлекло изменение измеренных данных. Вот эти изменения и надо отфильтровать.Т.е. (насколько понимаю) частота среза будет 0,3гц. Может ошибаюсь или что-то не понимаю.
Незнаю что такое "хардварных ограничений"(. Нехватит потому,что измеренния ведутся по 90 каналам. Нехвати ОЗУ.
Go to the top of the page
 
+Quote Post
xemul
сообщение Apr 15 2009, 11:03
Сообщение #9



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(SergSit @ Apr 15 2009, 14:49) *
Ничего не умалчиваю. В начале указано, что период измерения сигнала составляет 100Гц. А отфильтровать нужно изменениние сигнала которое происходит за время более 3сек. Поясню: например за 3сек произошло изменение внешней температуры. Это изменение повлекло изменение измеренных данных. Вот эти изменения и надо отфильтровать.Т.е. (насколько понимаю) частота среза будет 0,3гц. Может ошибаюсь или что-то не понимаю.

Частота дискретизации ограничивает полосу только сверху, и то совершенно неоднозначно (может Вы используете оверсэмплинг).
А для построения ФВЧ нужно знать как раз ограничение по полосе снизу, о чем Вы ни разу не обмолвились.
Вас интересует полоса сигнала от 0.3 Гц и выше? Тогда, боюсь, придется идти по пути, описанному мной исходно, т.к. спектры сигнала и влияющих факторов перекрываются.
Если же достаточно, н-р, от 10 Гц и выше, то можно переходить к определению требуемого порядка фильтра.
Пояснения про температуру поясняют только, что теория - рулеззз, и неплохо бы ознакомиться хотя бы с базовыми понятиями. Дальше будет проще.

А "хардварные ограничения" - это когда возможности решения задачи ограничиваются выбранным железом (н-р, контроллер не в состоянии переварить поток данных, который в него пытаются запихнуть).
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 15 2009, 11:50
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(xemul @ Apr 15 2009, 13:41) *
...Вы описАли простейший случай, когда возможно разделить спектры измеряемой величины и влияющих факторов.
Я специально привёл пример, когда при обработке данных фильтрация вполне уместна. Боюсь, что автор вопроса, действительно, "тулит" её не к месту...

Цитата(SergSit @ Apr 15 2009, 13:49) *
... например за 3сек произошло изменение внешней температуры. Это изменение повлекло изменение измеренных данных. Вот эти изменения и надо отфильтровать.Т.е. (насколько понимаю) частота среза будет 0,3гц.
Имхо, в теории измерений у Вас - большой пробел. Фильтрацией тут делу не поможешь. Выход, наверное, один - завести ещё несколько каналов измерения влияющих факторов и учитывать при обработке данных их значения, как это предлагает xemul.
Go to the top of the page
 
+Quote Post
SergSit
сообщение Apr 15 2009, 11:54
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031



Цитата(xemul @ Apr 15 2009, 13:41) *
Автор пока умалчивает о интересующем диапазоне частот измеряемой величины, предоставляя нам возможность всласть потелепатировать.smile.gif

Виноват).Сразу не понял о чем речь. В моем случае о диапазоне частот измеряемой величины говорить тяжело, т.к. измеряемая величина от отсчета к отсчету остается постоянной (за исключением шумов скажем в пределах 1%). Если величина изменилась скажем на 10%, регистрируются факт изменения запись значения 1 в какой-то бит. В этом потоке измерений надо убрать влияние медленно меняющихся факторов, о чем говорил ранее. Та величина при которой произошло определения факта отбрасывается. Просто думал, что эта типовая задача и есть типовые решения.
Go to the top of the page
 
+Quote Post
xemul
сообщение Apr 15 2009, 12:08
Сообщение #12



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(SergSit @ Apr 15 2009, 15:54) *
Виноват).Сразу не понял о чем речь. В моем случае о диапазоне частот измеряемой величины говорить тяжело, т.к. измеряемая величина от отсчета к отсчету остается постоянной (за исключением шумов скажем в пределах 1%). Если величина изменилась скажем на 10%, регистрируются факт изменения запись значения 1 в какой-то бит. В этом потоке измерений надо убрать влияние медленно меняющихся факторов, о чем говорил ранее. Та величина при которой произошло определения факта отбрасывается. Просто думал, что эта типовая задача и есть типовые решения.

Уф-ф-ф... В огороде бузина... (это я про описание задачи)
За какое время T величина должна измениться на 10%, чтобы был зарегистрирован факт изменения? Теперь найдите значение 1/T, и среднепотолочно можно будет считать это за требуемую полосу снизу.
Если время не важно, то придется считать, что полоса начинается от 0 Гц, и всё остальное я уже описАл в своём первом посте.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 15 2009, 12:17
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(SergSit @ Apr 15 2009, 14:54) *
В моем случае о диапазоне частот измеряемой величины говорить тяжело, т.к. измеряемая величина от отсчета к отсчету остается постоянной (за исключением шумов скажем в пределах 1%).
Как же Вы собираетесь фильтровать, если не известен диапазон частот полезного сигнала?
Цитата(xemul @ Apr 15 2009, 15:08) *
За какое время T величина должна измениться на 10%, чтобы был зарегистрирован факт изменения? Теперь найдите значение 1/T, и среднепотолочно можно будет считать это за требуемую полосу снизу.
Это - даже не среднепотолочно, а - "не знаю что". Имхо, так и порядок величины нижней частоты сигнала не корректно определять.
Go to the top of the page
 
+Quote Post
SergSit
сообщение Apr 15 2009, 12:20
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031



Согласен может я не понимаю сути проблемы, нехватает знаний. Рассуждаю так. Мне надо убрать из измеренного потока, медленную ошибку. Т.е. мне нужно построить ФВЧ с частотой среза соответствующей постоянной времени 3сек. В чем не прав поправте. Быстрые изменения фильтр буде пропускать, медленные( с какой-то точностью) не пропускать.
Go to the top of the page
 
+Quote Post
RodionGork
сообщение Apr 15 2009, 12:29
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 30-10-07
Из: Санкт-Петербург
Пользователь №: 31 866



Цитата(SergSit @ Apr 15 2009, 16:20) *
Согласен может я не понимаю сути проблемы, нехватает знаний. Рассуждаю так. Мне надо убрать из измеренного потока, медленную ошибку. Т.е. мне нужно построить ФВЧ с частотой среза соответствующей постоянной времени 3сек. В чем не прав поправте. Быстрые изменения фильтр буде пропускать, медленные( с какой-то точностью) не пропускать.


Да в общем ход рассуждений правильный. ;-) Буквально конденсатор (керамический бы ;-) 22 мкф на сигнальной линии и после него резистор 150кОм на землю, если уж их продолжать... При некоторых условиях это же можно и цифровым образом уже внутри решить... Ну например вычитая среднее за последние 3 секунды значение... ;-)))

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

Ну может я тоже все не так понимаю, но мерещится мне именно так. ;-)

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

Сообщение отредактировал RodionGork - Apr 15 2009, 12:33
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 16:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01487 секунд с 7
ELECTRONIX ©2004-2016