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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Точность вычисления фазы гармонического колебания
3.14
сообщение Jan 30 2006, 12:23
Сообщение #1


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Основная задача.
Имею два АМ модулированных сигнала: 38400Гц(модулирован 160Гц) и 41000Гц (модулирован 166Гц).
На приеме, необходимо вычислять отношение фаз модулирующих колебаний с точностью 0.5-1%.
Для простоты, ЦАП на передатчике и АЦП на приемнике тактируются одной частотой (100кГц), в добавок, начало выборки синхронизировано с начальной фазой модулирующего колебания (если рассматривать только один АМ сигнал).
Для удобства поиска/отладки алгортма я подружил свой макет с MatLab-ом, всю выборку (размер которой могу управлять) вываливаю в PC, далее кручу-верчу ... (только обмануть пока не могу smile.gif)

Итак, для вычисления фазы огибающей мне необходимо знать фазу несущей, хотя ЦАП передатчика синхронен с АЦП приемника, имеется среда передачи и аналоговый тракт, который скорее всего, с течением времени/температуры будет двигать фазу несущей (еще, в идеале, АЦП и ЦАП будут работать асинхронно). Т.е. мне как минимум надо вычислить фазу несущей, фазу одной из огибающих и соответственно вычислить искомую фазу.
Беда в том, что в своих экспериментах я никак не могу получить нужную точность вычисления фазы несущей, у меня меньше 6% не получается sad.gif. Значение фазы беру из Фурье-преобразования входной выборки с наложеным окном Ханнинга, АЦП 12 разрядов, ЦАП 4 разряда(на прецизионной 0,1% R2R резистивной матрице). Смущает еще - с ростом количества отчетов в выборке, точность вычисления фазы не меняется (строил гистограммы на разные длины выборки, процесс похож на нормальный но не "обужается" с ростом количества отсчетов).

А какие еще возможны способы вычисления фазы, имеет смысл в моей задаче использовать вейвлет?


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 30 2006, 21:52
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Уж не хотите ли Вы сказать, что пытаетесь найти фазу сигналов 38.4кГц и 41.0kГц имея выборку с частотой дискретизации 100kГц? Если да, тогда полученная Вами точность 6% - впечатляет. Если же речь идет о модулируемом сигнале 160 и 166 Гц соответственно, тогда, не понятно почему получается такая низкая точность. Для повышения точности попробуйте увеличить длину выборки, а также постарайтесь чтобы в выборку входило строго целое число периодов гармоники, фазу которой Вы вычисляете.

Сообщение отредактировал defunct - Jan 30 2006, 22:03
Go to the top of the page
 
+Quote Post
3.14
сообщение Jan 30 2006, 22:19
Сообщение #3


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



6% я получаю из фурье-преобразования что на несущие, что на боковые. Математически, Фн=Ф-Ф0 Фв=Ф+Ф0, соответсвенно меньше 6% я не получу. Длину выборки "бесконечно" увеличивать я не могу, максимум 1000 отсчетов (или 10мСек), причем как уже сказал ранее точность не меняется что с 1000 что с 10000 отсчетами. Периоды у меня "целые", я для этого специальную прогу в матлабе накатал, да и просто в качестве эксперимента, перебрал длительность по одному отсчету на период огибающей.

Хм-м, хотя последовательности в самом генераторе у меня хранятся безразрывные, про кратность количества точек я забыл smile.gif, завтра проверю.

Сообщение отредактировал 3.14 - Jan 30 2006, 22:24


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
Pathfinder
сообщение Jan 31 2006, 14:42
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 29-06-05
Пользователь №: 6 400



1. Для оценки фазы модулирующего колебания совсем не обязательно знать несущую с точностью до фазы. В данном случае достаточно реализовать некогерентный АМ-приемник, т.е. некоторую частотно-избирательную систему (например фильтр), выделяющую сигнал на данной частоте, после которого идет амплитудный детектор, а после него задача сводится к оценке фазы низкочастотного гармонического колебания. Эту задачу обычно решают, используя квадратурный корреляционный детектор. При этом интервал интегрирования корреляторов нужно брать максимально возможным, привязывать его к частоте сигнала не обязательно. Если надо, и подвернется свободная минутка, могу модель в Simulink набрасать.

2. Необходимо вычислять именно отношение фаз??? не разность случайно? если разность - то в итоге получится гармонический сигнал с разностной частотой.

3. 4-разрядный ЦАП обеспечивает шумы квантования ~-24дБ, то есть отношение сигнал/шум на входе АЦП порядка 20дБ, причем шумы имеют ярко выраженный дискретный характер - будут сильно влиять на точность.

4. Имея сигналы 38.4кГц и 41.0kГц с частотой дискретизации 100kГц теоретически возможно получить бесконечную точность оценки фазы при отсутствии шумов и квантования, ибо частота дискретизации не кратна частотам сигналов.


--------------------
ADC / DAC LC Filter Designer — Удобный инструмент проектирования LC-фильтров для ЦАП и АЦП
Go to the top of the page
 
+Quote Post
3.14
сообщение Jan 31 2006, 16:19
Сообщение #5


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



