Страница 1 из 6

частотный демодулятор - частота 2350 герц

Добавлено: Ср июн 03, 2015 17:06:25
kalobyte
попросили сделать тут одну штуку для включения реле
на укв станциях когда передают обстановку на дорогах, то в звуковом канале слышен такой сигнал 2.3кгц
сигнал модулирован по частоте 123гц
в начале идет короткий сигнал, а после окончания 1200мс
я помню, что для этого была мелкасхема 8 выводная и я ее с древней магнитолы выпаивал, но выкинул за ненадобностью
типа тда1080 что ли

вобщем есть что готовое или как вообще делается демодуляция частотная и осилит ли ее 8 битный мк?
нужно ли делать полосовой фильтр для обрезки левых частот?

по идее можно было бы взяться за софтовый демодулятор, но можно и в железе сделать, только я что-то в таких делах полный 0 :oops: :facepalm:
---
upd
скажите, правильно ли я понимаю, что частотная модуляция это по сути частотная манипуляция
т.е. у нас есть 2 частоты
2350-123 и 2350+123?

или же только 2350+123?

Re: частотный демодулятор - частота 2350 герц

Добавлено: Ср июн 03, 2015 20:17:16
uk8amk
Где-то там чтого-то там модулируется переманипулируется.

Из хардварного на ум приходят LM567 и телефонная MT8870.

Программно декодируется алгоритмом Герцеля.

Re: частотный демодулятор - частота 2350 герц

Добавлено: Ср июн 03, 2015 20:35:53
kalobyte
LM567 нашел уже и герцеля нашел
не пойму только, ну вот я поймал 2350 и что дальше?
там же внутри сидит еще 123гц, как ее достать?

Re: частотный демодулятор - частота 2350 герц

Добавлено: Ср июн 03, 2015 20:41:14
uk8amk
ФАПЧ настроить на 2350, с выхода управления ГУН будет эта демодулированная 123Гц. Вот с ней и делать что там требуется.

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 10:00:55
kren700
Задача весьма сходна с той что я решал 25 лет назад, повторяя конструкцию АОНа на аналоговых телефонных сетях.
Требовалось различить пару частот одновременно из диапазона 900-2300 Гц (всего 6 частот через 200 Гц) причём делать это не реже чем каждые 20 мс (0,02 с). Пути было 2 - аппаратные фильтры, либо программная фильтрация.

(Историческое отступление, можно пропустить) Именно под эту задачу я освоил Фурье преобразование, хтя его не было в моём курсе обучения в университете. На счастье мне попался очень талантливый преподаватель, который объяснил мне на бумажке за пол-часа и бесплатно. В то время (1990) студень, интересующийся посторонней темой, да с другого курса - был для преподов в диковинку. Особенно учитывая разгулявшийся в то время в студ. среде дикий рынок.

Так вот в то время в наличии и дёшево были только процессоры с тактом не более 2 МГЦ (i8080, i8039-51) либо 4 МГц (Z80A CPU). Естественно все выбирали программную обработку - т.е. либо КИХ-фильтры, либо Фурье.

Фурье на 8-ми битном процессоре на 2-х МГц, мать его !!!
Каждые 20 мс. И всё успешно решено самостоятельно, я подчёркиваю, на ассемблере. Т.е. БПФ на асме. Естественно я просматривал алгоритмы чужие, включая на С, на асме, на Фортране.
Было сделано 64-точечное, 6-ти шаговое (последний шаг, только для избранных 6-ти частот). Исходником было 2-х битное кодирование. ДВУХБИТНАЯ оцифровка!!! Т.е. уровень сигнала от 0, до 5 вольт превращался всего в 4 уровня для программного преобразования.

Это было сделано на резисторах и логике. Почему без компараторов?
Потому что нужно 2 компаратора и 1 усилитель (т.е. 3 корпуса), а это тоже самое, что сделать 6 аппаратных фильтров на сдвоенных операционных усилителях (т.е. теже 3 корпуса микросхем) и без погружения в цифровую обработку сигналов с оцифровкой и Фурье.

