Свежие обсуждения
Измерения

DDS генератор из журнала ELEKTOR

1 5

Набрел я как-то на октябрьскую статью 2003 года журнала ELEKTOR - DDS RF signal generator.Оригинал статьи тут: http://aliot.com.ua/uploads/dds/e03a014.pdf Очень выгодно отличалась сия конструкция наличием регулируемого цифрового аттенюатора на базе AD8321 а не просто каскадом на одном транзисторе, наличием AM и FM модуляции, толковой менюшкой и т.д и т.п.... Вобщем сама DDS-ка AD9851 была найдена очень быстро, MAX7400 (AM модуляция) вобщем тоже, AT90S8515 был успешно заменен на ATMEGA8515, немного пришлось повозиться с AD8321 - ВЧ магистральный усилитель с управлением по I2C, но тоже нашел... Вобщем приборчик был собран, но какова была обида когда он оказался полу-коммерческим. То есть та прошивка которая лежала на сайте была "несколько" облегчена, но с ней был исходник (тоже естественно облегченный). Оригинальное readme можно почитать тут: http://aliot.com.ua/uploads/dds/read_me.txt
Вырезано:
1. AM модуляция - 1kHz меандр с 15 ноги mega8515.
2. FM модуляция - программная.
3. Энкодер управляет только аттенюатором а мог бы еще и перестройкой частоты и шагом перестройки.
4. Максимальная частота ограничена 10-ю мегагерцами а могло бы быть по паспорту 71Mhz.
Вобщем более подробно можно почитать в оригинале статьи, как должно было бы быть.... Собрав в кулак волю и своего товарища отдаленно помнящего ассемблер со времен "страшного черного DOS'а" удалось побороть 4-й пункт. В итоге имеем приборчик от 50гц до 71Мгц с вводом частоты с клавиатуры и регулировкой уровня энкодером и отображением уровня в "V" и "dbM". Исправленную прошивку выложу завтра. Бедновато конечно по сравнению с оригиналом, но гораздо лучше чем все те схемы, что я видел. Вобщем меня зацепило. Работает очень стабильно, сижу играюсь уже два дня.

Ну и теперь собственно предложение к гуру программирования на ассемблере. Предлагаю дописать недостающее. Проблем возникнуть у знающего человека не должно. Ну разве что кроме пункта 2.... Тем более что собранный "в железе" один экземпляр уже есть. В итоге получим очень достойный DDS генератор функционально ничем не хуже их коммерческих аналогов.

И напоследок:

Оригинальная прошивка - http://aliot.com.ua/uploads/dds/firmware_original.zip
Моя плата - http://aliot.com.ua/uploads/dds/dds_ad9851_z15.zip - проектировалось под корпус KRADEX Z15.

 

Ну и где исправленная прошивка ?

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

В программе не понравился принцип формирования кода фазы суммированиемчастных фаз для набора частот, в результате может набежать приличная ошибка. Видимо поэтому сделано ограничение низшей частоты в 50 Гц, хотя чип может генерить хоть с 1 Гц. На мой взгляд, для вычисления фазы проще сделать умножение 32-битной заданной частоты на единичную 32-битную фазу.

В железе не понравилось использование двух кварцев 10 МГц, можно было бы обойтись одним (упростится схема и можно ВPSK/QPSK модуляцию ввести), ну и не понравился умножитель на 3, мне кажется, он даст дополнительный джиттер. А так ничо изделие, имеет право на существование.

 

В честь того что хоть кто-то заинтересовался - прошивка теперь тут: http://aliot.com.ua/uploads/dds/firmware71mhz.zip. Касаемо утроения частоты - в статье оригинале рассматривался "на словах" вариант с кварцевым генератором на 30MHz с оговоркой "если найдете". Я почти нашел... Почти Насчет программы - ничего не скажу - к сожалению не программист. Платку разработать, красиво потравить а потом довести это все "до ума" это я могу, а вот с программированием - увы. Если кому интересно выложу фото почти готового железа. Почти - это еще нет передней панели. А так - все чудесно работает.

 

electra: прошивка теперь тут
Шутите? Введённые вами исправления ничего не решают. В "исправленной" прошивке, точно так же как в оригинальной прошивке, надо ввести любую частоту от 50 Гц до 71 МГц и нажать кнопку D. Ограничений на ввод частоты нет.

 

В zip файл с исправленной прошивкой - добавил исправленный .asm Искать строки с комментарием vvv. Выглядело где-то так: "cpi r17,$0a"."0a" был заменен на FF и все заработало. Ранее при попытке ввода 11 000 000 hz контроллер сбрасывал значение на предыдущее. Так что все по-честному Как насчет дорисовать недостающее? Хотя бы ту часть про энкодер?
* - энкодер управляет шагом перестройки частоты
0 - энкодер управляет шагом перестройки частоты
# - энкодер управляет уровнем сигнала.

 

