Управление для dds генератора

Схема функционального DDS генератора

Функциональный DDS генератор

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

Данный генератор базируется на алгоритме DDS-генератора Jesper, программа была модернизирована под AVR-GCC C с вставками кода на ассемблере. Генератор имеет два выходных сигнала: первый — DDS сигналы, второй — высокоскоростной (1..8МГц) «прямоугольный» выход, который может использоваться для оживления МК с неправильными фузами и для других целей.
Высокоскоростной сигнал HS (High Speed) берется напрямую с микроконтроллера Atmega16 OC1A (PD5).
DDS-сигналы формируются с других выходов МК через резистивную R2R-матрицу и через микросхему LM358N, которая позволяет осуществить регулировку амплитуды (Amplitude) сигнала и смещение (Offset). Смещение и амплитуда регулируются при помощи двух потенциометров. Смещение может регулироваться в диапазоне +5В..-5В, а амплитуда 0. 10В. Частота DDS-сигналов может регулироваться в пределах 0. 65534 Гц, это более чем достаточно для тестирования аудио-схем и других радиолюбительских задач.

Основные характеристики DDS-генератора V2.0:
— простая схема с распространенными и недорогими радиоэлементами;
— односторонняя печатная плата;
— встроенный блок питания;
— отдельный высокоскоростной выход (HS) до 8МГц;
— DDS-сигналы с изменяемой амплитудой и смещением;
— DDS-сигналы: синус, прямоугольник, пила и реверсивная пила, треугольник, ЭКГ-сигнал и сигнал шума;
— 2×16 LCD экран;
— интуитивная 5-ти кнопочная клавиатура;
— шаги для регулировки частоты: 1, 10, 100, 1000, 10000 Гц;
— запоминание последнего состояния после включения питания.

На представленной ниже блок-схеме, приведена логическая структура функционального генератора:

Как вы можете видеть, устройство требует наличие нескольких питающих напряжений: +5В, -12В, +12В. Напряжения +12В и -12В используются для регулирования амплитуды сигнала и смещения. Блок питания сконструирован с использованием трансформатора и нескольких микросхем стабилизаторов напряжения:

Блок питания собран на отдельной плате:

Если самому собирать блок питания нет желания, то можно использовать обычный ATX блок питания от компьютера, где уже присутствуют все необходимые напряжения. Разводка ATX разъема.

LCD-экран

Все действия отображаются через LCD-экранчик. Управление генератором осуществляется пятью клавишами

Клавиши вверх/вниз используются для перемещения по меню, клавиши влево/вправо для изменения значения частоты. Когда центральная клавиша нажата — начинается генерирование выбранного сигнала. Повторное нажатие клавиши останавливает генератор.

Система меню генератора:

Для установки шага изменения частоты предусмотрено отдельное значение. Это удобно, если вам необходимо менять частоту в широких пределах.

Генератор шума не имеет каких-либо настроек. Для него используется обычная функция rand() непрерывно подающиеся на выход DDS-генератора.

Высокоскоростной выход HS имеет 4 режима частоты: 1, 2, 4 и 8 МГц.

Принципиальная схема

Схема функционального генератора простая и содержит легкодоступные элементы:
— микроконтроллер AVR Atmega16, с внешним кварцем на 16 МГц;
— стандартный HD44780-типа LCD-экранчик 2×16;
— R2R-матрица ЦАП из обычных резисторов;
— операционный усилитель LM358N (отечественный аналог КР1040УД1);
— два потенциометра;
— пять клавиш;
— несколько разъемов.

Плата:

Функциональный генератор собран в пластиковом боксе:

Тестовый запуск:

Программное обеспечение

Как я уже говорил выше, в основе своей программы я использовал алгоритм DDS-генератора Jesper. Я добавил несколько строчек кода на ассемблере для реализации останова генерирования. Теперь алгоритм содержит 10 ЦПУ циклов, вместо 9.

Генератор сигналов на Arduino и DDS модуле AD9833

Если вы решили всерьез заняться радиолюбительством, то вам в вашей мастерской никак не обойтись без генератора сигналов (функционального генератора, Function Generator). Промышленные образцы подобных генераторов могут стоить достаточно дорого, собственными силами генератор сигналов изготовить значительно дешевле.

В этой статье мы рассмотрим создание простейшего генератора сигналов на основе платы Arduino и DDS модуля AD9833, с помощью которого можно будет формировать синусоидальный, прямоугольный и треугольный сигналы с частотой до 12 МГц. Тестировать работу нашего генератора сигналов мы будем с помощью осциллографа, который можно также собрать на основе платы Arduino. Также на нашем сайте вы можете посмотреть проект генератора сигналов синусоидальной и прямоугольной формы только на основе платы Arduino, без использования дополнительных модулей.

Что такое генератор сигналов на основе прямого цифрового синтеза (DDS)

