audiohobby.ru audiohobby.ru

Любительский DDS генератор

В данной статье рассматривается вариант конструкции DDS генератора сигналов на основе стандартных модулей (плат) HC-RS08 AD9850, LCD Keypad Shield и Arduino Uno. Основной задачей при разработке генератора было создание простого генератора синусоидальных и прямоуголных сигналов, максимально реализующий возможности недорогого модуляHC-RS08 AD9850. Диапазон частот генератора: 1 Гц..40 МГц при выходном уровне 0,5..2В. Диапазон частот генератора: 1 Гц..40 МГц при выходном уровне 0,5..2В.

Эта история началась с того, что появилось желание собрать генератор НЧ на биениях, так как обычно считалось, что эти генераторы самые качественные. Такую конструкцию я заприметил ещё в детстве, прочитав книжку «Радиолюбительские измерительные приборы на транзисторах» авторов Д.А.Демиденко, Д.А.Кругликов, 1976 год, стр. 63. Понадеялся, что сейчас удастся без особого труда собрать такой генератор. На практике выяснилось, что авторы значительно приврали, и в описании, и в самой схеме. Не исключаю, что они вообще не добились нормальной работы генератора. По-любому, авторы пытались скрыть реальную рабочую схему, что, для советского времени, выглядит странным, на мой взгляд. Такое ощущение, что статья в книге была написана просто для введения в заблуждение и чисто для получения гонорара. Подробностей сейчас приводить не буду, но с указанными номиналами схема в принципе неработоспособна, и вообще нужно использовать не емкостную, а индуктивную трёхточку, индуктивности катушек завышены раз в десять и т.д и т.п. Попытка устранения возникших препятствий так и не увенчалась успехом: на выходе смесителя не удалось получить разностный сигнал частотой меньше 1..2 кГц, несмотря на разные варианты намотки колец и даже использование двухзатворных полевиков. Вероятно, до завершения конструкции оставалось немного, но моих знаний для этого не хватило.

И тогда подумалось: зачем городить огород, если существуют DDS генераторы, позволяющие синтезировать сигналы от долей Герц до десятков МегаГерц. Рассматриваемая конструкция построена именно по такому принципу, тем более, что потребность в генераторе частот выше 1 МГц у меня периодически возникала, например, для настройки входного блока частотомера. Имеющийся у меня функциональный генератор до 10 МГц на основе MAX038 практически непригоден для исследований из-за отвратительной формы сигнала и ограниченного диапазона частот.

Конструкций генераторов на основе DDS в Интернете довольно много, но ни одна из них мне не понравилась (или слишком много ненужных функций, или совсем убого). Я обратил внимание на сообщение на одном из форумов, и его решил взять за основу, где предлагается собрать генератор на стандартном модуле DDS AD9850, с использованием платы с кнопками и индикатором «LCD Keypad Shield» для Arduino Uno. При этом в конструкции должен быть минимум проводов.

Насколько мне удалось сделать удобный генератор, судить вам. Рассмотрим схему генератора, рождавшуюся «в муках» в течение примерно полугода:

На этой схеме U1 — модуль Arduino Uno, U2 — LCD Keypad Shiels, U3 — собственно модуль генератора, U4 — необязательный модуль инвертора напряжения +5В -> -5В TPS60403 для питания ОУ. Вполне возможно запитать генератор не от одного напряжения +5В, а от двухполярного напряжения ±5В через разъём XP2. Было решено идти по пути упрощения конструкции с использованием модуля U4.

Так как эффективное значение уровня сигнала (до аттенюатора), может быть любым примерно от 0,5 до 2В (на ВЧ уровень снижается), нет никакого смысла градуировать шкалу потенциометра R35, и поэтому для отображения действующего значения выходного напряжения использован измеритель на ОУ DA4 с передачей уровня на АЦП и с выводом на индикатор, с предварительной программной коррекцией в зависимости от амплитуды и частоты.

