Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Измерительная техника >

Теги статьи: Добавить тег

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

Автор: El-Eng
Опубликовано 02.10.2013
Создано при помощи КотоРед.

Некоторое время назад обзавелся я USB осциллографом, и так мне понравился этот аппарат, что решил я заиметь ему в комплект USB генератор. Конечно, проще всего было бы его купить, но натура радиолюбителя не позволила решить этот вопрос подобным образом. В результате было разработано и изготовлено устройство, предлагаемое вашему вниманию.
Как уже ясно из названия статьи, в генераторе используется принцип прямого цифрового синтеза (Direct Digital Synthesis, DDS) выходного сигнала, а реализован генератор на микросхеме AD9834 фирмы Analog Devices. В качестве управляющего и интерфейсного устройства был выбран микроконтроллер ATtiny2313 фирмы Atmel, в котором для поддержки протокола обмена данными по шине USB была использована программная библиотека V-USB, позволяющая обойтись чисто программными средствами.

Краткие технические характеристики генератора:

  • Форма выходного сигнала: синусоидальная, треугольная, меандр
  • Диапазон частот выходного сигнала: 0.2Гц – 10МГц
  • Амплитуда выходного сигнала:
  •    Синусоидального и треугольного: 0 … 2.55В
  •    Меандра: 1.5 … 5.1В (положительные логические импульсы)
  • Неравномерность АЧХ выходного сигнала:
  •    В диапазоне 0.2Гц – 1МГц: не более 0.1дБ
  •    В диапазоне 1МГц – 10МГц: не более 2.0дБ
  • Относительная погрешность частоты выходного сигнала: 0.01%
  • Приведенная погрешность амплитуды выходного сигнала: 2%
  • Питание генератора осуществляется от шины USB

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

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

Рис.1.

Сигналы шины USB непосредственно поступают на входы микроконтроллера ATtiny2313 (U1) который обеспечивает обмен данными и управление узлами генератора. Как уже было сказано, в качестве основы генератора используется микросхема AD9834, которая подключена к микроконтроллеру через последовательный интерфейс SPI. Для обеспечения стабильности и получения максимального качества синтеза выходного сигнала, эта микросхема тактируется интегральным кварцевым генератором частотой 50МГц (U9).
Генерируемый сигнал синусоидальной или треугольной формы через восстанавливающий дифференциальный пассивный фильтр 5-го порядка поступает на вход дифференциального усилителя (U5), а оттуда на вход формирователя меандра и на выход устройства. Частота среза (11МГц) и порядок восстанавливающего фильтра были выбраны как компромисс между точностью формы выходного сигнала на верхних частотах, неравномерностью АЧХ и максимальной генерируемой частотой выходного сигнала. При необходимости, параметры этого фильтра могут быть изменены, например, для обеспечения более высокой частоты выходного сигнала, которая, теоретически, может доходить до 25МГц. Частотные характеристики выходного буферного дифференциального усилителя, выполненного на микросхеме AD8130, позволяют реализовать эту возможность.
Прямоугольный выходной сигнал (меандр) формируется из выходного сигнала при помощи формирователя, реализованного на компараторе MAX961 (U6). Сформированный меандр (положительные логические импульсы) поступает на дополнительный выход через буферный каскад на микросхеме NC7SZ04 (U3). При необходимости, формирователь меандра может быть выключен подачей уровня логической единицы на вход SHDN компаратора.
Регулировка амплитуды в описываемом генераторе обеспечивается управляемыми микроконтроллером цифровыми потенциометрами (U8 и U10), причем регулировка осуществляется “холодным способом”: амплитуда синусоидального и треугольного сигналов регулируется путем изменения задающего тока ЦАП микросхемы AD9834, а амплитуда меандра регулируется путем изменения напряжения питания выходного буфера U3. Такой подход гарантирует отсутствие влияния цепей регулировки амплитуды на равномерность АЧХ выходного сигнала.
Питание генератора осуществляется от шины USB. Необходимые для работы узлов генератора отрицательное и удвоенное положительное напряжения обеспечиваются преобразователем, выполненном на микросхеме MAX1681 (U4).
Напряжение питания 3.3В, для цифровой части генератора, обеспечивается линейным стабилизатором, реализованном на компонентах U7A–Q1A, источником опорного напряжения для него служит напряжение 2.5В формируемое микросхемой U2.

