![]() |
![]() |
|||||||||||||||
USB DDS Функциональный генератор
Автор: El-Eng Некоторое время назад обзавелся я USB осциллографом, и так мне понравился этот аппарат, что решил я заиметь ему в комплект USB генератор. Конечно, проще всего было бы его купить, но натура радиолюбителя не позволила решить этот вопрос подобным образом. В результате было разработано и изготовлено устройство, предлагаемое вашему вниманию.
Принципиальная схема. Принципиальная схема генератора приведена на Рис. 1. Рис.1. Сигналы шины USB непосредственно поступают на входы микроконтроллера ATtiny2313 (U1) который обеспечивает обмен данными и управление узлами генератора. Как уже было сказано, в качестве основы генератора используется микросхема AD9834, которая подключена к микроконтроллеру через последовательный интерфейс SPI. Для обеспечения стабильности и получения максимального качества синтеза выходного сигнала, эта микросхема тактируется интегральным кварцевым генератором частотой 50МГц (U9). Печатная плата. Прежде чем перейти к описанию печатной платы, приведу несколько соображений, касающихся использованного при разработке подхода:
Исходя из этого, при разработке печатной платы устройства одна сторона (Bottom) была использована для сплошной металлизации (“грязная” и “чистая” шины земли) а межсоединения были выполнены на стороне компонентов (Top), причем те соединения, которые не удалось развести печатными проводниками, сделаны монтажным проводом. Рис.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 достаточно хорошо защищена от повреждений, а устройство не содержит узлов, способных вывести используемый компьютер из строя, вероятность такого исхода все же существует. Автор не несет никакой ответственности за последствия, наступившие в результате манипуляций, связанных с отладкой и использованием устройства. Проверку работоспособности генератора рекомендуется проводить в такой последовательности:
Отсутствие разделительных конденсаторов в тракте выходного сигнала позволило реализовать простой способ точной регулировки амплитуды выходного сигнала с использованием вольтметра постоянного напряжения, имеющегося в лаборатории каждого радиолюбителя. Для регулировки по этой методике необходимо запустить управляющую программу в режиме генерации сигнала с фиксированной частотой и при помощи кнопки [Set] задать значение частоты 0(ноль) Гц. После этого кнопка [Run] перейдет в ненажатое положение, а регуляторы амплитуд – в максимум. Кнопки выбора формы сигнала и разрешения выдачи меандра перейдут в нажатое положение. Далее следует нажать кнопку [Run]. Если все было сделано правильно, на выходах генератора установятся постоянные напряжения, соответствующие максимальным амплитудам выдаваемых сигналов. При помощи подстроечных резисторов R25 и R32 следует отрегулировать эти напряжения таким образом, чтобы на выходе канала синус/треугольник было напряжение 2.55В, а на выходе канала меандра 5.10В. Система команд и пример управления работой генератора. Для тех, кто решит написать собственную управляющую программу генератора или использовать его в составе измерительного комплекса, приведу описание системы команд управления генератором. Основной целью разработанной системы команд было уменьшение объема передаваемых данных в процессе работы генератора в режиме ГКЧ.
Код команды должен быть записан в байт <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. В заключение приведу несколько осциллограмм работы генератора, полученных при помощи осциллографа DSO-X 3034A компании Agilent. Минимальная генерируемая частота 0.18626Гц.Следует отметить, что для синусоидального сигнала под термином “амплитуда” подразумевается размах. Частота генерации – 1МГц. Обратите внимание на равенство амплитуд с минимальной генерируемой частотой. Частота генерации – 10МГц. Амплитуда синусоидального сигнала уменьшилась, но форма – вполне удовлетворительная. Сказывается действие восстанавливающего фильтра. Треугольный сигнал 1КГц. Треугольный сигнал 1МГц. Пример работы в режиме ГКЧ.
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |