Звуковой генератор
Часть 1. Устройство и принципиальная схема

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

В левой части схемы расположены органы управления и индикации - жидкокристаллический символьный дисплей LCD1602 с интерфейсом I2C (U1) , энкодер со встроенной кнопкой (BR1) и четыре тактовые кнопки (S1 - S4). В качестве микроконтроллера использован Arduino NANO (U3).
Сигнал синусоидальной формы, вырабатываемый модулем генератора GEN01 (U2) усиливается или ослабляется модулем аттенюатора ATT02 (U4) и поступает на выходной разъем прибора XW2. Сигнал прямоугольной формы с выхода SQR модуля генератора поступает непосредственно на выходной разъем XW1.
Необходимо обратить внимание, что два выхода генератора имеют существенно отличающиеся нагрузочные характеристики.
Синусоидальной выходной сигнал прибора формируется модулем аттенюатора ATT02, в котором имеется достаточно мощный буферный усилитель (см. принципиальную схему модуля). Он имеет низкое выходное сопротивление, что позволяет подавать сигнал с этого выхода на низкоомную (единицы Ом) нагрузку без заметного снижения его уровня.
Сигнал прямоугольной формы без какого либо усиления или формирования берется непосредственно с выхода SYNC микросхемы IC2 в модуле генератора (см. принципиальную схему модуля). Этот выход выполнен по схеме с открытым коллектором и нагружен на резистор R10 сопротивлением 22 кОм, что, во-первых, не позволяет подключать к нему низкоомную нагрузку и, во-вторых, вызывает весьма заметный завал фронтов прямоугольного сигнала. Это особенно хорошо заметно на высоких частотах на переднем фронте прямоугольного импульса, когда транзистор на выходе микросхемы IC2 закрывается, а паразитная емкость соединительного кабеля и нагрузки медленно заряжается через резистор R10. Форма выходного сигнала при этом становится весьма далекой от прямоугольной.
В таком виде сигнал прямоугольной формы можно использовать для подачи на высокоомные входы других измерительных приборов, например, на вход синхронизации развертки осциллографа или на вход частотомера. Если же вы хотите повысить нагрузочную способность этого выхода и улучшить форму сигнала, то необходимо будет между выходом SQR модуля генератора и выходным разъемом XW1 установить какой-нибудь буферный усилитель-формирователь, например, логический элемент с триггером Шмитта на входе. Это даст возможность привести характеристики сигнала к стандартным уровням выбранного типа логики, а также защитит микросхему IC2 в модуле генератора от возможного повреждения при случайной подаче внешнего напряжения на выход сигнала прямоугольной формы.
Управление частотой и амплитудой выходного сигнала микроконтроллер осуществляет передавая соответствующие команды модулю генератора U2 и модулю аттенюатора U4 по шине I2C (выводы A4 и A5 Arduino NANO). Эта же шина используется и для передачи информации, отображаемой на дисплее, модулю U1.
Прибор питается от внешнего источника постоянного напряжения +9В, подключаемого к разъему J1. Потребляемый ток около 200 мА. Можно использовать нестабилизированный источник или аккумуляторы, главное чтобы питающее напряжение не выходило за пределы 8...12В. Более низкое напряжение может вызвать нестабильную работу микроконтроллера, а более высокое - перегрев микросхемы линейного стабилизатора напряжения +5В в модуле питания U5.
Режимы работы и функции органов управления
Функции органов управления (кнопок, энкодера) и прибора в целом определяются программным обеспечением (прошивкой) микроконтроллера или, как принято говорить у поклонников платформы Arduino, скетчем. Ниже описан порядок функционирования прибора для прошивки, разработанной автором и приведенной далее в этой публикации в разделе "Программное обеспечение". Наш читатель может при наличии навыков программирования в среде Arduino модифицировать эту прошивку, изменив функции органов управления так, чтобы они наилучшим образом соответствовали его задачам.
Режим постоянной частоты сигнала

При включении прибор находится в режиме генерации непрерывного сигнала одной частоты, а на дисплее отображается информация, показанная на рисунке справа. В верхней строке показана частота сигнала и состояние выхода On (Включен), в нижней - уровень выходного сигнала синусоидальной формы в децибеллах и в милливольтах. Уровень в децибеллах здесь и далее вычисляется по отношению к сигналу со среднеквадратичным значением напряжения 0,775 В, такие уровни в звукотехнике часто обзначают как "dBu".

Для выключения сигнала нужно нажать кнопку S2 "Start/Stop", при этом сигнал на выходе генератора отключится, а на дисплее "On" в верхней строке сменится на "Off" (Выключен), как показано на рисунке справа.
Курсор в виде линии подчеркивания под крайним правым знакоместом в поле частоты сигнала показывает, что это поле в данный момент является активным, то есть именно его значение будет меняться при вращении ручки энкодера. Изменять частоту, можно в режиме грубой настройки, при этом частота меняется по ступеням третьоктавного ряда (12, 16, 20, 25, 32 Гц и так далее) или в режиме плавной настройки, когда каждый "клик" при вращении энкодера соответствует изменению частоты примерно на 1% от текущего значения. Для перехода от грубой настройки к плавной и обратно достаточно однократно нажать на ручку энкодера в осевом направлении. Пределы изменения частоты - от 12 Гц до 25 кГц.