Печатная плата.

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

  • Высокочастотные и быстродействующие устройства работают значительно надежнее при наличии на печатной плате хотя бы одного слоя сплошной металлизации, соединенного с общим проводом (землей).
  • Обычно, в домашних условиях можно изготовить максимум двухстороннюю плату.
  • Металлизация переходных отверстий в домашних условиях затруднительна, а их пропайка соизмерима по трудоемкости с соединением монтажным проводом (особенно если дополнительно взять в расчет время и усилия, потраченные на правильную разводку в двух слоях).
  • Количество изготавливаемых устройств, как правило, одно-два.

Исходя из этого, при разработке печатной платы устройства одна сторона (Bottom) была использована для сплошной металлизации (“грязная” и “чистая” шины земли) а межсоединения были выполнены на стороне компонентов (Top), причем те соединения, которые не удалось развести печатными проводниками, сделаны монтажным проводом.
Печатная плата разработана для размещения в стандартном корпусе G939 (с любым индексом) фирмы Gainta. Корпус необходимо доработать – удалить батарейный отсек и проделать отверстие для разъема mini-USB.
Рисунки печатной платы для позитивного и негативного процессов (слой Top дан в зеркальном отображении) находятся в файле Fab.zip приложения. Там же содержатся список компонентов, принципиальная и монтажная схемы (монтажная схема для слоя Bottom отсутствует, поскольку на этом слое устанавливаются всего два элемента – кварцевый резонатор Y1 и ферритовая бусина L11, разделяющая “грязную” и “чистую” шины земли). В этом файле также находятся прошивка для микроконтроллера и картинка для пояснения правильной установки FUSE-битов.
Следует отметить, что принципиальная схема генератора была изменена в процессе первичной отладки экземпляра устройства, соответственно была изменена и печатная плата (заодно установлен кварцевый резонатор в более привычном корпусе). Однако экземпляр устройства с использованием модифицированной печатной платы не изготавливался. Внешний вид генератора со снятой крышкой представлен на Рис.2.

Рис.2.

Управляющая программа.

Для работы совместно с описываемым генератором была разработана управляющая программа, обеспечивающая функционирование генератора как в режиме генерации сигнала с фиксированной частотой, так и в качестве генератора качающейся частоты (ГКЧ). Программа написана на Delphi 7 и проверена на Windows XP и Windows 7. В процессе работы программа не изменяет реестр Windows и не требует для своей работы каких-либо дополнительных файлов или библиотек. Программа находится в файле 01.zip.

На Рис.3. приведено окно программы в режиме генератора фиксированной частоты.

Рис.3.

Необходимое значение частоты генерации можно установить несколькими способами: щелчком левой кнопки мыши, установив ее указатель на нужный участок псевдологарифмической шкалы; передвинув мышью курсор в нужную позицию; используя кнопки [<-] [->] или кнопку [Set]. Последний способ обеспечивает наиболее точную установку частоты, кроме того, он позволяет установить любую возможную частоту генерации, в том числе находящуюся вне пределов шкалы. С правой стороны расположены регуляторы амплитуды выходного сигнала, а также кнопки выбора формы выходного сигнала и разрешения выдачи сигнала прямоугольной формы. Следует отметить, что примененный способ регулировки амплитуды выходного сигнала прямоугольной формы не позволяет выдавать сигнал, меньший определенной величины (формально – менее 1.6В, реально – менее 1В). Этот факт отображается красным цветом величины амплитуды прямоугольного сигнала менее 1.6В. Для запуска генератора необходимо нажать кнопку [Run].

