PDA

Просмотр полной версии : DDS на микроконтролере



Юрий(UR5VEB)
19.05.2008, 07:32
И все же кто нибудь сделал синтезатор на все диапазоны, применяя в петле ФАПЧ в качестве опоры DDS на микроконтролере?
В ветке по ППП Veles применил в трех диапазонном варианте 160/80/40м. Вот ссылка на страницы форума, где шло обсуждение
http://forum.cqham.ru/viewtopic.php?t=7391&postdays=0&postorder=asc&&start=1185
Может кто развил это направление глубже и на все диапазоны?
Вот еще ссылки. Может они заинтересуют многих.
http://www.telesys.ru/electronics/projects.php?do=p035
http://www.geocities.com/pa2ohh/04dds1.htm
А вот ссылка, где применяется ПК и звуковая карта в качестве опоры DDS. То же интесно для SDR-ков.
http://www.geocities.com/pa2ohh/03ddsrx1.htm
Прошу высказываться.

sgk
19.05.2008, 08:36
И все же кто нибудь сделал синтезатор на все диапазоны, применяя в петле ФАПЧ в качестве опоры DDS на микроконтролере?

Вот ссылка
http://forum.cqham.ru/viewtopic.php?t=4298&postdays=0&postorder=asc&&start=0

Или вопрос в том что функции DDS реализует микроконтроллер, а зачем? В чем преимущество в сравнении с реализацией в серийно выпускаемых микросхемах?



….
А вот ссылка, где применяется ПК и звуковая карта в качестве опоры DDS. То же интесно для SDR-ков.
http://www.geocities.com/pa2ohh/03ddsrx1.htm
Прошу высказываться.

Юрий, извините, не увидел что звуковая карта в качестве опоры для DDS.
Сергей sgk.

Юрий(UR5VEB)
19.05.2008, 09:11
Вот ссылка
http://forum.cqham.ru/viewtopic.php?t=4298&postdays=0&postorder=asc&&start=0

Это на специализированных МС.


Или вопрос в том что функции DDS реализует микроконтроллер, а зачем? В чем преимущество в сравнении с реализацией в серийно выпускаемых микросхемах?
Вот именно МК. И вот почему.
1. Многим по разным причинам не доступны спец. МС.
2. Многим трудно паять эти МС.
3. Дешевле.


Юрий, извините, не увидел что звуковая карта в качестве опоры для DDS.
Сергей sgk.
Извиняюсь, перепутал.

Но суть применения звуковой карты та же, что и МК. Использовать один из выходов для подачи генератора опоры в схему сравнения.

И еще вопрос. А если генератор опоры делать в МК по другому без ЦАП, а с применением ДЕЛЬТА-модулятора. Удасться ли это на частоте 28-32кГц и с дискретностью 0.01Гц?

19.05.2008, 10:41
нет разрядности не хватит, в принципе не понимаю 2R2 матрица из подобраных резисторов неплохо работает. идея не лишена смысла можно применить что-то типа attiny2313 8бит 2R2 в место AD****. единственное мне кажется стремление на этом МК еще и управление все сделать надо пресечь. тем более что стоит он порядка 70р.

Юрий(UR5VEB)
19.05.2008, 11:36
нет разрядности не хватит, в принципе не понимаю 2R2 матрица из подобраных резисторов неплохо работает. идея не лишена смысла можно применить что-то типа attiny2313 8бит 2R2 в место AD****. единственное мне кажется стремление на этом МК еще и управление все сделать надо пресечь. тем более что стоит он порядка 70р.
Так конечно можно управление на другом МК. А конечно хочется DDS собрать на серии DIP8 ATTiny. Вот бы здесь и пригодилось бы вывод по одному порту.

Юрий(UR5VEB)
19.05.2008, 15:38
И вопрос. А надо ли обязательно на выходе такого DDS на МК синус. Ведь как известно в обычных МС DDS на выходе прямоугольный сигнал и потом только с помощью ФНЧ получаем синус. Так ведь и с МК можно так поступить. В лучшем случае даже поставить ПФ на ту полосу частот сравнения.

