Страниц: 1 [2]
  Печать  
Автор Тема: Цифровая обработка сигналов  (Прочитано 17891 раз)
alex60
Гость
« Ответ #15 : Августа 10, 2002, 07:46:00 am »

чтобы значения измеряемого напряжения не "скакали" хорошо работает такой фильтр:
x - текущий отсчёт
y - результат

d=x-y; if(d>MAX) d=MAX; else if(d<MIN) d=MIN;
y+=d/K;

MAX, MIN определяют скорасть нарастания/спада
K - инерционность

Можно ещё добавить такое же ограничение снизу для подавления шумов.
Записан
ed1k
QOR.Moderator
*****
Offline Offline

Сообщений: 739


Просмотр профиля WWW
« Ответ #16 : Августа 12, 2002, 03:56:00 pm »


Olej пишет:
И кстати - сильное заблуждение, что фильтрация может быть "примитивная", "плохая" и т.д. - при таком подходе можно видеть вещи необъективно и принимать неправильные решения. Фильтрация может быть только адекватной или неадекватной той смеси (сигнал + щум) которые вы собираетесь резделять.
.....

Я, собственно не о том писал. Следует разделять вопросы цифровой фильтрации сигнала (обработки сигнала) и способа получения выборок сигнала. Это, конечно, персональное мнение, основанное, наверное, на том, что в ХИРЭ был у нас курс ЦОС и совсем отдельный курс РИ. Так вот, мне кажется, вопрос больше относится к теории радиоизмерений, а не ЦОС. То есть, обсуждаеться вопрос преобразования измеряемого электрического сигнала (напряжения) в регистрируемую величину (16? разрядный цифровой код). Здесь должны учитываться как параметры самого измеряемого сигнала, так и параметры преобразователя - АЦП. В идеале - здесь нет никаких проблем, на практике могут быть проблемы с помехами и согласованием в измерительном канале, многое, кстати, зависит от типа АЦП... И еще момент, я упустил где-то или не было указано - преобразование реально 16 битное? Посчитайте динамический диапазон вашего сигнала и подумайте, сколько актуально разрядов занимает сигнал - все остальное для шума . По моему опыту, реализовать измерительный канал для 14 битного преобразования крайне сложно (аналоговую часть до АЦП)... "Cкачками" здесь называют шумы младшего (младших) разряда АЦП? Это не скачки, а природа наших измерителей. В общем, все что здесь советовалось (интегрирование и интегрирование с ограничением)  - это реальные вещи, которые дают возможность расслабиться электронщикам и программно решить довольно сложный вопрос устранения (сглаживания, фильтрации) помех измерительного канала. Может я и не прав, но до сих пор не вижу ни характеристик сигнала ни требований к фильтру
Записан
olej
QOR.Team
****
Offline Offline

Сообщений: 42



Просмотр профиля
« Ответ #17 : Августа 12, 2002, 04:09:00 pm »


ed1k пишет:
Может я и не прав, но до сих пор не вижу ни характеристик сигнала ни требований к фильтру

Прав, прав...
И ко всем в этом обсуждении: выше затронут крайне важный вопрос - давайте договоримся: после того, как сигнал "запороли" в электрическом тракте (и в аналоговом, и в цифровом...) - его обрабатывать уже незачем, ничего из него путнего достать уже нельзя. Поэтому - обсуждение программных методов обработки и измерения имеет смысл только при условии, что весь электрический тракт вылизан на предмет искажения сигнала.
Записан
ed1k
QOR.Moderator
*****
Offline Offline

Сообщений: 739


Просмотр профиля WWW
« Ответ #18 : Августа 12, 2002, 04:41:00 pm »

Тут еще мне подумалось... Видел, кажется, я ту плату, но издали... так доку и не полистал. А это весчь интересная... Дело в том, что есть у меня кой-никакой опыт разработки таких ИСАвских плат. Так вот, всегда на карточку мы ставили микроконтроллер со встроенным АЦП Всю интеграцию и децимацию (понижение частоты отсчетов) делал MCU. Программист, получающий отсчеты сигнала по прерыванию или в ПДП (от скорости потока, однако, зависит) - уже считал (должен был считать), что отсчеты достоверны, т.е. если отсчеты "скачут" - то это скачки входного напряжения однозначно. И никак не помехи измерительного канала. Правда, не помню, чтобы мы все 16 бит использовали, даже на 16 зарядной шине Что дока на карточку то говорит? Могу, конечно, себе представить что-то "жесткое" и тупое на карточке, но сегодня, кажется, собрать такую карточку дороже, чем DSP от Advanced Devices или Texas Instruments втулить с парой регистров/шинников
Записан
vlad
Участник
*
Offline Offline

