Найти в Дзене
Terrabyte

Как измерить АЧХ при помощи самодельного генератора и осциллографа и немного пошуметь

Оглавление

Чтобы приготовить рагу из кролика надо иметь, как минимум, кошку: Я.Гашек (не вратарь), "Похождения бравого солдата Швейка".

Привет, друзья!

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

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

Допускаю, что не все тогда почувствовали возможности, скрытые до поры в этом приборе (подумаешь, синус генерит!), а я, в свою очередь, не торопился раскрывать потенциал, который изначально был в него заложен. Сегодня я сделаю несколько первых шагов по усовершенствованию многоцелевого функционального генератора (теперь его можно так называть) и покажу, как можно с его помощью решать довольно сложные измерительные задачи. Основной задачей, которую буду решать сегодня будет - оценка амплитудно-частотных характеристик (АЧХ) низкочастотных (звуковой диапазон) радиотехнических узлов: усилителей, фильтров, отдельных компонентов и тп.

Поехали!

Немного аппаратной доработки

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

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

Подготовка светодиода для индикатора включения питания
Подготовка светодиода для индикатора включения питания

Поясню, что это значит. На плюсовой вывод светодиода надеваем термоусадку длиной примерно 8...9 мм (линейка снизу не зря). Затем загибаем вывод так как показано на фотографии. Минусовой вывод откусываем на расстоянии примерно 3-х миллиметров от корпуса и припаиваем к нему резистор 1 кОм с выводом, откусанным на 2 мм от корпуса.

Затем на резистор так же надеваем термоусадочную трубку и загибаем его свободный вывод так, чтобы между выводом светодиода и резистора осталось 2...3 мм. Вот так.

Сформированные выводы светодиода (у меня получилось около 3-х миллиметров)
Сформированные выводы светодиода (у меня получилось около 3-х миллиметров)

А затем ножки нужно загнуть вниз и откусить лишнее. Тут проще показать, чем объяснить.

Сформированные и облуженные ножки
Сформированные и облуженные ножки

Все, светодиод готов к установке. Подпаяем мы его к выводам служебного разъема для программирования микроконтроллера и уложим между контактами выходного разъема 3,5 мм.

Уложенный светодиод
Уложенный светодиод

Теперь, при подаче питания он должен будет светить точно в торец приборчика. Закрываем крышку и испытываем.

Светодиод хорошо виден!
Светодиод хорошо виден!

По-моему, получилось неплохо! Свет довольно яркий. Точно не забудешь выключить! Кстати, кто будет повторять конструкцию - можно и плату скорректировать, чтобы установить SMD-светодиод. Я просто не стал переделывать.

На этом аппаратная доработка закончена. Приступаем непосредственно к функционалу.

Добавляем функцию генератора качающейся частоты (ГКЧ)

Это первая расширенная функция, идею которой я вынашивал еще только приступая к конструированию генератора. Зачем? Как раз для той самой цели, которая обозначена в заголовке статьи - оценки АЧХ.

Разумеется, можно обойтись и без ГКЧ. В самом деле, выставил частоту, подал на схему, измерил напряжение и... отложил одну точку на графике. Потом вторую, на второй частоте, потом третью... А потом вы меняете номинал одного элемента, и все надо переделывать заново! Мысль о том, что процедуру неплохо бы облегчить приходит сама собой. Как облегчить? Самым простым способом - подавать на вход схемы изменяющуюся частоту и оценивать соответствующее изменение амплитуды сигнала на выходе. Делать это можно было бы прямо на экране осциллографа. Предполагается, что осциллограф у радиолюбителя все же есть! Тогда, при изменении, например, какого-нибудь конденсатора, сразу видно как это отражается на форме АЧХ в целом.

Поскольку основу нашего генератора составляет универсальный микроконтроллер, задача формирования сигнала с изменяющейся частотой становится чисто программной. Сразу замечу, что новая управляющая программа генератора доступна для скачивания по ссылке, размещенной в конце статьи.

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

Для управления параметрами ГКЧ в программе предусмотрены несколько определений.

Определения программы
Определения программы

На скриншоте я отметил их выделением. Константы LIN_START_FREQ и LIN_STOP_FREQ задают соответственно начальную и конечную частоту "качания" в Герцах, а константа LIN_TIME отвечает за время, за которое частота изменяется от нижней до верхней. Остальные константы нужны для пересчета физических величин во внутренние размерности контроллера, привязанные к тактовой частоте.

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

Программу я, как обычно, хорошо закомментировал. Думаю, при желании можно будет разобраться. Если нужны будут пояснения - не стесняйтесь спрашивать в комментариях или в группе ВК (ссылка будет в конце). Я обязательно поясню.

Результат работы генератора выглядит следующим образом.

Развертка сигнала изменяющейся частоты
Развертка сигнала изменяющейся частоты

На экране кажется, что в конце периода качания амплитуда сигнала начинает "скакать", но это не так. Просто особенность отображения цифрового осциллографа с низким разрешением экрана.

Давайте теперь попробуем испытать прибор на типовых задачах. Для этого я соорудил примитивный испытательный стенд.

Испытательный стенд для проверки ГКЧ
Испытательный стенд для проверки ГКЧ

Стенд состоит собственно из генератора, на выходе которого установлен делитель на основе подстроечного резистора 100 кОм, для имитации различных сопротивлений нагрузки, осциллографа и макетной платы. Рядом расположились элементы, которые нам помогут проанализировать работу ГКЧ - конденсаторы и дроссель.

В начале посмотрим на АЧХ простейшей RC-цепи. Устанавливаем конденсатор на 0,1 мкф. Сопротивление я, к сожалению, не зафиксировал. ПРосто подстраивал для получения характерной картинки.

