Реклама ⓘ
Главная » Измерения
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

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

Один из инструментов, без которого я бы пропал в своей домашней лаборатории, является функциональный генератор. Он довольно дорогой, поэтому я не купил его. Я подумал, что можно попытаться сделать его самостоятельно. Нашел довольно распространенную DDS (Direct Digital Synthesis, прямой цифровой синтез) микросхему AD9833. Теперь надо добавить только USB-совместимый AVR микроконтроллер и возможно немного аналоговых элементов.

Эта плата не обеспечивает регулировку амплитуды или смещения сигнала. Выход устанавливается 0-4В. Я планирую сделать ещё одну полностью аналоговую плату для регулировки амплитуды и смещения.

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

Элементы

Неотъемлемой частью этой конструкции является DDS микросхема AD9833 от Analog Devices. Микросхема имеет входной тактовый сигнал 25 МГц, внутреннюю фазовую автоподстройку частоты, таблица поиска синусов и АЦП. Контролируя её по интерфейсу SPI, вы можете получить на выходе синусоидальный, пилообразный и прямоугольный сигнал с частотным диапазоном от 0,01 Гц до 3 МГц. Частота может быть выше, до ~7 МГц, но на такой высокой частоте синусоидальный сигнал выглядит ужасно.

Для управления этой микросхемой, я использовал дешевый USB-совместимый AVR микроконтроллер Atmel AT90USB162. Он будет обеспечивать виртуальный последовательный интерфейс по USB и интерпретировать команды переданные по этому интерфейсу для изменения выходного сигнала DDS надлежащим образом.

OPA357 используется для усиления выходного сигнала DDS. Номинальное напряжение на выходе AD9833 0.6Vpp, со средним значение 0.3В. OPA357 была выбрана потому, что она поддерживает необходимые высокие частоты и её можно получить в качестве бесплатного образца от компании Texas Instruments.

Схема

Схема и печатная платы были разработаны в KiCad, довольно приличном EDA (EDA, автоматизация проектирования электронных приборов) с открытым исходным кодом. Здесь приведены некоторые части схемы. Если вас интересует более подробная схема, её можно скачать ниже в формате PDF.

Схема питания

Устройство может питаться или от USB, или от отдельного источника +5В. Два диода Шоттки установлены, чтобы напряжения нашли друг на друга, если они поступаю из обоих входов.

Схема генератора

Схема построена на DDS AD9833. Блокировочные конденсаторы и их номиналы взяты из даташита. Источник тактового сигнала может быть выбран при помощи JP1. Может использоваться встроенный генератор и внешний источник тактового сигнала через BNC разъем. Выход из DDS сначала проходит через ФНЧ и затем усиливается. На выходе есть резистор 50 Ом, чтобы обеспечить выходное сопротивление 50 Ом. По всему пути прохождения сигнала есть контрольные точки, что обеспечивает удобство тестирования.

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

Разводка довольно проста. Вот скриншот платы в 3D-виде KiCad:

3D-вид печатной платы

Вы можете видеть BNC разъем для подачи внешнего тактового сигнала на этом скриншоте, но у меня не было необходимости его припаивать.

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

Разъем

Немного некрасиво, но работает не хуже.

У меня также была небольшая ошибка в оригинальной разводке.  VUSB контакт AVR должен быть подключен к источнику питания, а не к USB VUSB. В таком случае, если я питаю устройство от внешнего источника, USB периферия все равно получает питание и может инициализироваться. Перерезать дорожку и припаять перемычку достаточно, что бы исправить это. К статье прилагается исправленная версия платы.

Протокол

Плата подключена к компьютеру через виртуальный последовательный порт по USB. Должен быть стандартный способ обмена информацией, поэтому я написал простой стандарт перед тем, как я начал писать код. Я решил использовать ASCII для включения человека при написании команд во время тестирования и для облегчения отладки и читабельности кода.

sf1 [freq] #в Гц
sf2 [freq] #в Гц
sp1 [phase] #в градусах
sp2 [phase] #в градусах
sfo [1/2/m(modulation)] #frequency output
spo [1/2/m(modulation)] #phase output
so [o(off-выключен)/s(sine-синусоида)/t(triangle-треугольник)/q(square-прямоугольный сигнал)] #режим выхода
sm [freq] #частота модуляции

Все команды должны заканчиваться возвратом каретки-новой строкой.

Так например, для установки выходной частоты от 1 до 100 Гц, вы должны отправить "sf1 100 \r\n".

