|
|
  |
Демодуляция АМ сигнала |
|
|
|
Sep 2 2011, 09:09
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(sup-sup @ Sep 2 2011, 09:57)  Все-таки, в общем случае, если нужно просто отловить энергию сигнала в полосе 600-3000 Гц, то схема с детектором огибающей способом свертки сигнала с двумя полосовыми FIR, с синусным и косинусным заполнением, решает задачу сразу. Никаких других фильтров не нужно. Нужно просчитывать две свертки один раз в 20 мс. Если 8 каналов, то одно вычисление в 1.25 мс. Еще вариант, умножить сигнал на частоту 2.5 кГц (умножать на 0, +1, 0, -1, 0, +1, и т.д.), отфильтровав перед этим верхние частоты. Перейти на частоту 5 кГц и сделать ФНЧ на ~2 кГц, чтобы отсечь бывшие 600 Гц низких частот. После этой промежуточной фильтрации - децимации - фильтрации будет меньше нагрузка на 8 каналов обработки. Я честно говоря, не очень силен в этом. Как делать IIR/FIR я знаю, а вот свертку - понятия не имею  Хоть бы пример какой...
|
|
|
|
|
Sep 2 2011, 09:54
|
Знающий
   
Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997

|
Цитата(Allregia @ Sep 2 2011, 12:09)  Я честно говоря, не очень силен в этом. Как делать IIR/FIR я знаю, а вот свертку - понятия не имею  Хоть бы пример какой... Свертка, все-таки, это базовая операция FIR. Каждое выходное значение FIR вычисляется операцией свертки выборок АЦП с импульсной характеристикой фильтра (ядром). На пальцах, или как это выполняется на рассыпухе или на ПЛИС - в один регистр загоняем импульсную характеристику FIR на все время работы, а в другой (рядом) проталкиваем данные из АЦП (или уже обработанную последовательность данных. Как только данные встали рядом перемножаем соседние значения данных и ИХ фильтра и все произведения складываем. Это и есть свертка. Следующим шагом сдвигаем данные на один шаг (сэмпл) (или на несколько шагов, если применяем децимацию) и опять делаем свертку (перемножение со сложением - или MAC - операцию). А так как мы вычисляем модуль огибающей, а его можно вычислить из комплексного сигнала, то нам нужны два значения (I и Q). По другому, мы принимаем сигнал с неизвестной фазой. То есть, фильтр нужен для комплексного сигнала (или с комплексной ИХ).
Сообщение отредактировал sup-sup - Sep 2 2011, 10:03
|
|
|
|
|
Sep 2 2011, 10:05
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата Все-таки, в общем случае, если нужно просто отловить энергию сигнала в полосе 600-3000 Гц Бесполезная в данной задаче вещь. В идеале было бы аппаратно-программное решение. Пиковый детектор со сбросом и его опрос/оцифровка на 50 Гц или меньше. А для вычета постоянки НЧ фильтр на минимальную частоту. Собственно, если 10 кгц оцифровка даёт хорошее качество, а это итак 1000 кратный оверсэмплинг, то и что ещё надо. Несучка непредсказуема и шумоподобна. Поэтому все методы, что здесь перечислены не будут работать. Они все не из той оперы. Я только не понял, 8 каналов это с 8-ми разных линий или с одной, но на разных несучках?
Сообщение отредактировал GetSmart - Sep 2 2011, 09:56
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Sep 2 2011, 10:20
|
Частый гость
 
Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531

|
Цитата(GetSmart @ Sep 2 2011, 14:05)  Несучка непредсказуема и шумоподобна. Как я понял если модуляции нет, то это идеальная синусоида с хаотически меняющейся частотой, но имеющая не менее 800 и не более 2500 полных периодов в секунду и все максимумы строго одинаковые. А если модуляция есть, то отличаются на +- 3%. Это так? Или что-нибудь еще похуже?
--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
|
|
|
|
|
Sep 2 2011, 10:45
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(SPACUM @ Sep 2 2011, 15:20)  Как я понял если модуляции нет, то это идеальная синусоида с хаотически меняющейся частотой, но имеющая не менее 800 и не более 2500 полных периодов в секунду и все максимумы строго одинаковые. А если модуляция есть, то отличаются на +- 3%. Это так? Или что-нибудь еще похуже? Как буд-то я ТС  Я сам слабо представляю шумоподобный сигнал с постоянной амплитудой. Хотя представил. Но не факт, что то, что у ТС. Пусть ТС покажет картинку с сигналом например 500 сэмплов.
Сообщение отредактировал GetSmart - Sep 2 2011, 10:54
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Sep 2 2011, 11:11
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(GetSmart @ Sep 2 2011, 12:05)  Я только не понял, 8 каналов это с 8-ми разных линий или с одной, но на разных несучках? 8 разных линий и разных сигналов. Описанный выше сигнал идет по 6-ти из них, еще по 2-м - там тоже нужна фильтрация но сигнал другой, с ними проблем нет. Цитата Как я понял если модуляции нет, то это идеальная синусоида с хаотически меняющейся частотой, но имеющая не менее 800 и не более 2500 полных периодов в секунду и все максимумы строго одинаковые. А если модуляция есть, то отличаются на +- 3%. Это так? Да, примерно так. Цитата Пусть ТС покажет картинку с сигналом например 500 семплов. Ммм, я не на работе сейчас, в КПК есть только старый искуственный сигнал, там модуляция выше. Сейчас попробую из него картинку сделать.
Эскизы прикрепленных изображений
|
|
|
|
|
Sep 2 2011, 11:16
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Allregia @ Sep 2 2011, 16:11)  Сейчас попробую из него картинку сделать. Сверху и снизу одно и то же, только масштаб разный? Upd. На синусоиду мало похоже. Шумоподобный это да.
Сообщение отредактировал GetSmart - Sep 2 2011, 11:19
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Sep 2 2011, 11:43
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(GetSmart @ Sep 2 2011, 13:21)  А откуда такая несущая и как происходит модуляция? С датчика хмических процессов. Извините, но что там в датчике и как происходит - и от меня скрыто. Цитата И вдогонку. Качество демодуляции, описанное в первом посте, устраивает? К сожалению, средняя амплитуда несущей может меняться от процесса к процессу, и нет обратной связи с датчиком, в плане его коэффициента усиления перед АЦП, его можно только на самом датчике менять переключателем. Поэтому выставляем такой Ку, чтобы гарантированно не было перегрузки АЦП (он в самом датчике). На сильном сигнале, когда несущая занимает хотя-бы треть шкалы - все в приницпе устраивает, но когда сигнал слабый (1/8 шкалы) - хотелось бы С/Ш немного повысить. Собственно, почему я хотел как-нибудь отсечь постоянку после взятия модуля (детектора  ) - чтобы на вход последних фильтров приходило побольше, а том ожет быть проблемы в округлениях пир вычислениях - тот-же алгоритм на РС дает на том-же сигнале выше СШ, колеги отрабатывали в Матлабе.
|
|
|
|
|
Sep 2 2011, 12:01
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Allregia @ Sep 2 2011, 16:43)  Собственно, почему я хотел как-нибудь отсечь постоянку после взятия модуля (детектора  ) - чтобы на вход последних фильтров приходило побольше, а том ожет быть проблемы в округлениях пир вычислениях - тот-же алгоритм на РС дает на том-же сигнале выше СШ, колеги отрабатывали в Матлабе. А FLOAT на какой стадии используется? И в остальных местах сколько бит целочисленная арифметика? Вообще, при 1000 кратном оверсэмплинге после фильтров можно иметь разрешение на порядки выше, чем в АЦП.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Sep 2 2011, 12:03
|
Частый гость
 
Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531

|
Цитата(Allregia @ Sep 1 2011, 11:38)  Вопрос первый - так ли это (типа "а не дурк ли я?"  ), и второй - как лучше выделить эту константу (постоянную составляющую)? Все сделано разумно, только фильтр IIR_LPF_20Гц должен быть 32-битным. Так лишние разряды и появятся. Ваш процессор имеет быстрое умножение 64 = 32 * 32 и быстрые сдвиги 32 разрядных чисел. Операции с числами long и longlong намного быстрее и точнее, чем с float.
--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|