Мой талантливый однокурсник, который разрабатывал параллельно тоже самое (тогда у всех была гонка сделать что-то, ибо купить просто не на что). Только преобразование у него было на 40 точек (т.е. намного быстрее, почти в 2 раза) и оцифровка была ОДНОБИТНОЙ, на триггере Шмидта.

Почувствуйте уровень любительских разработок ТОГДА, и сейчас.
Уровень программирования на слабеньком, по нынешним меркам, железе.
Искусство программирования )))
Для желающих, рекомендую книжку по ассемблеру "8085 subroutine"
после ассемблера stm32 или avr вы почувствуете себя богом.
Читается легко, но главное уловить там алгоритмы и методы.
А уж то, что вы их переложите на нужный язык можно не сомневаться. )

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 11:36:12
Morroc
У него немного не так - одна частота модулирована другой, т.е. сначала надо детектировать ЧМ, а потом искать в получившемся сигнале 123 Гц. Ну если первая часть решена - тогда да, причем одну частоту задетектить проще, чем в аоне нужно было городить.

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 12:03:00
kren700
Morroc писал(а):У него немного не так - одна частота модулирована другой, т.е. сначала надо детектировать ЧМ, а потом искать в получившемся сигнале 123 Гц. Ну если первая часть решена - тогда да, причем одну частоту задетектить проще, чем в аоне нужно было городить.
У него же не МГц ?
тогда бы я предложил что-нить из к174-й серии (но тогда нужны катушки так не любимые даже железячниками, а уж про программеров даже и говорить не надо, даже сама аналоговая техника вызывает у них "ужас" - там же нельзя жить программе :)) )

В чём прелесть БПФ ?
На выходе спектр (набор) частот. (надеюсь это вы знаете).
т.е. частота 123 и 2350Гц будет просто присутствовать в виде силы сигнала (мощности) в 123-й и в 2350-й ячейке, после БПФ.
ОДНОВРЕМЕННО. Параллельно. Независимо от необходимого кол-ва полос которые нужно контролировать. А дальше вам решать, надо вам как-то использовать информацию о наличии этих частот, или нет.

Значит задача стоит - подобрать так параметры преобразования, чтобы объём вычислений мог быть выполнен в приемлимое время с приемлимой точностью.

123 Гц - это смешной параметр, ибо его нельзя выполнить даже на резонансных фильтрах. Либо делать расчёты с использованием цепочки кварцованных фильтров (боже, я даже не специалист в этом, но объясняю вам :shock: ), т.е.
либо
вы делаете полосовой фильтр - т.е. реагируете на полосу частот (от 115 до 130 Герц, например), тогда это простой аналоговый фильтр, который ставится на выходе ЧМ детектора (его можно выполнить на ОУ, надеюсь жёсткой постановки вопроса выполнять на процессоре тут нет?)?
либо
вы делаете DSP - цифровую обработку сигналов.
цифруете входящий сигнал и обрабатываете двумя возможными способами:
1. цифровая фильтрация (время прямо пропорционально кол-ву полос частот, здесь одна полоса).
2. БПФ (время обработки не зависит от кол-ва частот, но зависит от необходимой точности обработки, насколько точно вам нужно ловить частоты).

Например для точности 10%, т.е. полоса 100 Гц, при максимальной частоте 1000 Гц. Т.е. вы реагируете на сигнал, если он появился в полосе, например 500-600 Гц, НО точно, какая частота в исходном сигнале, вы определить не можете. Тогда вам нужно 10-точечное преобразование ДПФ (дискретное), в случае БПФ это будет 16-ти точечное (32 "бабочки").

