$15,3

Прежде всего, DDS — Direct Digital Synthesizer или цифровой синтезатор сигналов или электронный прибор, предназначенный для синтеза сигналов произвольной формы и частоты из опорной частоты.

Зачем в хозяйстве радиолюбителя нужен генератор объяснять не буду. Готовые генераторы стоят недешево и весят прилично, поэтому их пересылка тоже дорогая. Поэтому решено было присмотреться к DDS модулям без корпуса и блока питания.

Выбор DDS-модулей на просторах интернет оказался невелик. Из более-менее недорогих и с нормальным набором функций я нашел только 2 вида. Они одинаковые по функционалу, отличаются только расположением органов управления и питанием. Для работы одного из них было нужно три напряжения (+12В, -12В и +5В), второй работает от одного напряжения 7-9В. Это было решающим, проще потом запитать его от готового блока питания и не придется специально городить схему питания.

Из описания на сайте:

Operating voltage: DC7-9V
DDS frequency range: 1HZ-65534Hz.
High-speed frequency (HS) output up to 8MHz;
DDS signal amplitude of the offset amount can be adjusted separately by two potentiometers;
DDS signals: sine wave, square wave, sawtooth, reverse sawtooth, triangle wave, the ECG wave and noise wave.
1602 LCD menu;
Intuitive keyboard.
Section into the value: 1,10,100,1000,10000 Hz;
The power automatically restore the last used configuration.
Offset: 0.5pp-5Vpp
Amplitude amount: 0.5Vpp-14Vpp

Сама плата сделана очень качественно, пайка приличная, флюс смыт.

Так как под руками не нашлось блока питания на 9В с подходящим разъемом подключил блок питания на 5В. Как ни странно, все заработало. Пришлось только чуть подкорректировать контрастность LCD дисплея. Для этого под самим дисплеем имеется подстроечный резистор.

У генератора удобный алфавитно цифровой LCD дисплей 1602 с синей подсветкой и немало кнопок управления и 2 ручки настройки. Пойдем по порядку. Разъем питания 8-9В (как уже выяснили и от 5В работает уверенно). Кнопка включения/выключения питания. Светодиод, сигнализирующий включение.

  • вверх и вниз — выбор формы сигнала (функции);
  • вправо и влево — выбор частоты генерации (шаг задается в меню Freq Step).
  • центральная кнопка — старт/стоп генерации.

Две рукоятки управления:

  • амплтиуда;
  • оффсет 0,5 — 5В.

Сбоку 2 BNC разъема. Один для вывода DDS, второй для высокочастоного сигнала.

Генератор может формировать следующие формы импульсов:

  • ECG = электрокардиограмма (in the OFF state, the «left «and «right» keys to set the output frequency. Middle button start, all of the following waveform set)
  • NOISE = шум.
  • SawTooth = пила.
  • Rev Sawtooth = обратная пила.
  • Triangle = треугольные.
  • Sine=синусоида.
  • Square = прямоугольные.

В первой части статьи рассматривается схемотехническое решение, устройство и конструкция DDS генератора (генератор с прямым цифровым синтезом формы сигнала) на микроконтроллере ATmega16 . В приборе, кроме синтеза сигнала различной формы и частоты, реализуется возможность регулировки амплитуды и смещения выходного сигнала.

Основные характеристики прибора:

  • простое схемотехническое решение, доступные компоненты;
  • односторонняя печатная плата;
  • сетевой источник питания;
  • специализированный выход частоты от 1 МГц до 8 МГц;
  • DDS выход с регулировкой амплитуды и смещения;
  • форма выходного DDS сигнала: синусоида, прямоугольные импульсы, пилообразные импульсы, треугольные импульсы, ЭКГ, шум;
  • для отображения текущих параметров используется двухстрочный ЖК дисплей;
  • пятикнопочная клавиатура;
  • шаг перестройки частоты: 1, 10, 10, 1000, 10000 Гц;
  • восстановление последней конфигурации при включении;
  • регулировка смещения: -5 В … +5 В;
  • регулировка амплитуды: 0 … 10 В;
  • регулировка частоты: 0 … 65534 Гц.

За основу прибора, а точнее алгоритм работы микроконтроллера, была взята разработка DDS генератора Jesper Hansen . Предложенный алгоритм был немного переработан и адаптирован под компилятор WinAVR-GCC

Сигнальный генератор имеет два выхода: выход DDS сигнала и выход высокочастотного сигнала (1 - 8 МГц) прямоугольной формы, который может использоваться для «оживления» микроконтроллеров с неправильными установками Fuse-битов или для других целей.

Высокочастотный сигнал поступает непосредственно с микроконтроллера, с вывода OC1A (PD5). DDS сигнал формируется микроконтроллером с использованием цепочки резисторов R2R (ЦАП), регулировка смещения и амплитуды возможна благодаря использованию низкопотребляющего операционного усилителя LM358N .

Блок-схема DDS генератора

Как видно, для питания устройства необходимо три напряжения: +5 В, +12 В, -12 В. Напряжения +12 В и -12 В используются для аналоговой части устройства на операционном усилителе для регулировки смещения и амплитуды.

Принципиальная схема источника питания изображена на рисунке ниже.

В источнике питания используются стабилизаторы напряжения LM7812 , LM7805 , LM7912 (стабилизатор отрицательного напряжения -12 В).

Внешний вид источника питания для генератора

Возможно использование компьютерного блока питания форм-фактора ATX, для этого необходимо распаять переходник в соответствии со схемой:

Принципиальная схема прибора

Для сборки прибора потребуется:

  • микроконтроллер ATmega16;
  • кварцевый резонатор 16 МГц;
  • стандартный двухстрочный ЖК индикатор на базе контроллера HD44780 ;
  • R2R ЦАП выполненный в виде цепочки резисторов;
  • сдвоенный операционный усилитель LM358;
  • два потенциометра;
  • пять кнопок;
  • несколько коннекторов и разъемов.

Рисунок печатной платы

Примененные компоненты, за исключением микроконтроллера и разъемов, в корпусах для поверхностного монтажа (smd).

Прибор смонтированный в корпусе

Тестовый запуск

Загрузки

Принципиальная схема и печатная плата (формат Eagle) -
Проект для симуляции в среде Proteus -

  • Кто пробовал сваять?
  • Смотрите ветку Функцинальный генератор, начиная с 4 поста идет обсуждение этой конструкции, и пользователи QED и куко собрали этот генератор. И в протеусе был проверен - работает.
  • скажите кто-нибудь, пожалуйста, перечень компонентов для блока питания используемые в первом(http://www..html?di=69926) варианте генератора. в частности интересует какой модель трансформатора и выпрямитель использовал автор. или хотя бы полные аналоги. из просьбы ясно, что я в электротехнике не силён, но думаю собрать осилю без углубления в дебри предмета. Просто форс-мажор. С конденсаторами и 3-мя стабилизаторами всё понятно. Собственно вот эта схема прикреплена.
  • Трансформатор любой маломощный с двумя вторичными обмотками с выходным напряжением 15 В (переменка). В частности автор использовал трансформатор TS6/47 (2х15 В/2х0.25 А) Диодный мостик тоже любой маломощный сгодится. На фотке в статье виден и трансформатор и диодный мостик.
  • а подскажите пожалуйста, какая связь должна быть между вторичным выходом трансформатора и выпрямителем, учитывая схему БП автора?:confused: ну имею ввиду, если на выходе трансформатора 15в (вроде нашел вот такой -ТПС-7.2(2х15В)сим.(7.2Вт)15Вх2_7.2Вт_сим.(0.24А)х2 - 160,00руб) , то какой выпрямитель к нему? и на случай, если 12в на выходе трансформатора?
  • Не совсем понял вопрос, честно говоря... Трансформатор указанный вами вроде подходит... Мостик вполне, думаю подойдет к примеру DB106
  • Vadzz, спасибо огромное за подсказку. если DB106 подходит, значит и имеющий аналогичные параметры W08 подойдет. это так? просто, именно его имеется возможность(желание) купить. и ещё не смог разобраться с номиналами конденсаторов на схеме автора, подскажите, пожалуйста. они в все в nF(нанофарад-нФ)?
  • W08 - вполне подойдет. Конденсаторы в схеме блока питания или в схеме самого генератора? Если блок питания - то там все кондеры в микрофарадах (2000 мкф, 100 мкф, 0.1 мкф). В схеме генератора - по-моему только два кондера в обвязке кварца 18 пикофарад.
  • Vadzz, безгранично благодарю. вроде все вопросы сняты. Со схемой самого генератора вроде немного проще(есть файл EAGLE). Буду воплощать в реальность. Если всё будет путём, то попробую выложить печатную плату (формат Eagle) Блока питания.
  • Обязательно должно все получиться у вас... Рисунок печатной платы выкладывайте, кому-то обязательно пригодится...
  • Я спаял и пользуюсь. Честно говоря по ходу возникли несколько проблем: 1) недостаток - невозможна перестройка частоты при включенном генераторе. Т.е. если нужно менять частоту, то сначала выключаем генерацию сигнала, потом перестраиваем частоту, потом снова включаем генерацию сигнала. Это зачастую неудобно, когда нужно следить за реакцией налаживаемого устройства на плавное изменение частоты. Например для управления оборотами шаговика перестраивать частоту нужно только плавно. 2) недостаток - дважды слетал EEPROM. Автор предусмотрел запоминание установленных режимов в EEPROM, но это совсем не обязательно. Уж лучше бы ничего не запоминал и не использовал его совсем. Или в крайнем случае при повреждении EEPROM грузил установки "по умолчанию" из FLASH. Зато был бы надежнее. В целом в остальном работой я доволен. Просьба к тем, кто смыслит в написании программ для AVR исправить эти два недостатка.
  • По поводу перестройки частоты "налету" тут скорее всего нужно использовть DMA, чего в подобных микроконтроллерах нет. Может я ошибаюсь... надо глянуть исходники генератора... Насчет "слетает EEPROM" - интересно конечно причину узнать, но два раза я думаю еще не показатель.
  • Готовые генераторы на ad9850(51) есть здесь: http://radiokit.tiu.ru/product_list/group_802113
  • Готовые генераторы на AD9850 это хорошие девайсы, но другое дело когда собираешь и налаживаешь сам...
  • Разрушение данных в EEPROM приводит к полной неработоспособности генератора. Очень неприятная проблема в самый неподходящий момент. Я обычно внутри корпуса генератора держу запасной запрограммированый контроллер. Но это же не выход из положения. Почему не предусмотреть сохранение только текущих данных, которые не повлияют в целом на работоспособность, если будет разрушение EEPROM? При потере данных из Flash грузим установки по умолчанию. Все остальное, что касается работоспособности программы хранится во Flash. Так надежнее будет работать. ПРЕДЛАГАЮ разместить список ссылок с другими проектами генераторов на AVR.
  • Тут несколько людей собирали этот генератор (с их слов конечно же), они ничего не говорили по этому поводу, есть ли такая проблема у них или нет...
  • Подскажите,в данном генераторе есть возможность менять только частоту или скважность тоже?
  • В характеристика генератора указано, что можно менять частоту, к сожалению возможности менять скованность нет...
  • парни подскажите по поводу RESET джампера -когда его включить и когда снять..... благодарю
  • Нормальное состояние джампера - разомкнут.И это скорее всего не джампер, а имелось ввиду разъем для возможности подключения кнопки, с помощью которой можно будет сбрасывать мк, если вдруг чего...

Всем доброго времени суток!
Сегодня хочу представить вниманию читателей обзор генератора сигналов произвольной формы JDS6600.
Данная модель генератора способна выводить информацию на цветной TTF дисплей 2,4 inch, выдавать сигнал на два независимых канала частотой до 15 МГц синусоидальной, прямоугольной, треугольной формы и частотой до 6МГц сигналов CMOS/TTL логики, импульсов и сигналов произвольной формы с размахом от 0 до 20 Вольт, имеет вход для измерения частоты, периода, длительности, скважности. Прибор позволяет изменять фазу сигнала от 0 до 359,9 градусов с шагом в 0,1 градуса, смещать сигнал от -9,99 до + 9,99 Вольт (в зависимости от амплитуды сигнала). В памяти генератора прописаны 17 стандартных сигналов, а так же имеется возможность редактировать (создавать/рисовать) необходимую форму сигнала и записывать в 60 ячеек памяти.
Генератор много чего может и, как радиогубитель средней руки, вряд ли всем буду пользоваться.
В линейке генераторов JDS6600 пять модификаций прибора с диапазонами частот – 15 МГц, 30 МГц, 40 МГц, 50 МГц и 60 МГц. В обзоре младшая модель – 15 МГц.
За подробностями приглашаю под кат (много фото).
Начну, пожалуй, не с красивых картинок, а с фотографии, которая дает представление о настольном или полочном рабочем позиционировании генератора с указанием габаритных размеров и таблицы с характеристиками всей линейки генераторов серии JDS6600. Таблица взята из мануала.




Мануал на русском языке можно изучить и .
Габаритные размеры в мануале немно другие, но один-два миллиметра роли не играют.
Приехал прибор в неказистой коробке, которую почта/таможня слегка повредила, но к содержимому отнеслись с почтением – все цело и ничего не потеряли.


Комплект состоит из генератора, блока питания 5 Вольт 2 Ампера с заграничной вилкой, весьма приличного сетевого переходника, диска с ПО, кабеля для подключения к ПК и двух шнуров BNS-крокодилы. Генератор был замотан в пупырку, а все остальные составляющие упакованы в индивидуальные пакеты.

Подключение по USB в качестве источника питания тут не предполагается и потому БП с обычным штекером 2,1*5,5*10 мм. Но позже мы попробуем запитать генератор от другого БП, чтобы выяснить ток потребления на случай питания от Powerank.


Кабель USB тип A - USB тип B для подключения генератора к ПК длиной 1,55 метра.

Шнуры BNS-крокодилы длиной 1,1 метра, с гибкими проводами, припаянными к крокодилам.

Ну, и собственно, виновник обзора в разных ракурсах.
На передней панели расположились кнопка вкл/выкл, экран, ряд серых кнопок справа от него для управления параметрами сигнала, выбора режимов измерений и модуляции, кнопка WAVE выбора вида генерируемого сигнала, MOD активации режима модуляции, SYS системных установок, MEAS выбора режима измерений, стрелки выбора разряда значения частоты и т.д., кнопка ОК для подтверждения кучи всего и включения/отключения двух каналов, СН1/2 кнопки включения/выключения каждого канала, энкодер, измерительный вход и выходы двух каналов.
На тыльной стороне TTL коннектор, разъемы USB и питания, наклейка с наименованием модели и модификации 15М (15МГц), вентиляционные отверстия.


На боковых гранях кроме вентиляционных щелей ничего интересного. Верхняя крышка глухая.

Снизу четыре пластиковые черные ножки, к сожалению скользящие по столу, и откидывающаяся подставка для удобства.


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

Как и предполагал, места внутри предостаточно. Блок питания легко бы мог поместиться внутри корпуса, но видимо на его внешний вариант есть свои причины.
Платы соединены шлейфом, разъемы которого плотно сидят в гнездах.
Плата генератора чистая, будто и не пачкали флюсом.

При первом приближении на плате видим, что компонентов довольно много. Из выдающихся – чип мозговой деятельности фирмы Lattice, релюшки Omron, небольшой радиатор, логотип, наименование производителя и модели с ревизией – JDS6600Rev.11. Номер ревизии дает основание полагать, что производитель основательно занимается моделью, постоянно ее совершенствуя.

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

Остальное уберу под спойлер.











Чуть подробнее остановлюсь на компонентах скрытых под радиатором. Это пара высокоскоростных усилителей .

Радиатором их накрыли без термопасты, может и не критично, но при сборке ее добавил.
Плата управления вмещает куда меньше элементов. Следы флюса только в местах ручной пайки кнопки вкл/выкл, энкодера, шлейфа дисплея и разъема.


Кнопки тут вполне себе механические и должны служить долго.


Переходим к сути устройства.
Включение генератора сопровождается сообщением на экране о выборе языка – китайского или английского, процессе загрузки, модели, номере партии. Загрузка длится буквально 1-2 секунды.

Сразу после загрузки на экране появляется информация о предустановленных сигналах подаваемых на оба выхода генератора. Об активности выходов генератора свидетельствует надпись ON на экране и свечение зеленых светодиодов над разъемами выходов. Выключить оба выхода сразу можно нажатием кнопки ОК или по отдельности каждый канал кнопками СН1/2.
Информация о параметрах сигналов на каналах идентична для первого (верхнего) и второго (нижнего) каналов за исключением изображения формы сигнала.

В целом на освоение генератора уходит не так уж много времени, назначение и смысл кнопок интуитивно понятно. Описать словами так, чтобы было понятно читателям сложнее, чем пользоваться в реальности. Посему воспользуемся картинками из манула.
Еще раз о назначении органов управления, отображения информации.

Суть отображаемой информации и кнопок справа от экрана.

Назначение функциональных кнопок

После включения на двух выходах по умолчанию присутствует синусоидальный сигнал частотой 10 кГц, размахом 5 Вольт, заполнением 50%, смещением 0 Вольт и фазовым сдвигом между каналами 0 градусов. Серыми кнопками справа эти параметры меняются и рассказывать тут особо нечего. Выбрали нужный параметр, далее кнопками со стрелками выбрали разряд изменяемого параметра и энкодером меняем значение.
Наибольший интерес вызывают кнопки WAVE выбора вида генерируемого сигнала, MOD активации режима модуляции, SYS системных установок, MEAS выбора режима измерений.
При нажатии на кнопку WAVE на экране появляется следующее изображение и становится доступен выбор формы сигнала.

К серым кнопкам привязаны 4 основных сигнала (синусоида, меандр, импульс, треугольник) и произвольная форма, прописанная в первой ячейке памяти, зарезервированной для этого.
Гораздо большее количество сигналов можно выбрать, вращая ручку энкодера. Этот способ дает возможность выбрать:
17 предустановленных сигналов – Sine, Sguare, Pulse, Triangle, PartialSine, CMOS, DC, Half-Wave, Full-Wave, Pos-Ladder, Neg-Ladder, Noise, Exp-Rise, Exp-Decay, Multi-Tone, Sinc, Lorenz
и 15 произвольных сигналов Arbitrary. С завода эти 15 ячеек пустые, в них ничего не записано – на выходе 0 Вольт, 0 Герц. Их заполнение рассмотрим после установки ПО.
В мануале идет речь о амплитуде сигнала и ее регулировке от 0 до 20 Вольт. На самом деле о регулировке амплитуды можно говорить только для отдельных сигналов, в основном речь идет о размахе.

Синусоида размахом 5В (на генераторе ampl 5V, осциллограф показывает значение размаха, хоть и пишет про амплитуду).

Меандр 5В (на генераторе ampl 5V, осциллограф показывает значение размаха, но пишет про амплитуду).

Разницы между Sguare и Pulse на осциллограмме не заметил. Как был меандр, так и остается при переключении, поэтому скрин не выкладываю.
Исправлено благодаря qu1ck
До тех пор не видно разницы пока не начнешь менять коэффициент заполнения DUTY. DUTY меняется только в Pulse, в режиме меандр Sguare коэффициент заполнения меняется только на экране генератора - на осциллограмме это никак не отражается.

Треугольный сигнал (на генераторе ampl 5V, осциллограф показывает значение размаха, но пишет про амплитуду).

Следующий сигнал Partial Sine – частичный синус, но разницы с Sineна осциллограмме так же не заметил и скрин не выкладываю.
Исправлено благодаря qu1ck
Здесь ситуация, как и с сигналом Pulse, изменяем коэффициент заполнения и получаем изменения синусоиды. DUTY меняется только в Partial Sine, в режиме Sine коэффициент заполнения меняется только на экране генератора - на осциллограмме это никак не отражается.

Следующий сигнал CMOS.Здесь размах/амплитуда регулируется от 0,5 до 10 Вольт, несмотря на то что ручкой энкодера на экране выставляется до 20 Вольт.

Следующим идет сигнал DC, но на осциллограмме тишина.

Далее сигнал Half-Wave вот тут как раз мы видим амплитуду. Для сравнения на втором канале установил синусоиду. Хоть на генераторе указана амплитуда 5 вольт и осциллограф пишет ampl, но мы видим, что как раз измеряется размах синусоиды и амплитуда Half-Wave.

На Full-Wave так же видим измерение амплитуды и, при установленной частоте на генераторе 10 кГц, 20 кГц по осциллограмме.

Сигналы Pos-Ladder и Neg-Ladder задал на первом и втором каналах, соответственно. Снова видим размах.

Шумы на обоих каналах шумят независимо друг от друга с разными параметрами.

Снова для наглядности и экономии времени читателей сигналы Exp-Rise и Exp-Decay на разных каналах.

По той же схеме Multi-Tone и Sinc.

Сигналы Lorenz.

Что можно сказать исходя из вышеприведенных скринов предустановленных сигналов?
1. Есть треугольник, но нет пилы;
2. Измеряемая амплитуда/размах на разных сигналах даже на двух каналах одновременно отличается от установленных на генераторе 5 Вольт.
3. Не заметил разницы между Sguare и Pulse, Partial Sine и Sine

Следующая полезная функция прибора – функция измерения/счетчика. Прибор позволяет измерять сигнал частотой до 100 МГц. Активируется функция кнопкой Meas. Переключение между измерениями и счетчиком можно сделать тремя способами – кнопкой Funk, кнопками со стрелками и энкодером.

Кнопкой Coup выбираем открытый или закрытый вход, кнопкой Mode – частоту или периоды подсчета.
Обозреваемый JDS6600 позволяет измерять то, что он же и генерирует. Задаем параметры сигнала на выходе генератора и подключаем к измерительному входу.

Следующая функция модуляции. Активируется кнопкой MOD. Здесь доступны три режима: генератор качающейся частоты - Sweep Frequency, генератор импульсов – Pulse Generator и генератор пачки импульсов – Burst. Режимы выбираются кнопкой Func.
Свипирование возможно на двух каналах, но не одновременно - либо первый, либо второй.

Стрелками или энкодером выбираем канал, устанавливаем начальную и конечную частоту сигнала (форму сигнала выбираем заранее в режиме Wave), линейную или логарифмическую зависимость и включаем ON.
Логарифмическая.

Линейная

Режим Pulse Generator (только первый канал).


Режим генерации пачек импульсов Burst (первый канал).

Здесь можно задать количество импульсов в пачке от 1 до 1 048 575 и выбрать режимы
Две пачки импульсов

Сто пачек импульсов

471 пачка.

Обратите внимание на изменение Vmin, Vmax с ростом количества пачек. При малом их количестве импульсы имеют отрицательную полярность, дальше картина иная. Кто может объяснить, прошу прояснить в комментариях.
Исправлено благодаря qu1ck , который указал на ошибку в выборе режима AC coupling на осциллографе. При изменении на DC все встало на свои места, за что прошу отметиться в карме qu1ck.

В режиме Burst четыре вида синхронизации (Как я понял. Если ошибаюсь поправьте) – от второго канала генератора – CH2 Trig, внешняя синхронизация – Ext.Trig (AC) и Ext.Trig (DC) и Manual Trig – ручная.
Следующая функциональная кнопка – это кнопка SYS, открывающая доступ к установкам генератора. Возможно следовало описать эту часть в начале, но двигался по наибольшей востребованности функций.

Кроме включения/отключения звуковых сигналов при нажатии кнопок, регулировки яркости экрана, выбора языка (китайский, английский) и сброса до заводских настроек, здесь можно поменять количество отображаемых/вызываемых ячеек произвольных сигналов (с завода 15, можно установить все 60), загрузить/записать 100 ячеек памяти и синхронизировать каналы по форме сигнала, частоте, амплитуде (размаху), заполнению, смещению.

Суть 60 ячеек и 100 ячеек станет понятна чуть позже, после подключения к ПК.
Для подключения генератора к компьютеру необходимо с диска из комплекта установить ПО.
Распаковав архив, сначала нужно установить драйвер CH340Q из папки h340 drive (архив Ch340.rar), далее установить программый драйвер VISA из папки VISA (установщик setup.exe), а уже потом установщик управляющей программы из папки English\JDS6600 application\Setup.exe
При подключенном к компьютеру генераторе и запуске программы необходимо выбрать виртуальный СОМ, куда подключен прибор и кликнуть кнопку Connect. Если порт выбран правильно, то увидим такую картинку.

Оболочка интерфейса представлена четырьмя вкладками – первая Configuration для соединения c ПК.
Вторая вкладка – Control Panel – панель управления генератором. Здесь все тоже самое, что и при управлении с лицевой панели прибора, но гораздо удобнее.

Все опции собраны на одном экране и привычные манипуляции мышью очень облегчают манипуляции с генератором. Кроме того, на этой вкладке одновременно с операциями над сигналами доступна синхронизация каналом, что с лицевой панели генератора нужно было делать через системные настройки генератора.
Далее вкладка Extend Function – аналог действиям кнопок MEAS и MOD на лицевой панели прибора, только на одном экране. Но есть и разница – не нашлось места в виртуальной среде для функции Pulse Generator в режиме Modulation Mode (MOD). С лицевой панели в режиме MOD доступны три функции – качения частоты, генератор импульсов и генератор пачек импульсов. С компьютера доступны только Sweep Frequency и Burst.

И последняя вкладка Arbitrary позволяет создавать свои формы сигналов и записывать их в изначально пустые ячейки памяти генератора (60 штук).

Можно начать с чистого листа, как на скрине выше, а можно взять за основу предустановленный сигнал (17 штук) и изголяться над ним, а потом записать в одну из 60 ячеек произвольных сигналов.

Для наглядности записал в ячейку памяти Arbitrary 01 такой сигнал.

И на осциллограмме видим следующее:

Здесь можно поменять амплитуду, смещение, фазу, но почему-то нельзя изменить коэффициент заполнения.
Вот теперь хочу вернуться к 60 и 100 ячейкам. Методом научного тыка и сравнений результатов вычислил, что кнопкой SYS на панели генератора можно открыть и сделать доступными до 60 ячеек произвольных сигналов (с завода 15), которые можно создать с помощью ПО и записать их в эти 60 ячеек.
Таким образом, становится доступны с панели генератора и вкладки Control Panel 17 стандартных и 60 произвольных сигналов.
Но, если и этот набор не достаточен, если какие-то сигналы Вами востребованы, а каких-то нет вообще (как, например, отсутствие прямой и обратной пил) и их нельзя создать с помощью ПО (например, из-за невозможности манипуляций с коэффициентом заполнения из программной оболочки), то новый сигнал можно создать с панели генератора, изменив любой параметр. Далее нужно в меню SYS выбрать номер ячейки от 00 до 99 (те самые 100) и кнопкой SAVE записать сигнал в эту ячейку. Теперь, когда он Вам понадобится, заходим в SYS, выбираем номер ячейки с этим сигналом и кнопкой LOAD загружаем его из памяти.
Т.е. по факту можно использовать 177 сигналов!!! 17 предустановленных + 60 произвольных + 100 загружаемых из памяти, когда это требуется.

В завершающей части обзора посмотрим, до каких частот генератор сохраняет приличные формы сигнала.
Синусоида 100 кГц 5В и 1 МГц 5В.

Синусоида 6 МГц 5В и 10 МГц 5В

Как видим, имеет место снижение размаха сигнала и оно не зависит от величины нагрузки. Без нагрузки вовсе, 1 кОм, 10 кОм, 47 кОм – снижение размаха есть всегда, но всегда в районе 0,5 Вольта.
В районе 13 МГц размах снижается на 0,7 вольт, но далее, при установленных 5 Вольтах размаха, падение не увеличивается.

Синусоида 15 МГц 10 Вольт – тут снижение размаха уже больше. Но это уже 15 МГц.

Дальше была выявлена особенность генератора JDS6600-15M – заявленная амплитуда в 20 Вольт, касается только сигналов (любой формы) частотой до 10 МГц. Ожидаемо амплитуда/размах ниже установленных значений. Щуп 1/10.

В диапазоне 10-15 МГц максимально возможная амплитуда/размах составляет 10 Вольт. Энкодером или в программе устанавливаем 20 Вольт (на экране генератора видим установленные 20 Вольт), потом частоту выше 10 МГц и показания амплитуды на экране прибора переключаются на 10 Вольт. Соответственно на выходе 10 Вольт. Такая особенность.

С формой синусоиды будто бы все в порядке, посмотрим меандр.
10 кГц 5В и 100 кГц 5В.

1МГц 5В и 6 Мгц 5 В.

6МГц 10В и 6 МГц 20В.
Здесь уже видно, что на высоких частотах меандр стремится к синусоиде, что присуще многим генераторам.

Треугольник 100 кГц 5В и 1 МГц 5В.

С повышением частоты и амплитуды форма сигнала начинает изменяться.
5 МГц 5В и 5 МГц 12В.

Формы сигналов на больших частотах далеки от идеальных, но к этому был готов. Опытным людям цена прибора многое скажет, для не искушенных пользователей материал изложил – надеюсь, он будет полезен. В описании генератора присутствует маркетинг и я, наверняка изложил, не все, что можно выжать из прибора, но основное показал. Возможно, старшие модели в линейке 6600 грешат меньше, но и стоят они дороже. Предоставленный экземпляр можно охарактеризовать как, генератор начального, бюджетного уровня для своего круга задач – ознакомление, обучение, радиолюбительство, быть может, какое-то не особо сложное и требовательное производство.
Из минусов отмечу снижение амплитуды/размаха сигнала с ростом частоты, отсутствие пил (но можно самому сгенерировать, изменив коэффициент заполнения и записав в ячейку).
Разработчику хотелось бы пожелать не увлекаться маркетингом, допилить чуть ПО.
Из плюсов все таки широкий фукнционал, возможность редактировать сигналы, записывать их в ячейки памяти, интуитивно понятное управление, два независимых канала.
В завершении замена штатного блока питания и измерение тока потребления.

Ток потребления не превышает одного Ампера и можно питать генератор от Power bank, обзаведясь соответствующим шнуром.
Если чего то не показал, то формулируйте подробный вопрос - генератор на столе, проведу опыт.

Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.

Планирую купить +14 Добавить в избранное Обзор понравился +42 +55

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

Так и в моем случае, список этого оборудования был далеко неполным и в нем нехватало генератора сигналов .

Генератор сигналов оказалось сделать несложно самостоятельно из доступных радиоэлементов и при этом не дорогим в конечном итоге. Так порывшись в интернете было найдено большое количество схем различных генераторов, в том числе и более продвинутых моделей с ЦАП, но уже дорогих в изготовлении. Я же остановился для начала на простом DDS генераторе сигналов на микроконтроллере ATMEGA8 фирмы Atmel. Вот эта , я не стал ничего совершенствовать и изменять - оставил все как есть, просто создал копию и тем более не претендую на авторство данного прибора.

Итак, генератор сигналов обладает неплохими характеристиками и подойдет для решения простых задач.

Вывод информации в генераторе сигналов производится на символьный ЖК дисплей 16х2 с контроллером HD44780. Примечательно,что для экономии портов микроконтроллера ЖК дисплей управляется всего по трем проводам, этого удалось достичь применением регистра сдвига - о том как подключить дисплей по трем проводам, читатйте .

Экономия портов необходима, 8 портов задействованы под резистивный ЦАП, 7 портов под кнопки. В оригинале статьи, автор обещал задействовать и ШИМ модуляцию, но видимо доделывать ее не стал, так как начал разработку более усовершенствованной версии на ATMEGA16.

Принципиальная схема DDS генератора сигналов и печатная плата.

Схема и платы показаны в оригинале, на них так же присутствуют незадействованные автором кнопки для управления ШИМ.

Для ЦАП я специально купил прецизионные резисторы с погрешностью ±0,05%, но как оказалось, вполне достаточно и простых с погрешностью ±5%. Форма сигнала была вполне приемлимой для всех видов сигналов.

Когда генератор собран и программа загружена в микроконтроллер, никаких настроек не требуется, если только отрегулировать контрастность дисплея.

Работать с прибором просто - выбираете форму сигнала, устанавливаете необходимую частоту, при этом можно изменить шаг настройки частоты с пределами в 1 - 10 - 100 - 1000 Гц за шаг. Затем нажимаете на Старт и генератор начинает работать. Следует учесть, что когда генератор запущен, частоту и форму сигнала изменить не получиться, это связано с тем, что программа уходит в бесконечный цикл и для того, чтобы увеличить максимальную частоту генерации, пришлось убрать процедуру опроса кнопок. Для остановки генерации нажимаем на стоп/сброс, это перезапускает программу и она возвращается к меню настроек. Вот такой вот нюанс.

Отдельно хочу рассказать про изготовление корпуса для генератора. Можно приобрести готовый корпус в магазине или использовать подходящий от какого либо другого устройства, но я решил сделать его полностью сам. Как раз без дела лежал кусок двухстороннего стеклотекстолита, который я пожертвовал на корпус.

Для начала необходимо произвести все замеры, габариты ЖК дисплея и платы генератора сигналов, источника питания, разъемов и кнопок, затем, на листе бумаги расположить это так, как будет находится внутри корпуса. По полученным размерам можно приступить к изготовлению.

Максимальная частота - 65534 Гц (и до 8 МГц HS выход с меандром). И тут я подумал, что генератор - отличная задача, где ПЛИС сможет показать себя в лучшем виде. В качестве спортивного интереса я решил повторить проект на ПЛИС, при этом по срокам уложиться в два выходных дня, а параметры получить не строго определенные, а максимально возможные. Что из этого получилось, можно узнать под катом

День нулевой

До того, как наступят выходные, у меня было немного времени подумать над реализацией. Чтобы упростить себе задачу, решил сделать генератор не в виде отдельного устройства с кнопками и LCD экраном, а в виде устройства, которое подключается к ПК через USB. Для этого у меня есть плата USB2RS232 . Плата драйверов не требует (CDC), поэтому, я думаю, что и под Linux будет работать (для кого-то это важно). Так же, не буду скрывать, что с приемом сообщений по RS232 я уже работал. Модули для работы с RS232 буду брать готовые c opencores.com .

Для генерации синусоидального сигнала потребуется ЦАП. Тип ЦАП я выбрал, как и в исходном проекте - R2R на 8 бит. Он позволит работать на высоких частотах, порядка мегагерц. Убежден, что ПЛИС с этим должна справиться

По поводу того, на чем написать программу для передачи данных через COM порт я задумался. С одной стороны, можно написать на Delphi7, опыт написания такой программы уже есть, к тому же размер исполняемого файла будет не большим. Еще попробовал набросать что-то для работы с Serial в виде java скрипта в html страничке, но более менее заработало только через Chrome serial API, но для этого надо устанавливать плагин… в общем тоже отпадает. В качестве новшества для себя попробовал PyQt5, но при распространении такого проекта, нужно тащить кучу библиотек. Попробовав собрать PyQt проект в exe файл, получилось больше 10 мб. То есть, будет ничем не лучше приложения, написанного на c++\Qt5. Стоит еще учесть, что опыта разработки на python у меня нет, а вот на Qt5 - есть. Поэтому выбор пал на Qt5. С пятой версии там появился модуль для работы с serial и я с ним уже работал. А еще приложение на Qt5 может быть перенесено на Linux и Mac (для кого-то это важно), а с 5.2 версии, приложения на QWidgets может быть перенесено даже на смартфон!

Что еще нужно? Естественно плата с ПЛИС. У меня их две (Cyclone iv EP4CE10E22C8N на 10 тыс. ячеек, и Cyclone ii EP2C5 на 5 тыс. ячеек). Я выберу ту, что слева, исключительно по причине более удобного разъема. В плане объема проект не предполагает быть большим, поэтому уместится в любую из двух. По скорости работы они не отличаются. Обе платы имеют «на борту» генераторы 50 МГц, а внутри ПЛИС есть PLL , с помощью которого я смогу увеличить частоту до запланированных 200 МГц.

День первый

В связи с тем, что модуль DDS я уже делал в своем синтезаторном проекте, то я сразу взялся за паяльник и начал паять ЦАП на резисторах. Плату взял макетную. Монтаж делал с применением накрутки . Единственное изменение, которое коснулось технологии - я отказался от кислоты Ф38Н для лужения стоек в пользу индикаторного флюс-геля ТТ . Суть технологии проста: в печатную плату впаиваю стойки, на них со стороны печатного монтажа припаиваю резисторы. Недостающие соединения выполняю накруткой. Еще, стойки удобны тем, что я их могу вставить прямо в плату ПЛИС.

К сожалению, дома в наличии не оказалось резисторов 1 и 2 килоома. Ехать в магазин было некогда. Пришлось поступиться одним из своих правил, и выпаять резисторы из старой не нужной платы. Там применялись резисторы 15К и 30К. Получился вот такой франкенштейн:


После создания проекта нужно задать целевое устройство: Меню Assigments -> Device


В проекте я «нахадркодил» неуправляемый главный модуль DDS на фиксированную частоту.

Модуль генератора на 1000 Гц

module signal_generator(clk50M, signal_out); input wire clk50M; output wire signal_out; wire clk200M; osc osc_200M reg accumulator; assign signal_out = accumulator; //пробуем генерировать 1000 Гц //50 000 000 Hz - тактовая частота внешнего генератора //2^32 = 4 294 967 296 - разрядность DDS - 32 бита //делим 1000Hz / 50 000 000 Hz / 2 * 4294967296 => 42949,67296 always @(posedge clk50M) begin accumulator <= accumulator + 32"d42949; end endmodule


После этого нажал «Start Compilation», чтобы среда разработки задалась вопросом, какие у нас линии ввода вывода есть в главном модуле проекта и к каким физическим PIN"s они подключены. Подключить можно практически к любому. После компиляции назначаем появившиеся линии к реальным PIN микросхемы ПЛИС:

Пункт меню Assigments -> Pin Planner

На линии HS_OUT, key0 и key1 прошу пока не обращать внимание, они появляются в проекте потом, но скрин в самом начале я сделать не успел.

В принципе, достаточно «прописать» только PIN_nn в столбце Location, а остальные параметры (I/O standart, Current Strench и Slew Rate) можно оставить по умолчанию, либо выбрать такие же, что предлагаются по умолчанию (default), чтобы не было warning"ов.

Как узнать какому PIN соответствует номер разъема на плате?

Номера контактов разъема подписаны на плате


А пины ПЛИС, к которым подключены контакты разъема, описаны в документации, которая идет в комплекте с платой ПЛИС.