Как следует из названия, генератор сигналов может формировать различные виды сигналов заданной частоты. Аббревиатура DDS (Direct Digital Synthesis) означает прямой цифровой синтез. При этом способе любой сигнал можно сформировать в цифровом виде, а затем преобразовать его в аналоговый вид с помощью цифро-аналогового преобразователя (ЦАП). Чаще всего в современной электронике этот метод используется для формирования синусоидальных сигналов, но с его помощью можно формировать и прямоугольные, и треугольные сигналы, и вообще сигналы любой формы. Поскольку формирование сигналов происходит в цифровой форме в модуле DDS, то можно не только очень быстро переключаться между сигналами различной формы, но и также очень быстро изменять их частоту.

Принцип работы генератора сигналов AD9833

«Сердцем» нашего проекта будет микросхема AD9833, представляющая собой программируемый генератор сигналов и отличающаяся низким энергопотреблением. Микросхема (модуль) AD9833 способна формировать сигналы синусоидальной, прямоугольной и треугольной формы с максимальной частотой до 12 МГц. Таким образом, с помощью программы можно изменять частоту, фазу и форму сигналов на выходе данной микросхемы. Управляется данная микросхема по 3-х проводному интерфейсу SPI, что делает взаимодействие с ней достаточно простым. Функциональная схема микросхемы AD9833 приведена на следующем рисунке.

Принцип работы данной микросхемы достаточно прост. Если мы посмотрим на ее функциональную схему, то мы обнаружим в ее составе аккумулятор фазы (Phase Accumulator), чья работа состоит в сохранении всех возможных значений синусоидальной волны, начиная от 0 to 2π. Также в ее схеме присутствуют SIN ROM, который преобразует информацию о фазе в амплитуду, и 10-битный ЦАП, который принимает данные от SIN ROM и преобразует их в соответствующие аналоговые значения напряжения, которые и подаются на выход микросхемы. На выходе микросхемы присутствует программно управляемый выключатель – его можно включать и выключать. Его роль мы рассмотрим далее в статье.

Основные особенности модуля AD9833:

  • цифровое программирование частоты и фазы;
  • потребляемая мощность 12.65 мВт при напряжении 3 В;
  • диапазон выходных частот от 0 МГц до 12.5 МГц;
  • разрешение 28 бит (0.1 Гц при частоте опорного сигнала 25 МГц);
  • синусоидальные, треугольные и прямоугольные выходные колебания;
  • напряжение питания от 2.3 В до 5.5 В;
  • трехпроводной интерфейс SPI;
  • расширенный температурный диапазон: от –40°C до +105°C;
  • опция пониженного энергопотребления.

Вкратце принцип работы данной микросхемы мы рассмотрели, более подробную информацию об этом вы можете посмотреть в даташите на микросхему AD9833.

Расположение выводов микросхемы AD9833 показано на следующем рисунке.

Назначение выводов микросхемы:

VCC – плюс питания для цифровых и аналоговых цепей генератора.
DGND – цифровая земля.
SDATA – вход данных интерфейса SPI. Передача осуществляется 16-битными словами.
SCLK – вход тактового сигнала SPI. Используется второй режим работы: (CPOL = 1, CPHA = 0).
FSYNC – выбор микросхемы. Перед началом передачи данных должен быть установлен в 0, по завершении в 1.
AGND – аналоговая земля.
OUT – выход генератора.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. AD9833 DDS Function Generator (генератор сигналов AD9833) (купить на AliExpress).
  3. OLED дисплей 128х64 (купить на AliExpress — для данного проекта можно покупать модель с 4-мя контактами поскольку используется его подключение по интерфейсу I2C).
  4. Инкрементальный энкодер c кнопкой (Rotary Encoder) (купить на AliExpress — не уверен в том, что в нем есть кнопка, но она точно есть в этом лоте — купить на AliExpress № 2, но он продается, к сожалению, только по 5 штук).
  5. Регулятор напряжения LM7809 (купить на AliExpress).
  6. Конденсаторы 470 мкФ и 220 мкФ (купить на AliExpress).
  7. Конденсатор 104 пФ (купить на AliExpress).
  8. Резистор 10 кОм – 6 шт. (купить на AliExpress).
  9. Тактильный переключатель (Tactile Switches) – 4 шт. (купить на AliExpress).
  10. Зажимной контакт (Screw Terminal) 5.04mm (купить на AliExpress).
  11. Разъем типа «мама» (Female Header) и разъем типа DC Barrel Jack.
  12. Источник питания с напряжением 12 В.

Схема проекта

Схема генератора сигналов на основе платы Arduino и DDS модуле AD9833 представлена на следующем рисунке.

«Сердцем» схемы является модуль AD9833, который подключен к плате Arduino. Для питания схемы используется регулятор напряжения LM7809 с подключенными к нему развязывающими конденсаторами, которые используются для фильтрации нежелательных шумов, способных оказать негативное воздействие на формируемые сигналы.