второй пример - точность 1% (аналоговый фильтр уже весьма дорогой будет). Точность обработки - полоса в 10Гц. Вам нужно 100-точечное преобразование ДПФ или 128 точечное БПФ (448 "бабочек").
Время обработки этого БПФ больше в 14 раз, чем в 1-м примере.

Бабочка - это базовая операция в БПФ. для 1-битного сигнала (есть-нет) достаточно операции XOR и пары сложений - это и будет "бабочка".
Кол-во бабочек - это объём вычислений, которые надо произвести для одного "кадра", т.е. полного спектра входного сигнала.
Почему кадра? :)) Потому что для получения полной прямой спектроскопии входного сигнала для прямого наблюдения нужно не менее 8-16 кадров в секунду (как в кино, чем больше, тем плавнее). Оттуда и пришло - 1 спектр - 1 "кадр".

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 12:31:18
oleg110592
может пригодится http://elm-chan.org/works/akilcd/report_e.html

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 13:18:21
Morroc
kren700 писал(а): т.е. частота 123 и 2350Гц будет просто присутствовать в виде силы сигнала (мощности) в 123-й и в 2350-й ячейке, после БПФ.
ОДНОВРЕМЕННО. Параллельно. Независимо от необходимого кол-ва полос которые нужно контролировать. А дальше вам решать, надо вам как-то использовать информацию о наличии этих частот, или нет.
Не уверен, что во входном сигнале будет 123 Гц присутствовать. По условиям 2350 промодулированная несущая, в спектре может присутствовать, к примеру, полоса 1350..3350 Гц и результат БПФ не будет содержать 123 Гц.

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 13:35:45
kalobyte
хочется вообще без железа
есть годная библиотека басс.длл
есть пример анализатора спектра http://www.codeproject.com/Articles/797 ... ass-dll-Cs
вот только эта библиотека платная для платного софта, а я как раз делаю платный и тем более на продажу :cry:

я видел много матана по модуляции и демодуляции чм, но это все для быдловузников гавно в сферическом вакууме
алгоритм герцеля в 5 строчек запилен, а в теогии такая жопа, что от одного вида блевать хочется

нигде нет практических реализаций с объяснениями на пальцах

хотелось бы чисто софтом обойтись, вся эта херня может работать сегодня без железа

и еще чм демодулятор везде вижу для квадратурного сигнала, а у меня он не квадратурный

есть может какие библиотеки для бпф и желательно с .нет оберткой как басс.длл
она была бы идеальной

собственно как делается демодуляция в софте?
вот есть у меня библиотека эта и что дальше?
допустим я тот пример расковырял и вытащил частоту 2350
дальше что? как из нее вытащить 123гц (+-1гц погрешность)

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 13:40:16
kren700
Morroc писал(а):Не уверен, что во входном сигнале будет 123 Гц присутствовать. По условиям 2350 промодулированная несущая, и результат БПФ не будет содержать 123 Гц.
Конечно не будет. По условиям аналоговой модуляции - будут присутствовать 3 частоты - несущая 2350 и две боковые +-123 Гц.
При ФМ зависит способа. Фазовая или Частотная модуляция. Ну и от базы сигнала - какова будет ширина и глубина модуляции.
Morroc писал(а):в спектре может присутствовать, к примеру, полоса 1350..3350 Гц
Врядли. Если вы модулируете только одной частотой, то и в спектре, помимо несущей, будет только одна частота.
Остальные (переходные) будут на очень низком уровне.
К тому же вы контролировать будете только НУЖНУЮ вам полосу.

