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

 
 
> Как сдвинуть сигнал на 90 градусов?
eteP
сообщение Dec 29 2004, 16:08
Сообщение #1


Участник
*

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



Всем привет.

Я недавно начал заниматься DSP и вот мне поставили задачу. Сделать систему которая сдвигает сигнал от 5 до 100 Гц на 90 градусов.

Дано:
Частота самлинга ADC 47кГц. На входе известно что будет только одна частота (с шумом ессесно) от 5 до 100 Гц. Нужно сдвинуть эту частоту на 90 убрать шум и выдать в DAC.
Таких каналов должно быть 220 штук.
Алгоритм(ы) должен быть готов через два месяца, а реализация в железе к концу августа (прототип).


Как это сделать:
1. Использовать Хильберт преобразование. Но его можно реализовать или с хорошей амплитудной характеристикой либо с фазавой. Фазовая важней.
Сделал up-sampling сигнала после ADC в 2 раза (потому как на 100 Гц сказывает групповая задержка). Но не добавлял 0, а дублирую значения. И прогоняю через фильтр. На выходе down-sampling в 2 раза. Из за up-sampling-а на выходе сигнал с высокочастотным шумом. Убирается довольно просто.
Далее приходится корректировать аплитуду сигнала. Аплитуда линейно зависит от частоты. По этому делаю down-sampling в 20 раз выходного сигнала для FFT. FFT делается по 512 точкам. Нахожу частоту и получаю коэфициент на который нужно домножить выходной сигнал что бы уровнь равнялся входному. И еще приходится сдвигать выходной сигнал по уровню. На сколько дает первый коэффициент FFT.
Все это написано на MatLab и вроде как работает.
Что здесь не устраивает: требуется много памяти учитывая что 220 каналов.

2. Использовать интегратор. Ситуация в точности такая-же как и в первом случае. Или я что-то не так делаю. Но этот вопрос изучается.

3. Идеальным было бы генерировать самим синусоиду. Но тогда надо знать: частоту, амплитуду и фазу входного сигнала. Как это все узнать?
FFT->частота. Найти фазу пока не получается (имеется ввиду простым способом).
Можно конечно сделать как написал st256. Но реализация на первый взгляд кажется сложней чем в случае 1. Да и не получается почему-то. Иногда находит фазу правильно иногда нет. Или я не правильно реализовал алгоритм. Мне кажется проще прибавить cos(wt) к исходному сигналу и взять acos от результата. Это и даст фазу. Но я не волшебник я только учусь.

4. ?????

Буду благодарен любому совету куда грести
Спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
eteP
сообщение Dec 30 2004, 11:17
Сообщение #2


Участник
*

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



Частота входного сигнала не меняется (если имеется ввиду это).
Но я не совсем понял идею.
От входного сигнала делаю FFT и тем самым нахожу частоту входного сигнала приблизетельно. Ошибка примерно 3-5 Гц, но это я знаю и могу учесть. Дальше меняются параметры двух полосовых фильтров в зависимости от частоты, которую получил от FFT. Прогоняю входной сигнал через эти два фильтра и получаю два сигнала, над которыми к примеру делаю сложение что бы получить разнизу фаз (или что то еще).
" по разнице фаз отфильтрованных сигналов можем опрпделить отклонение частоты от эталона и по этим данным перестраиваем фильтры." это я не понял, какие фильтры? И в чем суть алгоритма?

Спасибо за ответ.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:38
Рейтинг@Mail.ru


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