electra: Так что все по-честному
Это в оригинале сделано по-честному, а у вас неправильно. Вся математика в программе построена на BCD-числах, ну и когда вы их вычитаете, как например при уменьшении частоты энкодером, то иногда возникает заем, т.е. вы должны занять десятку из более старшей позиции, а вы занимаете шестнадцать с какого-то припрыгу.
electra: Как насчет дорисовать недостающее?
Другими словами, вы меня как бы нанимаете. Если так, то надо обговорить условия.
electra: Хотя бы ту часть про энкодер?
* - энкодер управляет шагом перестройки частоты
0 - энкодер управляет шагом перестройки частоты
# - энкодер управляет уровнем сигнала.

Зачем вам одна и та же фича от двух кнопок * и 0?

 

И снова Вы меня не поняли.... Две прошивки которые лежат и есть оригинальные но "фриварные". Единственное что у меня получилось как у не-программиста это поменять во второй прошивке в трех или четырех местах "0A" на "FF". Стал вводиться 71Mhz вместо ограничения в 10Mhz. Вот и все... Прошивку писал не я.

GM: Другими словами, вы меня как бы нанимаете. Если так, то надо обговорить условия.
Свежая мысль... Я человек достаточно состоятельный.

Хотя идею Вы, GM, к сожалению так и не поняли Если бы я просто хотел заполучить все функции за деньги - я бы просто купил бы у электоров в европе прошитый контроллер. Затея не в этом. Все мои изыскания в интернете по поиску радиолюбительского генератора до 100мгц доступного для повторения и не ограничивающегося простым выходом с DDS-ки как это было в журнале Радио - привели меня только к этой схеме. Еще чего-то видел у индусов, но чем-то не понравилось. Мне кажется конкретно этот прибор был бы достойным дополнением радиолюбительской лаборатории к такого рода open source самоделкам как RLC-2 уважаемого GO и -Johns-, обсуждаемый в соседней ветке.

Могу и нанять... А потом положу здесь же абсолютно за бесплатно. Или все таки найдутся энтузиасты?

GM: 0 - энкодер управляет шагом перестройки частоты
Ну ошибся чуть-чуть... Энкодер управляет частотой. Это я просто перечислял недостающие функции.

 

Немножко добавлю до кучи, может проще написать новую прошивку? Я сейчас как раз нечто подобное делаю, правда на AD9954 соотв там можно АМ модуляцию делать программно тк есть встроенный аттенюатор. А что из себя представляет старая прошивка? какие меню? какие возможности в плане интерфейса пользователя? нельзя скриншотов наделать?

 

Знаком етой конструкцией, думал повторить, но когда понял что софт демо, притормозил. Однако нашел сайт немца кот. сделал по новому программу на бейсике, кое что дополнил. Сайта почемуто уже нет (http://dili.dyn.ee/dds-generator/dds-generator.php).

Все все что отутуда скачал положил сюда:
http://www.mediafire.com/download.php?jamgzcmfq2z (1.85мб)
Надеюсь поможет

 

Есть все в первом посте - но повторюсь:
http://aliot.com.ua/uploads/dds/e03a014.pdf - оригинал статьи на английском, там все очень хорошо расписано, с картинками, но на английском.
http://aliot.com.ua/uploads/dds/firmware_original.zip - оригинал "урезанной" прошивки с исходником, урезан функционал с AM, FM модуляциями, функционал энкодера, введено ограничение до 10Mhz.
http://aliot.com.ua/uploads/dds/firmware71mhz.zip - измененная прошивка с исходником. Убрано ограничение в 10Mhz. Больше я не умею Умею всякого другого, а вот с программированием - увы...
http://aliot.com.ua/uploads/dds/dds_ad9851_z15.zip - моя печатная плата. Все собрано и работает.
Neekeetos: Немножко добавлю до кучи, может проще написать новую прошивку?
Под конкретно мое железо? У меня получается MEGA8515+AD9851(DDS)+AD8321(аттенюатор)+MAX7400(AM). Мои железяки купить проще, чем Вашу AD9954. И в моем случае нужно дописать "выгрызанные" куски. В исходнике все увидите....

Касаемо интерфейса - все просто и удобно. клавиатура 4x3 и энкодер. Если ввод начинается с 1-9 - то это будет воспринято как ввод частоты. подтверждаем ввод клавишей D. Клавиша "*"- переключает энкодер в регулировку шага частоты (вырезано). Клавиша "0" (с нуля частота не может начинаться) переключает энкодер в регулировку частоты согласно выбранного шага (вырезано). Клавиша # переключает энкодер в режим регулировки уровня (работает). Клавиша "A" AM/FM/off модуляция (вырезано). Клавиша "B" переключает формат отображения уровня V/dBm (работает). Клавиша "С" переключает девиацию для FM, C0-C9, C0 - 3kHz, C1-9 10-90kHz соответственно (вырезано) . Лучшего придумать довольно тяжело. Все помещается на дисплее 16x2 без каких либо листаний. Если хотите - завтра сфотографирую. Знающему человеку дописать секцию про энкодер чтобы прибор реагировал дожным образом на клавиши #0* труда составить не должно. AM модуляцию по нажатию "A" и "засветить" меандр на 1kHz c 15ноги меги - думаю тоже невелика проблема. Вот с FM - думаю будет сложнее...