Широкий спектр выходной модуляции может быть только у шумоподобной модуляции, у которой есть закон псевдо-случайной модуляции. Но это - не ваш случай.

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 13:42:20
kren700
kalobyte писал(а):я видел много матана по модуляции и демодуляции чм, но это все для быдловузников гавно в сферическом вакууме
алгоритм герцеля в 5 строчек запилен, а в теогии такая жопа, что от одного вида блевать хочется
нигде нет практических реализаций с объяснениями на пальцах
Хех. Бесплатно, для быдла, да чтобы вы потом ещё и прибыль получали...
Ну, ты и кадр.
kalobyte писал(а):алгоритм герцеля в 5 строчек запилен,
А в СИ и Матлабе, БПФ сейчас запилен вообще одной строкой вызова.
А внутри - ёлки-палки.
Особенно оптимизированные, быстрые алгоритмы
для целых чисел (как раз для ассемблера 32-х битных процев).
Там вообще путанные алгоритмы. Но вызвать можно одной строкой :))

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 14:45:27
Morroc
kren700 писал(а): Конечно не будет. По условиям аналоговой модуляции - будут присутствовать 3 частоты - несущая 2350 и две боковые +-123 Гц.
При ФМ зависит способа. Фазовая или Частотная модуляция. Ну и от базы сигнала - какова будет ширина и глубина модуляции.
Ну вот да, нужно еще индекс модуляции / девиацию знать. Или и правда долой теорию - посмотреть на этот сигнал в чистом виде и искать 3 соответствующих палки в спектре :)) На PC я делал такое тупо в лоб как тут http://electronics-and-mechanics.azm.su/page57.html или можно оттуда Герцеля содрать.

p.s. как то вообще мутно все со спектром чм http://www.dsplib.ru/content/fmspectr/fmspectr.html, может все таки демодулировать надо ?
kalobyte писал(а): и еще чм демодулятор везде вижу для квадратурного сигнала, а у меня он не квадратурный
По честному если демодулировать, то нужен квадратурный, но в SDR программах видел нечто типа "преобразовать в I/Q" - т.е. как то можно привести обычную оцифровку к квадратурной с неполной информацией, для вашей задачи наверное и такого хватит.

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 15:11:37
kalobyte
Morroc писал(а):может все таки демодулировать надо
еще раз
есть сигнал 2350гц, который частотно модулирован синусом 123гц

полоса 300гц всего будет, во время звучания сигнала больше звуков не будет
никак не пойму, что сегодня нельзя что ли просто взять готовые библиотеки и вытащить нужную частоту?

я так понял - результатом работы функции бпф будет массив со значениями уровней по конкретным частотам
как узнать какая частота в какой ячейке массива
и что мне это вообще дает?

а можно тупо найти частоту 2350+123 = 2473гц?

всяких анализаторов спектра нашел на быдлодуинах и что толку?
kren700 писал(а):Хех. Бесплатно, для быдла, да чтобы вы потом ещё и прибыль получали...
Ну, ты и кадр.
bass.dll стоит 130 баксов, но софт на продажу должен стоить не дороже 40 баксов за копию
за 40 баксов я не буду заморачиваться, там аппратно-программное решение нужно и может быть его продастся 10 копий, т.к. уж очень специфичная херня

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 15:26:57
kren700
Morroc писал(а): Или и правда долой теорию - посмотреть на этот сигнал в чистом виде и искать 3 соответствующих палки в спектре :)).
кстати, наличие FFT в библиотеке от производителя - не означает наибыструю реализацию алгоритма БПФ.
Раньше-то подбирали и реализации алгоритма, и реализацию бабочек и бабочки могли быть с 2, 4, 8 точками, последние быстрее первых почти в 1,5 раза, но намного сложнее объёмнее в коде (раньше и объём кода мог быть проблемой).
Например разные реализации алгоритма БПФ - разные пары точек подаются в бабочку на первом и последних этапах, отчего у последнего на выходе порядок следования частот становится инверсным (в битовом смысле) :))

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 15:27:05
Morroc
kalobyte писал(а):
Morroc писал(а):может все таки демодулировать надо
еще раз
есть сигнал 2350гц, который частотно модулирован синусом 123гц

