Dds-генератор синусоидального сигнала

DDS генератор синусоидального сигнала

Январь оказался достаточно продуктивным, в плане практического опыта. Основная цель: прокачать свои навыки в области разработки и сборки законченных устройств. Побочная задача: использовать мозги микроконтроллера в связке с быстродействующей ПЛИС. Как результат сделать себе годный DDS генератор.

Когда то давно я уже пробовал, сделать себе DDS генератор, случилось это еще во времена, когда еще и сайт не существовал, да и в микроконтроллерах ничего не понимал. Где то, что то вычитал, кое что повторил из чужих устройств, где то подсказали, в итоге родил генератор. Частота на выходе генерировалась прерыванием по совпадению, внутри прерывания просто инвертировалось состояние ножки. Частота изменялась значением регистра совпадения OCRnx. Этот подход описан уже в 7 уроке, генерация звука.

На тот момент, получившийся результат меня полностью устроил. На выходе регулируемый меандр с частотой до 20кГц, а вот синус получился ужасным, около 2кГц уже выдавал фигню. На практике мне было достаточно меандра на нескольких частотах до 10кГц, поэтому данный генератор много лет выполнял свои функции. Кроме того, на крайний случай у меня на работе был нормальный генератор.

Первое о чем я подумал, когда начал разбираться с ПЛИСинами, это то что хочу перепилить генератор заново. Каким образом? Идея пришла не сразу, но в итоге мое понимание вылилось в то, что обработка интерфейса пользователя будет висеть на микроконтроллере, а молотить будет ПЛИСина. Можно было бы реализовать все на одной FPGA? Можно, но пока еще нет понимания как организовано взаимодействие с внешней памятью, да и мой скилл фоторезиста пока настолько крут чтобы делать такие мелкие платки.

Именно поэтому изначально решено, что это будет atmega8+epm240, дисплейчик wh0802 и энкодер для управления.

Блок питая городил свой из транса и кучи кренок. В итоге 3.3В для питания мк и плис, 5 на дисплей, +-12 для усилителя.

Схему усилителя приводить нет смысла — обычный инвертирующий усилитель на lm324. В итоге с железом все вышло достаточно просто. Задающая плата:

«Железный» подготовительный этап длился достаточно долго, но не сказать, чтобы было много проблем. А вот софтовая часть… Случилось то чего я больше всего боялся, но кто не рискует, тот не пьет шампанское

Самый прикол ожидал меня с самого начала. Опыта построения подобных девайсов у меня нет, поэтому я взял генератор для тактирования ПЛИС пожирнее, аж 100МГц. Начал вспоминать опыт первого генератора, попробовал и ничего не вышло. Представим себе на 100МГц, если сделать счетчик, допустим считать до 1 и инвертировать ногу, это будет 50МГц на выходе. Если считать до 2х, то на выходе будет 25МГц, воу воу, но мы же юзаем резисторную матрицу, а это значит что результат нужно поделить еще на 8. Но в любом случае получается большая дискретность шага.

Я сразу заподозрил неладное и начал гуглить про принцип DDS. В итоге сразу стало понятно, что предыдущий генератор совсем не DDS, более того даже прочитав тонны статей, просветления не наступило. В общем, принцип объяснить на пальцах действительно не так просто. Главное нужно понять разницу, предыдущий ген построен на таком принципе: запустили таймер, сработало прерывание, подставили значение из таблицы, увеличили указатель на таблицу.

Правильный же DDS работает совсем иначе, значение из таблицы подставляется каждый такт, каждый. Да да, тут никакой ошибки нет. Попробую объяснить, представим что тактовая 1Гц, таблица из 8 значений. Значит подставляя значения из таблицы, можно получить частоту 1/8 = 0.125Гц. Выглядело бы это наверно так:

Как же регулируется частота? Тут есть маленькая хитрость. Cчетчик инкрементируется не на 1, а на какое то более мелкое число, таким образом можно уменьшить частоту, например в 10 раз:

while(1) PORTD = sin[i = i + 0.1];

Или увеличить в 2 раза:

while(1) PORTD = sin[i = i + 2];

Знаю, знаю для мк этот пример совсем не корректен, ибо операции будут выполняться разное количество тактов, но если утрированно взглянуть на код, то суть можно понять, кроме того в ПЛИС можно несколько операций выполнять по настоящему параллельно, т.е. для нее такой проблемы с тактами не существует!

В итоге вся теория выливается в две важных формулы:
1. Какой нам нужен шаг перестройки частоты.
Fdelta = Fclk/(2^N)

Обычно народ любит говорить о 0.01 или даже 0.001, честно мне по жизни не приходилось сталкиваться с тем, чтобы была нужна такая точность, но на всякий случай заложил поболее Вычисляем так: тактовая Fclk = 100МГц, Fdelta нужна 0.01Гц, в итоге 0.01 = 100*10^6/(2^N), хехе вспоминаем математику, это обычный логарифм
n = log2 (100*10^8) = 33

2. Вычисление тактовой частоты
fout=m*(Fclk/n_tabl)/(2^n)
где m это число которое мы должны получить, fout требуемая на выходе частота, n_tabl количество табличных значений синуса(128), n — разрешение синуса, то что считали выше. Скажу сразу, для удобства я взял 32 бита, ибо это 4 байта.
fout=m*(100 000 000/128)/(2^32)

В итоге после всех сокращений получилось так:
m = f_out/0.000181898940354585647583;

Со стороны мк все совсем просто, крутим энкодер видим циферки на дисплее, как только циферка установлена, нажимаем кнопку энкодера, когда все циферки установлены — отсылаем 4 байта по spi:

А вот со стороны ПЛИСины, все вышло через ж. Если установить значение add_Counter(которое m на мк) вручную, то частота регулируется просто ништяк, я тестил генератор на разных частотах до 100кГц, выше осцилл не позволяет все просто шикарно, герц в герц. Но как только значение add_Counter начал читать по spi с мк, то приходит лажа, проблема совсем не верилоге и не в самом spi модуле, проблема в понимании работы ПЛИС и прохождении сигналов. На практике это выражается в том что 1 из 5 раз данные не приходят, следовательно частота не меняется. Не большая проблема щелкнуть кнопкой лишний раз, но все таки это не круто. В общем, пока я эту проблему решить не смог, вернусь к ней немного позже, после проведения нескольких дополнительных экспериментов на отдельной плате.

Пояснять исходник верилога пока смысла нет, ибо он подлежит корректировке

Генератор сигналов DDS

Описание опубликовано в журнале «Радио» № 8 за 2009 г., стр. 15. 17 Лабораторный генератор сигналов на DDS.

Генератор синусоидального сигнала является одним из наиболее распространенных приборов в любой измерительной лаборатории. Генераторы сигналов промышленного производства имеют большие габариты, вес и довольно высокую стоимость. С появлением микросхем прямого синтеза частоты DDS (Direct Digital Synthesizer) появилась возможность изготовить генератор синусоидальных сигналов, имеющий довольно высокие параметры при относительно простой схеме и конструкции.

Генератор позволяет плавно перестраивать частоту в диапазоне 0,1 Гц. 6 мГц с шагом 0,1 Гц. 1 мГц, амплитуда может регулироваться от 0 до 7 В. Возможно смещение выходного напряжения относительно нуля в пределах до +/- 5 В. В генераторе использована одна из самых дешевых микросхем прямого синтеза частоты – AD9832 с тактовой частотой 25 мГц. Управляющий контроллер PIC16F84 или PIC16F628. Установленная частота и период отображаются на ЖКИ индикаторе.

Читайте также  Процессор arm® cortex™-a57 с технологией eda

Принципиальная схема лабораторного генератора сигналов на DDS показана на рисунке. Выходной сигнал с микросхемы DDS генератора проходит через пассивный LC фильтр c частотой среза 10 мГц, который улучшает спектр сигнала, фильтруя высшие гармоники. Поскольку микросхема DDS работает с однополярным питанием, необходима схема сдвига уровня. Она выполнена на «ОУ с активной обратной связью» типа AD8130. Кроме сдвига уровня на этом ОУ реализован активный фильтр нижних частот второго порядка с частотой среза 10 мГц и коэффициентом передачи 2, который дополнительно подавляет высшие гармоники.

Отфильтрованный и симметричный относительно нуля сигнал с выхода ОУ подается на регулятор амплитуды — обычный переменный резистор. Применение обычного резистора, а не электронного аттенюатора обусловлено стремлением упростить и удешевить конструкцию. Да и в практической работе гораздо удобнее поворачивать ручку, а не заходить в меню, многократно нажимая кнопки. Хотя выходной ток AD8130 может достигать 40 мА, длительная работа с таким током приведет к перегреву и выходу из строя кристалла. Поэтому в схему введен дополнительный защитный резистор R26, который ограничивает выходной ток до безопасного уровня даже при длительном коротком замыкании выхода. При работе на низкоомную нагрузку этот резистор можно закоротить тумблером SA2.