Основные параметры генератора:

  • Диапазон частот аналогового синусоидального и прямоугольного сигналов: 1 Гц… 40 МГц
  • Максимальное действующее значение выходного аналогового
    • синусоидальногосигнала: 1,8..2В (регулируется плавно)
    • прямоугольного сигнала: 2,2..2,5В (регулируется плавно)
  • Отдельный цифровой выход ТТЛ с амплитудой до 5В в том же диапазоне частот, с регулировкой скважности в пределах 10..20%..80..90% (с выключением регулировки и переходом в режиме меандра).
  • Скорость нарастания фронтов прямоугольного сигнала, примерно: 8 нс
  • Выходное сопротивление: 50 Ом
  • Ступени ослабления выходного аттенюатора: 1:1, 1:10, 1:100, 1:1000
  • Уровень нелинейных искажений на частоте 1 кГц:
  • без системы АРУ: 0,2%
    • с системой АРУ: 0,25%
    • Диапазон эффективного действия АРУ: 2 Гц..25 МГц (особенно эффективно: 1 МГц..25 МГц)
  • максимальная погрешность измерения выходного напряжения при уровнях до ~0,1В: примерно 5%.

Эффективность системы АРУ наглядно представлена на графиках АЧХ:

Очевидно, сказывается уменьшение на ВЧ усиления ОУ. В качестве DA1..DA3 пробовались El2244CS и LMH6626MA — они показали худшие результаты по сравнению с ОУ LM7171AIMX.

Синусоидальный сигнал снимается с выхода блока генератора ZOut2 — на его выходе включён ФНЧ, и сигнал обладает меньшими искажениями. Прямоугольные импульсы формируются на «прямом» выходе QOut1, причём формирование прямоугольных импульсов блокируется в верхнем по схеме положении переключателя S1.2 для синусоидального сигнала.

Систему АРУ можно отключить тумблером S4, подающим питание на реле К1. Можно было бы реализовать управление формой импульса и системой АРУ с помощью микроконтроллера (Arduino), но мне эта идея не понравилась. Плата Ардуино управляет лишь частотой, формируемой модулем U3, для чего требуется всего 4 провода (не считая двух шин питания), и получает уровень выходного сигнала через АЦП на выводе A5.

Для улучшения формы прямоугольных импульсов использованы неинвертирующие буферы с уровнями ТТЛ DD1, DD2 (они сокращают длительность фронтов примерно с 20нс до 8нс). Кроме того, они выполняют функции преобразования уровня выходного сигнала до уровня +5В.

В качестве S1, S2 использованы доступные малогабаритные переключатели RS1010. Из-за отсутствия свободных групп переключателя S1 был введён узел на транзисторе VT2, который определяет тип сигнала (низкий уровень на стоке — синусоидальный, высокий — прямоугольный), и корректирует величину показаний измерителя действующего значения выходного напряжения. Дело в том, что измеритель на DA4 фиксирует амплитуду выходного сигнала, поэтому для разных форм сигнала действующая величина получится разной.

При указанных на схеме номиналах измеритель DA4 позволяет отображать адекватные выходные уровни напряжений, начиная примерно от 5..10 Гц (при увеличении ёмкости C20 показания на НЧ улучшаются, но становятся слишком инерционными).

Назначение остальных узлов схемы понятно из соответствующих комментариев.

Конструктивно генератор состоит из двух плат: платы №1 (нижней) и платы №2 (верхней), или, если смотреть со стороны лицевой панели — соответственно левой и правой.

Вид платы №1:

Вид платы №2:

Все элементы управления (переключатели, потенциометры и выходные гнёзда) размещены непосредственно на платах: на плате 2 — основные фильтры питания, узлы U3, U4, цифровые буферы DD1, DD2; на плате 1 — все остальные элементы аналоговой части. Платы соединены между собой через группу межплатных соединителей и латунных стоек М2:

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

Следует понимать, что в положении переключателя S1, соответствующем синусоидальному сигналу, прямоугольные импульсы не формируются, как на цифровом (ТТЛ) BU1, так и на аналоговом BU2 выходах. Это позволяет снизить уровень помех для синусоидального сигнала.

Настройку и сборку генератора лучше проводить поэтапно. Сначала запаиваются все элементы на плату №2 (верхнюю), устанавливается модуль U4 (если используется), после этого подаётся питание (XP2), ии проверяется наличие и уровни напряжений ±5В. После установки платы генератора U3 необходимо проверить наличие сигнала на выходах DD1, DD2. При этом необходимо соединить перемычкой два контакта межплатного разъёма:

Затем рекомендуется собрать на плате №1 узел вольтметра выходного напряжения. Необходимо выполнить балансировку ОУ DA4 потенциометром R22, затем, подавая на его вход J3 (KT3) синусоидальный сигнал известного уровня, с помощью потенциометра R28 при закороченном R52 установить правильность показаний постоянного напряжения на среднем выводе указанного потенциометра. Имеет смысл записать измеренные выходные значения вольтметра для разных действующих уровнях входного переменного напряжения — в дальнейшем эти массивы можно будет внести в программу для Ардуино для получения более точных измерений.

