pic Копирование.jpg 

Ишу партнёра – российское производственное предприятие, для которого через краудфандинг соберу нужные суммы денег для разработки и производства «Инструментальной головки» для комплектации станка-ЧПУ или 3Д-принтера настольного формата.

«Инструментальная головка» » (см. приложенный фотофайл) рассчитана для электронщиков-разработчиков и для радиолюбителей-самодельщиков всех стран. Посредством «головки», разработчики и самодельщики смогут: на разрабатываемых или на самодельных печатных платах выполнять токопроводящий рисунок проволокой из любого металла и сплава, делать электропереходы в двухсторонних платах, выполнять платы на любой подложке, например, на подложке сворачиваемой, складываемой и условно целой с длиной до метров, К тому же, используя «Инструментальную головку», разработчики и самодельщики смогут более быстро, экономично, а главное - более экологично изготавливать свои самодельные печатные платы, т.к. при таком изготовлении печатных плат электро/химические техпроцессы не применяются, а значит и химические реагенты и промывная вода не задействованы. И ещё, используя «Инструментальную головку», самодельщики, (а им не нужны ГОСТы и согласования), смогут свои самодельные печатные платы изготавливать в автоматизированном режиме и тиражировать. В этом им помогут мой партнёр - российский программист Пётр Иванов, а также фотодатчик 18 и отверстия на щеках катушки 16 с проволокой от 0,02 до 1мм. (до 20мм для силовых высоковольтных развязок).

Коробицин Иван, г. Чусовой, Пермский кр., т: 8950-460-78-25, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

DDS генератор сигналов на AT90USB162 и AD9833 управляемый по USB

Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

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

Текущая конструкция не позволяет изменять амплитуду, смещение и сопряжение сигнала. Выход фиксирован на уровне 0-4 В. Я планирую сделать еще одну полностью аналоговую плату для регулировки амплитуды и смещения.

Компоненты

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

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

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

Схема

Схема и печатная плата были разработаны с помощью KiCad, довольно приличным EDA с открытым исходным кодом. Я просто выделим некоторые части схемы в статье. Если вас интересуют подробности, в архиве есть схема, загруженная в формате PDF.

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

Это схема обвязки вокруг AD9833. Номиналы обходных конденсаторов взяты из описания AD9833, как и должно быть. Источник тактового сигнала может быть выбран перемычкой JP1, либо внутренний генератор, либо внешний источник синхронизации, который подается через BNC-разъем. Выход DDS сначала фильтруется по нижнему пределу, а затем усиливается. На плате есть тестовые точки, разбросанные по всему пути прохождения сигнала, чтобы облегчить тестирование.

Проект печатной платы

Разметка печатной платы была довольно простой. Вот скриншот финальной печатной платы в 3d-представлении KiCad.

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

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

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

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

Протокол

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

    set commands:
    sf1 [freq] #in Hz
    sf2 [freq] #in Hz
    sp1 [phase] #in degrees
    sp2 [phase] #in degrees
    sfo [1/2/m(modulation)] #frequency output
    spo [1/2/m(modulation)] #phase output
    so [o(off)/s(sine)/t(triangle)/q(square)] #output mode
    sm [freq] #modulation freq

ПО для ПК

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

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

Логика приложения очень проста: приложение просто отправляет соответствующие команды через виртуальный последовательный порт всякий раз, когда любое из значений изменяется в пользовательском интерфейсе. Для этого на компьютере должны быть установлены Python 3.4, а также cx_Freeze 4.3.2. Чтобы запустить управляющее приложение необходимо два раза кликнуть курсором по файлу fgen.py.


Архив для статьи "DDS генератор сигналов на AT90USB162 и AD9833 управляемый по USB"
Описание: Исходный код(Си), управляющее приложение Python, макет печатной платы
Размер файла: 1.17 MB Количество загрузок: 426 Скачать

Метки: DDS, AD9833, AT90USB162, Генератор, USB, Python3

Печать Электронная почта

Комментарии  

0 #1 АлексЕ 15.12.2017 21:38
А я сделал генератор синуса (звуковой) и измеритель мощности (dBm). youtube.com/.../...
Сообщить модератору

Авторизация