RV3DLX
19.05.2008, 16:10
To UR5VEB:
Юрий, все специализированные микросхемы DDS имеют на выходе синусоидальный, а не прямоугольный сигнал. Эта синусоида состоит из мелких ступенек, вот что бы их сгладить и пропускают сигнал через ФНЧ, а уж потом для получения "меандра" синусоиду подают на компаратор. Многие микросхемы DDS имеют в своем составе компаратор.
Юрий.

PICachu
19.05.2008, 20:22
Единственный недостаток низкочастотного DDS на контроллере - практически неконтролируемый джиттер, т.е. дрожание фазы. Но если контроллер использовать только как DDS (без каких либо других функций) - по-идее должно получиться.

Юрий(UR5VEB)
19.05.2008, 21:20
To UR5VEB:
Юрий, все специализированные микросхемы DDS имеют на выходе синусоидальный, а не прямоугольный сигнал. Эта синусоида состоит из мелких ступенек, вот что бы их сгладить и пропускают сигнал через ФНЧ, а уж потом для получения "меандра" синусоиду подают на компаратор. Многие микросхемы DDS имеют в своем составе компаратор.
Юрий.
Посмотрел документацию и убедился что синус. 10 разрядов ЦАП.

Единственный недостаток низкочастотного DDS на контроллере - практически неконтролируемый джиттер, т.е. дрожание фазы. Но если контроллер использовать только как DDS (без каких либо других функций) - по-идее должно получиться.
Ну и Veles в этом убедился и переделал программу так, что бы не было дрожания фазы. А то при перестройке кратковременно рвалась ФАПЧ. Надо внимательно изучить его код и вносить изменения осторожно. Но все же в него и кнопки, валкодер и связь по СОМ-порту работают.

UB9HCE
20.05.2008, 06:33
Единственный недостаток низкочастотного DDS на контроллере - практически неконтролируемый джиттер, т.е. дрожание фазы. Но если контроллер использовать только как DDS (без каких либо других функций) - по-идее должно получиться.
Без больших осложнений от джиттера можно избавится программно. Сам столкнулся с этой проблемой когда попросили генератор собрать, но быстро устранил джиттер.

Юрий(UR5VEB)
20.05.2008, 06:40
Единственный недостаток низкочастотного DDS на контроллере - практически неконтролируемый джиттер, т.е. дрожание фазы. Но если контроллер использовать только как DDS (без каких либо других функций) - по-идее должно получиться.
Без больших осложнений от джиттера можно избавится программно. Сам столкнулся с этой проблемой когда попросили генератор собрать, но быстро устранил джиттер.
Так поделитесь опытом на каком то примере и коллеги будут только благодарны!

UB9HCE
20.05.2008, 07:16
Да, я уже понял что будут вопросы. К сожалению исходника не осталось сейчас вот сижу думаю или принцип объяснить, или пример набросать...

1) Завести таймер-счетчик, настроить прерывания по совпадению, сам таймер-счетчик настроить на "сброс по совпадению"

2) Т.к. таймер-счетик считает без останова, то привязавшись к его показаниям можно выставлять значения с равными периодами.

Юрий(UR5VEB)
20.05.2008, 07:26
Да, я уже понял что будут вопросы. К сожалению исходника не осталось сейчас вот сижу думаю толи принцип объяснить, толи пример набросать...

1) Завести таймер-счетчик, настроить прерывания по совпадению, сам таймер-счетчик настроить на "сброс по совпадению"

2) Т.к. таймер-счетик считает без останова, то привязавшись к его показаниям можно выставлять значения с равными периодами.
Так исходник есть от Veles-а. Вот ссылка http://forum.cqham.ru/download.php?id=8186
Это его конечный вариант здесь на форуме. Я еще глубоко не вникал, да и опыта с МК еще очень мало. Еще бы добавить индикацию на ЖКИ и коммутацию диапазонов, то было бы хорошо. Аль коль не получится, то не беда для управления отдельный МК.