Окно управляющей программы в режиме ГКЧ показано на Рис.4.

Рис.4.

Диапазон изменения частоты задается на логарифмической шкале двумя дополнительными курсорами, которые можно передвигать с помощью мыши. Закон изменения частоты может быть выбран как линейным, так и логарифмическим; изменение частоты может быть от меньшей к большей, от большей к меньшей и попеременно. Время развертки может быть установлено от 1 до 100 секунд. Имеется возможность сброса текущего цикла развертки и временной остановки (паузы). Запуск генератора, как и в предыдущем случае, осуществляется при помощи кнопки [Run].
Следует отметить, что программа работоспособна и при отсутствии генератора. В этом случае она переходит в демонстрационный режим.

 Проверка работоспособности и регулировка.

Внимание! Считаю необходимым предупредить, что манипуляции с шиной USB вы производите на свой страх и риск. Хотя шина USB достаточно хорошо защищена от повреждений, а устройство не содержит узлов, способных вывести используемый компьютер из строя, вероятность такого исхода все же существует. Автор не несет никакой ответственности за последствия, наступившие в результате манипуляций, связанных с отладкой и использованием устройства.

Проверку работоспособности генератора рекомендуется проводить в такой последовательности:

  • Убедившись в отсутствии ошибок монтажа подключить устройство к шине USB.
  • Проконтролировать наличие и величину питающих напряжений:
  • P5V0: +4.5…5.5V
  • N5V0: -4.0…5.0V
  • D9V0: +7.5…9.5V
  • D3V3: +3.1…3.5V
  • Запрограммировать микроконтроллер и установить необходимую конфигурацию FUSE-битов.
  • Отключить устройство от шины USB и вновь подключить его. Должна произойти стандартная процедура установки USB HID устройства TorDDS, при этом операционная система определяет его как USB устройство ввода.
  • Запустить управляющую программу и убедиться в работоспособности устройства.
  • При помощи подстроечных резисторов R25 и R32 отрегулировать напряжения выходных сигналов так, чтобы они соответствовали уровню, отображаемому управляющей программой. Рекомендуется воспользоваться методикой, описанной ниже:

Отсутствие разделительных конденсаторов в тракте выходного сигнала позволило реализовать простой способ точной регулировки амплитуды выходного сигнала с использованием вольтметра постоянного напряжения, имеющегося в лаборатории каждого радиолюбителя. Для регулировки по этой методике необходимо запустить управляющую программу в режиме генерации сигнала с фиксированной частотой и при помощи кнопки [Set] задать значение частоты 0(ноль) Гц. После этого кнопка [Run] перейдет в ненажатое положение, а регуляторы амплитуд – в максимум. Кнопки выбора формы сигнала и разрешения выдачи меандра перейдут в нажатое положение. Далее следует нажать кнопку [Run]. Если все было сделано правильно, на выходах генератора установятся постоянные напряжения, соответствующие максимальным амплитудам выдаваемых сигналов. При помощи подстроечных резисторов R25 и R32 следует отрегулировать эти напряжения таким образом, чтобы на выходе канала синус/треугольник было напряжение 2.55В, а на выходе канала меандра 5.10В.

Система команд и пример управления работой генератора.

Для тех, кто решит написать собственную управляющую программу генератора или использовать его в составе измерительного комплекса, приведу описание системы команд управления генератором. Основной целью разработанной системы команд было уменьшение объема передаваемых данных в процессе работы генератора в режиме ГКЧ.
Как известно, взаимодействие с USB HID устройством осуществляется при помощи управляющих сообщений (Report). В данном случае реализовано одностороннее взаимодействие, от компьютера к устройству. Управляющее сообщение (Report) для генератора состоит из четырех байтов: идентификатора (ID), который в нашем случае должен быть всегда равен нулю, команды (Command) и двух байтов данных (Data). Поскольку в микросхеме AD9834 отсутствует возможность чтения внутренних регистров, в микроконтроллере содержатся образы этих регистров, которые используются для управления работой этой микросхемы:

  • FreqReg – 28-разрядный регистр частоты
  • PhaseReg – 14-разрядный регистр фазы
  • ControlReg – 16-разрядный регистр управления