Программа для AVR

Функциональность USB была предоставлена ​​отличной LUFA USB библиотекой для микроконтроллеров AVR. Я повторил код, который я написал, прежде чем обмениваться информацией по SPI и относительно функциональную библиотеку для AD9833. Потом я написал код, преобразовывающий команды, посылаемые через последовательный интерфейс в обращение к функции библиотеки AD9833.

Я получил проблему, используя Doxygen для комментирования своего кода и создания документации. Подробнее об этом можно узнать, перейдя по ссылке.

Программное обеспечение для ПК

Программное обеспечение написано на Python3. Я начал изучать его пару месяцев назад и до сих пор использую его для создания простых интерфейсов. Я использовал графическую основу tkinter для создания графического интерфейса пользователя и pyserial для последовательного соединения. Код пользовательского интерфейса не очень хорош, я ещё не совсем разобрался с Python. Это прекрасный язык, но я предпочитаю работать с микроконтроллерами и писать код на С.

FGen controller

Пользовательский интерфейс оказался весьма хорошим и хорошо работающим. Есть некоторые вещи, которые я хотел-бы сделать по-другому. Например, выбор модуляции выходного сигнала должен иметь собственные кнопки. Если бы я хотел добавить кнопку сдвига амплитуды, то её было бы просто некуда поставить. Возможно, я попытаюсь разместить её где то.

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

Результат

Я снял короткое видео, демонстрирующее работу функционального генератора. Кажется, он работает довольно хорошо!

Проект на github, документация для AVR-кода

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

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
U2 МК AVR 8-бит
AT90USB162
1 Поиск в магазине ОтронВ блокнот
U3 Программируемый генераторAD98331 Поиск в магазине ОтронВ блокнот
U1 Линейный регулятор
LM1117-N
1 Поиск в магазине ОтронВ блокнот
U4 Операционный усилитель
OPA357
1 Поиск в магазине ОтронВ блокнот
X1 Кварцевый резонатор?1 Поиск в магазине ОтронВ блокнот
X2 Генератор?1 Поиск в магазине ОтронВ блокнот
D1, D2 Диод Шоттки?2 Поиск в магазине ОтронВ блокнот
D3, D4 Светодиод2 Поиск в магазине ОтронВ блокнот
С1-С3 Конденсатор1 мкФ3 Поиск в магазине ОтронВ блокнот
C4 Электролитический конденсатор4.7 мкФ1 Поиск в магазине ОтронВ блокнот
C5, C7, C12-C15 Конденсатор100 нФ6 Поиск в магазине ОтронВ блокнот
C6 Электролитический конденсатор10 мкФ1 Поиск в магазине ОтронВ блокнот
C9 Конденсатор?1 Поиск в магазине ОтронВ блокнот
C10, C11 Конденсатор22 пФ2 Поиск в магазине ОтронВ блокнот
R1, R3 Резистор
22 Ом
2 Поиск в магазине ОтронВ блокнот
R2, R7 Резистор
20 кОм
2 Поиск в магазине ОтронВ блокнот
R4 Резистор
10 кОм
1 Поиск в магазине ОтронВ блокнот
R5, R9, R11 Резистор
1 кОм
3 Поиск в магазине ОтронВ блокнот
R6 Резистор?1 Поиск в магазине ОтронВ блокнот
R8 Резистор
150 кОм
1 Поиск в магазине ОтронВ блокнот
R10, R12 Резистор
50 Ом
2 Поиск в магазине ОтронВ блокнот
J1 РазъёмMini USB1 на платуПоиск в магазине ОтронВ блокнот
P2, P5 РазъёмBNC2 на платуПоиск в магазине ОтронВ блокнот
JP1 РазъёмPLS-3R1 для перемычкиПоиск в магазине ОтронВ блокнот
CON1 РазъёмPLD-61 ISPПоиск в магазине ОтронВ блокнот
P1 Разъём2 контакта1 питаниеПоиск в магазине ОтронВ блокнот
P3 РазъёмPLS-81 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Оригинал статьи

Прикрепленные файлы:

Теги:

none Опубликована: 2012 г. 0 1
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (1) | Я собрал (0) | Подписаться

0
ahu8 #
Можно файл печатной платы из KiCad?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Осциллограф DSO138
Осциллограф DSO138
Набор для сборки - УНЧ 2х60 Вт на TDA7294 Макетная плата для пайки (10 шт)
вверх