roboforum.ru

Технический форум по робототехнике.

Фазовый модулятор двоичного сигнала

Фазовый модулятор двоичного сигнала

lfway » 27 июн 2012, 10:50

Здравствуйте. Мне нужно сделать фазовый модулятор двоичного
сигнала, который бы управлял миганием светодиода.
Как я понимаю, просто генерить *дуиной сигнал по таймеру -
плохая идея: нужна несущая частота. Нагуглить не выходит,
не будучи профи трудно понять, с чего вообще начать.

Как сделать генератор несущей частоты?
Как соединить его с дуиной?

Посоветуйте, если кто знает, с чего вообще начать? Где искать инфу?

Re: Фазовый модулятор двоичного сигнала

elmot » 27 июн 2012, 12:13

Дуиной и сделать. Не надо отдельного генератора. У любого МК есть тактирование, т.е. некоторая частота уже есть. Дальше просто пишем алгоритм.
Можно, конечно инфу искать, а можно просто головой подумать и алгоритм сделать. Это же учебная задача? От вас этого и хотят - сделать простенький алгоритм, реализующий ФМ.

Re: Фазовый модулятор двоичного сигнала

lfway » 27 июн 2012, 17:50

Это не учебная задача. Просто хочу попробовать передать информацию таким "кустарным" методом, посмотреть что из этого получится =) Спасибо за совет, попробую понять что за тактирование и как мне его применить.

Добавлено спустя 42 минуты 31 секунду:
elmot, Вы пишите: "далее просто пишем алгоритм..."

Как написать алгоритм который бы управлял сдвигом фазы мне понятно, мне не понятно как привязать его к тактированию. Можно делать всё это в цикле с задержками по таймеру, но это через чур уж криво, даже на костыль не тянет. Как мне созданный сигнал поставить в очередь на выполнение в жесткий, независящий от работы программы такт? Например, если взять период колебания 1 секунда и сдвиг 0.5 секунды для кодирования сигнала.

Я очень надеюсь, что вопрос сформулирован более-менее понятно.

Re: Фазовый модулятор двоичного сигнала

legion » 27 июн 2012, 17:54

Если задача стоит "плавно помигать светодиодом", то фазовая модуляция не нужна. Используйте широтно-импульсный модулятор, он же ШИМ, он же PWM. Ознакомление с микроконтроллерами советую начать с курса DIHALTa. Возможно, обойдетесь без ардуино, задача решается практически "голым" МК.

Re: Фазовый модулятор двоичного сигнала

lfway » 27 июн 2012, 18:04

legion, мне нужно передать фазомодулированный сигнал на расстояние. Как его принять - отдельная, понятная мне задача.

Мне не понятно, как его привязать к жесткой частоте. DIHALT - мощный мужчина))) но у него в блоге про это нет, к сожалению(

От ардуино, я, конечно, откажусь в будущем, но оно очень уж хорошо в прототипировании.

Добавлено спустя 48 секунд:
... и к тому же, оно есть, что немаловажно)))

Re: Фазовый модулятор двоичного сигнала

elmot » 27 июн 2012, 18:48

Ссылку дайте, где подробнее ваша модуляция описана. Как-то подзабыл с институcких времен, как оно должно быть.

legion, фазовая модуляция и ШИМ ну очень разные вещи. при помощи ФМ "плавно помигать" не выйдет. С точки зрения ШИМ - ФМ-модулированный сигнал - это скважность 50%, но на нестабильной частоте. Кажется так.

Re: Фазовый модулятор двоичного сигнала

Dmitry__ » 27 июн 2012, 19:02

Несущая частота какая? Частота модуляции какая? Фазовая модуляция двоичным сигналом - фазовая манипуляция :)
Если манипуляция 2-х уровневая (0,1), то фаза меняется на 180 или 90 град. Делается элементом xor (программно)
На 1-й вход - несущая, на 2-й вход модуляция.
Пля, неужели я это из головы взял, а не из вики? Какой я умный :oops: :crazy:

Re: Фазовый модулятор двоичного сигнала

legion » 27 июн 2012, 19:12

elmot, я понимаю, но в изначальном ТЗ говорилось про управление миганием и не говорилось, что нужно именно посредством ФМ. Вот и предложил.