Исследования линейности детектора напряжения показали, в принципе, не самые худшие результаты:

Измеренное значение напряжения (постоянное выходное) откалибровано точно для величины переменного входного напряжения 1В. Значительную относительную нелинейность на малых уровнях сигнала удалось в какой-то степени нейтрализовать программно. Лучшего решения для широкополосных измерений мне найти не удалось.

Теперь можно собрать выходной повторитель на DA3. Соединив обе платы, можно проверить формирование прямоугольных импульсов в соответствующем положении S1 и работу аттенюатора. Подбором резисторов R30, R32 можно установить пределы изменения скважности (или рабочего цикла), которая может также меняться в зависимости от частоты, а подбором резисторов R33/R34 — равную длительность положительной и отрицательной полуволн (меандр) в выключенном положении S3.

Далее собирается узел предусилителя на DA1. В положении переключателя S1, соответствующем синусоидальному сигналу, убедиться в наличии синусоидального сигнала на J1 (KT1) с действующим напряжением примерно 1В.

После сборки системы АРУ DA2 подбором R18, R19 установить максимальное выходное неискажённое синусоидальное напряжение на J2 (KT2) порядка 1,8..2В на частоте 10 МГц. При необходимости выполнить балансировку ОУ DA2 потенциометром R9.

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

Оптрон OC1 для системы можно использовать готовый, например VTL5C10 или подобный, или изготовить самостоятельно. Особой разницы между ними замечено не было. Изготовить собственными силами даже лучше. Я использовал китайский фоторезистор GL5506 и китайский белый светодиод типа «соломенная шляпа» диаметром 5 мм (оптроны серии VTL5C, видимо, сконструированы из похожих элементов). Светодиод и фоторезистор соединены отрезком прозрачной термоусадочной трубки, а затем помещены в отрезок алюминиевой трубки длиной около 12 мм с внешним диаметром 6 мм и внутренним диаметром 5,5 мм (от корпуса конденсатора МБМ 0,05 мкФ 160V). На торцах — заглушки из резины толщиной 2 мм диаметром 5,5 мм (вырезаны вручную вращением с помощью пустой трубки от корпуса); шов замазан клеем T7000. Один край трубки завальцован вручную (на торце сверла 5,5 мм), после этого вставлены светодиод и резистор, а затем вручную завальцован второй край трубки. На выводы радиодеталей одеты короткие отрезки изоляционной виниловой трубки (длиной около 1 мм). Торцы обмазаны белым герметиком:

Сверху надевается термоусадка — и оптрон готов! При токе через светодиод около 2 мА (при питании 5V — резистор 1 кОм, падение напряжения на светодиоде примерно 2,7V) световое сопротивление составляет порядка 70..90 Ом.

Конструктивно генератор выполнен в небольшом корпусе размерами 150 x 100 x 70 мм (больше можно, меньше — не влезет). Передняя фальшпанель из алюминия толщиной 0,3 мм (отшкуренная и протравленная в щёлочи типа Tiret) крепится на гайках элементов управления генератора (справа) и тумблеров включения питания и выключения АРУ (слева). Можно заменить металлическую фальшпанель на плотную бумагу (фотобумагу).

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

Блок питания 5В — самый простой, с запасом до 1А (максимальный ток, потребляемый платой Ардуино и генератором - порядка 250 мА).

Все материалы приведены во вложениях. Печатные платы изготавливались методом ЛУТ. Вряд ли это можно считать простым в изготовлении вариантом, мягко говоря. Во вложениях представлены рисунки печатных плат и гербер-файлы для заказа на производстве — но последние не проверены!

Плату LCD Keypad Shield пришлось доработать: выпаять (точнее, выломать) запаянный на плату индикатор, предусмотрев специальный разъём, для нового индикатора LCD (VFD — удачно подошёл купленный на Авито Futaba M162SD07A) и заменить кнопки с длинными толкателями.

Во вложениях — схемы, рисунки печатных плат, исходники для Ардуино, справочные материалы и файл BOM (последние доступны после регистрации на сайте).

Вложение:
shemy.zip 290 Кб
Вложение:
platy.zip 461 Кб
Вложение:
0
Нет комментариев. Ваш будет первым!