2 Pathfinder
1) Оба АМ сигнала проходят через УЗ передатчик и приемник АЧХ которых носит резонансный характер, в результате сдвигаются как фазы боковых состовляющих так и амплитуда и в результате детектирования получу биение и как выковыривать от туда фазу не особо представляю, к тому же узкий фильтр затянет/оттянет время измерения, а оно у м еня должно быть в идеале 5мС, но можно и 10-20мС. Еще в этом способе я нахватаю помех от соседнего АМ. А насчет модельки Simulink, если сделаете буду очень признателен.

2) Пока не особо важно, если нет необходимой точности для последующих манипуляций.

3) От части он режется УЗ датчиками, я пробовал считать фурье и из 100000 отсчетов, влияние шума квантования ЦАП должно снизиться, но это не привело к ощутимым улучшениям.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
Pathfinder
сообщение Feb 1 2006, 11:01
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 29-06-05
Пользователь №: 6 400



Боюсь маловато такого времени измерения - 5мс, хотя бы один период надо целиком. Вот моделька - с ходу получается погрешность ~0.3 градуса при переходном процессе 30мс. Наверняка можно выжать и лучше если пооптимизировать параметры. Этот метод еще вроде называют методом Ньютона-Рафсона.
Прикрепленные файлы
Прикрепленный файл  AM_Phase_Estimation.rar ( 8.02 килобайт ) Кол-во скачиваний: 86
 


--------------------
ADC / DAC LC Filter Designer — Удобный инструмент проектирования LC-фильтров для ЦАП и АЦП
Go to the top of the page
 
+Quote Post
3.14
сообщение Feb 4 2006, 18:45
Сообщение #7


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Спасибо за модедьку.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
eteP
сообщение Feb 6 2006, 20:30
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 24-06-04
Пользователь №: 166



Можно попробывать так. Если я правильно понял вашу задачу.

Разрабатываете два бандпас ФИР фильтра на вашу частоту. Один делает косинус преобразование, другой синус преобразовние. На выходе у вас будет сигнал I and Q. Вот вам и угол. Задержа фильтра известна, ее можно учесть. Угол между соседними векторами и есть ваша частота. Вом она тоже известна. Так что вычислисть начальную фазу не составит большого труда. Можно потом еще среднее считать для увеличения точности.

Тоже самое но другим путем. Ставится один фильтр который выделит вашу частоту уберет шум из сигнала (шума должно быть как-можно меньше smile.gif ). Зная частоту сигнала и частоту сэмплирования подготавливаются две таблицы косинуса и синуса на периуд. Сигнал после фильтра умножается на две эти таблицы и суммируется. Получаем два числа -> вектор. Угол начальная фаза.
Go to the top of the page
 
+Quote Post
3.14
сообщение Feb 6 2006, 20:46
Сообщение #9


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Спасибо, интересные предложения, надо осмыслить smile.gif


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
nadie
сообщение Feb 13 2006, 17:36
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 22-07-05
Пользователь №: 7 016



to etep
Уточните, пожалуйста, что вы имеете в виду под
Цитата
два бандпас ФИР фильтра на вашу частоту. Один делает косинус преобразование, другой синус преобразовние

Это просто классическое квадратурное детектирование путем домножения на sin(wt) и cos(wt) с последующим low pass FIR filter или что то другое?
Go to the top of the page
 
+Quote Post
eteP
сообщение Feb 21 2006, 18:17
Сообщение #11


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 24-06-04
Пользователь №: 166



Цитата(nadie @ Feb 13 2006, 20:36) *
to etep
Уточните, пожалуйста, что вы имеете в виду под
Цитата
два бандпас ФИР фильтра на вашу частоту. Один делает косинус преобразование, другой синус преобразовние

Это просто классическое квадратурное детектирование путем домножения на sin(wt) и cos(wt) с последующим low pass FIR filter или что то другое?


Извените что долго не отвечал, был очень занят.
Делается это так.

Разрабатывается lowpass FIR с частатой среза Fc.
Имеем его коэффициенты K(n). Далее из этого фильтра получаем пару Hilbert FIR фильтров. Для этого применяем quadrature bandpass transform.

Ksin(n) = 2*K(n)*sin(2*pi*n*F/Fs)
Kcos(n) = 2*K(n)*cos(2*pi*n*F/Fs)

Где, F - это центральная частота и от нее +-Fc.
Fs - это частота семплирования.
Т.е. получается два Bandpass FIR фильтра с одинаковыми (почти) характеристиками.
Между двумя выходами имеем 90 градусов. Ввиду того что не всегда можно получить одинаковые характеристики, то можно к примеру сделать усреднение углов и уже среднее брать как более точную величину. Ну а дальше вы можете делать все что вам захочится. Задержка фильтра известа, фаза ленейна от частоты. И узнать в какой фазе пришел сигнал не составит большого труда.
Минусы в этой системе это два фильтра придется реализовать и тайм-летенси может быть большим.


Другой вариант на IIR фильтрах.
Разрабатываем lowpass IIR с частатой среза Fc.
Переходим в z-плоскость. На ней имеем комплексносопряженные нули и полюса.
Зная что в этой плоскости:
угол 0 соотвествует частоте 0
90 градусов (против часовой стрелки) Fs/4
180 - Fs/2
270 - 3*Fs/4
Где Fs - частота семплирования.