UB9HCE
20.05.2008, 07:37
На ассемблере (хм...), нужно сразу на си писать, асм пустая трата времени...

Какая частота обновления значений нужна?

sgk
20.05.2008, 08:39
....
Посмотрел документацию и убедился что синус. 10 разрядов ЦАП.
...

Юрий, здравствуйте.
Посмотрите
http://www.analog.com/UploadedFiles/Data_Sheets/AD9951.pdf
http://www.analog.com/UploadedFiles/Data_Sheets/AD9912.pdf
Синус 14 разрядов, парафазный выход, фазовый шум -145 дБ на 50 МГц при отстройке на 1 кГц.
Мои опыты по измерения спектров зеленый цвет это когда опора на AD9952
http://forum.cqham.ru/download.php?id=2515 7
В отношении "достоваемости" если хотите можно заказать микросхемы.
DDS на микроконтроллере будет как минимум иметь худшие на порядок характеристики, но в награду будет удовольствие от сделанной работы. :D
Сергей sgk.

20.05.2008, 09:05
да Денис все не оставляет нас и других людей эта затея. :)
у меня вроде твой исходник-ядро программы сохранился дома на компе, там описан твой принцип (я бы на твоем месте вообще на патент подавал и не парился)
впринципе никакх джиттеров все получается замечтательно самоеглавное выбор тактовой частоты хыхы...
чтобы пересчет было делать удобно... хыхы
там ты совсем изгольнулся - респект!

PICachu
20.05.2008, 09:11
Да, я уже понял что будут вопросы. К сожалению исходника не осталось сейчас вот сижу думаю или принцип объяснить, или пример набросать...

1) Завести таймер-счетчик, настроить прерывания по совпадению, сам таймер-счетчик настроить на "сброс по совпадению"

2) Т.к. таймер-счетик считает без останова, то привязавшись к его показаниям можно выставлять значения с равными периодами.

Только надо учесть, что для формирования синусоиды частота смены кода порта должна быть как минимум в два раза выше выходной частоты. При использовании 16 разрядного таймера сложно получить шаг сетки частот меньше 10 Гц - либо получается большой шаг, либо не хватает разрядности таймера. Причем по каждому прерыванию от таймера должна происходить выборка значения синусоиды из таблицы. Кстати, можно использовать самое простое прерывание по переполнению счетчика, а частоту устанавливать начальным значением.

UB9HCE
20.05.2008, 10:01
Да, я уже понял что будут вопросы. К сожалению исходника не осталось сейчас вот сижу думаю или принцип объяснить, или пример набросать...

1) Завести таймер-счетчик, настроить прерывания по совпадению, сам таймер-счетчик настроить на "сброс по совпадению"

2) Т.к. таймер-счетик считает без останова, то привязавшись к его показаниям можно выставлять значения с равными периодами.

Только надо учесть, что для формирования синусоиды частота смены кода порта должна быть как минимум в два раза выше выходной частоты. При использовании 16 разрядного таймера сложно получить шаг сетки частот меньше 10 Гц - либо получается большой шаг, либо не хватает разрядности таймера. Причем по каждому прерыванию от таймера должна происходить выборка значения синусоиды из таблицы. Кстати, можно использовать самое простое прерывание по переполнению счетчика, а частоту устанавливать начальным значением.
Вы не поняли прицип устранения джиттера, либо я Вас не понял :)

UB9HCE
20.05.2008, 10:03
да Денис все не оставляет нас и других людей эта затея. :)
у меня вроде твой исходник-ядро программы сохранился дома на компе, там описан твой принцип (я бы на твоем месте вообще на патент подавал и не парился)
впринципе никакх джиттеров все получается замечтательно самоеглавное выбор тактовой частоты хыхы...
чтобы пересчет было делать удобно... хыхы
там ты совсем изгольнулся - респект!
Да, было дело :)
Найдешь исходник скинь мне на мыло.

