На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 133,
участников - 22 [ Timofejka, sergsib, RANET, Олегыч, SLB_MN, slava68, Rnog, labuda51, ra3idw, UA1CFM, sibirier, let4eg, muha131, micar70, YuriVR, John79, radeon, Andy58, darwin, momotych, Pavelectric, Sinilaj]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Радиосигналы —› Программная демодуляция FM (частотная модуляция) 
 Страница:  ««  1  2  3Поиск в теме
Автор Сообщение
UBIK
Участник
Offline1.7
с ноя 2017
Neu-Schwaben
Сообщений: 214

Дата: 27 Янв 2019 15:22:13 #  

Меня смущает именно нулевая ПЧ. Мне кажется такой алгоритм ФМ детектора работает некорректно.
...тем не менее он именно для 0-ой...

Результат гораздо лучше. Но не идеальный.
Очень странно...

Или программно сдвинуть спектр?
:) Уж лучше аппаратно... Слышали о технике с "околонулевой ПЧ"? :)

Спасибо за наводку. Попробую.
по-моему это главная ошибка...

Я пробовал различные цифровые ФНЧ на входящие I и Q.
Не на входе I и Q, а на входе дифференциатора... И там достаточно скользящего среднего на пару-другую семплов...

Если я правильно Вас понял, то сути этот метод не меняет. На выходе та же производная фазы.
Да, но чуть проще...
studentkra
Участник
Offline1.6
с мая 2017
Красноармейск М.О.
Сообщений: 224

Дата: 27 Янв 2019 19:06:30 · Поправил: studentkra (27 Янв 2019 19:32:32) #  

Помножил производные на предыдущие сэмплы. Без изменений.

  • I_input = analogRead(analogInPin0) - 2060;
  • Q_input = analogRead(analogInPin1) - 2060;
  • I_delta = (I_input_tmp - I_input) ;
  • Q_delta = (Q_input_tmp - Q_input) ;
  • Summ = sq(I_input) + sq(Q_input);
  • IQ = Q_delta * I_input_tmp;
  • QI = I_delta * Q_input_tmp;
  • W = (float)(IQ + QI) / (float)Summ;
  • I_input_tmp = I_input;
  • Q_input_tmp = Q_input;
  • DAC_output = ((float)W * 1000) + 2060;
  • if (DAC_output < 0) DAC_output = 0;
  • if (DAC_output > 4096) DAC_output = 4096;
  • analogWrite(analogOutPin, DAC_output);

Приложу образцы записей. Записи IQ сделаны программой SDRSharp, RTL свистком и радиотелефоном в качестве источника NFM сигнала.

Тестовая IQ запись NFM с несущей по центру.
https://drive.google.com/open?id=1sw0yt-D8SWukX2OpjtYj6qRHOwVuUSJ0
Результат демодуляции:
https://drive.google.com/open?id=14NC6V4kBixjh9zBxQ32z7Vu7z4ih1TU7
Тестовая IQ запись NFM со сдвинутой несущей на 3 КГц
https://drive.google.com/open?id=1P0m4EAQUtb-TmIomUWdmXNs6nCV6UY8x
Результат демодуляции:
https://drive.google.com/open?id=1jFsLk9gO7taTCZGiIdz_KIS4KeoyON51



Погудел синусом в микрофон. "Вот типа осциллограммы" IQ:
Несущая по центру:


Несущая сдвинута:


При сдвиге несущей картинка выглядит логичней. Как в учебниках по NFM модуляции.
 Страница:  ««  1  2  3 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
Начало
Средства связи, рации. Купить радиостанции Motorola, Yaesu, Vertex, приемники, антенны.
Время загрузки страницы (сек.): 0.039; miniBB ®