Делаем простую вещь. Поварачиваем каждый ноль и полюсь на угол = 360 * F/Fs
где F - центральная частота нашего будущего bandpass фильтра.
После поворота получили новые коэффициенты фильтра которые теперь комплексные. То есть у нас комплексный фильтр. Который имеет один вход и два выхода. В реализации это будет выглядить как два bandpass IIR фильтра c полосой 2Fc и между выходами ровно 90 градусов (комплексное число на выходе)

Проблемы: все которые имеет IIR фильтр
Если нужно что бы фаза была линейна от частоты, то дальше я вижу пока два варианта решения.
1. Приминить allpass фильтр и уже им скорректированть груповую задержку.
2. Это просто таблица. Где к примеру угол это адрес памяти по которому лежит число на какой угол нужно сделать поворот. Ну а если частоты или частота фиксирована, то это займет не много памяти.
Go to the top of the page
 
+Quote Post
nadie
сообщение Feb 22 2006, 09:09
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 22-07-05
Пользователь №: 7 016



to etep

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

Вы великолепно владеете теорией создания и преобразования фильтров.
С математической точки зрения, описанный вами алгоритм на discrete time domain, и моя догадка, сформулированная на continuous time domain, дают абсолютно идентичный результат. В вашем варианте фильтр сразу bandpass filter, в моем вначале frequency shift followed by lowpass filter.

Насколько я знаю большинство hardware Hilbert transformer, используемых например в Agilent приборах, построены по описанной мной схеме, с IF=4 * Fs. В этом случае frequency shift реализуется просто домножением (сменой знака) для cos path (1 0 -1 0 ...) sin path (0 1 0 -1 ...), далее идет обычно CIC filter или сразу low pass filter.

В DDC GC4016 Texas Instruments соотношение между IF и Fs не зажато, но алгоритм тот же, вначале frequency shift потом фильтрация.

Мой вопрос следующий, почему в приборах используется большей частью описанный мною вариант, а не ваш, который дает абсолютно тот же результат? У меня предположение, что так проще реализовать в железе, а вот если делать пост обработку на компьютере, то тогда ваш вариант возможно и предпочтительней, если не требуется zero phase feature.

В моих измерениях zero phase feature очень существенный момент, поэтому мой алгоритм вначале frequency shift потом двух проходная фильтрация (функция filtfilt MAtlab).

Прямо сейчас возник вопрос, а что будет, если использовать в filtfilt предложенный вами bandpass filter? Получится ли правильный результат с zero phase shift? Вечером постараюсь с этим поразбираться.

У меня есть еще один академический вопрос, на который мне не удалось найти ответа в книгах по DSP.
Суть его в следующем. Имеем датчик магнитного поля, предствляющий из себя резонансный контур, согласованный с импедансом приемника. С точки зрения DSP такой датчик есть ни что иное как bandpass filter с центральной частотой равной частоте резонанса. Требуется создать компенсирующий фильтер, который бы делал АЧХ датчика в заданном диапазоне близкой к линейной, при линейной фазе. Видимое мне лобовое решение проблемы deconvolution не совсем хорошо, так как сигнал относительно узкополосный и deconvolution значительно повышает шумы. Известно ли вам более правильное решение такой проблемы с использованием filter, полученного на основе знаний о резонансном контуре?

Сообщение отредактировал nadie - Feb 22 2006, 09:48
Go to the top of the page
 
+Quote Post
Pathfinder
сообщение Feb 22 2006, 09:26
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 29-06-05
Пользователь №: 6 400



eteP, nadie, может будем к терминологии с уважением относиться, все-таки в России живем.


--------------------
ADC / DAC LC Filter Designer — Удобный инструмент проектирования LC-фильтров для ЦАП и АЦП
Go to the top of the page
 
+Quote Post
nadie
сообщение Feb 23 2006, 08:31
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 22-07-05
Пользователь №: 7 016



to Pathfinder
Объясните, пожалуйста, в чем ваша претензия в части терминологии. Мне существенно проще использовать английскую терминологию, так как все фундаментальные книги по DSP у меня на английском (возможно и есть рускоязычные издания, но они мне не доступны). IMHO, все специалисты работающие в области RF, DSP английский знают, так как и железо и софт используемый для разработок только англоязычный.

to eteP
Более подробно свои соображения по использованию вашего алгоритма изложу немного позднее, сейчас надо с рабочими делами разобраться.
Go to the top of the page
 
+Quote Post
st256
сообщение Feb 25 2006, 15:39
Сообщение #15


СТАТУС: только для чтения
**

Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627



Не знаю, слышит ли меня товарищ из Ижевска, но дело обстоит так:
метод у Вас правильный, у Вас окно не правильное. Просто посмотрите спектр окна Хэнна (или, что одно и тоже Хэннинга). Все вопросы у Вас исчезнут. Используйте окно Кайзера и в пол-процента Вы уложитесь.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 07:02
Рейтинг@Mail.ru


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