Работой генератора прямого синтеза управляет микроконтроллер DD1. Индикатор HG1 – двухстрочный по 16 символов в строке на основе контроллера HD44780. В нижней строке отображается частота с точностью до 0,1 Гц. Ввод требуемого значения частоты осуществляется кнопками SB1…SB4. Можно плавно перестраивать DDS генератор в диапазоне частот 0,1 Гц. 6 мГц с любым шагом из ряда 0,1 Гц; 1 Гц; 10 Гц;. 1 мГц. В верхнюю строку индикатора выводится период в микросекундах для частот менее 300 Гц или в наносекундах для частот более 300 Гц.

Программа работает следующим образом. Вначале, исходя из введенной частоты, рассчитываются значения коэффициентов, загружаемых в DDS синтезатор. Затем по этому значению производится расчет периода генерируемой частоты. Результат, особенно на частотах менее 10 Гц, может несколько отличаться от того, который получился бы при расчете по формуле T=1/F. Это связано с тем, что частота в DDS синтезаторе может быть установлена не любая, а только с шагом FMCLK/2^32. Для тактовой частоты 25 мГц это около 0,006 Гц. Вопреки широко распространенному мнению о примитивности и несовершенстве системы команд PIC контроллеров двух килобайт внутренней памяти и 35 команд вполне достаточно для проведения всех расчетов без каких-либо упрощений и округлений. Поэтому точность установки частоты определяется только точностью и стабильностью тактового генератора DDS. Разработаны варианты программы для тактовой частоты 25 и 20 мГц.

Монитор питания DA1 использован не стандартно. В PIC контроллерах, в отличие от некоторых AVR, внутренняя память не склонна к искажению при медленном нарастании или снижении напряжения питания. Поэтому принимать специальные меры для внешнего сброса контроллера при включении и выключении нет необходимости. Монитор питания подключен к выводу порта RB0 и служит для подачи команды контроллеру на сохранение установленной частоты в EEPROM PIC при снижении напряжения питания ниже 4,7 В

В генераторе можно использовать как устаревший, но широко распространенный контроллер PIC16F84A, так и более новый, имеющий аналогичную цоколевку PIC16F628. Индикатор HG1 типа MT 16S2Q-2YLG производства фирмы МЭЛТ. Теоретический предел генерируемой частоты в DDS равен половине тактовой. На практике на частотах выше 1/4 тактовой начинается резкий спад амплитуды первой гармоники, который в какой-то степени можно скомпенсировать усложнением схемы фильтра. Но настройка генератора сигналов при этом резко усложняется, поэтому в данной конструкции верхняя частота принята равной 6 мГц. Однако, учитывая, что радиолюбители предпочитают реализовывать возможности своих приборов по максимуму, программно верхняя рабочая частота DDS генератора ограничена значением 11 мГц.

Схема DDS-генератора сигналов

  1. Основные характеристики и конструктивные особенности
  2. Схема, плата, радиоэлементы
  3. Программное обеспечение
  4. Тестирование
  5. Видео

Данный функциональный DDS-генератор сигналов собран на микроконтроллере AVR, обладает хорошей функциональностью и имеет амплитудный контроль.

Данный генератор базируется на алгоритме DDS-генератора Jesper, программа была модернизирована под AVR-GCC C со вставками кода на ассемблере. Прибор имеет два выходных сигнала: первый — DDS сигналы, второй — высокоскоростной (1–8МГц) «прямоугольный» выход, который может использоваться для оживления МК с неправильными фузами и для других целей.

Высокоскоростной сигнал HS (High Speed) берется напрямую с микроконтроллера Atmega16 OC1A (PD5). DDS-сигналы формируются с других выходов МК через резистивную R2R-матрицу и через микросхему LM358N, которая позволяет осуществить регулировку амплитуды (Amplitude) сигнала и смещение (Offset).

Смещение и амплитуда регулируются при помощи двух потенциометров. Смещение может регулироваться в диапазоне +5В…-5В, а амплитуда — 0–10В. Частота DDS-сигналов может регулироваться в пределах 0–65534 Гц, этого более чем достаточно для тестирования аудио-схем и других радиолюбительских задач.

Основные характеристики DDS-генератора сигналов и конструктивные особенности

  • простая схема с распространенными и недорогими радиоэлементами;
  • односторонняя печатная плата;
  • встроенный блок питания;
  • отдельный высокоскоростной выход (HS) до 8МГц;
  • DDS-сигналы с изменяемой амплитудой и смещением;
  • DDS-сигналы: синус, прямоугольник, пила и реверсивная пила, треугольник, ЭКГ-сигнал и сигнал шума;
  • 2х16 LCD экран;
  • интуитивная 5-ти кнопочная клавиатура;
  • шаги для регулировки частоты: 1, 10, 100, 1000, 10000 Гц;
  • запоминание последнего состояния после включения питания.

На представленной ниже блок-схеме приведена логическая структура функционального генератора:

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

Блок питания собран на отдельной плате:

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

  • Смотрите также схему измерителя емкости конденсаторов

Все действия отображаются через LCD-экранчик. Управление генератором осуществляется пятью клавишами.

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

Система меню генератора:

Для установки шага изменения частоты предусмотрено отдельное значение. Это удобно, если вам необходимо менять частоту в широких пределах. Генератор шума не имеет каких-либо настроек. Для него используется обычная функция rand(). Высокоскоростной выход HS имеет 4 режима частоты: 1, 2, 4 и 8 МГц.

  • Смотрите также, как сделать пробник напряжения

DDS-генератор сигналов — схема, плата, радиоэлементы

Схема функционального генератора простая и содержит легкодоступные элементы.

Что касается списка необходимых радиоэлементов для БП:

  • 3 линейных регулятора — LM7805, LM7812 и LM7912.
  • Диодный мост (B1).
  • 5 электролитических конденсаторов — C1, C7 (2х2000 мкФ) и C3, C5, C9 (3х100 мкФ).
  • 3 конденсатор (C4, C6, C10) — 0.1 мкФ.
  • Трансформатор (TR1) — 220В — 2×15В.
  • Плавкий предохранитель (F1).
  • Переключатель (S1) — 220В.
  • 2 разъём (X1 и JP1) — Сеть 220В и 4 контакта (Выход БП) соответственно.
Читайте также  Переносной прожектор на сверхъярких светодиодах

Список радиоэлементов для основной платы:

  • МК AVR 8-бит (IC1) — ATmega16.
  • Операционный усилитель (IC2) — LM358N (КР1040УД1).
  • 4 конденсатора — C2, C3 (2х0.1 мкФ) и C6, C7 (2х18 пФ).
  • 13 резисторов — R1 (500 Ом); R2, R6, R8, R10, R12, R14, R16, R18 (10 кОм); R3, R21 (100 кОм); R20 (100 Ом); R22 (12 кОм).
  • 3 подстроечных резистора POT (10 кОм), POT1 (1 кОм) и POT2 (47 кОм).
  • LCD-дисплей — HD44780 2×16.
  • Кварц (Q1) — 16 МГц.
  • 6 кнопок (BUTTONS, RESET).
  • 3 разъёма — HS, DDS (2 контакта, BNC); ISP (PLD-6, Разъём ISP); JP1 (4 контакта, разъём питания).

Плата:

Функциональный генератор собран в пластиковом боксе:

Программное обеспечение DDS-генератора сигналов

Как уже говорилось выше, в основе своей программы использован алгоритм DDS-генератора Jesper. Было добавлено несколько строчек кода на ассемблере для реализации остановки генерирования. Теперь алгоритм содержит 10 ЦПУ циклов, вместо 9.

