Автор: с2. Опубликовано в Измерения

DDS синтезатор на AD9850, привлекает радиолюбителей своей простотой и возможностями.
Обычно цифровые генераторы частоты, в которых требуемое значение частоты устанавливают с помощью клавиатуры, как правило, выполнены на микроконтроллере, диапазон генерируемых частот ограничен несколькими мегагерцами, а получение точного значения частоты в широких пределах затруднительно. Описываемый в статье генератор тоже содержит микроконтроллер, но использован он только для управления специализированной микросхемой — синтезатором частоты AD9850 . Применение этой микросхемы позволило расширить диапазон генерируемых частот от 0Hz до 40 МНz, в пределах которого можно получить любое значение частоты с точностью 1Hz.

Структурная схема синтезатора AD9850 изображена на рис. 1. Его основа — аккумулятор фазы, формирующий код мгновенной фазы выходного сигнала. Этот код преобразуется в цифровое значение синусоидального сигнала, который с помощью ЦАП превращается в аналоговый и подвергается фильтрации. Компаратор позволяет получить выходной сигнал прямоугольной формы. Его частота fout (в герцах) определяется формулой

Fout — выходная частота, Hz ;
Fin — тактовая частота, Hz ;
∆ – 32-битное значение кода частоты.
Максимальное значение Fout не может превосходить половины тактовой частоты.
Основные технические характеристики AD9850 (при напряжении питания 5В).
2 выходных сигнала
Частота тактового генератора, МНz: 1…125
Максимальный потребляемый ток (при fin=125 МГц), мА 95
Число разрядов ЦАП 10
Максимальный выходной ток ЦАП (при Rset=3,9 кОм), мА 10,24
Максимальная интегральная нелинейность ЦАП, МЗР 1
Компаратор имеет подстройку, переменным резистором R13.
Напряжение на выходе компаратора, В:
минимальное высокого уровня 4,8
максимальное низкого уровня 0,4
Для загрузки данных в микросхеме AD9850 предусмотрены параллельный и последовательный интерфейсы.
В последнем случае данные (слово длиной 40 бит) вводят через ее вход DАТА.
Каждый бит данных сопровождают импульсом положительной полярности на входе синхронизации W_CLK.
После загрузки управляющего слова по импульсу положительной полярности на входе F U _ U D происходит замена параметров генерации новыми..
Принципиальная схема управления генератором изображена на рис. 2.
Управляет синтезатором DD2 микроконтроллер DD1.
Управление происходит с помощью энкодера Sk1 с кнопкой Кн0, и дополнительных кнопок Кн1 – Кн6.
Вращая ручку энкодера вправо или влево, производим изменение частоты на экране ЖКИ прибора, и одновременно получаем это же значение частоты в виде прямоугольника и синуса на выходе схемы.
Кн0 * задает шаг установки частоты с помощью энкодера Sk1 (1Hz, 10Hz, 100Hz, 1kHz, 10kHz, 100kHz, 1MHz, выбор значений по «кольцу» , данный режим работы кнопки Кн0 * актуален только в версии программы 1.0).
Значение выходной частоты выставляется с точностью порядка 1Hz, что достаточно для большинства случаев.
Кнопки Кн1 – Кн6, это кнопки быстрого доступа, с их помощью можно устанавливать определенную частоту генератора одним нажатием кнопки.
Каждая кнопка Кн1 – Кн6, это есть ячейка с памятью.
В них прописывается значение частоты следующим образом: сначала устанавливаем нужную нам частоту на экране ЖКИ с помощью энкодера Sk1,
нажимаем и длительно удерживаем Кн0 , на экране появится надпись «record» , не отпуская Кн0, нажимаем любую кнопку Кн1 – Кн6 нужной нам ячейки, на экране это будет отражено надписью «is made», запись в ячейку произведена.
Введенные в ячейки значения частоты сохраняются в энергонезависимой памяти микроконтроллера.
А так же еще следует знать, что при старте МК всегда считывается установка частоты с ячейки Кн1.
А значение, записанное в ячейке кнопки Кн6, управляет выходом РD7(13 ножка МК), которое в свою очередь по цепочке D1 R1 отключает генерацию прямоугольного сигнала генератора AD9850.
К сожалению, DDS выдаёт побочные сигналы, уровень которых зависит от тактовой и выходной частот (при частоте более 5MHz (или любое значение частоты, внесенное в ячейку Кн6) по цепочке D1 R1 можно с МК подать лог . 1 , при этом не будут, вносится искажения в синусоидальный сигнал генератора, это в случае если это требуется пользователю прибора, в противном случае цепочку из деталей D1 R1 не устанавливать).
FUSE:
Программа написана для работы МК на тактовой частоте 8 МГц. МК тактируется от внутреннего RS осциллятора.


Примеры работы генератора, в фотографиях.
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
Небольшое видео, работы программы управления и генератора, в разных режимах управления частотой.
Доводилось ли вам когда-либо настраивать фильтры? А лазать по каскадам, выискивая, в котором происходит завал частоты? А делать всё это, не имея при этом измерителя АЧХ? Мне вот доводилось и не раз, штука, скажу я вам, крайне неприятная.
На выручку, конечно, приходят конструкции генераторов из старых журналов радио, но как показала практика, у них целый ряд недостатков, с которыми мирится попросту невозможно, а именно: очень маленький диапазон перестройки, очень узкая полоса качания, нестабильность частоты на ВЧ, слишком высокий нижний предел частоты (ЗЧ не покачаешь), точность установки частоты и диапазона качания желает лучшего, габариты и энергопотребление… ну и те..де…
Одним прекрасным утром меня такой расклад перестал устраивать, что и сподвигло сотворить данную конструкцию. Итак, для начала были поставлены цели:
- Простота в сборке и минимум компонентов.
- Использование того, что было под рукой.
- Небольшие габариты (так как на столе для приборов место не бесконечно).
- Простота управления (отсутствие лишних кнопок и бредовых функций).
- Интуитивно понятный интерфейс.
- Диапазон генератора от 20 Гц до 40 МГц.
- Полоса качания от 255 Гц до 39 МГц.
- Минимальный шаг перестройки 1 Гц.
Пошуршав по сусекам с радиодеталями, были выбраны следующие компоненты:
- Микроконтроллер PIC16F73
- Дисплей символьный, 1 строка, 16 символов.
- Китайский модуль DDS на базе AD9850 и опорника на 125 МГц (стоит
10$ на AliExpress).
Определившись с компонентами и выкурив даташит на DDS, а так же набросав схемку,
![]()
приступил к программированию прошивки.
Скажу сразу, тут я выкладываю прошивки версии от 1.3, так как всё, что было до этого, получалось не совсем удобным и не везде функциональным.
Собственно, что же должен представлять из себя прибор? В первую очередь он должен быть обычным генератором с возможностью качания, то есть режим качания неплохо бы отделить от всего остального, но при этом (вспоминаем задачу номер 4) не иметь дополнительных переключателей режима. Что и было сделано. При включении генератор работает как обычный генератор, энкодером изменяется частота,

после кратковременного нажатия на кнопку «select» можно поменять шаг перестройки

(как бы ничего лишнего).
При удержании кнопки «select» в течение 2х секунд, активируется дополнительное меню, позволяющее настроить параметры качания частоты.

После чего по нажатию «select» уже будут доступны:
полоса качания (в плюс от той, что указана как F),

скорость качания частоты с вариантами 1000ms, 500ms, 200ms, 100ms,

а так же пункт включения качания частоты.

Все настройки можно изменять онлайн, то есть прямо в процессе качания можно покрутить любой параметр.
Если режим качания более не требуется, то его можно отключить,

после чего качание прекратится, а при очередном нажатии «select» на экране появится надпись,

и устройство вернётся в режим обычного генератора.
Естественно, для наблюдения самой АЧХ нам понадобится ВЧ детектор, схем которых в интернете пруд пруди, например вот:

Ну и, конечно же, осциллограф. Сразу встаёт вопрос «а как синхронизировать осциллограф с генератором?», давайте разберём:
На самом деле существует всего два варианта.
Первый — переключать осциллограф в ждущий режим и запускать развёртку по импульсу от генератора.
Второй способ — это когда мы с генератора подаём «пилу» на вход «Х» осциллографа.
Недолго думая, решил я реализовать оба этих способа, так как осциллограф у меня не в единственном экземпляре имеется, а на каком, как будет красивее и удобнее смотреться, гадать совершенно не хотелось. Да и при повторении конструкции люди сами выберут как им лучше.
По итогу получился такой вот прибор:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
На самом деле, написать эту статью меня сподвигла общественность, потому как в процессе бета-тестинга, который мне помогли выполнить несколько коллег по хобби, появились модификации печатных плат и несколько вариантов прошивок (прошивки отличаются только подключаемым дисплеем (1 или 2 строчечным) и разводкой энкодера (чтобы при кручении ручки по часовой стрелке, частота шла в плюс).
От себя я хочу выразить огромную благодарность этим людям, без их участия конструкция не получилась бы настолько интересной и универсальной. Ну, и конечно, фотографии прилагаются.
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
При желании данный генератор можно дополнить выходным усилителем и перестраиваемым аттенюатором, но это уже будет свобода творчества людей, которые захотят повторить для себя этот прибор.
Файлы прошивок, печатных плат и схема прилагаются.
Автор: с2. Опубликовано в Измерения

DDS синтезатор на AD9850, привлекает радиолюбителей своей простотой и возможностями.
Обычно цифровые генераторы частоты, в которых требуемое значение частоты устанавливают с помощью клавиатуры, как правило, выполнены на микроконтроллере, диапазон генерируемых частот ограничен несколькими мегагерцами, а получение точного значения частоты в широких пределах затруднительно. Описываемый в статье генератор тоже содержит микроконтроллер, но использован он только для управления специализированной микросхемой — синтезатором частоты AD9850 . Применение этой микросхемы позволило расширить диапазон генерируемых частот от 0Hz до 40 МНz, в пределах которого можно получить любое значение частоты с точностью 1Hz.

Структурная схема синтезатора AD9850 изображена на рис. 1. Его основа — аккумулятор фазы, формирующий код мгновенной фазы выходного сигнала. Этот код преобразуется в цифровое значение синусоидального сигнала, который с помощью ЦАП превращается в аналоговый и подвергается фильтрации. Компаратор позволяет получить выходной сигнал прямоугольной формы. Его частота fout (в герцах) определяется формулой

Fout — выходная частота, Hz ;
Fin — тактовая частота, Hz ;
∆ – 32-битное значение кода частоты.
Максимальное значение Fout не может превосходить половины тактовой частоты.
Основные технические характеристики AD9850 (при напряжении питания 5В).
2 выходных сигнала
Частота тактового генератора, МНz: 1…125
Максимальный потребляемый ток (при fin=125 МГц), мА 95
Число разрядов ЦАП 10
Максимальный выходной ток ЦАП (при Rset=3,9 кОм), мА 10,24
Максимальная интегральная нелинейность ЦАП, МЗР 1
Компаратор имеет подстройку, переменным резистором R13.
Напряжение на выходе компаратора, В:
минимальное высокого уровня 4,8
максимальное низкого уровня 0,4
Для загрузки данных в микросхеме AD9850 предусмотрены параллельный и последовательный интерфейсы.
В последнем случае данные (слово длиной 40 бит) вводят через ее вход DАТА.
Каждый бит данных сопровождают импульсом положительной полярности на входе синхронизации W_CLK.
После загрузки управляющего слова по импульсу положительной полярности на входе F U _ U D происходит замена параметров генерации новыми..
Принципиальная схема управления генератором изображена на рис. 2.
Управляет синтезатором DD2 микроконтроллер DD1.
Управление происходит с помощью энкодера Sk1 с кнопкой Кн0, и дополнительных кнопок Кн1 – Кн6.
Вращая ручку энкодера вправо или влево, производим изменение частоты на экране ЖКИ прибора, и одновременно получаем это же значение частоты в виде прямоугольника и синуса на выходе схемы.
Кн0 * задает шаг установки частоты с помощью энкодера Sk1 (1Hz, 10Hz, 100Hz, 1kHz, 10kHz, 100kHz, 1MHz, выбор значений по «кольцу» , данный режим работы кнопки Кн0 * актуален только в версии программы 1.0).
Значение выходной частоты выставляется с точностью порядка 1Hz, что достаточно для большинства случаев.
Кнопки Кн1 – Кн6, это кнопки быстрого доступа, с их помощью можно устанавливать определенную частоту генератора одним нажатием кнопки.
Каждая кнопка Кн1 – Кн6, это есть ячейка с памятью.
В них прописывается значение частоты следующим образом: сначала устанавливаем нужную нам частоту на экране ЖКИ с помощью энкодера Sk1,
нажимаем и длительно удерживаем Кн0 , на экране появится надпись «record» , не отпуская Кн0, нажимаем любую кнопку Кн1 – Кн6 нужной нам ячейки, на экране это будет отражено надписью «is made», запись в ячейку произведена.
Введенные в ячейки значения частоты сохраняются в энергонезависимой памяти микроконтроллера.
А так же еще следует знать, что при старте МК всегда считывается установка частоты с ячейки Кн1.
А значение, записанное в ячейке кнопки Кн6, управляет выходом РD7(13 ножка МК), которое в свою очередь по цепочке D1 R1 отключает генерацию прямоугольного сигнала генератора AD9850.
К сожалению, DDS выдаёт побочные сигналы, уровень которых зависит от тактовой и выходной частот (при частоте более 5MHz (или любое значение частоты, внесенное в ячейку Кн6) по цепочке D1 R1 можно с МК подать лог . 1 , при этом не будут, вносится искажения в синусоидальный сигнал генератора, это в случае если это требуется пользователю прибора, в противном случае цепочку из деталей D1 R1 не устанавливать).
FUSE:
Программа написана для работы МК на тактовой частоте 8 МГц. МК тактируется от внутреннего RS осциллятора.


Примеры работы генератора, в фотографиях.
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
Небольшое видео, работы программы управления и генератора, в разных режимах управления частотой.