Сообщений: 0


Просмотр профиля
« Ответ #19 : Августа 14, 2002, 04:32:00 pm »

Извините за вопрос несколько не по теме.

Уважаемый Olej! В теме  "Программирование" http://qnx.org.ru/forum/viewtopic.php?topic=537&forum=4&2 Вы обещали дать несколько ссылок по DSP. (Может они уже где-то на форуме есть, но я не нашел).
Очень сильно интересует теория авторегрессионных фильтров. (и не только это, хочется расширить свои знания в DSP )
Не подкинете информации?!
Заранее благодарен!
Записан
olej
QOR.Team
****
Offline Offline

Сообщений: 42



Просмотр профиля
« Ответ #20 : Августа 14, 2002, 05:17:00 pm »


vlad пишет:
Уважаемый Olej! В теме  "Программирование" http://qnx.org.ru/forum/viewtopic.php?topic=537&forum=4&2 Вы обещали дать несколько ссылок по DSP. (Может они уже где-то на форуме есть, но я не нашел).

Этот проект нужно как можно быстрее возрождать. Прямо сейчас обращусь к dmi - как это быстрее сделать: он там делал почтовую рассылку, по ней проще работать... Я несколько раз рассылал исходники желающим ... а потом это как-то отошло. А тексты там "сырые" - из Win32 пришедшие. Самое главное там - переделать хронометраж (а со временем в QNX - туго) и класс текстовых строк с выводом в pterm русского текста (там на этих String всё сделано - проще класс переделать, чем программы переписывать - так это, на сегодня, просто "просится" следать на TurboVision, который для QNX делает lestat...). Вот доделать, оттестировать - и можно пользоваться.

Очень сильно интересует теория авторегрессионных фильтров. (и не только это, хочется расширить свои знания в DSP )
Не подкинете информации?!

Основополагающий источник (по реализации) здесь Дж.Марпл-мл. "Цифровой спектральный анализ и его применения" (название - по памяти, похоже переврал). Могу дать точную ссылку.

P.S.Все дальнейшие разговоры по subj давайте вести в теме DSP - а там ("Программирование ...")не будем засорять. Что нужно - могу выслать мэйлом.
P.P.S.Я тут немножко подправил.

[ Это Сообщение было отредактировано: Olej в 2002-08-14 15:50 ]
Записан
CaptHowdy
Участник
*
Offline Offline

Сообщений: 0


Просмотр профиля WWW
« Ответ #21 : Августа 15, 2002, 03:57:00 pm »

Просмотрел я исходники Olej, вывел я себе фильтр!
Значит вся фильтрация (далее будет описан фильтр для 16-битного АЦП) состоит из двух этапов:
1. Фильтр работает по формуле:
Y=A0*X+A1*X1+A2*X2-B1*Y1-B2*Y2, где
X - текущее значение измеряемой величины (ИВ);
X1 - предыдущее значение ИВ;
X2 - предпредыдущее значение ИВ;
Y - текущее значени функции (Ф);
Y1 - предыдущее значение Ф;
Y2 - предпредыдущее значение Ф;

Коэффициенты

A0 = 0.059191;
A1 = 0.59191;
A2 = 0;
B1 = -0.88161;
B2 = 0;

Фильтр первого порядка (НЧ). Восстановление стабильных значенией - 1-1,5 секунд.

2. Далее полученные значения Y я фильтрую методом суммирования:

Y(конечное) = Y1+Y2+Y3....+YN;

Y1 - это предыдущее значение Y(конечное)
Y2 - предпредыдущее...
и т.д.

В чем прелесть: чем выше частота измерения показаний - тем быстрей он восстановит стабильное значение Y(конечное). Чем выше будет значение N в п.2 - тем точнее будет значение Y(конечное). Лично у меня N=128.

Пользуйтесь!

[addsig]
Записан
Страниц: 1 [2]
  Печать  
 
Перейти в: