USB DDS Функциональный генератор
Re: USB DDS Функциональный генератор
Внимание, анонс! Только что Главному Коту отправлена на утверждение статья с описанием измерителя АЧХ. Надеюсь, он не будет тянуть с публикацией. А здесь я выкладываю обновление управляющей программы TorDDS. В ней слегка изменен дизайн, расширен частотный диапазон шкалы (без гарантии стабильности амплитуды, что подчеркнуто красным цветом), добавлена кнопка [delta f], позволяющая установить шаг изменения частоты при использовании кнопок [<-] и [->], а главное, обеспечена возможность установки индикации амплитуды выходного напряжения с учетом ее остаточного значения при помощи файла конфигурации. Подробности в файле Readme.txt архива. Файлы, традиционно, заархивированы в .rar (переименован в .ra$), а потом в .zip.
Like the eyes of a cat in the black and blue...
- morokot
- Вымогатель припоя
- Сообщения: 587
- Зарегистрирован: Вт сен 13, 2011 13:29:09
- Откуда: Крым, Симферополь
Re: USB DDS Функциональный генератор
Спасибо, давно ожидалось...
Re: USB DDS Функциональный генератор
Статья опубликована. Ссылка.
Like the eyes of a cat in the black and blue...
Re: USB DDS Функциональный генератор
Отличный получился комплекс!
А возможна ли работа двух генераторов одновременно (смотреть интермоды например) от одного компьютера?
Дальше, конечно, сразу возникнет желание на синхронный SWAP с регулируемым разносом и т.д . и т.п.
На сколько сложно это реализовать?
А возможна ли работа двух генераторов одновременно (смотреть интермоды например) от одного компьютера?
Дальше, конечно, сразу возникнет желание на синхронный SWAP с регулируемым разносом и т.д . и т.п.
На сколько сложно это реализовать?
Re: USB DDS Функциональный генератор
Спасибо за оценку, рад что вам понравилось.vit15 писал(а):Отличный получился комплекс!
Я не пробовал, но, скорее всего, нет, два генератора будут конфликтовать. Можно попытаться организовать работу двух генераторов, присвоив им, например, разные VID/PID и, соответственно, модифицировав программу управления (сейчас одновременный запуск двух экземпляров программы вообще запрещен). В любом случае, генераторы будут работать несинхронно и синхронизировать их не удастся, легче сделать новую разработку.vit15 писал(а): возможна ли работа двух генераторов одновременно ... от одного компьютера?
Like the eyes of a cat in the black and blue...
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: USB DDS Функциональный генератор
Начинаю свою нудятину здесь. В схеме R15 = 470, в перечне R15 = 2,7 К. Судя по тому, что в соответствии с ДШ на AD9834 на выходе CAP_2.5V должно быть 2,5 Вольта, что подтверждается и названием шины 2V5, номинал должен быть равен 470 Ом. При этом на выходе стабилизатора напряжения U7A+Q1A будет держаться 3,3 Вольта. Ставлю 470 Ом.
Похоже, что изначально номинал 2,7 К рассчитывался для использования опоры не от CAP_2/5V, а от REFOUT=1,2 V ))
Похоже, что изначально номинал 2,7 К рассчитывался для использования опоры не от CAP_2/5V, а от REFOUT=1,2 V ))
О технике чего спорить-то, давайте попробуем.
Re: USB DDS Функциональный генератор
Да, да, вы сделали правильный вывод. Эту ошибку первым заметил morokot (здесь обсуждение), схему я поправил, а перечень нет. Поскольку внесение исправлений в статью довольно муторно, я оставил все как есть (просмотрите всю ветку, возможно, что-либо будет вам интересно, например здесь указаны номиналы восстанавливающего фильтра для более широкой полосы выходного сигнала). В любом случае, сейчас схема - правильная, при разночтениях ориентируйтесь на нее.
Like the eyes of a cat in the black and blue...
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: USB DDS Функциональный генератор
Да, спасибо, извините пожалуйста, вспомнил уже... Форум смотрел давно, подзабылось. Сейчас перечитал все сначала. Фильтр пока трогать не буду, завести надо генератор и пощупать.
Вот думаю, чем калибровать АЧХометр - пенсионерствую уже, дома из приборов - осциллограф Hantek DSO1202B, мультиметр Fluke 77, да анализатор логический, клон USBee. И пойти некуда, все разогнали к черту строители нового будущего. )) Скорее всего откалибрую по описанной методе генератор, а по нему вольтметр, наверное для моей практики точности хватит более чем...
Кстати, а почему Вы не стали использовать REFOUT в стабилизаторе, ведь так было сначала?
Вот думаю, чем калибровать АЧХометр - пенсионерствую уже, дома из приборов - осциллограф Hantek DSO1202B, мультиметр Fluke 77, да анализатор логический, клон USBee. И пойти некуда, все разогнали к черту строители нового будущего. )) Скорее всего откалибрую по описанной методе генератор, а по нему вольтметр, наверное для моей практики точности хватит более чем...
Кстати, а почему Вы не стали использовать REFOUT в стабилизаторе, ведь так было сначала?
О технике чего спорить-то, давайте попробуем.
Re: USB DDS Функциональный генератор
Устройство разрабатывалось так, чтобы калибровка была несложной. Ваших приборов более чем достаточно, с ними можно калибровать и обычным способом (только не забывайте, что авометр показывает действующее значение напряжения для синусоидального сигнала, а программа - амплитудное значение).dadigor писал(а):... дома из приборов - осциллограф Hantek DSO1202B, мультиметр Fluke 77...
Калибровку вольтметра лучше все же делать при помощи программы TorFRA. Если генератор нормально откалиброван, то точность калибровки вольтметра будет вполне достаточной (для каждой частоты она делается по нескольким точкам). Вообще-то, вольтметр имеет сравнительно большую погрешность измерения напряжения (расплата за широкий амплитудный и частотный диапазоны), но она мало влияет на форму кривой АЧХ.
Проблема была в том, что если микросхема AD9834 переходит в режим энергосбережения, то она отключает REFOUT и пропадает питание контроллера (3.3В). Приходится отключать генератор от USB и заново подключать. При отладке обмена данными с AD9834 я периодически с этим сталкивался и решил, что лучше от этого избавиться. Напряжение 2.5 В не пропадает при переходе в режим энергосбережения.dadigor писал(а):...а почему Вы не стали использовать REFOUT в стабилизаторе, ведь так было сначала?
Like the eyes of a cat in the black and blue...
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: USB DDS Функциональный генератор
Понятно, спасибо большое за исчерпывающий ответ!
О технике чего спорить-то, давайте попробуем.
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: USB DDS Функциональный генератор
Допаял плату, запустилась с "пол-оборота". Сразу опозналась как TorDDS, покрутил резистор (пока один - для синуса, так как MAX961 еще ожидается прибытием из Чайны) и ву а ля!
Погонял синусы на осциллографе, частотомер осциллографа расходится с частотой генератора в шестом знаке, кто больше врет, неясно, ясно что оба кварца врут.
Но это и не так принципиально для АЧХометра )). Теперь надо уложить генератор и вольтметр в штатные корпуса. Дальше буду постить в тему вольтметра - она свежЕе ))
Погонял синусы на осциллографе, частотомер осциллографа расходится с частотой генератора в шестом знаке, кто больше врет, неясно, ясно что оба кварца врут.
Но это и не так принципиально для АЧХометра )). Теперь надо уложить генератор и вольтметр в штатные корпуса. Дальше буду постить в тему вольтметра - она свежЕе ))
О технике чего спорить-то, давайте попробуем.
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: USB DDS Функциональный генератор
Пара вопросов или предложений к автору.
1. В окне генератора отображается значение уровня выходного сигнала в вольтах. Для синусоидального сигнала отображается значок переменного напряжения и далее его значение. Обычно в таких случаях все же используется действующее значение напряжения, для синуса 0,7071 Umax. Может быть имеет смысл показывать оба значения - Umax и Urms, типа кому что в данный момент более необходимо? А при переключении в режим треугольного сигнала показывать только Umax, заодно изменив и значок перед значением? Положение кнопки синус/треугольник не очень заметно, а здесь будет явное указание типа сигнала.
2. Хорошо бы было запоминать состояние генератора при выключении и включаться с сохраненными настройками. Можно опционально или кнопкой. Это же касается и АЧХометра, там даже более актуально.
1. В окне генератора отображается значение уровня выходного сигнала в вольтах. Для синусоидального сигнала отображается значок переменного напряжения и далее его значение. Обычно в таких случаях все же используется действующее значение напряжения, для синуса 0,7071 Umax. Может быть имеет смысл показывать оба значения - Umax и Urms, типа кому что в данный момент более необходимо? А при переключении в режим треугольного сигнала показывать только Umax, заодно изменив и значок перед значением? Положение кнопки синус/треугольник не очень заметно, а здесь будет явное указание типа сигнала.
2. Хорошо бы было запоминать состояние генератора при выключении и включаться с сохраненными настройками. Можно опционально или кнопкой. Это же касается и АЧХометра, там даже более актуально.
О технике чего спорить-то, давайте попробуем.
Re: USB DDS Функциональный генератор
1. Я уже думал на этим. Боюсь, возникнет путаница. Все же, это - функциональный генератор и, для однообразия, на мой взгляд, лучше отображать амплитудное значение. В конце концов, действующее значение, обычно, интересно лишь для синуса, и, если оно действительно важно, его можно легко рассчитать. Если отображение действующего значения уж очень важно, то можно установить в конфигурационном файле MaxSine и Intercept в величинах действующего значения, пожертвовав правильностью отображения величины амплитуды треугольника.
2. Мне не хотелось, чтобы в процессе работы программа генерировала какие-либо файлы, а реализация чтения конфигурации из микроконтроллера, к сожалению, невозможна из-за нехватки программной памяти. Кроме того, непонятно, в какой режим устанавливать генератор, когда его подключили после того, как была запущена программа. Вдобавок, начальный старт требует дополнительной конфигурации генератора. Поэтому, при подключении генератора, кнопка "Run" автоматически переходит в ненажатое состояние, чтобы обеспечить правильный старт, в соответствии с текущими установками.
2. Мне не хотелось, чтобы в процессе работы программа генерировала какие-либо файлы, а реализация чтения конфигурации из микроконтроллера, к сожалению, невозможна из-за нехватки программной памяти. Кроме того, непонятно, в какой режим устанавливать генератор, когда его подключили после того, как была запущена программа. Вдобавок, начальный старт требует дополнительной конфигурации генератора. Поэтому, при подключении генератора, кнопка "Run" автоматически переходит в ненажатое состояние, чтобы обеспечить правильный старт, в соответствии с текущими установками.
Like the eyes of a cat in the black and blue...
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: USB DDS Функциональный генератор
1. Я же предлагаю показывать для синуса ДВА значения одновременно, места хватает )) Типа три строки:
~ Umax = X.XX V (ну или ~ Uamp = X.XX V )
~ Urms = X.XX V
п Umax = X.XX V
а при переключении на треугольник:
^ Umax = X.XX V
(в этом случае вторая строка пропущена)
п Umax = X.XX V
Впрочем, это конечно не очень принципиально. Можно для себя и файлик TorDDS.cfg подправить, я наверное так и сделаю. Если я не ошибаюсь, что-то вроде Intercept=0.023338 и MaxSine=1.8033 ??
2. При запуске программы с подключенным генератором или подключении генератора после запуска, старт пусть так и будет ручным, это правильно, а непонятки с режимом можно было бы исключить введением кнопки выбора: РЕЖИМ = ДЕФОЛТНЫЙ/СОХРАНЕННЫЙ. Но раз уж не хочется генерировать файл, а оставшегося (а там его вообще немного) места в ПЗУ для организации записи/чтения установок в EEPROM мало, то вопрос снимается.
~ Umax = X.XX V (ну или ~ Uamp = X.XX V )
~ Urms = X.XX V
п Umax = X.XX V
а при переключении на треугольник:
^ Umax = X.XX V
(в этом случае вторая строка пропущена)
п Umax = X.XX V
Впрочем, это конечно не очень принципиально. Можно для себя и файлик TorDDS.cfg подправить, я наверное так и сделаю. Если я не ошибаюсь, что-то вроде Intercept=0.023338 и MaxSine=1.8033 ??
2. При запуске программы с подключенным генератором или подключении генератора после запуска, старт пусть так и будет ручным, это правильно, а непонятки с режимом можно было бы исключить введением кнопки выбора: РЕЖИМ = ДЕФОЛТНЫЙ/СОХРАНЕННЫЙ. Но раз уж не хочется генерировать файл, а оставшегося (а там его вообще немного) места в ПЗУ для организации записи/чтения установок в EEPROM мало, то вопрос снимается.
О технике чего спорить-то, давайте попробуем.
Re: USB DDS Функциональный генератор
1. Так сделать можно, попробую.
2. Пусть все останется как есть.
Нужно измерить значения для вашего экземпляра генератора, а в файл занести результаты, деленные на 1.414 (корень из двух).dadigor писал(а):Если я не ошибаюсь, что-то вроде ...
2. Пусть все останется как есть.
Like the eyes of a cat in the black and blue...
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: USB DDS Функциональный генератор
El-Eng писал(а):Нужно измерить значения для вашего экземпляра генератора, а в файл занести результаты, деленные на 1.414 (корень из двух).
Не очень ясно. Я думал, что если выставил точно 2,55 В и занес (2,55 : 1,414) = 1.8033 и (0.033 : 1,414) = 0,02334, то это будет правильно, или нужно еще что-то измерять?
И еще вопрос. А из каких соображений стабилизатор 3,3 В сделан на дискретных элементах? Есть какие-то подводные камни (я не нашел) при замене на интегральный линейный стабилизатор? Наверное были какие-то задумки по завязке на опору от AD9834?
И еще предложение. Неплохо бы иметь импульс синхронизации для sweep-режима, ножки свободные у Тиньки есть. Начало его должно совпадать с установкой начальной частоты, длительность не очень критична, от микросекунд до десятков миллисекунд, проще всего наверное 50 мсек )). Доработать плату, сделав буфер для соответствующего выхода, я думаю, сможет каждый, кому это нужно, сам.
О технике чего спорить-то, давайте попробуем.
Re: USB DDS Функциональный генератор
Нет не нужно. Вы все сделали правильно (если, конечно, 0.033 - измеренное значение).dadigor писал(а):... или нужно еще что-то измерять?
Нет, подводных камней нет (надеюсь). Сделано было чисто из экономии - оставался свободным один ОУ. Для 3.3 В можно поставить интегральный стабилизатор, только не обычный, а LDO - он должен сохранять работоспособность при падении напряжения на нем 4.5-3.3 = 1.2В.dadigor писал(а):... из каких соображений стабилизатор 3,3 В сделан на дискретных элементах? Есть какие-то подводные камни ... ?
Проще всего это сделать, использовав выход индикаторного светодиода - тогда не нужно будет менять прошивку. Я просто буду его гасить по окончании цикла развертки и заново включать в начале следующего цикла.dadigor писал(а):Неплохо бы иметь импульс синхронизации для sweep-режима...
Like the eyes of a cat in the black and blue...
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: USB DDS Функциональный генератор
Нет, 0.033 В я конечно не измерял, даже не совсем понимаю как, да и не чем мне миллилвольты измерить.El-Eng писал(а):Нет не нужно. Вы все сделали правильно (если, конечно, 0.033 - измеренное значение).
Понятно, четвертинка чипа ОУ и половинка чипа транзисторов болтались без дела, но можно вместо них и четырех элементов обвязки поставить например MCP1700.El-Eng писал(а):Нет, подводных камней нет (надеюсь). Сделано было чисто из экономии - оставался свободным один ОУ. Для 3.3 В можно поставить интегральный стабилизатор, только не обычный, а LDO - он должен сохранять работоспособность при падении напряжения на нем 4.5-3.3 = 1.2В.
Отличная идея использовать команду 0x00, этого вполне достаточно и перешивать не нужно.El-Eng писал(а):Проще всего это сделать, использовав выход индикаторного светодиода - тогда не нужно будет менять прошивку. Я просто буду его гасить по окончании цикла развертки и заново включать в начале следующего цикла.
Еще вопрос. Как я понял, питание 9 Вольт необходимо для импульсного выхода, если амплитуда 5,10 Вольта. А если сделать максимальную амплитуду 3,3 Вольта, то можно обойтись питанием 5 Вольт?
О технике чего спорить-то, давайте попробуем.
Re: USB DDS Функциональный генератор
Это можно сделать вольтметром постоянного напряжения - обычным цифровым мультиметром. В статье про измеритель АЧХ, в архиве номер 4, лежит файл ReadMe.txt, в котором подробно расписана методика (в статье про генератор - более кратко).dadigor писал(а):... да и не чем мне милливольты измерить.
Да. На 9 В пришлось перейти потому, что питание USB имеет разброс от компьютера к компьютеру, но вряд ли оно будет ниже 4.5 В.dadigor писал(а):А если сделать максимальную амплитуду 3,3 Вольта, то можно обойтись питанием 5 Вольт?
Выкладываю очередную версию программы TorDDS, в которой реализованы предложения по индикации напряжения и стробированию начала развертки в режиме ГКЧ. Особо не проверялось, но, надеюсь, работает нормально.
Like the eyes of a cat in the black and blue...