Управляет работой всей схемы плата Arduino. Для отображения информации используется OLED дисплей 128х64. Для изменения частоты формируемого сигнала мы используем три переключателя: первый устанавливает частоту в Гц, второй – в кГц, а третий – в МГц. Также мы используем кнопку для включения или отключения выхода схемы. И, наконец, в схеме используется инкрементальный энкодер (rotary encoder) вместе с подключенными к нему подтягивающими резисторами (чтобы правильно работали переключатели). Инкрементальный энкодер используется для изменения частоты, а тактильный переключатель внутри него используется для выбора формы сигнала.

Читайте также  Управляющий кабель для генератора

Объяснение программы для Arduino

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

Для написания кода программы нам прежде всего необходимо скачать необходимые библиотеки по следующим ссылкам:

Далее в программе мы подключим заголовочные файлы используемых библиотек. Библиотека AD9833.h используется для работы с DDS модулем AD9833, а библиотека math.h – для выполнения ряда математических операций.

Функциональный DDS генератор на базе микросхемы AD9833

AD9833

На страницах сайта Радиолоцман, в разделе «Схемы», опубликовано множество схем DDS генераторов, от простых, на одном микроконтроллере, до сложных на базе ПЛИС с богатыми функциональными возможностями. Мы рассмотрим еще одну конструкцию такого прибора, функцию DDS синтеза аналогового сигнала в котором выполняет специализированная микросхема AD9833, производства компании Analog Devices, являющейся одним из лидеров в этой области.

Основные характеристики генератора:

  • Выходная частота от 1 Гц до 5 МГц;
  • Точность 0.1 Гц;
  • Форма выходного сигнала: прямоугольные, треугольные, синус;
  • Возможность регулировки скважности импульсов;
  • 5 В ТТЛ выход;
  • Аналоговый выходной сигнал с размахом от +15 В до –15 В;
  • Возможность подстройки постоянного смещения в пределах от +15 В до –15 В;
  • Пользовательский интерфейс: двухстрочный ЖК индикатор и 16-кнопочная клавиатура.

Прямой цифровой синтез (DDS) – метод, позволяющий получить аналоговый сигнал за счет генерации временной последовательности цифровых отсчетов и их дальнейшего преобразования в аналоговую форму посредством цифро-аналогового преобразователя. Так как сигнал изначально синтезируется в цифровой форме, такое устройство может обеспечить быстрое переключение частоты, высокое разрешение по сетке частот, работу в широком диапазоне частот. На сегодняшнем уровне развития схемотехники DDS синтезаторы представляют собой очень компактные микросхемы с низким потреблением.

Выбор микросхемы AD9833 основан на следующих ее преимуществах:

  • низкая стоимость,
  • малое потребление,
  • последовательный интерфейс управления,
  • простые команды,
  • минимальное количество необходимых внешних компонентов,
  • высокая точность выходного сигнала.

Расположение выводов микросхемы AD9833

В качестве источника тактовых импульсов для микросхемы синтезатора необходимо использовать осциллятор со встроенным генератором, простой кварцевый резонатор не подходит для использования совместно с микросхемой. В техническом описании на микросхему указано значение тактовой частоты 25 МГц, но автор применил генератор на 50 МГц, при тестировании устройства никаких проблем не было выявлено.

Прибор снабжен ЖК индикатором, клавиатурой для управления и настройки и переменными резисторами для регулирования уровня, смещения и симметрии. Управление микросхемой DDS синтезатора и всей периферией осуществляет микроконтроллер Atmel AVR ATmega32.

Условно схема DDS генератора разбита на несколько частей: схема питания, микроконтроллерная часть, модуль DDS на микросхеме AD9833, выходная аналоговая часть и пользовательский интерфейс.

Схема питания построена на интегральных регуляторах напряжения и обеспечивает двуполярное напряжение ±15 В для выходной аналоговой части и напряжение +5 В для питания микроконтроллера и периферии.

Микроконтроллер тактируется от встроенного RC осциллятора 8 МГц. Стандартный двухстрочный ЖК индикатор на базе контроллера HD44780 подключен к порту C (Port C) микроконтроллера по 4-битному интерфейсу. Резистор R1 предназначен для регулировки контрастности. К сигнальной линии PC7/TOSC2 подключен звуковой излучатель (буззер), который используется для звукового оповещения пользователя при переключении режимов и настройке. Потенциометр R2, подключенный к каналу ADC0 встроенного АЦП микроконтроллера, используется для цифровой регулировки уровня выходного аналогового сигнала. Регулировка уровня выполнена на базе микросхемы цифрового потенциометра MCP41010 (см. схему выходной аналоговой части), которая управляется микроконтроллером по интерфейсу SPI.

Схема микроконтроллерной части DDS генератора

Управление микросхемой DDS синтезатора осуществляется по линиям микроконтроллера PD0 (DDSDATA), PD1 (DDSFSYNC), PD2 (DDSCLK). Микросхема DDS, осциллятор и несколько пассивных компонентов обвязки конструктивно составляют отдельный подключаемый модуль, что позволит использовать его в других конструкциях или в экспериментах.