20.05.2008, 10:03
интресно а цифровой потенциометр можно использовать в виде ЦАП например AD5235 20нс такт и 10нс установка значения.
по SPI передавать.

UB9HCE
20.05.2008, 10:05
Можно если у него "защелка" будет внешняя, либо если значение только после записи устанавливается. Но при этом максимальная частота падает.

20.05.2008, 10:26
я вот только не помню у нас то была блокировка ФАПЧ детектора помоему вообще не было.
нашел интересную статью РА0КLT
http://hamradio.nikhef.nl/afdeling/zaanstreek/techweb/paoklt1_files/Afstem%20(3).htm

PICachu
20.05.2008, 15:44
Да, я уже понял что будут вопросы. К сожалению исходника не осталось сейчас вот сижу думаю или принцип объяснить, или пример набросать...

1) Завести таймер-счетчик, настроить прерывания по совпадению, сам таймер-счетчик настроить на "сброс по совпадению"

2) Т.к. таймер-счетик считает без останова, то привязавшись к его показаниям можно выставлять значения с равными периодами.

Только надо учесть, что для формирования синусоиды частота смены кода порта должна быть как минимум в два раза выше выходной частоты. При использовании 16 разрядного таймера сложно получить шаг сетки частот меньше 10 Гц - либо получается большой шаг, либо не хватает разрядности таймера. Причем по каждому прерыванию от таймера должна происходить выборка значения синусоиды из таблицы. Кстати, можно использовать самое простое прерывание по переполнению счетчика, а частоту устанавливать начальным значением.
Вы не поняли прицип устранения джиттера, либо я Вас не понял :)

Просто мне кажется, что при использовании прерывания с дрожанием фазы бороться бесполезно. Это следует из принципа обработки прерывания, например в AVR (про другие МК не знаю). При одном и том же прерывании переход на исполнение процедуры происходит не мгновенно, а зависит от того места кода, где "застигло" это прерывание. Получается, что когда без всяких прерываний "тики" считаешь и то не всегда попадаешь, а в прерывании так все сложно предугадать.

Genadi Zawidowski
20.05.2008, 16:03
интресно а цифровой потенциометр можно использовать в виде ЦАП например AD5235 20нс такт и 10нс установка значения.
по SPI передавать.
Ну уж точно проще тогда AD9834 купить за 270 рублей (~11 USD) и не париться... по SPI передавать код частоты.

UB9HCE
20.05.2008, 18:31
Просто мне кажется, что при использовании прерывания с дрожанием фазы бороться бесполезно. Это следует из принципа обработки прерывания, например в AVR (про другие МК не знаю). При одном и том же прерывании переход на исполнение процедуры происходит не мгновенно, а зависит от того места кода, где "застигло" это прерывание. Получается, что когда без всяких прерываний "тики" считаешь и то не всегда попадаешь, а в прерывании так все сложно предугадать.
Вы правы переход на подпрограмму не мгновенен:
1) до 4 тактов на завершение выполняемой команды
2) 4 такта на сохранение указателя
3) 3 такта на переход (2 в меге8 и меге8515)
4) сама подпрограмма
5) и 4 такта на восстановление указателя

, эти не однозначные задержки как раз и можно скомпенсировать программно. Если писать на асме думаю можно уложится в цикл обновления значений по 14-16 тактов. Раньше я компенсировал сам джиттер и мне не нужно было оптимизировать подпрограмму, а сейчас кроме компенсации нужно оптимизировать подпрограмму для минимального времени обновления значений в порту. Чуть позже появится время посижу, на асме давно не писал...