Код команды должен быть записан в байт <Command>, а необходимые данные - в двухбайтное слово <Data>. Далее в описании команда дается в виде <XXXXXXXX><Data> где X – бит байта <Command>:

<1DDDDDDD><Data> - шаг по частоте. Биты DDDDDDD (7 бит) вместе с <Data> образуют 23-битный код шага по частоте в смещенном двоичном коде: нулю соответствует число 400000H, которое вычитается контроллером из входного кода, после чего результат складывается с содержимым регистра FreqReg и сохраняется в этом регистре. Далее микросхема AD9834 программируется контроллером на выдачу этой частоты, одновременно выходя из состояния сброса, если она находилась в нем перед этим.

<01XXDDDD><Data> - запись данных в FreqReg. 4 бита DDDD вместе с 16-ю битами <Data> дополняются справа 8-ю нулями, образуя 28-разрядное слово, которое записывается в регистр FreqReg. Эта команда не влияет на работу AD9834.

<001XXXXX><Data> - запись в регистр PhaseReg. 14 младших разрядов <Data> записываются в PhaseReg, после чего PhaseReg записывается в AD9834 и происходит переключение на работу с этим значением регистра.

<0001FPXX><Data> - запись в ControlReg. 16-разрядное слово <Data> записывается в ControlReg, при этом, если биты F и/или P равны нулю, то соответствующие биты FSEL и PSEL в ControlReg остаются без изменений. После этого значение ControlReg записывается в AD9834.

<00001XXX><Data> - прямая запись в AD9834. 16-разрядное слово <Data> записывается в AD9834. Содержимое регистров в микроконтроллере остается неизменным.

<000001XX><Data> - установка амплитуды выходного сигнала канала синус/треугольник. Младший байт <Data> определяет значение амплитуды: 0 – минимальная амплитуда, 255 – максимальная.

<0000001X><Data> - установка амплитуды выходного сигнала канала меандр. Младший байт <Data> определяет значение амплитуды: 0 – минимальная амплитуда, 255 – максимальная.

<00000001><Data> - разрешение выдачи меандра. Если младший байт <Data> равен нулю – меандр отключен, в любом другом случае – включен.

<00000000><Data> - управление светодиодом. Если младший байт <Data> равен нулю – светодиод отключен, в любом другом случае – включен.

В файле 02.zip приведен исходный код примера управления работой генератора. Этот пример, написанный на Delphi 7, основан на коде, опубликованном пользователем pvabox на форуме VINGRAD.
Для связи с генератором использован компонент JvHidControllerClass, который разработал Robert Martin Marquardt и который входит в состав свободно распространяемой библиотеки JEDI. Этот же компонент использован и в управляющей программе TorDDS.

В заключение приведу несколько осциллограмм работы генератора, полученных при помощи осциллографа DSO-X 3034A компании Agilent.

Минимальная генерируемая частота 0.18626Гц.Следует отметить, что для синусоидального сигнала под термином “амплитуда” подразумевается размах.

Частота генерации – 1МГц. Обратите внимание на равенство амплитуд с минимальной генерируемой частотой.

Частота генерации – 10МГц. Амплитуда синусоидального сигнала уменьшилась, но форма – вполне удовлетворительная. Сказывается действие восстанавливающего фильтра.

Треугольный сигнал 1КГц.

Треугольный сигнал 1МГц.

Пример работы в режиме ГКЧ.

 


Файлы:
Файл 03.zip
Файл 02.zip
Файл 01.zip


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

35 0 0
2 0 0