Хотя, может и говорилось. В любом случае, ситуация-то проясняется! =)

Re: Фазовый модулятор двоичного сигнала

Duhas » 27 июн 2012, 20:03

ммм, два таймера.. 1 на 50% скважности, вторым 50/0 модулируем.. выходы таймеров xor-ить.. Получится ?

Re: Фазовый модулятор двоичного сигнала

Romikgy » 27 июн 2012, 21:32

определились бы частотой несущей.... и фазовая манипуляция это сдвиг фазы или 0 или 180....

Re: Фазовый модулятор двоичного сигнала

lfway » 27 июн 2012, 22:52

Всем спасибо за отклик!

elmot, Фазовая модуляция это вот что:
Изображение
или http://www.chipdip.ru/video.aspx?vid=ID000276334&searchtext=%D1%84%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%8F+%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8Fили Изображение.

Dmitry__, всё верно) но как это применить к ардуине и цифровому сигналу)

Duhas, любой лаг программы может привести к обрушению передачи, поэтому таймеры не подходят, как я понимаю.

Romikgy, что значит "вы бы определились с несущей"? с самой частотой? да это не важно, пусть будет 1 Гц. Про то что нужно сделать сдвиг на 180 я понял. Мне не хватает знаний, как это вколотить в железо так, чтобы была несущая, независимая от программы. Чтобы основная программа генерила стек, а непосредственно передача шла максимально отдельно.

Re: Фазовый модулятор двоичного сигнала

Duhas » 27 июн 2012, 22:58

мм, а что может быть надежнее по времени срабатывания чем таймер + прерывание? если есть и другие задачи для чипа ..

таймер - аппаратный..

Re: Фазовый модулятор двоичного сигнала

Dmitry__ » 27 июн 2012, 23:51

Romikgy писал(а):что значит "вы бы определились с несущей"? с самой частотой? да это не важно, пусть будет 1 Гц.

Что значит неважно? Для 1 Гц. легко делать на прерывании. Будет определенное дрожание фазы (джиттер), но для последовательных программ по-другому невозможно. Определяйся с нужной точностью. Примерный алгоритм для 1 гц:
Настроить таймер на 1гц*2, настроить прерывание от этого таймера.
В прерывании от таймера:
Инвертировать или не трогать выход в соответствии с подготовленным флагом. Так надо делать, чтоб была минимальная задержка и дрожание фазы зависящее от ветки исполнения программы.
Сигнал поменяли, теперь можно спокойно готовить флаг для след. прерывания:
Если между битами данных есть изменение уровня, то выставляем флаг, иначе сброс.
Фсе :pardon:
Цифровой выход фильтровать rc цепью.
И плохо не отвечать на вопросы, или считай себя "самым умным" и не спрашивай, или отвечай на наводящие вопросы.
Например, этот алгоритм идет лесом если частота модуляции не кратна удвоенной частоте несущей.

Re: Фазовый модулятор двоичного сигнала

lfway » 28 июн 2012, 13:36

Duhas, Dmitry_

Спасибо за ответы. Если таймер аппаратный, возможно, это то что нужно. Спасибо за наводку на счёт прерываний.

Касаемо наводящих вопросов. Я не знаю пока про частоту=)) Я бы с удовольствием ответил на все наводящие вопросы) Сначала я реализую с частотой 1Гц. Когда успешная передача и приём будут сделаны, буду изучать возможность для максимального увеличения частоты и квадратурно-фазовую модуляцию.

"Так надо делать, чтоб была минимальная задержка и дрожание фазы зависящее от ветки исполнения программы." - вот это меня и беспокоило, когда я в начале писал про несущую частоту..

Re: Фазовый модулятор двоичного сигнала

dccharacter » 28 июн 2012, 14:40

В детали пока не вник, но то, что нарисовано на картинке реализуется в железе на контроллерах с DSM - Data Signal Modulator (пример такого МК - pic16f1827). Вопрос в том, где взять синус :-)
На STM32 я думаю, можно генерить синус железный и просто инвертировать полярность, через, например, DMA, т.е. сделать это все в железе полностью.

(там же есть синус да? он же мне не привиделся?)

Добавлено спустя 2 минуты 17 секунд:
http://interface.khm.de/index.php/lab/e ... generator/


Rambler\'s Top100 Mail.ru counter