полоса 300гц всего будет, во время звучания сигнала больше звуков не будет
никак не пойму, что сегодня нельзя что ли просто взять готовые библиотеки и вытащить нужную частоту?
Необязательно 300, есть еще параметр у чм - девиация частоты или индекс модуляции. Ну т.е. при максимальной амплитуде модулирующего сигнала частота может стать +/-200 гц, а может +/-500. Это как у FM-радио спектр в районе 200КГц шириной, а у раций 10-20КГц. Но это пофиг - в сигнале будет +/- 123 Гц от центральной и дальше гармоники.

kalobyte писал(а): я так понял - результатом работы функции бпф будет массив со значениями уровней по конкретным частотам
как узнать какая частота в какой ячейке массива
и что мне это вообще дает?
Они будут равномерно размазаны, исходя из частоты дискретизации и кол-ва интервалов БПФ можно вычислить в какой ячейке нужное.
kalobyte писал(а): а можно тупо найти частоту 2350+123 = 2473гц?
Зависит от необходимой помехозащищенности, наверное. Можно ловить центральную частоту и +/- 123 для надежности.

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 15:31:55
kalobyte
я сейчас сделал на генераторе этот сигнал и подал на осциилограф в режиме бпф
так вот, 2 палки по бокам от центра на чм нет, это в режиме ам только
в чем палок куча
лень картинку приклеивать - флешка где-то валяется далеко

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 15:41:22
kren700
kalobyte писал(а):я так понял - результатом работы функции бпф будет массив со значениями уровней по конкретным частотам
как узнать какая частота в какой ячейке массива
и что мне это вообще дает?
ага.
Массив состоит из точек оцифровки с частотой F количество точек N.
Например 1000 Гц - частота сэмплирования (оцифровки), количество точек 100 (например). Тогда Массив исходный и конечный состоит из 100 точек.
Ячейка 0 - это уровень постоянной составляющей. Ячейка 50 - уровень сигнала с частотой оцифровки (обычно выкидывается). Ячейки 51-99 - мнимые (нужны для вычисления мощности и фазы исходника).
Ячейки 1-49 - уровень сигнала - полосы частот.
1000 Гц делим на 50, получаем уровни сигнала в полосах через 20 Гц.
Т.е. 0 - постоянный ток, 1 - от 1 до 20 Гц, 2- от 21 до 40 Гц и т.д.
kalobyte писал(а):а можно тупо найти частоту 2350+123 = 2473гц?
ага. (Если в исходном сигнале они были смешаны или амплитудно промодулированы.) При частотной моддуляции - нужно знать глубину модуляции.
kalobyte писал(а):bass.dll стоит 130 баксов, но софт на продажу должен стоить не дороже 40 баксов за копию
за 40 баксов я не буду заморачиваться, там аппратно-программное решение нужно и может быть его продастся 10 копий, т.к. уж очень специфичная херня
ну понятно.

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 15:46:38
kren700
kalobyte писал(а):и подал на осциилограф в режиме бпф
так вот, 2 палки по бокам от центра на чм нет, это в режиме ам только
в чем палок куча
так естественно.
Я про это и говорю. если в ЧМ подать чистый синус на модуляцию, то будет одна палка, которая отстоит от центральной частоты (несущей) на частоту модуляции* коэфф.ЧМ модуляции.
Если у тебя полоса 300 Гц, то индекс модуляции 300/123 ~ 2,4.
Тут важна какая модуляция применяется. Если однополосная - то будет одна палка, если двух полосная - то 2.

Если куча палок, то у тебя модуляция не синусом, а прямоугольником )))

Re: частотный демодулятор - частота 2350 герц

Добавлено: Чт июн 04, 2015 15:52:57
kren700
Morroc писал(а):, а у раций 10-20КГц. Но это пофиг - в сигнале будет +/- 123 Гц от центральной и дальше гармоники.
Ошибочка.
не 123, а +- F макс
F макс - это полоса канала на несущей.

Автор оговорил, что полоса 300 Гц. Т.е. отклонение будет при однополосной модуляции максимум 300 Гц. Т.к. входная частота одна.