Схема DDS модуля генератора на микросхеме AD9833

К аналоговой выходной части генератора предъявляются особые требования, т.к. не так просто усилить сигнал с амплитудой 400 мВ до уровня ±15 В, с выходным током 300 мА на частоте 5 МГц. Поэтому был применен сверхбыстродействующий операционный усилитель LM7171 с обратной связью по напряжению и схема двухтактного транзисторного усилителя мощности. Блокировочные конденсаторы по питанию операционных усилителей на печатной плате должны быть расположены как можно ближе к микросхемам.

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

На выводе микроконтроллера PD7 генерируются прямоугольные импульсы, которые поступают через буфер на микросхеме 74HC14 на ТТЛ выход генератора.

Схема выходной аналоговой части DDS генератора

ТТЛ выход генератора

Модуль готовой матричной клавиатуры с организацией 4×4 подключается к порту B (Port B). Строки матрицы клавиатуры подключены к линиям порта PB0-PB3, столбцы – подключены к линиям PB4-PB7.

Загрузки

Исходный код и прошивка микроконтроллера – скачать

Перевод: Vadim по заказу РадиоЛоцман

DDS синтезатор AD9833

Понадобился мне, в мойх поделках, генератор сигналов различной формы, а именно: синус, меандр, треугольник ну и плюс постоянное напряжение (но это уже другой вопрос), да не простой а чтобы занимал мало места на плате а главное программно управляемый. После недолгого гугления наткнулся на семейство DDS синтезаторов от Analog Devices, которые все это в себе совмещают (кроме постоянного напряжения). Три из четырех очень неплохо (подумал я) и прикупил парочку.

Принципы работы DDS синтезаторов частоты

DDS — принцип не новый, а значит теории по этому вопросу в инете и не только — навалом. Лично мне хватило пары статей, чтобы «войти в курс дела». Одну из них, со скромным названием «All About Direct Digital Synthesis», можно почитать на сайте Analog Devices. Для тех кто не дружит с английским языком, есть перевод данной статьи.

Почему AD9833?

У этого DDS синтезатора есть ряд преимуществ, по сравнению со своими собратьями: низкая стоимость, малое потребление, последовательный интерфейс обмена данными (всего три проводка), простые команды и вычисления, минимальный обвес AD9833, относительно высокая точность выходного сигнала (10-битный ЦАП, 28-битный фазовый аккумулятор, который позволяет получить выходной сигнал с точностью до 0.1 Гц, при максимальном тактирующем сигнале в 25.0 МГц), отличное соотношение Сигнал/Шум без применения какой либо фильтрации

60dB. Также AD9833 обладает несколькими режимами энергосбережения, что тоже не маловажно.

Описание схемы


Рис.1 Цоколевка AD9833

Как видно из цоколевки, разработчики буквально поделили AD9833 на две части: первая часть — управляющая, в которую входят линии ввода команд/данных, тактирующий и выходной сигналы, и вторая часть отвечающая за питание ИС. Поскольку я впервые имел дело с AD9833, то решил сделать отдельный подопытный модуль, плюс такой модуль обладает большой мобильностью и при желании его можно использовать в нескольких проектах, а также легко локализовать и исправить неполадки (разделяй и властвуй). На рис.2 показана схема сего модуля, в которой все управляющие линии, выходной сигнал и питание собраны в коннекторе CONN1 (этакий интерфейс), через который он будет общаться с управляющей частью.


Рис.2 Схема тестового модуля

Основные требования к модулю

Как было упомянуто раньше, AD9833 очень неприхотливая ИС и для того чтобы получить готовый выходной сигнал ей нужны буквально пара конденсаторов, тактовый генератор и операционный усилитель, поскольку необработанный выходной сигнал составляет

0.65V (peak-to-peak), плюс небольшой оффсет

40mV, в режимах с использованием ЦАП’a.

Тактовый генератор — в качестве источника тактового сигнала следует выбрать резонатор со встроенным генератором (Crystal Clock Oscillator), обычный кварц здесь не подойдет.

CAP/2.5V — при напряжении питания больше 2.7V, к этому пину надо подключить конденсатор в 100 нФ (на рис.2 показано перемычкой), в противном случае (напряжение питания меньше 2.7V), этот пин следует подключать напрямую к источнику питания (ставить перемычка между CAP/2.5V и VCC).

Операционный усилитель — при выборе ОУ следует исходить из предусмотренной, максимальной частоты выходного сигнала, генерируемого AD9833. Это означает что амплитудо-частотная характеристика ОУ должна соответствовать (превышать) этой самой максимальной частоте, иначе вместо усиления сигнала получим подавление. Кстати у меня такого ОУ не оказалось, пришлось заказывать парочку высокочастотных. Но к моему счастью, потребности разрабатываемого прибора ограничиваются несколькими килогерцами, так что и низкочастотные ОУ пойдут в дело.

Читайте также  Что такое генератор в ibexpert

Пример: чтобы обработать выходной сигнал с максимально-возможной частотой, которую способен воспроизвести AD9833, а это MCLKмакс/2 = 12,5 МГц (половина частоты опорного тактирующего сигнала, по закону Найквиста), диапазон рабочих частот ОУ должен быть как минимум 13МГц, а лучше и все 20МГц — кто знает что за ОУ попадется.

Примечания к созданию фильтра нужных низких частот

Как я уже говорил, соотношение Сигнал/Шум у AD9833 приличное и без всякой фильтрации, а поскольку генератор будет работать на очень большом диапазоне частот, то избавиться от оставшихся «хвостов» не получится, если только не использовать программируемый цифровой фильтр, но те что мне встречались работали с частотами до 50..100 КГц (для меня в самый раз, но в остальных случаях не пойдут), так что, по сути, конденсатор C5 является единственным фильтром! Но несмотря на это я все-же использовал фильтр Баттерворта 4-го порядка на 100 КГц, для фильтрации высокочастотного шума исходящего от тактового генератора и управляющей логики (микроконтроллера). Кстати я тут рассусоливаю про фильтрующий конденсатор а сам забыл его вставить в свой подопытный модуль.

Заземление — в общем заземление должно соответствовать всем требованием заземления в системах со смешанными сигналами: заземляющая площадь должна быть как можно больше, цифровая и аналоговая земля должны соединятся только в одной точке. Подробней об этом можно почитать в статье: Заземление в системах со смешанными сигналами.


Рис.3 Подопытный модуль — вид сверху


Рис.4 Подопытный модуль — вид снизу

Программная реализация

В качестве управляющего мк я использовал ATMega16. AD9833 может изменять значение частотных регистров двумя способами: путем последовательной записи двух 14-битных слов (проще говоря записи 28-битного слова), либо записывать по отдельности старших/младших 14-бит (так называемый coarse/fine tuning). Данная библиотека работает только в режиме 28-битного слова, то есть происходит полное обновление значения частотного регистра (все 28-бит).

Как я уже говорил, в моей поделке мне необходим также и ЦАП. Чтобы не цеплять внешний, решил использовать внутрений 10-битный ЦАП AD9833. Следующая функция позволяет использовать AD9833 в качестве простого ЦАП’a. В зависимости от напряжения питания (VSUPPLY) AD9833 можно получать постоянное напряжение от 0 до VSUPPLY. Напряжение питания следует указать в макросе VSUPPLY — в милливольтах. В этой функции используется фазовый регистр № 0.
Описание функции: если кратко то сбрасываем AD9833, тем самым обнуляем все внутренние регистры, устанавливаем частоту в 0.0 Гц и треугольную форму сигнала, чтобы уровень напряжения был в прямой зависимость от значения фазы, а дальше при помощи фазового регистра прибавляем нужную фазу. Также ниже есть график небольшого эксперимента с использованием различных форм сигнала.


Рис.5 Вывод постоянного напряжения с использованием
синусоидальной и треугольной форм сигналов. В одном случае смещение фазы
приводит к смещению по синусоидальной траектории, в другом — по прямой

Эксперимент состоял в определении зависимости и соответсвии подоваемого мной цифрового значения (шаг 500 — который должен был соответствовать 500мВ), и получения на выходе соответствующего значения напряжения. Из графика виден оффсет при использовании внутреннего ЦАП’a:

0.38mV * K, где К — коэффициент усиления ОУ. Также из графика видно, что я этот самый коэффициент усиления не докрутил до значения при котором можно получить на выходе AD9833 напряжение VSUPPLY. Если подытожить эксперимент, то на выходе получил изменение напряжение с равным шагом (

0.4V) а также прямая зависимость VOUT от цифры. Так что при последующей реализации сего модуля надо будет предусмотреть компенсацию оффсета, соответствующий коэффициент усиления и не забыть про фильтрующий конденсатор :).

Ну и на последок функция инициализации. Первым делом следует сбросить все внутренние регистры, затем установить желаемые значения в фазовые и частотные регистры, так как их значение при сбросе не изменяется и по началу там находится мусор. После всех этих операции AD9833 стартует с так называемого midscale значения. Это значение соответствует половине VSUPPLY. Это означает что по умолчанию, AD9833 стартует с 2.5В (VSUPPLY/2), при 90 о — VOUT равно 5В и так далее по синусоидальной/треугольной траектории. Я же привык чтобы синус стартовал с минимального значения, плюс в случае инициализации AD9833 с частотой 0.0 Гц, не желательно чтобы на выходе AD9833 торчало 2.5V (VSUPPLY/2). Для этого, в используемый фазовый регистр (по умолчанию это регистр № 0) загонаю 270 о градусов, для старта с минимального значения. Во второй «от нечего делать» загнал 180 о градусов. Ну и в конце выбираем форму выходного сигнала.


Рис.6 Траектории со смещением в 270 о и без смещения

Тестируем код