Юрий(UR5VEB)
20.05.2008, 19:52
Юрий, здравствуйте.
Посмотрите
http://www.analog.com/UploadedFiles/Data_Sheets/AD9951.pdf
http://www.analog.com/UploadedFiles/Data_Sheets/AD9912.pdf
Синус 14 разрядов, парафазный выход, фазовый шум -145 дБ на 50 МГц при отстройке на 1 кГц.
Мои опыты по измерения спектров зеленый цвет это когда опора на AD9952
http://forum.cqham.ru/download.php?id=2515 7
В отношении "достоваемости" если хотите можно заказать микросхемы.
DDS на микроконтроллере будет как минимум иметь худшие на порядок характеристики, но в награду будет удовольствие от сделанной работы. :D
Сергей sgk.
Сергей, Ваши опыты я всегда смотрю на форуме и они действительно прекрасные. И применение специализированных DDS я то же приветствую. Только нужно оно многим или нет решают сами коллеги. Не всегда есть возможность и денежная и доставательная для многих, особенно на переферии в глубинке, к которой и я отношусь. Да и приобретя такой девайс, а кто запаяет? Ведь многие из нас уже довольно в приличном возрасте и зрение уже ни к черту. Тут уже и с DIP корпусами трудности :? К кому то обратитья за помощью, так в нашем поселке и нет таких специалистов, что бы запаял. Есть только одна ремонтная мастерская по мобильникам да и этот парень еще не набрал опыта и больше портит тот мобильник, чем что то заменит из МС. Хоть имеет паяльную станцию. Приобретать синтезатор это то же не дело. Я конечно приобрел себе, хоть по параметрам не очень(AD9851) но для меня не столь нужны параметры. Я не спортцмен и не DX-мен. Просто послушать коллег и пообщаться по нашим радиоделам. Так вот а как остальным быть? Вот коли есть такая возможность построить синтез на одном или двух МК и при том дешевых, а у многих их может и собралось в загашниках с разной аппаратуры, не пустить у дело. Пускай с самым простым сервисом типа перестройка, переключение бендов и отображение частоты. И заменить ту же цифровую шкалу, коль она есть. Или в новые собираемые простые приемники и ТРХ. Ведь спроси сейчас, нужен ли такой простой синтез для того же Аматора или для того же ТПП, так сразу же откликнется многие желающие. Да и так в разных ветках форума этот вопрос неоднократно встает.
Основа уже есть для ТПП на три бенда. Так продолжим эту основу развивать далее.

Юрий(UR5VEB)
20.05.2008, 20:33
Посмотрел програмку. МК обрабатывает события по прерываниях по четырем портам:
валкодер 2 порта
переключатель диапазонов
порт UART
Два порта PB4 и PB5 задействованы для двух кнопок. Эти кнопки наверно для изменения шага перестройки.
Свободных незадействованных портов более нет.
Так как порт UART я думаю в простом синтезе без надобности, его можно исключить и на эти два порта прицепить простой однострочный ЖК от телефонов с АОН. Если выбросить подпрограмму от UART, то появится 256 байт места. Влезут сюда процедуры для работы с ЖК? И не повлияет ли это введение на стабильность работы самого генератора синуса?
Смотрю я на константы по сетке шага по диапазонам. 160 и 80 кратны двум а уже 40 кратности 2 не относится. Почему?
Можно ли уменьшить шаг. Ведь в сходных генераторах минимальный шаг возможен до 0,07Гц. А в одной схеме даже 0,01Гц но до частот 50кГц.
Нужно как то заставить свои полторы руки собрать генератор на макетке :? И пробовать.

UB9HCE
21.05.2008, 07:24
Вчера вечером не много подумал, на вскидку период обновления, при использовании прерывания и компенсации джиттера программным методом, получился 17 тактов, т.е. при 16 Мгц тактовой:
16 000 000 / 17 ~= 941176 Гц, при этом накопитель фазы 24 бита, т.е. шаг перестройки ~0.056Гц.

21.05.2008, 07:34
а потом ты выбрал частоту тактовую :) 11059,2

