Главная » Измерения
Призовой фонд
на январь 2017 г.
1. 1000 руб.
Radio-Sale
2. Регулируемый паяльник 60 Вт
Паяльник
3. 600 руб.
От пользователей
4. Тестер компонентов LCR-T4
Паяльник

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


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

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

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

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

Теги:

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

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

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

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

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

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

USB осциллограф DSO-2090
USB осциллограф DSO-2090
Конструктор регулируемого преобразователя напряжения LM317 Макетная плата для пайки (10 шт)
вверх