RC-цепь
RC-цепь

Вот так это выглядит на схеме.

Схема простейшей RC-цепи
Схема простейшей RC-цепи

Смотрим на результат.

АЧХ RC-цепи
АЧХ RC-цепи

Примерно так выглядят те самые 6 Дб на октаву, которые дает один идеальный реактивный элемент фильтра. Видно, что амплитуда сигнала в конце периода примерно в два раза ниже, чем в его середине (20 кГц и 10 кГц отличаются в 2 раза - октава).

Теперь добавим индуктивность 1 мГн, доведя порядок фильтрующей цепочки до двух.

Макет LC-фильтра
Макет LC-фильтра

Схема изменилась так.

Схема LC-цепи
Схема LC-цепи

Что у нас сигналом?

LC-цепь
LC-цепь

Видно, что амплитуда сигнала "просела особенно заметно на верхних частотах (примерно в 2 раза). Тут бы по идее должно быть 12 дБ на октаву, но из-за неидеальности элементов и особенно высокого сопротивления делителя эффект слегка ниже.

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

Катушка в качестве нагрузки
Катушка в качестве нагрузки

Принципиальная схема в этом случае:

Индуктивная нагрузка
Индуктивная нагрузка

А теперь смотрим на приборе.

АЧХ дросселя в качестве нагрузки
АЧХ дросселя в качестве нагрузки

В целом картина соответствует теории, но тут, признаться, я был удивлен, поскольку в сигнале появились нелинейные искажения. Откуда? Потом сообразил, что низкая индуктивная нагрузка вносит сильные искажения в работу активного фильтра генератора особенно на низких частотах. Дело в том, что в активных фильтрах используется емкостная положительная обратная связь для подъема частотной характеристики на заданных частотах. А теперь на эту связь стала влиять индуктивная нагрузка. И вот, что мы получили! Характерно, что на высоких частотах нелинейность полностью пропадала. Подобные нюансы следует учитывать при проведении измерений.

Ну и конечно очень хочется взглянуть на резонансные явления! С этой целью смоделируем простейший колебательный контур на звуковой частоте, подключив параллельно катушке конденсатор 4,7 мкФ.

Колебательный контур
Колебательный контур

Схема.

Схема испытаний колебательного контура
Схема испытаний колебательного контура

Соответствующий результат на экране осциллографа.

АЧХ колебательного контура
АЧХ колебательного контура

Резонансная частота около 12...13 кГц. Добротность не очень высокая. Но на этих частотах высокую добротность получить сложно. Уж очень велики потери в реактивных элементах. Слишком сильно проявляется их неидеальность. Да и сопротивлением мы контур зашунтировали.

Не суть! Главное, что оценку АЧХ проводить можно и с такими несложными устройствами как у нас! Согласитесь, неплохую пищу для размышлений дают все эти графики. Нужно лишь научиться их читать!

Добавляем функцию генератора белого шума

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

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

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

После небольших поисков я натолкнулся на программную реализацию алгоритма Лемера для 32-битной арифметики. Натолкнулся прямо в Википедии.

Страница Википедии посвященная алгоритму Лемера
Страница Википедии посвященная алгоритму Лемера

В коде даже ссылку на эту страницу оставил, кому будет интересно. Так вот, реализация этого алгоритма очень проста, но... Одно большое но заключалось в том, что наш микроконтроллер не успевал генерировать случайное число с частотой дискретизации, которую мы ему задали - 187 кГц. Немудрено, поскольку в алгоритме есть и умножения и деления, на выполнение которых 256 тактов явно мало.

Тогда я решил не завязывать генерацию шума на частоту дискретизации. Пусть шум генерируется с той скоростью, с который это может делать процессор. А таймер будет воспроизводить сгенерированные отсчеты со своей частотой. Поскольку частота воспроизведения будет явно выше частоты генерации, то воспроизводится будет по несколько одинаковых отсчетов подряд. Полагаю, что это не страшно! 90 и даже 45 кГц нам вполне хватит! У нас все равно на выходе установлен ФНЧ Баттерворта!

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

Шум на выходе генератора на развертке 5 мс
Шум на выходе генератора на развертке 5 мс

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

А вот так выглядит шум на более высокочастотной развертке.

Шум на развертке 200 мкс
Шум на развертке 200 мкс

Развертка 200 мкс примерно соответствует частоте 5 кГц на одно деление. Давайте запомним этот факт и подключим на выход нашего генератора колебательный контур из последнего эксперимента. Что получилось с картинкой?

Шумовой сигнал на колебательном контуре
Шумовой сигнал на колебательном контуре

Видно, что контур как-бы выделяет колебания резонансной частоты (12...13 кГц), придавая колебаниям более гармоническую окраску. Высокочастотные колебания, напротив, значительно уменьшились.

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

Что ж функциональность нашего приборчика постепенно растет! Разумеется это еще не завершение проекта, который, однажды начавшись с желания изучить новый китайский микроконтроллер, постепенно принимает очертания интересного прибора. Со временем его возможности будут еще расширяться.

Новую версию программного обеспечения можно скачать здесь.

CH32V003-Generator-v2.zip

В архиве первой версии можно найти схему, модели деталей корпуса и печатную плату.

CH32V003-Generator.zip

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

Спасибо, что читаете-смотрите Terrabyte! Подписывайтесь, если вам интересна радиолюбительская тематика, микроконтроллеры, мини-ПК, необычные компьютерные решения и инновационные разработки! Спасибо всем, кто поддерживает нас с братом своими комментариями и лайками!

Наша группа ВК: https://vk.com/terrabyte

Наш канал на VK-Video: https://vk.com/video/@terrabyte/all

Наши разработки: