DDS генератор на микроконтроллере |
Часто, в радиолюбительской практике необходим простой функциональный DDS (прямой цифровой синтез частоты) генератор. Для получения определенной частоты...
Я разработал простой генератор синуса на микросхеме от Analog Devices AD9832. Схема генерировала синусоиду от 0.005 до 12 МГц с шагом 0.005 Гц. Но, пока я ждал доставки микросхемы AD9832, был разработан простой DDS генератор с использованием микроконтроллера AT90S2313 и резистивной матрицей.
Генератор управляется через RS232 небольшой Windows-программой и может генерировать следующие формы сигналов: синус, треугольник, пила, прямоугольник в диапазоне частот начиная с 0.07 Гц до 200-300 кГц с шагом 0.07 Гц (зависит от применяемого кварца).
Не будем вдаваться в детали работы DDS-генератора. Исходный код прилагается, он очень простой и в нем легко разобраться.
![](https://kazus.ru/nuke/objects/circuits/H/h76906781t061yo596b0b3f609e44482/image/izmer75-3.png)
Схемотехника устройства тоже простая, в ней есть 4 главных детали: регулятор напряжения, приемопередатчик RS232, микроконтроллер AT90S2313P и резистивная матрица (R2R). Матрица R2R подключена к выводам МК portB, т.о. образуя простой ЦАП и позволяющая получить 256 уровней напряжения.
Микросхема MAX603 также используется для реализации функций включения/выключения генератора, через последовательный интерфейс RS232 (сигнал DTR). Когда вы закрываете программу генератора на компьютере, то и DDS-генератора по поступившему сигналу выключается, т.о. экономя батарейки.
Программный код написан на ассемблере. Код небольшой и отличается большим быстродействием главного цикла. Это сердце кода генератора. Главный цикл содержит 7 строчек кода. Остальной код - таблицы форм сигналов и коммуникационный код.
Аккумулятор фазы - 24 бит, при помощи него устанавливается разрешение.
Максимально генерируемая частота и разрешение также зависит от используемого кварца:
Разрешение = Частота кварца/150994944
fOut = Аккумулятор * Разрешение
В моем случае кварц был на 11.059200 МГц, т.о. разрешение составило 0.073242188 Гц.
Для того, чтобы получить выходную частоту 1 кГц, необходимо в аккумулятор фазы записать значение 0x003556 (13654 dec). Это даст 1000.048835 Гц. Вполне достаточная точность для радиолюбителя.
Коммуникационный код программы также прост и позволяет записывать значения в аккумулятор фазы и выбирать тип формы сигнала.
![](https://kazus.ru/nuke/objects/circuits/H/h76906781t061yo596b0b3f609e44482/image/izmer75-4.jpg)
По этой ссылке вы можете скачать исходник на ассемблере и программу под Windows
C этой схемой также часто просматривают: |
Генератор видеосигнала на микроконтроллере PIC16F84
Генератор телевизионных сигналов на простых микросхемах
ПРОСТОЙ ГЕНЕРАТОР СИГНАЛОВ НЧ И ВЧ
ГЕНЕРАТОР ИМПУЛЬСОВ НА PIC-КОНТРОЛЛЕРЕ
Широкодиапазонный функциональный генератор
Светодиодные "наперстки" на микроконтроллере
Электронные аксессуары на микроконтроллере для игры S.T.A.L.K.E.R.
Электронный замок с ключами iButton
Эмулятор ПЗУ
| ![](/images/ru/clear.gif) |
Подключение энкодера к микроконтроллеру PIC
Счётчик людей в помещении, управляющий освещением
Велокомпьютер на микроконтроллере PIC16F628A
Устройство ввода-вывода на микроконтроллера
Два термометра на PIC16F628A и DS18B20
Светодиодные часы с циферблатом
Двоичные часы
Два вывода микроконтроллера PIC управляют шестью светодиодами
Цифровой программируемый таймер на микроконтроллере PIC16F628A
Устройство рисования в воздухе на ATtiny2313
|