После того, как пины назначены, компилирую проект еще раз и прошиваю с помощью USB программатора. Если у вас не установлены драйверы для программатора USB Byte blaster, то укажите Windows, что они находятся в папке, куда у вас установлен Quartus. Дальше она сама найдет.

Подключать программатор нужно к разъему JTAG. А пункт меню для программирования «Tools -> Programmer» (либо нажать значек на панели инструментов). Кнопка «Start», радостное «Success» и прошивка уже внутри ПЛИС и уже работает. Только не выключайте ПЛИС, а то она все забудет.

Tools -> Programmer


ЦАП подключен к разъему платы ПЛИС. К выходу ЦАП подключаю осциллограф С1-112А. В результате должна получиться «пила» потому что на выход 8 бит выводится старшая часть слова DDS аккумулятора фазы. А оно всегда увеличивается, пока не переполнится.

Каких-то 1.5 часа и для частоты в 1000 Гц я вижу следующую осциллограмму:

Хочу заметить, что «пила» по середине имеет небольшой перелом. Он связан с тем, что резисторы имеют разброс значений.

Еще один важный момент, который нужно было выяснить - это максимально возможная частота, с которой будет работать DDS генератор. При правильно настроенных параметрах TimeQuest, после компиляции в «Compilation Report» можно увидеть, что скорость работы схемы выше 200 МГц с запасом. А это значит, что частоту генератора 50 МГц я буду умножать с помощью PLL на 4. Увеличивать значение аккумулятора фазы DDS буду с частотой 200 МГц. Итоговый диапазон частот, который можно получить в наших условиях 0 - 100 МГц. Точность установки частоты:

200 000 000 Гц (clk) / 2^32 (DDS) = 0,047 Гц
То есть, это лучше, чем ~0.05 Гц. Точность в доли герца для генератора с таким диапазоном рабочих частот (0...100 МГц) считаю достаточной. Если кому-то потребуется повысить точность, то для этого можно увеличить разрядность DDS (при этом не забыть проверить TimeQuest Timing Analyzer, что скорость работы логической схемы укладывалась в CLK=200 МГц, ведь это сумматор), либо просто снизить тактовую частоту, если такой широкий диапазон частот не требуется.

TimeQuest Timing Analyzer


После того, как я увидел на экране «пилу», семейные дела заставили меня ехать на дачу (выходной же). Там я косил, варил, жарил шашлык и не подозревал о том сюрпризе, что ждал меня вечером. Уже ближе к ночи, перед сном, я решил посмотреть форму сигнала для других частот.

Для частоты 100 КГц

Для частоты 250 КГц

Для частоты 500 КГц

Для частоты 1 МГц

День второй

В связи с тем, что было интересно, как будет работать ЦАП на резисторах 100 и 200 Ом, я сразу взялся за паяльник. На этот раз ЦАП получился более аккуратным, а времени на его монтаж ушло меньше.

Ставим ЦАП на плату ПЛИС и подключаем к осциллографу

Проверяем 1 МГц - ВО! Совсем другое дело!

Пила 10 МГц

Пила 25 МГц


Форма пилы на 10 МГц еще похожа на правильную. Но на 25 МГц она уже совсем «не красивая». Однако, у С1-112а полоса пропускания - 10 МГц, так что в данном случае причина может быть уже в осциллографе.

В принципе, на этом вопрос с ЦАП можно считать закрытым. Теперь снимем осциллограммы высокоскоростного выхода. Для этого, выведем старший бит на отдельный PIN ПЛИС. Данные для этой линии будем брать со старшего бита аккумулятора DDS.

Assign hs_out = accumulator;

Меандр 1 МГц

Меандр 5 МГц

Меандр 25 МГц

Меандр 50 МГц уже практически не виден


Но считаю, что выход ПЛИС стоило бы нагрузить на сопротивление. Возможно, фронты были бы круче.

Синус делается по таблице. Размер таблицы 256 значений по 8 бит. Можно было бы взять и больше, но у меня уже был готовый mif файл. С помощью мастера создаем элемент ROM с данными таблицы синуса из mif-файла.

Создание ROM - Tools -> Mega Wizard Plugin manager


Выбираем 1 портовую ROM и задаем название модулю

Соглашаемся

Тут тоже соглашаемся

С помощью browse находим наш mif файл с таблицей синуса

Тут тоже ничего не меняем

Снимаем галочку с модуля sine_rom_bb.v - он не нужен. Дальше finish. Квартус спросит добавить модуль в проект - соглашаемся. После этого, модуль можно использовать так же, как любой другой модуль в Verilog.


Старшие 8 бит слова аккумулятора DDS будут использоваться в качестве адреса ROM, а выход данных - значение синуса.

Код

//sine rom wire sine_out; sine_rom sine1(.clock(clk200M), .address(accumulator), .q(sine_out));


Осциллограмма синуса на разных частотах выглядит… одинаково.

При желании, можно рассмотреть проблемы ЦАП, связанные с разбросом резисторов:

Чтож, на этом выходные кончились. А ведь еще не написано ПО для управления с ПК. Вынужден констатировать факт, что в запланированные сроки я не уложился.

День третий

Времени совсем мало, поэтому программу пишем на скорую руку (в лучших традициях). Местами, чтобы сократить количество букв и удобство ввода информации с клавиатуры, применяется фильтр событий по имени виджета. Прошу понять и простить.

Интерфейс

Ссылки с аналогами

Далеко не полный список
Функциональный DDS генератор. Создан базе AVR. Частоты 0… 65534 Гц.
Обзор DDS-генератора GK101. Создан с применением ПЛИС Altera MAX240. Частоты до 10 МГц.
Многофункциональный генератор на PIC16F870. Частотный диапазон: 11 Гц - 60 кГц.
генераторы Добавить метки