void static inline Signal_OUT(const uint8_t *signal, uint8_t ad2, uint8_t ad1, uint8_t ad0)<
asm volatile( «eor r18, r18 ;r18 dds-generator.rar

Тестирование DDS-генератора сигналов

Генератор был протестирован с осциллографом и частотомером. Все сигналы хорошо генерируются во всем диапазоне частот (1–65535 Гц). Регулирование амплитуды и смещения работает нормально.

  • Возможно вас также заинтересует электрическая схема генератора синусоиды

Видео о сборке DDS-генератора своими руками:

DDS генератор на микроконтроллере ATmega16. Часть 1. Схемотехническое решение

В первой части статьи рассматривается схемотехническое решение, устройство и конструкция DDS генератора (генератор с прямым цифровым синтезом формы сигнала) на микроконтроллере Atmel 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 — скачать

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

Дополниельно имеется второй вариант конструкции DDS генератора на микроконтроллере ATmega16.

Перевод: Vadim по заказу РадиоЛоцман

Лабораторный генератор сигналов на DDS под управлением Arduino

Прототипом этого генератора стала найденная автором в Интернете конструкция [1]. Она дополнена аттенюатором, которым управляет микроконтроллер, буферный усилитель собран на микросхеме другого типа, внесены изменения в программу микроконтроллера модуля Arduino Nano.

Микросхемы прямого цифрового синтеза частоты (DDS) обычно применяют в задающих генераторах и перестраиваемых гетеродинах радиостанций [2, 3], лабораторных генераторах сигналов [4, 5]. Микроконтроллерное управление ими легко позволяет реализовать генератор качающейся частоты [6]. В последнее время сложилась ситуация, когда приобретение отдельно микросхемы DDS и микроконтроллера дороже, чем готовых содержащих их модулей. В предлагаемом лабораторном генераторе синусоидальных сигналов применены модуль синтезатора частоты HC-SR08 на микросхеме DDS AD9851 и микроконтрол-лерный модуль Arduino Nano.

Генератор имеет три режима работы:

1 — генерация синусоидального сигнала частотой от 1 Гц до 70 МГц, устанавливаемой с минимальным шагом 1 Гц;

2 — генерация сигнала качающейся частоты. Качание происходит от установленного на ЖКИ значения в сторону повышения частоты. Полосу и шаг качания можно устанавливать произвольно во всём диапазоне генерируемых частот, но шаг должен быть меньше полосы. Число шагов в одном цикле качания равно ширине полосы качания, делённой на длину шага, плюс единица. Период повторения циклов равен этому числу, умноженному на 660 мкс. В начале каждого цикла качания для синхронизации развёртки осциллографа генерируется импульс низкого логического уровня длительностью 11 мкс;

3 — генерация сигнала, частота которого отличается от заданной на одно из следующих фиксированных значений: 450 кГц, 455 кГц, 460 кГц, 465 кГц, 1,6 МГц, 1,8 МГц, 5,5 МГц, 10,7 МГц и 21,4 МГц. Выходная частота равна сумме установленного на индикаторе значения и выбранного смещения.

Аттенюатор ослабляет выходной сигнал на 0-110 дБ ступенями по 10 дБ. Экспериментально снятые графики зависимости амплитуды выходного напряжения от частоты при различном ослаблении аттенюатора показаны на рис. 1. Генератор, внутреннее сопротивление которого 50 Ом, был нагружен только входным сопротивлением осциллографа (около 1 МОм).

Рис. 1. Экспериментально снятые графики зависимости амплитуды выходного напряжения от частоты при различном ослаблении аттенюатора

Принципиальная схема генератора изображена на рис. 2. Он состоит из готовых модулей Arduino Nanо (А1), HC-SR08 (A2) на базе микросхемы DDS AD9851 и самодельных плат питания и органов управления, аттенюатора (2 шт.), буферного усилителя. Позиционные обозначения элементов, находящихся на самодельных платах, снабжены цифровыми префиксами, равными условному номеру платы. Информация о работе генератора выводится на ЖКИ HG1.

Рис. 2. Принципиальная схема генератора

Внешнее напряжение питания генератора (14,5. 20 В) подают на разъём 3XS1 от внешнего источника. Потребляемый от него ток не превышает 150 мА. Выключатель питания 3SA1 расположен на передней панели корпуса генератора. На плате питания и органов управления установлены три интегральных стабилизатора: на 12 В (3DA1), на 10 В (3DA3) и на 5 В (3DA2). Напряжение 10 В на выходе стабилизатора 3DA3 точно устанавливают подборкой резисторов 3R7 и 3R8. Конденсаторы 3C1-3C9 и 4C1-4C4 фильтруют питающие напряжения.

Читайте также  Разборка, перемотка и сборка китайских трансформаторов

Модуль A1 питается напряжением 12 В от стабилизатора 3DA1, при этом действует установленный в модуле стабилизатор напряжения 5 В, которое использовано для питания ЖКИ HG1. Напряжением 12 В питают реле, установленные на платах аттенюаторов. Модуль A2 получает питание от стабилизатора 3DA2, что позволило избавиться от помех, создаваемых микроконтроллером модуля A1. ОУ 4DA1 в буферном усилителе питается напряжением 10 В от стабилизатора 3DA3.

Всеми узлами генератора управляет по загруженной в него программе микроконтроллер ATmega168P или ATmega328P, установленный в модуле Arduino Nano. Применён модуль с индексом R3, в котором преобразователь интерфейса USB-COM выполнен на микросхеме CH340G.

ЖКИ HG1 и меет две строки по 16 символов и встроенный контроллер, совместимый с HD44780. Плата ЖКИ была подвергнута доработке. Имевшийся на ней резистор R8 (рис. 3) сопротивлением 100 Ом, ограничивающий ток подсветки экрана, был заменён резистором сопротивлением 220 Ом. Это понизило ток, потребляемый подсветкой, с более чем 20 мА до 10 мА. При этом яркость подсветки практически не уменьшилась. На этой же плате были смонтированы после подборки резисторы R1 и R2, задающие контрастность изображения на экране индикатора.

Рис. 3. Плата ЖКИ

Вращением ручки энкодера3S1 увеличивают или уменьшают генерируемую частоту шагами, длину которых можно изменять нажатиями на эту ручку. Нажатиями на кнопку 3SB1 изменяют коэффициент ослабления аттенюатора, а с помощью кнопки 3SB2 сменяют режимы работы генератора. В режиме 1 нажатием на кнопку 3SB3 устанавливают шаг перестройки равным 1 кГц. Нажатиями на эту же кнопку в режиме 2 циклически выбирают частоту начала сканирования, ширину полосы качания и длину шага перестройки частоты. В режиме 3 этой кнопкой задают смещение генерируемой часто-ты относительно показанной на индикаторе. Все входы модуля A1, к которым подключены контакты кнопок и энкоде-ра, соединены с цепью питания +5 В через резисторы 3R1-3R6 для поддержания на них высокого логического уровня при разомкнутых контактах.

Детали стабилизаторов напряжения питания и органов управления размещены на односторонней печатной плате, представленной на рис. 4. Кнопки и энкодер устанавливают на ней со стороны печатных проводников. Энкодер крепят гайкой к корпусу генератора. К нему же без изоляционных прокладок прижимают теплоотводящие фланцы стабилизаторов 3DA1 и 3DA2. Стабилизатор 3DA3 работает без дополнительного теплоотвода. Конденсаторы 3C3 и 3C5 монтируют на плату лишь при необходимости устранить сбои в работе энкодера.

Рис. 4. Печатная плата

Внешний вид модуля HC-SR08 показан на рис. 5. Генерируемый им сигнал снимают с имеющегося в модуле нагрузочного резистора LC-фильтра нижних частот. Провода, идущие от модуля к буферному усилителю, припаяны непосредственно к этому резистору (R5). На рис. 5 он находится у правого среза платы вверху.

Рис. 5. Внешний вид модуля HC-SR08

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

С модуля DDS сигнал поступает на буферный усилитель с коэффициентом усиления 2, собранный на ОУ 4DA1 (OPA642N), через конденсаторы 4C5 и 4C6, не пропускающие его постоянную составляющую. С помощью резисторов 4R1, 4R2 и блокировочных конденсаторов 4C1-4C4 создана искусственная средняя точка питания ОУ. Для устранения постоянной составляющей выходной сигнал ОУ поступает на аттенюатор через конденсаторы 4C7 и 4C8. Резистором 4R6 задано выходное сопротивление генератора.

Буферный усилитель собран на односторонней печатной плате, изображённой на рис. 6. Она рассчитана на установку компонентов для поверхностного монтажа. Резисторы и конденсаторы — типоразмера 1206, допускается установка резисторов типоразмера 0805.

Рис. 6. Печатная плата буферного усилителя

Усиленный сигнал поступает через аттенюаторы на выходной разъём XW2 (СР50-73). Для управления коэффициентом ослабления в аттенюаторах использованы реле HLS-4098-DC12V с сопротивлением обмотки 720 Ом. Транзисторы 1VT1, 1VT2, 2VT1, 2VT2 управляют этими реле по командам модуля A1. Обмотки реле для подавления выбросов напряжения самоиндукции зашунтированы диодами 1VD1, 1VD2, 2VD1, 2VD2.

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

Рис. 7. Платы двух аттенюаторов

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

На практике почти невозможно найти резистор, сопротивление которого в точности равно написанному на нём номиналу. Поэтому необходимо, измерив реальное сопротивление имеющихся в наличии резисторов, выбрать тот, сопротивление которого близко к требуемому Rрасч, но больше его. Затем, подставив сопротивление выбранного резистора R1 в формулу R2 = (Rрасч — R1 )/Rрасч · R1 найти сопротивление резистора R2, который следует подключить параллельно первому. В таблице представлены некоторые возможные комбинации резисторов для различных ступеней аттенюаторов.