DDS генератор

Часто, в радиолюбительской практике необходим простой функциональный DDS (прямой цифровой синтез частоты) генератор. Для получения определенной частоты…

Я разработал простой генератор синуса на микросхеме от Analog Devices AD9832. Схема генерировала синусоиду от 0.005 до 12 МГц с шагом 0.005 Гц. Но, пока я ждал доставки микросхемы AD9832, был разработан простой DDS генератор с использованием микроконтроллера AT90S2313 и резистивной матрицей.

Генератор управляется через RS232 небольшой Windows-программой и может генерировать следующие формы сигналов: синус, треугольник, пила, прямоугольник в диапазоне частот начиная с 0.07 Гц до 200-300 кГц с шагом 0.07 Гц (зависит от применяемого кварца).

Программа DDS-генератора

Я не хочу вдаваться в детали работы DDS-генератора. Исходный код прилагается, он очень простой и в нем легко разобраться.

DDS-генератор

Схемотехника устройства тоже простая, в ней есть 4 главных детали: регулятор напряжения, приемопередатчик RS232, микроконтроллер AT90S2313P и резистивная матрица (R2R). Матрица R2R подключена к выводам МК portB, т.о. образуя простой ЦАП и позволяющая получить 256 уровней напряжения.

Микросхема MAX603 также используется для реализации функций включения/выключения генератора, через последовательный интерфейс RS232 (сигнал DTR). Когда вы закрываете программу генератора на компьютере, то и DDS-генератора по поступившему сигналу выключается, т.о. экономя батарейки.

Принципиальная схема DDS-генератора

Программный код написан на ассемблере. Код небольшой и отличается большим быстродействием главного цикла. Это сердце кода генератора. Главный цикл содержит 7 строчек кода.
Остальной код — таблицы форм сигналов и коммуникационный код.

Аккумулятор фазы — 24 бит, при помощи него устанавливается разрешение. Максимально генерируемая частота и разрешение также зависит от используемого кварца:
Разрешение = Частота кварца/150994944
fOut = Аккумулятор * Разрешение
В моем случае кварц был на 11.059200 МГц, т.о. разрешение составило 0.073242188 Гц.
Для того, чтобы получить выходную частоту 1 кГц, необходимо в аккумулятор фазы записать значение 0x003556 (13654 dec). Это даст 1000.048835 Гц. Вполне достаточная точность для радиолюбителя.

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

Формы сигналов генератора: синус, прямоугольник, пила

Ниже вы можете скачать исходник на ассемблере и программу под Windows

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 Микроконтроллер AT90S2313P 1
IC2 Линейный регулятор MAX603 1
IC3 ИС RS-232 интерфейса MAX202 1
D1 Выпрямительный диод 1N4148 1
C1-C4 Конденсатор 4
С5, С6 Конденсатор 22 пФ 2
С7 Конденсатор 0.1 мкФ 1
С8, С11 Электролитический конденсатор 10 мкФ 16 В 2
R1 Резисторный блок 10/20 кОм 1
R2 Резистор 470 Ом 1
R5 Резистор 4.7 кОм 1
Q1 Кварцевый резонатор 11.0592 МГц 1
X1 Разьем RS232 1
Х2 Разьем выхода сигнала 1