Зубцы на форме выходного сигнала отчасти «работа» осциллографа, ну и конечно сказывается отсутствие фильтрующего конденсатора.

На сайте Analog Devices можно поиграться с AD9834 Interactive Design Tool, хотя AD9833 и AD9834 чуть отличаются.

Лабораторный генератор сигналов на DDS под управлением Arduino

Прототипом этого генератора стала найденная автором в Интернете конструкция [1]. Она дополнена аттенюатором, которым управляет микроконтроллер, буферный усилитель собран на микросхеме другого типа, внесены изменения в программу микроконтроллера модуля Arduino Nano.

Микросхемы прямого цифрового синтеза частоты (DDS) обычно применяют в задающих генераторах и перестраиваемых гетеродинах радиостанций [2, 3], лабораторных генераторах сигналов [4, 5]. Микроконтроллерное управление ими легко позволяет реализовать генератор качающейся частоты [6]. В последнее время сложилась ситуация, когда приобретение отдельно микросхемы DDS и микроконтроллера дороже, чем готовых содержащих их модулей. В предлагаемом лабораторном генераторе синусоидальных сигналов применены модуль синтезатора частоты HC-SR08 на микросхеме DDS AD9851 и микроконтрол-лерный модуль Arduino Nano.

Генератор имеет три режима работы:

1 — генерация синусоидального сигнала частотой от 1 Гц до 70 МГц, устанавливаемой с минимальным шагом 1 Гц;

2 — генерация сигнала качающейся частоты. Качание происходит от установленного на ЖКИ значения в сторону повышения частоты. Полосу и шаг качания можно устанавливать произвольно во всём диапазоне генерируемых частот, но шаг должен быть меньше полосы. Число шагов в одном цикле качания равно ширине полосы качания, делённой на длину шага, плюс единица. Период повторения циклов равен этому числу, умноженному на 660 мкс. В начале каждого цикла качания для синхронизации развёртки осциллографа генерируется импульс низкого логического уровня длительностью 11 мкс;

3 — генерация сигнала, частота которого отличается от заданной на одно из следующих фиксированных значений: 450 кГц, 455 кГц, 460 кГц, 465 кГц, 1,6 МГц, 1,8 МГц, 5,5 МГц, 10,7 МГц и 21,4 МГц. Выходная частота равна сумме установленного на индикаторе значения и выбранного смещения.

Аттенюатор ослабляет выходной сигнал на 0-110 дБ ступенями по 10 дБ. Экспериментально снятые графики зависимости амплитуды выходного напряжения от частоты при различном ослаблении аттенюатора показаны на рис. 1. Генератор, внутреннее сопротивление которого 50 Ом, был нагружен только входным сопротивлением осциллографа (около 1 МОм).

Рис. 1. Экспериментально снятые графики зависимости амплитуды выходного напряжения от частоты при различном ослаблении аттенюатора

Принципиальная схема генератора изображена на рис. 2. Он состоит из готовых модулей Arduino Nanо (А1), HC-SR08 (A2) на базе микросхемы DDS AD9851 и самодельных плат питания и органов управления, аттенюатора (2 шт.), буферного усилителя. Позиционные обозначения элементов, находящихся на самодельных платах, снабжены цифровыми префиксами, равными условному номеру платы. Информация о работе генератора выводится на ЖКИ HG1.

Рис. 2. Принципиальная схема генератора

Внешнее напряжение питания генератора (14,5. 20 В) подают на разъём 3XS1 от внешнего источника. Потребляемый от него ток не превышает 150 мА. Выключатель питания 3SA1 расположен на передней панели корпуса генератора. На плате питания и органов управления установлены три интегральных стабилизатора: на 12 В (3DA1), на 10 В (3DA3) и на 5 В (3DA2). Напряжение 10 В на выходе стабилизатора 3DA3 точно устанавливают подборкой резисторов 3R7 и 3R8. Конденсаторы 3C1-3C9 и 4C1-4C4 фильтруют питающие напряжения.

Модуль A1 питается напряжением 12 В от стабилизатора 3DA1, при этом действует установленный в модуле стабилизатор напряжения 5 В, которое использовано для питания ЖКИ HG1. Напряжением 12 В питают реле, установленные на платах аттенюаторов. Модуль A2 получает питание от стабилизатора 3DA2, что позволило избавиться от помех, создаваемых микроконтроллером модуля A1. ОУ 4DA1 в буферном усилителе питается напряжением 10 В от стабилизатора 3DA3.

Читайте также  Что делать с генератором в майнкрафте

Всеми узлами генератора управляет по загруженной в него программе микроконтроллер ATmega168P или ATmega328P, установленный в модуле Arduino Nano. Применён модуль с индексом R3, в котором преобразователь интерфейса USB-COM выполнен на микросхеме CH340G.