Для управления амплитудой синусоидального сигнала необходимо переместить курсор вниз, нажав кнопку S4 "Down". Активным станет поле уровня сигнала (см. рисунок справа) и его значение можно будет изменять, вращая ручку энкодера. Уровень сигнала меняется в пределах от -60 dBu до +10 dBu (от 0,8 мВ до 2450 мВ) с шагом в 1 децибелл. Для того чтобы вернуться к установке частоты сигнала, нужно переместить курсор вверх, нажав кнопку S3 "Up".
Примечания:
1. Амплитуда сигнала синусоидальной формы, установленная в режиме постоянной частоты сигнала, сохраняется и в режиме ступенчатого изменения частоты.
2. Амплитуда сигнала прямоугольной формы на выходе XW1 не регулируется и зависит только от напряжения питания, поданного на резистор R10 в модуле генератора U2. Подробнее см. в описании модуля генератора GEN01. Этот сигнал не отключается при нажатии кнопки S2 "Start/Stop".
Режим ступенчатого изменения частоты сигнала

В этом режиме звуковой генератор автоматически изменяет частоту сигнала в соответствии с заданными оператором параметрами. Для входа в этот режим следует однократно нажать на кнопку S1 "Mode" при этом сигнал синусоидальной формы на выходе генератора отключится, а на дисплее появится экран установки параметров, показанный на рисунке. На этом экране в верхней строке находятся два поля, представляющих собой минимальное и максимальное значение частоты сигнала, а в нижней строке - три поля: количество ступеней изменения частоты, характер изменения (линейный или логарифмический) и длительность полного цикла изменения частоты в секундах. Значения во всех пяти полях можно изменять, для этого необходимо выбрать соответствующее поле кнопками S3 "Up" и S4 "Down", а затем, вращая ручку энкодера, установить требуемое значение параметра. Для перемещения курсора между полями в одной строке необходимо повторно нажимать кнопку "Up" или "Down" до тех пор, пока курсор не займет нужное положение.
При вводе минимального и максимального значения частоты можно также как и в режиме постоянной частоты сигнала переходить между грубой и плавной настройкой, нажав на ручку энкодера. Допускается в поле минимального значения частоты вводить величину, превышающую максимальное значение, в этом случае цикл будет идти в сторону понижения частоты, а не возрастания. Пределы изменения обеих частот такие же как и в режиме постоянной частоты - от 12 Гц до 25 кГц, количество ступеней - от 2 до 50, а длительность полного цикла - от 2 до 50 секунд.

После того, как требуемые параметры установлены, запуск генератора осуществляется нажатием на кнопку S2 "Start/Stop". При этом на дисплее появится информация, показанная на рисунке справа, а на выходе появится сигнал, частота которого будет ступенчато изменяться. Текущее значение частоты будет отображаться в верхней строке дисплея, а курсор, указывающий на активное поле, исчезнет, поскольку изменение установленных параметров во время работы цикла запрещено. Цикл изменения частоты будет повторятся бесконечно, кнопки S1 "Mode", S3 "Up" и S4 "Down" при этом будут заблокированы. Для прерывания цикла и возврата к экрану установки параметров следует нажать кнопку S2 "Start/Stop".
Промежуточные значения частот для ступеней между минимальной и максимальной вычисляются программой автоматически в зависимости от заданного числа ступеней и от выбранного характера изменения - линейного или логарифмического. Так например, при установке следующих параметров:
20 - 20000 Гц, 10 ступеней, логарифмический характер изменения частоты
будет вычислен такой ряд частот:
20, 43, 93, 200, 431, 928, 2000, 4309, 9283, 20000 Гц
а, если логарифмический характер изменения частоты изменить на линейный, то ряд частот станет таким:
20, 2240, 4460, 6680, 8900, 11120, 13340, 15560, 17780, 20000 Гц
Видно, что в первом случае ряд частот представляет собой геометрическую прогрессию, где значение каждого элемента ряда получается путем умножения значения предыдущего элемента на постоянный коэффициент (в данном случае, примерно, на 2,15), а во втором случае - арифметическую прогрессию, где значение каждого элемента получается путем прибавления постоянной величины к значению предыдущего (в данном случае - 2220). На практике для звукотехнических измерений наиболее часто применяемой является логарифмическая шкала частот, однако и линейный характер изменения частоты может оказаться полезным в каких-то ситуациях.
Период времени, в течение которого на выходе генератора вырабатывается сигнал каждой ступени определяется количеством ступеней и заданной длительностью полного цикла. Так например, при количестве ступеней равном 12-ти и длительности полного цикла 24 секунды, сигнал с частотой каждой ступени будет генерироваться в течение 2-х секунд.
Сохранение параметров при выключении питания
Все установленные пользователем параметры сигнала, включая его амплитуду и частоту в режиме постоянной частоты сигнала, а также минимальную и максимальную частоту, количество ступеней, характер изменения частоты и длительность полного цикла в режиме ступенчатого изменения частоты сохраняются в энергонезависимой памяти микроконтроллера при каждом нажатии на одну из кнопок S1 - S4. При включении питания прибора эти параметры извлекаются из памяти и устанавливаются в качестве текущих. Таким образом, прибор "вспоминает" то состояние, в котором он находился в момент его предыдущего выключения.
На этом мы заканчиваем рассмотрение принципиальной схемы и функций звукового генератора и переходим ко 2-й части этой публикации, где поговорим о его программном обеспечении и конструктивном исполнениии.