|
|
  |
Реализация двухчастотной модуляции |
|
|
|
Mar 16 2013, 20:14
|

Частый гость
 
Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811

|
Не знаю, куда и податься с вопросом - в математику - так засмеют. Цель выглядит просто - нужно передатчик промодулировать сигналом - просто ряд частот, 8 штук. А принимается сигнал на обычную радиостанцию на слух. До сего вечера эти приемники-передатчики даже в руках не держал. А тут вдруг выясняется, что для работы системы шумопонижения/ разделения пользователей сигнал должен быть дополнительно промодулирован низкочастотным CTCSS сигналом - номером канала, частота от 67 до 250 герц. Идея использовать сермяжный таймер как-то сразу испарилась. Надо как-то цифровым методом замешать две частоты - просто смешать два сигнала нельзя, они идут на SI4432 логическим уровнем. Подскажите, люди добрые  , слово волшебное, которое погуглить надо, как эти частоты, будь они неладны, замешать? А если еще бы как-то это на аппаратном уровне 430-го сделать (типа один таймер переключает режим другого) ! Что-то видел какой-то звон с реализацией DTMF - суть та же, но как-то ничего путнего не находится.
|
|
|
|
|
Mar 16 2013, 21:40
|

Частый гость
 
Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811

|
Цитата(kovigor @ Mar 17 2013, 00:34)  У Atmel'а есть апп. ноут про "DTMF generator". Там как раз этот самый DTMF генерируется в виде сигнала с ШИМ, который затем подается на ФНЧ (вам-то ФНЧ не нужен) ... К сожалению, не совсем то - я бы хотел просто два меандра сложить, ШИМ - слишком высокочастотный для SI4432.
|
|
|
|
|
Mar 16 2013, 21:47
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(varvar @ Mar 17 2013, 00:40)  К сожалению, не совсем то - я бы хотел просто два меандра сложить, ШИМ - слишком высокочастотный для SI4432. Может, я чего не понимаю, но обычный элемент "Исключающее ИЛИ" даст вам именно сумму без учета переполнения. Если нужен также и бит переполнения, то такая схема будет называться полусумматором. См., например, Титце и Шенка. Кстати, вы уверены, что вам нужна именно сумма (обратите внимание на спектральный состав результирующего сигнала) ? http://oldskola1.narod.ru/trigF37.htm
|
|
|
|
|
Mar 17 2013, 05:59
|

Частый гость
 
Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811

|
Цитата(ut1wpr @ Mar 17 2013, 01:44)  Никак не пойму, зачем надо что-то с чем-то складывать? При чем тут DTMF, если упомянут CTCSS? Это же совершенно разные вещи? Что нужно ТС-у? Похоже, он сам не знает. Спасибо за ответ. Вы знаете, я все-таки кое о чем догадываюсь  Может, просто плохо изложил. Мое устройство - простейший маячок. Выдает пачку сигналов, 8 тонов, с понижающейся мощностью. Каждый тон - 1...3 секунды. Радиостанция настроена на определение этого самого кода CTCSS. Этот самый CTCSS - это просто низкочастотный сигнал замешанный с полезным, в общем случае это речь, в моем - одночастотный тон. Приемник включает УНЧ, когда обнаруживает свой код CTCSS в сигнале. Ну и теперь при чем тут DTMF - там две частоты замешаны, и я поверх своей частоты хочу замешать CTCSS. Те же две частоты. Соотношение разное. Частота тонов не догма - можно как-то поиграть с ней, чтобы упростить алгоритм. Понятно, что самый простой выход - отключить CTCSS в радиостанции и все будет работать и так. Но хочется, чтобы все было красиво. И приемник включался когда он обнаружит свою посылку. В аналоговом виде это выглядит так (не мой случай, просто картинка откуда-то):
А вот что сделать, чтобы это работало в чисто цифровом виде - в этом и вопрос. И крайне желательно, чтобы без внешних компонентов - только микропроцессор.
Сообщение отредактировал varvar - Mar 17 2013, 06:18
|
|
|
|
|
Mar 17 2013, 11:18
|

Частый гость
 
Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811

|
Цитата(rx3apf @ Mar 17 2013, 13:44)  Можно попробовать через коррекцию смещения частоты, если это можно делать "на ходу" при передаче. Дискретность там вроде достаточно мала, так что необходимый уровень девиации может быть и удастся получить (я с этими чипами дела не имел, вникать в формулы лениво). К сожалению, тут у меня тоже засада, хотя мысль хорошая. Одна и та же нога используется для непосредственной модуляции, и эта же нога данные SPI, которым можно поменять частоту. Либо-либо.
|
|
|
|
|
Mar 17 2013, 12:03
|

Частый гость
 
Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811

|
Цитата(rx3apf @ Mar 17 2013, 15:51)  Смешайте их программно, вычисляя для каждой точки нужную девиацию. Не утверждаю, что получится, но попробовать можно. это мысль, спасибо, буду ее думать - ведь можно заранее все вычислить повторяющийся кусок, положить в память, а потом DMA все выплевывать в SPI. Если SI4432 поддержит такой тип издевательства (тоже не уверен, все-таки PLL и прочее не рассчитаны на такое).
|
|
|
|
|
Mar 17 2013, 17:52
|

Частый гость
 
Группа: Участник
Сообщений: 98
Регистрация: 20-06-05
Пользователь №: 6 150

|
Цитата(varvar @ Mar 17 2013, 09:59)  Спасибо за ответ. Вы знаете, я все-таки кое о чем догадываюсь  Может, просто плохо изложил. Мое устройство - простейший маячок. Выдает пачку сигналов, 8 тонов, с понижающейся мощностью. Каждый тон - 1...3 секунды. Радиостанция настроена на определение этого самого кода CTCSS. Этот самый CTCSS - это просто низкочастотный сигнал замешанный с полезным, в общем случае это речь, в моем - одночастотный тон. Приемник включает УНЧ, когда обнаруживает свой код CTCSS в сигнале. Ну и теперь при чем тут DTMF - там две частоты замешаны, и я поверх своей частоты хочу замешать CTCSS. Те же две частоты. Соотношение разное. Частота тонов не догма - можно как-то поиграть с ней, чтобы упростить алгоритм. Понятно, что самый простой выход - отключить CTCSS в радиостанции и все будет работать и так. Но хочется, чтобы все было красиво. И приемник включался когда он обнаружит свою посылку. В аналоговом виде это выглядит так (не мой случай, просто картинка откуда-то):
А вот что сделать, чтобы это работало в чисто цифровом виде - в этом и вопрос. И крайне желательно, чтобы без внешних компонентов - только микропроцессор. В простейшем варианте смешивают речевой сигнал с кодовым CTCSS на обычном резистивном сумматоре. Потом результат подают на модулятор. Ваш вариант еще проще. Тон в звуковом диапазоне надо замешать с одной из частот CTCSS. Я правильно понял? Т.е. фактически надо просто сгенерировать два тона одновременно? Я делал подобное с табличной генерацией синусов эмуляцией DDS на МК. Работая одновременно с двумя FTW получал сумму синусов. STM32F100C4T6 - вполне достаточно. Диапазон частот для каждого из сигналов 1 Гц - 20 КГц. Без ухищрений с ассемблером, чистый нативный Си.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|