ЖКИ HG1 и меет две строки по 16 символов и встроенный контроллер, совместимый с HD44780. Плата ЖКИ была подвергнута доработке. Имевшийся на ней резистор R8 (рис. 3) сопротивлением 100 Ом, ограничивающий ток подсветки экрана, был заменён резистором сопротивлением 220 Ом. Это понизило ток, потребляемый подсветкой, с более чем 20 мА до 10 мА. При этом яркость подсветки практически не уменьшилась. На этой же плате были смонтированы после подборки резисторы R1 и R2, задающие контрастность изображения на экране индикатора.

Рис. 3. Плата ЖКИ

Вращением ручки энкодера3S1 увеличивают или уменьшают генерируемую частоту шагами, длину которых можно изменять нажатиями на эту ручку. Нажатиями на кнопку 3SB1 изменяют коэффициент ослабления аттенюатора, а с помощью кнопки 3SB2 сменяют режимы работы генератора. В режиме 1 нажатием на кнопку 3SB3 устанавливают шаг перестройки равным 1 кГц. Нажатиями на эту же кнопку в режиме 2 циклически выбирают частоту начала сканирования, ширину полосы качания и длину шага перестройки частоты. В режиме 3 этой кнопкой задают смещение генерируемой часто-ты относительно показанной на индикаторе. Все входы модуля A1, к которым подключены контакты кнопок и энкоде-ра, соединены с цепью питания +5 В через резисторы 3R1-3R6 для поддержания на них высокого логического уровня при разомкнутых контактах.

Детали стабилизаторов напряжения питания и органов управления размещены на односторонней печатной плате, представленной на рис. 4. Кнопки и энкодер устанавливают на ней со стороны печатных проводников. Энкодер крепят гайкой к корпусу генератора. К нему же без изоляционных прокладок прижимают теплоотводящие фланцы стабилизаторов 3DA1 и 3DA2. Стабилизатор 3DA3 работает без дополнительного теплоотвода. Конденсаторы 3C3 и 3C5 монтируют на плату лишь при необходимости устранить сбои в работе энкодера.

Рис. 4. Печатная плата

Внешний вид модуля HC-SR08 показан на рис. 5. Генерируемый им сигнал снимают с имеющегося в модуле нагрузочного резистора LC-фильтра нижних частот. Провода, идущие от модуля к буферному усилителю, припаяны непосредственно к этому резистору (R5). На рис. 5 он находится у правого среза платы вверху.

Рис. 5. Внешний вид модуля HC-SR08

Чтобы уменьшить искажения сигнала, рекомендуется отключить встроенный в микросхему AD9851 компаратор, формирующий прямоугольный выходной сигнал. Для этого необходимо перевести движок установленного на плате модуля подстроечного резистора R13 в одно из крайних положений.

С модуля DDS сигнал поступает на буферный усилитель с коэффициентом усиления 2, собранный на ОУ 4DA1 (OPA642N), через конденсаторы 4C5 и 4C6, не пропускающие его постоянную составляющую. С помощью резисторов 4R1, 4R2 и блокировочных конденсаторов 4C1-4C4 создана искусственная средняя точка питания ОУ. Для устранения постоянной составляющей выходной сигнал ОУ поступает на аттенюатор через конденсаторы 4C7 и 4C8. Резистором 4R6 задано выходное сопротивление генератора.

Буферный усилитель собран на односторонней печатной плате, изображённой на рис. 6. Она рассчитана на установку компонентов для поверхностного монтажа. Резисторы и конденсаторы — типоразмера 1206, допускается установка резисторов типоразмера 0805.

Рис. 6. Печатная плата буферного усилителя

Усиленный сигнал поступает через аттенюаторы на выходной разъём XW2 (СР50-73). Для управления коэффициентом ослабления в аттенюаторах использованы реле HLS-4098-DC12V с сопротивлением обмотки 720 Ом. Транзисторы 1VT1, 1VT2, 2VT1, 2VT2 управляют этими реле по командам модуля A1. Обмотки реле для подавления выбросов напряжения самоиндукции зашунтированы диодами 1VD1, 1VD2, 2VD1, 2VD2.

Платы двух аттенюаторов идентичны (рис. 7) и различаются лишь номиналами установленных на них резисторов. Изготовлены эти платы из фольгиро-ванного с двух сторон стеклотекстолита. Фольга на одной из сторон служит экраном и соединена с общим проводом стороны печатных проводников через переходные отверстия, которые на рис. 7 показаны залитыми. Вокруг выводов деталей фольга экрана удалена зенкованием.

Рис. 7. Платы двух аттенюаторов

Для получения необходимых значений сопротивления каждый из резисторов эквивалентной схемы аттенюатора фактически составлен из двух, соединённых параллельно.

На практике почти невозможно найти резистор, сопротивление которого в точности равно написанному на нём номиналу. Поэтому необходимо, измерив реальное сопротивление имеющихся в наличии резисторов, выбрать тот, сопротивление которого близко к требуемому Rрасч, но больше его. Затем, подставив сопротивление выбранного резистора R1 в формулу R2 = (Rрасч — R1 )/Rрасч · R1 найти сопротивление резистора R2, который следует подключить параллельно первому. В таблице представлены некоторые возможные комбинации резисторов для различных ступеней аттенюаторов.