UB9HCE
21.05.2008, 07:44
Можно и её выбрать, нужно знать ещё какая частота сравнеия ФАПЧ?
С одной стороны чем ниже тактовая тем меньше шаг, с другой стороны чем меньше тактовая тем хуже формируемый сигнал.

21.05.2008, 07:46
да куда уж в милигерцы то. Частота детектора 100кгц.
Вменяемые шаги 1-10-100-1000гц

UB9HCE
21.05.2008, 07:59
При частоте сравнения 100 кГц, шаг перестройки желательно наверное ещё меньше, хотя тут то же нужно определится что нужно. Т.е. если остановится на шаге 0.056Гц, то минимальный шаг выходной частоты синтезатора на 10 МГц будет (10МГц/100кГц и умножить на 0.056Гц) 5.6 Гц, а на 30 - 16,8Гц...
Поэтому если нужно на 30 МГц иметь шаг 1 Гц, шаг DDS должен быть 0,0033Гц

UB9HCE
21.05.2008, 09:33
Обеденный перерыв прошел удачно, 16 тактов и накопитель фазы 32 бита. Меньше 16 думаю не получится...

Veles
21.05.2008, 14:03
А у меня 14! :crazy:

UB9HCE
21.05.2008, 15:06
У меня обработчик вынесен в прерывание, соответсвенно основная программа не завист от него, смена значений ровно 16 тактов не больше не меньше :) смена частоты так же ни как не влияет :)
Без использования прерывания можно в 12 уложиться :)
Хотя думаю оставить 18 и писать спокойно на Си...

ex RL7/ A-Ata
24.09.2008, 15:08
Вопрос по сходной теме. Обычный ГПД,варикап,логическ ое устр.перестройки с помощью валкодера...знаю,что такая комбинация возможна. На CQHAM ничего подобного не нашёл(вродь смотрел внимательно).Подскаж ите пж ссылку.

Юрий(UR5VEB)
24.09.2008, 20:34
To Vik1949.
Если Вы имеете лог.устройство микроконтролер, то можно выполнить вот такую электронную настройку:
http://forum.cqham.ru/viewtopic.php?t=1635 7
Если на обычной логике, то по моему я такое видел в старых журналах Радио.
А вообще очень бы неплохо было бы, если кто нибудь обьединил в общее устройство на микроконтролере как и цифровая шкала и узел элекронной настройки и ЦАПЧ.

ex RL7/ A-Ata
25.09.2008, 00:06
вообще очень бы неплохо было бы, если кто нибудь обьединил в общее устройство на микроконтролере как и цифровая шкала и узел элекронной настройки и ЦАПЧ.Cпасибо,Юрий!Ид ея уже подавалась...Понятно !Тамошнюю заZIPованную ссылку открыть не смог,интересно что там спрятано.Да и последнее сообщение там датировано 28.7....больше ничего нового не поступало.

Юрий(UR5VEB)
25.09.2008, 01:56
....Тамошнюю заZIPованную ссылку открыть не смог,интересно что там спрятано.
Да, качается тот файл с перебоями. Возможно у Вас он не докачался. Нужно качать не браузером, а отдельной качалкой. Плохо что вложенные файлы на форуме CQHAM не имеют возможности докачки.
В том архиве прошивка, схема, печатки и фото с разных ракурсов на плату.

R0SBD
25.09.2008, 07:21
ЦАПЧ для ГПД на МК - в ж. Радиохобби №3 за 2007 , стр. 33.

R0SBD
12.03.2010, 13:46
Мини dds на 16f84 : http://www.giangrandi.ch/electronics/articles/articles.shtml В самом низу открывшейся страницы, слева описание, справа - программа для микроконтроллера и исходник.

RN6LKU
13.03.2010, 11:04
Фрагмент картинки с сайта http://pa2ohh.com/09qrx1.htm

<<только не знаю, КАК это СЮДА попало, наверное, было открыто несколько закладок, а я хотел в другое место и промазал>>