DDS генератор на ATmega16

Дата публикации: 09 января 2012 .

В этой статье рассматривается схемотехническое решение, устройство и конструкция DDS генератора (генератор с прямым цифровым синтезом формы сигнала) на микроконтроллере ATmega16 фирмы Atmel. В приборе, кроме синтеза сигнала различной формы и частоты, реализуется возможность регулировки амплитуды и смещения выходного сигнала.

Основные характеристики прибора:

— простое схемотехническое решение, доступные компоненты;
— односторонняя печатная плата;
— сетевой источник питания;
— специализированный выход частоты от 1 МГц до 8 МГц;
— DDS выход с регулировкой амплитуды и смещения;
— форма выходного DDS сигнала: синусоида, прямоугольные импульсы, пилообразные импульсы, треугольные импульсы, ЭКГ, шум;
— для отображения текущих параметров используется двухстрочный ЖК дисплей;
— пятикнопочная клавиатура;
— шаг перестройки частоты: 1, 10, 10, 1000, 10000 Гц;
— восстановление последней конфигурации при включении;
— регулировка смещения: –5 В … +5 В;
— регулировка амплитуды: 0 … 10 В;
— регулировка частоты: 0 … 65534 Гц.

За основу прибора, а точнее алгоритм работы микроконтроллера, была взята разработка DDS генератора Jesper Hansen. Предложенный алгоритм был немного переработан и адаптирован под компилятор WinAVR-GCC

Сигнальный генератор имеет два выхода: выход DDS сигнала и выход высокочастотного сигнала (1 – 8 МГц) прямоугольной формы, который может использоваться для «оживления» микроконтроллеров с неправильными установками Fuse-битов или для других целей.

Высокочастотный сигнал поступает непосредственно с микроконтроллера, с вывода OC1A (PD5). DDS сигнал формируется микроконтроллером с использованием цепочки резисторов R2R (ЦАП), регулировка смещения и амплитуды возможна благодаря использованию низкопотребляющего операционного усилителя LM358N.

Блок-схема DDS генератора

Как видно, для питания устройства необходимо три напряжения: +5 В, +12 В, –12 В. Напряжения +12 В и –12 В используются для аналоговой части устройства на операционном усилителе для регулировки смещения и амплитуды.

Принципиальная схема источника питания.

В источнике питания используются стабилизаторы напряжения LM7812, LM7805, LM7912 (стабилизатор отрицательного напряжения –12 В).

Принципиальная схема прибора

Рисунок печатной платы

Вид со стороны установки элементов

Внешний вид платы с установленными компонентами

Список использованных элементов

Обозначение
в схеме
Номинал
R1 470 Ом
R2, R6, R8, R10,
R12, R14, R16, R18
10 кОм
R3, R21 100 кОм
R4, R5, R7, R9, R11,
R13, R15, R17, R19
20 кОм
R20 100 Ом
R22 12 кОм
R23 150 Ом
POT1 Потенциометр 1 кОм
POT2 Потенциометр 47 кОм
POT3 Пдстроечный резистор 10 кОм
C1, С2 100 нФ
C3, С4 18 пФ
Q1 Кварцевый резонатор 16 МГц
IC1 Микроконтроллер Atmel ATMEGA16P
IC2 Операционный усилитель LM358N
BNC1 — BNC2 Коннектор типа BNC
S1 — S6 Кнопки
LCD Header 16-выводный коннектор
для подключения дисплея
LCD Module ЖК модуль на базе контроллера HD44780
ISP Коннектор 2×3 для внутрисхемного
программирования
POWER Коннектор для подключения питания
LED1 Светодиод зеленого цвета свечения, 3 мм
ON/OFF Миниатюрный выключатель

Изменения в программном обеспечении микроконтроллера

Изменения в исходном коде связаны лишь с назначением кнопок подключенных к порту D микроконтроллера:

1.Кнопки «влево» и «вправо»

2.Кнопки «вниз» и «вверх»

Кроме того для последних версий компилятора AVR-GCC необходимо внести изменения в следующие строчки кода:

Fuse-биты микроконтроллера ATmega16: HIGH = 0×59, LOW = 0×CF – это соответствует тому, что будут запрограммированы следующие биты: OCDEN, SPIEN, BOOTSZ1, BOOTSZ2, SUT1, SUT0.

Яков Кузнецов/ автор статьи

Приветствую! Я являюсь руководителем данного проекта и занимаюсь его наполнением. Здесь я стараюсь собирать и публиковать максимально полный и интересный контент на темы связанные ремонтом автомобилей и подбором для них запасных частей. Уверен вы найдете для себя немало полезной информации. С уважением, Яков Кузнецов.

Понравилась статья? Поделиться с друзьями:
NEVINKA-INFO.RU
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: