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

где UД1, UД2, …, UДN – действующие значения соответствующих гармоник, входящих в состав сигнала.
Средневыпрямленное значение напряжения сигнала, UC, также в общем случае принято рассчитывать по формуле

где UC1, UC2, …, UCN – средневыпрямленное значение каждой из гармоник, входящих в состав сигнала.
Коэффициент формы сигнала, КФ, принято рассчитывать по формуле

Каждая из гармоник U(t), входящая в состав сигнала и имеющая свою частоту, представляет собой синусоиду (соответствующей частоты) с амплитудным значением UАмп. Для единичной частоты это обычная синусоида

Действующее значение, UД, такой синусоиды за полпериода (0–π) равно действующему значению за период (0–2π) и рассчитывается по формуле

Средневыпрямленное значение, UС, синусоиды (4) за полпериода (0–π) равно средневыпрямленному значению модуля (или абсолютного значения) синусоиды (|sin(t)|) за период (0–2π) и рассчитывается по формуле

Для синусоидального сигнала числовое значение коэффициента формы, KФ, в соответствии с (3), может быть получено из формулы

Резюмируя вышеизложенное, можно констатировать, что если сигнал синусоидальный, то

Здесь необходимо заметить, что формулы (5) и (6) работают только в одну сторону, или, другими словами, если сигнал синусоидальный, то
UД ≈ UАмп×0,7071 и UС ≈ UАмп×0,6366, а вот обратное неверно, т.е. если UД ≈ UАмп×0,7071 или UС ≈ UАмп×0,6366, то сигнал необязательно синусоидальный. Например, если сигнал представляет собой прямоугольный меандр с постоянной составляющей, то можно найти такую постоянную составляющую, для которой UД ≈ UАмп×0,7071. Другими словами, такое действующее значение сигнала в общем случае не означает, что сигнал синусоидален (такой меандр, естественно, не является синусоидой).
А вот формула (7) работает в обе стороны, т.е. если сигнал синусоидален, то KФ ≈ 1,11072, и если KФ ≈ 1,11072, то сигнал синусоидален. Как можно заметить из (7), коэффициент формы не зависит ни от амплитуды сигнала, ни от его частоты. В связи с этим KФ может быть использован как средство определения синусоидальности сигнала. Например, измерив UД, UС, рассчитав KФ = UД / UС и сравнив KФ со значением 1,11072, можно сделать вывод о том, синусоидален сигнал или нет. Кстати, на этом принципе и работает описываемый прибор (см. далее).
В большинстве случаев требуется измерение действующего значения переменного напряжения сетевой частоты (50 Гц). Это может быть само сетевое напряжение (например, ~220 В) или напряжения со вторичных обмоток трансформаторов. Простейший случай измерения действующего напряжения сетевой частоты – это измерение выпрямленного (с помощью обычных диодов) значения такого напряжения UC. Поскольку UД / UС = π/2√2 ≈ 1,11072 (см. (7)), то UД ≈ UС×1,11072.
Таким образом, измерив UC и проградуировав измерительный прибор под UД, т.е. умножив изменённое напряжение на 1,11072, можно получить действующее значение напряжения. На этом принципе основан способ измерения действующего значения напряжения простейших и дешёвых вольтметров и стрелочных тестеров. Существуют цифровые вольтметры действующего значения напряжения, которые измеряют реальное действующее значение напряжения (true RMS). Однако они на порядок дороже первых; кроме того, они измеряют действующее значение напряжения частотой не выше 1 кГц. И наконец, существуют приборы, которые измеряют действующее значение напряжения (true RMS) частотой до 100 кГц. Однако их цена просто зашкаливает, так как они стоят уже под десятки, а то и сотни тысяч рублей.
Здесь может возникнуть вопрос: а зачем вообще измерять действующее и средневыпрямленное значения напряжений в звуковом диапазоне частот? Ведь обычно действующее значение напряжения измеряют на сетевой частоте 50 Гц (см. выше). Для ответа на этот вопрос сделаем некоторое отступление.
Как известно, то или иное устройство звукотехники (УМЗЧ, различные звуковые мониторы и т.п.) имеет искажения. Другими словами, подав на такое устройство чисто синусоидальный сигнал, на выходе получим усиленный сигнал, но с некоторыми искажениями. Эти искажения принято характеризовать коэффициентом нелинейных искажений (КНИ), KН, который в общем случае рассчитывается по формуле (8)

где U2д2, U2д3, … U2дN – квадраты действующих значений напряжений всех гармоник, кроме первой (основной, U2д1), а U2д1, U2д2, … U2дN – квадраты действующих значений всех без исключения гармоник.
Кроме KН искажения принято ещё характеризовать коэффициентом гармонических искажений (КГИ, в зарубежной литературе THD – Total Harmonic Distortion), KГ, который вычисляется по формуле:

Связь между KГ и KН определяется формулой (10):

Причём, если KН << 1, то KГ ≈ KН (см. (10)), т.е. при их малых значениях они приблизительно равны.
Для получения KГ или KН требуется достаточно дорогая звуковая карта и также недешёвое программное обеспечение.
Теперь возвратимся к прерванной последовательности изложения. Как было отмечено выше, коэффициент формы, KФ, так же, как и KГ, KН, определяет искажения, или, другими словами, KФ, KГ и KН выполняют приблизительно одну и ту же функцию, но по-разному. Тогда возникает вопрос: а можно ли вместо KГ и KН использовать KФ? И есть ли связь между ними? Можно ли рассчитать, например, KГ по KФ, т.е. есть ли зависимость KГ = f(KФ)? К сожалению, такой прямой связи нет. Однако, если взглянуть на формулы (3), (7) и (9), то можно констатировать однозначно, что если KФ = π/2√2 (≈ 1,11072), то KГ = KН = 0. Другими словами, чем ближе KФ к π/2√2 (≈ 1,11072), тем ближе KГ и KН к нулю.
Пусть выходной сигнал с выхода, например, УМЗЧ состоит из двух гармоник: первая с действующим значением 10 В и частотой, например, 1 кГц, вторая – с действующим значением 0,1 В (т.е. 0,1% от первой) и частотой 2 кГц. По формулам (3) и (9) можно точно рассчитать значения KФ и KГ соответственно и сравнить их между собой.
Итак, пусть UД1 = 10 В, UД2 = 0,1 В. Тогда, в соответствии с (9), рассчитаем KГ. Имеем:

что соответствует 1%.
Теперь рассчитаем KФ по (3). Имеем:

Теперь рассчитаем относительную ошибку ΔKФ, имея в виду, что истинное значение KФ = 1,11072:

что соответствует 0,99% ≈ 1%.
Как видим, KГ = 1% и ΔKФ ≈ 1%, или, другими словами, они достаточно близки.
Если взять действующее значение второй гармоники на порядок меньше, т.е. если UД1 = 10 В и UД2 = 0,01 В, то по расчётам автора (они опущены) KГ = 0,1%, а ΔKФ = 0,00099935 = = 0,099935% ≈ 0,1%, т.е. и в этом случае KГ и ΔKФ так же близки. Автор оставляет такой расчёт читателю.
Кроме того, если подходить чисто формально, то из (3) следует, что KФ= UД/UС, из чего следует, что UД = KФUС. А из (9) следует, что

Но эта связь чисто формальная и не подходит для расчёта, поскольку для вычисления числителя (11) опять потребуются дорогая звуковая карта и дорогое программное обеспечение.
Резюмируя всё вышесказанное, можно отметить, что измерение UД и UС и расчёт по ним KФ является альтернативным способом определения искажений устройств звукотехники. Описываемый далее прибор как раз и выполняет такую функцию. Прибор имеет небольшой размер, полностью автономен и относительно недорог.
Дальнейшее изложение построено следующим образом. Вначале приводится принципиальная схема прибора, затем – разводка и внешний вид его платы и далее – его конструкция и внешний вид. В конце статьи приводятся результаты испытаний прибора, его настройка и порядок работы с ним.
Принципиальная схема
Функцию преобразования входного сигнала в действующее и средневыпрямленное значения и вывод постоянных напряжений, численно равных этим значениям, выполняет микросхема AD637 (DA1). Если, например, входной сигнал синусоидальный с амплитудой 1 В, то его действующее значение будет приблизительно равно 0,7071 В (формула (5)), а средневыпрямленное – приблизительно 0,6366 В (формула (6)). Эти напряжения появляются на выводе Vout (11-й вывод DA1) в зависимости от того, подключён ли конденсатор CAV (CAV и CAV1) между выводами VOUT и CAV (10-й вывод) или нет. А подключением этих конденсаторов управляет коммутатор RS2103 (DA2) в зависимости от сигнала C, подаваемого на его вывод In (1-й вывод DA2) с МК. Конденсатор C3 ёмкостью около 8 пФ (рекомендуемый производителем для блокировки ВЧ составляющей выходного сигнала) постоянно подключён между 11-м и 10-м выводами DA2. Подстроечный резистор R1 совместно с R2 предназначен для подстройки нуля выходного сигнала DA1. Резистор R3, подключённый одним концом к напряжению питания (+3 В), а другим – ко входу разрешения CS (5-й вывод DA1), постоянно разрешает работу DA1. Подстроечный резистор R4 предназначен для регулировки коэффициента усиления DA1 (около 1). Конденсаторы C1 и C2 – блокировочные. Конденсатор C4, подключённый ко входу питания DA2 (2-й вывод), также блокировочный.
Входной сигнал подключается к прибору с помощью разъёма XВХ (гнездо RCA) – см. пунктирный прямоугольник, обозначенный как «Вход RCA» в середине правой части схемы. К этому разъёму одним концом подключён кабель, на втором конце которого расположен разъём SIP-02 (XUвх’), который подключается к штыревому разъёму PSLM-02 (XUвх), расположенному на плате. К этому разъёму подключён делитель напряжения R1d–R4d, который определяет диапазон подключаемых напряжений (0,2 В, 1 В, 10 В и 20 В). Эти 4 сигнала, «земля» и сигнал Vin подключены к штыревому разъёму PSLM-06 (XDV). К этому разъёму подключён кабель, на одном конце которого расположен ответный разъём SIP-06 (XDV’) в пунктирном прямоугольнике с надписью «Переключатель диапазонов», а провода второго его конца непосредственно припаяны к одному направлению переключателя диапазонов RS1010 24 (4 положения, 2 направления) – ПД1. Ко второму направлению этого переключателя припаяны провода с сигналами DIAP0, DIAP1, DIAP2 и «земля» (GND) одного конца кабеля, на втором конце которого расположен гнездовой разъём XDIAP’, который подключён к штыревому разъёму XDIAP, расположенному на плате. Сигналы DIAP0, DIAP1 и DIAP2 подключены к соответствующим выводам МК (18-й, 17-й и 16-й выводы MK EFM8LB12F32-QFN24 (DD1)). Эти сигналы служат для того, чтобы МК определял, какой из диапазонов выбран. Когда сигнал DIAP0 подключён к «земле», т.е. DIAP0 = 0, сигнал Vin подключается к сигналу 0,2 В, отмеченному на делителе R1d–R4d. При DIAP1 = 0 к Vin подключается сигнал 1 В, при DIAP2 = 0 к Vin подключается сигнал 10 В. Если все сигналы (DIAP0, DIAP1 и DIAP2) отключены, т.е. находятся в состоянии «лог. 1» на МК (благодаря слаботоковым подтяжкам к питанию), Vin подключается к сигналу 20 В. Номиналы резисторов делителя выбраны так, что на любом диапазоне (0,2 В, 1 В, 10 В и 20 В) при подключении ко входу сигнала с действующим значением напряжения, равным максимальному напряжению диапазона, напряжение Vin будет составлять 0,2 В. Вот пример. Пусть на диапазоне 10 В действующее значение напряжения на входе (UВХ) будет 10 В. Тогда в точке «10 В» напряжение составит: U10В = [10 В × (R3d + R4d)] / (R1d + R2d + + R3d + R4d) = [(10 В × (0,15К + 0,15К)]/(12К + 2,7К + 0,15К + 0,15К) = (10 В × × 3К)/15К = 0,2 В.
Сигнал Vin (с разъёма XDV) подключён к одному из входов сдвоенного ОУ OPA1642 (3-й вывод DA5.1) через резистор R3m. ОУ DA5.1 представляет собой неинвертирующий ОУ с коэффициентом усиления K, равным: K = R2m/R1m + 1 = 20К/5К + 1 = 5. Для баланса токов на входе ОУ резистор R3m должен быть равен: R3m = R2m || R1m = = 4 К, поэтому номинал этого резистора выбран равным 4,02К (из 1%-го ряда E96). Кроме того, этот резистор ещё выполняет роль защиты ОУ от высокого входного напряжения (если, не дай бог, при установке диапазона на 0,2 В на вход ОУ будет подан сигнал с амплитудой 20 В или более, чего автор категорически не советует делать).
Выходной сигнал ОУ DA5.1 (VinOPA) подключён ко входу Vin DA1 (15-й вывод). Второй ОУ (DA5.2) инвертирует и поднимает сигнал VinOPA на 1,5 В, т.е. с его выхода поступает сигнал VinOPA+1,5 В. В этом участвуют резисторы R4m и R5m (поднимают сигнал на 1,5 В вверх), а также резисторы R6m и R7m (инвертируют сигнал с коэффициентом усиления, равным –1). С выхода DA5.2 сигнал поступает на неинвертирующий вход компаратора, построенного на ОУ TPAD8605 (DA6). А его инвертирующий вход подключён к делителю R8m–R9m, который подключён к напряжению питания (+3 В) и делит его пополам (т.е. до +1,5 В). В результате, если входное напряжение компаратора превышает 1,5 В, его выходное напряжение становится почти равным напряжению питания (+3 В), в противном случае оно составляет почти 0 («земля»). Таким образом, входной синусоидальный сигнал преобразуется в прямоугольный меандр. Это требуется для измерения частоты с помощью МК (см. далее). Выходной сигнал компаратора (F) подключается к двум входам МК DD1 (19-й и 7-й выводы). Конденсаторы C2m, C3m и C5m – блокировочные, C4m устраняет ВЧ-составляющую выходного сигнала.
Сигнал Vout с выхода DA1 (11-й вывод) подключается к неинвертирующему входу ОУ OPA735 (DA4) через резистор R4a. Этот ОУ включён по схеме неинвертирующего усилителя с коэффициентом усиления, равным KU = R2a/R1a +1 = 10К/10К + 1 = 2. Для сохранения баланса токов на входах ОУ резистор R4a должен быть равен: R4a = R1A||R2a = 10 К || 10 К = 5 К. Помимо усиления входного сигнала в 2 раза, ОУ выполняет ещё роль своеобразного интегратора (или ФНЧ) с помощью конденсатора C2a, включённого в ОС ОУ. Такой интегратор требуется, чтобы существенно снизить пульсации напряжения при измерении средневыпрямленного значения напряжения (при измерении действующего значения напряжения. К выходу DA1 подключаются конденсаторы CAV и CAV1, которые исключают подобную пульсацию выходного напряжения DA1). С выхода ОУ DA4 через RC-цепочку R3a–C4a сигнал ADCinA поступает на первый вход АЦП МК (ADC0.1) и одновременно на тестовый разъём PLL-02 (XTST), к которому ответным разъёмом может подключаться кабель, который своей второй стороной может быть подключён к цифровому тестеру. Это требуется, например, для установки нуля выходного сигнала ADCinA и вообще для сравнения показания прибора с измеренным значением тестера (см. далее). Таким образом, учитывая, что коэффициенты усиления ОУ DA5.1 и DA4, а также встроенного в DA1 ОУ равны соответственно 5, 2 и 1, получаем, что общий коэффициент усиления сигнала схемы составляет 5 × 2 × 1 = 10. Если, например, на диапазоне 0,2 В действующее значение напряжения будет 0,2 В, то входное напряжение на входе ADCinA МК будет составлять 2 В. Максимальное значение напряжения, подаваемого на вход ADCinA, составляет 2,2 В (см. далее), так что АЦП МК будет работать в стандартном режиме и с максимальным разрешением. Конденсаторы C1a и C3a, подключённые к напряжениям питания DA4, – блокировочные.
Для запуска и остановки процесса измерений в приборе предусмотрена кнопка с фиксацией DS612 (КН1 – в верхнем правом пунктирном прямоугольнике схемы), при нажатии (и отпускании) на которую начинается процесс измерений и вывод показаний на экран дисплея, а при следующем нажатии (и отпускании) кнопки процесс измерений останавливается (например, для переключения диапазонов измерения и в некоторых других случаях). К этой кнопке одним концом припаян кабель, на втором конце которого установлен гнездовой разъём SIP-02 (XKN’), подключаемый к штыревому разъёму PSLM-02 (XKN), расположенному на плате. С этого разъёма сигнал от кнопки (КН1) подключается к микросхеме MAX6816 (DA3), являющейся антидребезговой схемой, которая подавляет дребезг контактов кнопки (Debounc), а сама микросхема называется «Debouncer». С выхода DA3 сигнал K1, очищенный от дребезга, подключается МК (20-й вывод DD1) для анализа. Конденсатор C1kn – блокировочный.
1,3″ TTF-дисплей с IPS-матрицей и разрешением 240×240 пикселей сопрягается с МК по интерфейсу SPI на скорости 36 Мбод. Сигналы SPI (SCK и MOSI), управляющие сигналы (RES, D/C и BLK), питание +3 В (Vcc) и «земля» (GND) подключаются к гнездовому разъёму PSLF-07 (XT – в пунктирном прямоугольнике схемы с надписью 1,3″ TTF) платы дисплея. Этот разъём подключается к ответному штыревому разъёму платы PLS-07 (XTK на схеме), с которого соответствующие сигналы подключаются к МК. Конденсатор C1d – блокировочный. Поскольку плата дисплея жёстко закреплена на внутренней поверхности корпуса прибора (см. далее), фактически плата прибора одной своей стороной вставляется с натягом своим разъёмом XTK в разъём XT платы дисплея и достаточно надёжно держится на нём. Противоположная сторона платы прибора приклеена к плате дисплея с помощью двух квадратных пластиковых пластин размером 6×6×3 мм, к которым с двух сторон приклеена пористая лента с двусторонним липким слоем.
Для программирования МК по интерфейсу C2 используется штыревой разъём PLL-03 (XB), к которому ответным разъёмом подключается кабель, соединённый с USBDEBUG-адаптером, который, в свою очередь, подключается к интерфейсу USB компьютера. На разъём XB выведены сигналы интерфейса C2 – RST/C2CK, C2D и «земля», которые подключаются к выводам МК (5-й, 6-й выводы DD1). RC-цепочка R1k–R2k–C1k одним концом подключается к напряжению питания (+3 В), а вторым – к 5-му выводу МК (сигнал RST/C2CK). Это требуется для стандартного запуска МК при включении питания (PowerOnReset – POR). Конденсатор C2k – блокировочный.
Питается прибор от аккумулятора 6LF22 (BAT1) форм-фактора «крона» напряжением 9 В и ёмкостью 650 мА∙ч (см. нижний правый пунктирный прямоугольник на схеме). К аккумулятору подключаются клеммы KLS5-BC9V-01 (KL1, KL2), предназначенные для этого аккумулятора. Включение питания осуществляется двухканальным и двухпозиционным выключателем SMTS-202 (П1, П2), к которому одним концом припаян кабель, на втором конце которого установлен гнездовой разъём XП’, который, в свою очередь, подключается к штыревому разъёму PSLM-02 (XП), расположенному на плате. Для получения двуполярного питания +3 В…–3 В (оно требуется для работы прибора) используется регулируемый стабилизатор LM317L (DA7) и резистивный делитель напряжения R2p–R1p, номиналы которых подобраны так, чтобы выходное напряжение стабилизатора составляло 6 В. Конденсаторы C1p–C3p – блокировочные. Далее с помощью схемы формирователя искусственной земли (или преобразователя однополярного напряжения в двуполярное), построенного на базе ОУ AD8531 (DA8), резисторов R3p–R6p и RC-цепочки R7p–C4p напряжение 6 В преобразуется в +3 В, искусственную «землю» (перевёрнутая «ёлочка») и –3 В. Максимальный ток ОУ AD8531 составляет 250 мА, что в 5 раз больше тока, потребляемого прибором (около 50 мА). Таким образом, максимальное время непрерывной работы прибора от аккумулятора составляет: 650 мА∙ч / 50 мА = 13 часов. Но аккумулятор требуется подзаряжать в зависимости от степени его разрядки. А для определения степени разрядки аккумулятора используется делитель напряжения R8p–R9p и стандартная RC-цепочка R10p–R6p, которая используется для подключения измеряемого напряжения к АЦП МК – сигнал ADCinB, который подключается к ADC0.2 (22-й вывод DD1). Номиналы резисторов подобраны таким образом, чтобы при максимальном напряжении аккумулятора (около 9,4 В) напряжение с делителя не превышало 2,2 В. Это напряжение разбито на три части, и в зависимости от его значения на экран дисплея выводится рисунок аккумулятора с 3 сегментами. Если горят все 3 сегмента, то аккумулятор полностью заряжен, если не горит ни один сегмент, то аккумулятор разряжен и нуждается в подзарядке. Пороги этих трёх напряжений будут описаны далее в программных средствах.
Выводные конденсаторы C1н–C5н – блокировочные, кроме того, их выводы припаяны с двух сторон платы к соответствующим контактным площадкам. То есть они выполняют роль металлизации отверстий, которая в домашних условиях весьма проблематична и поэтому исключена (рис. 1).

Разводка и внешний вид платы прибора
Разводка платы прибора (рис. 2, рис. 3) сделана автором с помощью программы SprintLayOut 6.0.


Файл разводки в формате *.lay6 приведён в дополнительных материалах к статье на сайте журнала. На рис. 2а чёрными кружками отмечены контактные площадки, в отверстия которых необходимо вставить медный лужёный провод и пропаять его с двух сторон платы, чтобы не делать металлизацию отверстий (см. выше). Кроме того, выводы всех разъёмов, микросхемы стабилизатора и выводных конденсаторов необходимо пропаять с двух сторон платы. Плата сделана на стеклотекстолитовой пластине толщиной 1,5 мм с двусторонним медным покрытием размером 42×30 мм (рис. 4).

Конструкция прибора
Прибор расположен в пластиковом корпусе AK-S-38 размером 92×58×31 мм (рис. 5, рис. 6).


Плата дисплея с укреплённой на ней платой прибора приклеена к внутренней стороне корпуса каплями термоклея (рис. 5а). Для дисплея в корпусе прорезано прямоугольное окно по размерам видимой части экрана дисплея (рис. 6). Кнопка вставлена с натягом в прямоугольное окно, прорезанное на лицевой стенке прибора. Переключатель диапазонов укреплён на лицевой стенке прибора через отверстие и зажат гайкой. На лицевой поверхности корпуса на шток переключателя надета и укреплена винтом ручка, с помощью которой осуществляется выбор диапазонов измерений (рис. 6). Хотя на нижней металлической части ручки выгравирована метка, она плохо заметна, если на прибор смотреть несколько сбоку. Поэтому на верхней поверхности ручки маркером дополнительно нарисована точка чёрного цвета (рис. 6). Выключатель питания укреплён на лицевой стенке прибора через отверстие и зажат гайкой. Разъём RCA укреплён на передней боковой стенке прибора через отверстие и зажат гайкой. Аккумулятор укреплён в нижней части прибора рядом со стенкой, для чего к внутренней поверхности лицевой стенки прибора приклеена L-образная пластиковая пластина (рис. 5а). Чтобы корпус не скользил, к его крышке, являющейся дном прибора, приклеены самоклеящиеся резиновые ножки (рис. 5б). Кроме того, в крышке прорезано овальное окно как раз над разъёмом USB Type-C аккумулятора, чтобы его заряжать, не открывая крышку (рис. 5б). Кабели от переключателя диапазонов пропущены через экран из свитых между собой медных лужёных жил. Экран соединён с «землёй». Он сверху обмотан фторопластовой лентой, использующейся для герметизации стыков труб (ФУМ-лента). Кабель от разъёма RCA до прибора также является коаксиальным с внешним слоем изоляции из ПВХ. Экран кабеля также соединён с «землёй». Цифровые значения напряжений 4 диапазонов (0,2 В, 1 В, 10 В и 20 В) напечатаны на прозрачной пленке (зеркально), которая выдержана в атмосфере дихлорметана в течение часа (так же как и фотошаблон для изготовления печатной платы). Далее эта пленка напечатанной стороной приклеена к лицевой поверхности корпуса тонкой лентой белого цвета с двусторонним липким слоем (рис. 6). Таким образом, стереть надпись на пленке при всём желании невозможно, так как эта надпись расположена на обратной стороне прозрачной плёнки.
Программные средства
Программа в уже загрузочном формате приведена в дополнительных материалах на сайте журнала, однако для тех, кто хочет самостоятельно написать свою программу, ниже приведены некоторые её ключевые моменты.
Программирование МК проводилось в среде Simplicity Studio v.4 от компании Silicon Labs на языке Keil 8051 v9.60. Использовалась Large Memory Model, когда переменные располагаются во «внешней» памяти XDATA (рис. 7).

Вначале необходимо настроить все периферийные устройства МК, которые используются в программе. В общем меню настроек (рис. 8) галочками отмечены те периферийные устройства, которые используются.

В самом начале необходимо выбрать внутренний высокоскоростной генератор (HFOSC1) частотой 72 МГц, делитель частоты генератора, равный 1, чтобы системная тактовая частота (SYSCLK) была равна 72 МГц и скорость чтения флеш-памяти менее 75 МГц (рис. 9), иначе все дальнейшие настройки будут давать ошибки.

Самым первым устройством в меню настроек (рис. 8) является АЦП (ADC0), который необходимо настроить в соответствии с рис. 10.

Здесь необходимо обратить внимание, что АЦП разрешён (Enabled), применён 14-разрядный режим работы (14-Bit Mode), для измерения напряжения используется канал ADC0.1 (порт P0.2), аналоговая «земля» (AGND pin) подключается к порту P0.1, используется внутренний источник опорного напряжения (Internal VREF) с напряжением 1,65 В, коэффициент усиления внутреннего ОУ (Gain Control) установлен на значение 0,75, что даёт полную шкалу входных напряжений (Full Scale Voltage) 2,2 В. Делитель системной тактовой частоты установлен на 4, что даёт максимальную тактовую частоту АЦП (SARCLK Frequency) 18 МГц. Остальные параметры АЦП должны быть установлены, как на рис. 10.

Далее в меню (рис. 8) из отмеченных галочками следует настройка интерфейса SPI (рис. 11). Здесь необходимо обратить внимание (рис. 11а), что SPI разрешён (Enabled), используется 3-проводный режим Master, данные тактируются по первому фронту – фаза SPI (Clock Phase – Data Sample on First Edge), а полярность SPI (Clock Polarity – High in Idle State). Необходимо отметить, что если выбрать противоположную полярность (Clock Polarity – Low in Idle State), которая указана в справочном листке (Datasheet) на дисплей, то он работать не будет (автор не сразу это понял). Частота тактирования (скорость обмена) выбрана максимальной и составляет 36 МГц (SPI Clock Frequency (Actual) 36.000 MHz). Далее необходимо поставить галочку в поле Clock/Data, чтобы данные (SPI0_MOSI) и тактовая частота (SPI0_SCK) SPI выводились в соответствующие порты МК (рис. 11б).

Далее необходимо настроить опцию внешних прерываний (рис. 12). Хотя в программе сами прерывания не используются (они запрещены), сигнал INT0 применяется для определённого режима работы таймера T0, что требуется для измерения частоты НЧ-сигналов (см. далее). Высокий уровень сигнала INT0 (Active High, рис. 12а) установлен изначально. Вариант, когда используется низкий уровень INT0 (Active Low, рис. 12), требуется, чтобы определить значение регистра IT01CF, которое прописано в подпрограмме инициализации устройств (см. далее).

Далее необходимо настроить опции программируемого массива счётчиков (Program Counter Array – PCA) – рис. 13. Здесь необходимо обратить внимание на настройку основного счётчика/таймера PCA Counter/Timer (рис. 13а). Этот счётчик/таймер постоянно работает в режиме автоперезагрузки. При выборе выходной частоты, соответствующей SYSCLK/12, она равна 6 МГц. Прерывания по перезагрузке не требуются, поэтому они запрещены (Disable). Эта частота передаётся на все каналы PCA, в том числе на канал 0 (Channel0 – рис. 13б), который работает в режиме вывода частоты (Frequency Output). При выборе делителя (Clock Divider), равного 3, выходная частота, выводимая с его выхода PCA_CEX0, равна 1 МГц (1.000 MHz). Для того чтобы она выводилась с порта P2.1, необходимо установить галочку в поле PCA0_CEX0 (рис. 13в). Частота 1 МГц требуется для измерения низкой частоты входного сигнала (см. далее). Эта частота подаётся на вход таймера/счётчика T0.

Далее необходимо настроить опции работы таймеров/счётчиков T0/T1 (рис. 14). Здесь следует обратить внимание, что T0/T1 работают в режиме 16-разрядных счётчиков (Counter Mode). Разница заключается в том, что у T0 разрешён Gate Control (Enabled), т.е. счётчик будет считать, если на входе INT0 высокий или низкий уровень (Level-Triggered) в зависимости от полярности INT0 (рис. 12). А у T1 Gate Control запрещён (Disable), т.е. этот счётчик будет считать входные импульсы независимо от состояния INT1 (рис. 14а). Как будет описано далее, оба счётчика применяются для измерения частоты входного сигнала прибора. Инициализированные значения счётчиков – нулевые (рис. 14б). Чтобы сигнал поступал в счётчики Т0 и T1 с портов P2.2 и P2.3 соответственно, необходимо установить галочки (рис. 14в).

Далее необходимо настроить опции работы таймеров T3 и T4 (рис. 15). Эти два таймера используются для получения точного времени задержки в полсекунды. Таймер T3 постоянно работает как 16-разрядный таймер в режиме автоперезагрузки (Auto-Reload). Источником входной частоты для него служит SYSCLK/12, т.е. 6 МГц (6.000 MHz). Его выходная частота равна 100 000 Гц, т.е. 100 кГц, которая получается при его инициализированном значении 5536 (рис. 15а). Источником входной частоты для таймера T4 (рис. 15б) служит выходная частота T3 (Timer3 Overflows). При инициализированном значении T4, равном 15536, его выходная частота (Target Overflow Frequency) будет равна 2 Гц, т.е. время перезагрузки составит полсекунды. В начальном состоянии T4 не запущен (Stop). После запуска по прошествии полсекунды Т4 перезагружается, и его необходимо остановить (см. далее), в результате чего получается точная временна́я задержка в полсекунды.

Далее необходимо настроить порты МК (рис. 16). Для этого с помощью опции Skip все сигналы необходимо передвинуть так, как это установлено на рис. 16. «Сдвинутые» сигналы на корпусе МК обозначены красными крестиками. Порты P0.1, P0.2 и P0.3 необходимо настроить как аналоговые входы (Analog I/O), как, например, на рис. 17а.

Порты P0.5, P1.4, P1.5, P1.6, P2.0 и P2.1 необходимо настроить как цифровые выходы (Digital Push-Pull Output), как, например, на рис. 17б. Остальные порты P0.0, P0.3, P0.6, P0.7, P1.0, P1.1, P1.2, P1.3, P2.2 и P2.3 необходимо настроить как цифровые входы (Digital OpenDrain I/O), как, например, на рис. 17в. Такая настройка портов соответствует схеме МК на рис. 1 и укрупнённому виду МК на разводке (рис. 3). Точнее, исходной точкой настройки портов является рис. 16, на основании которого получена схема МК на рис. 1 и укрупнённый вид МК на разводке рис. 3.

И последнее, что следует сделать, – разрешить матрицу соединений (рис. 18), иначе работать ничего не будет. О настройке программного обеспечения более подробно будет рассказано во второй части статьи.
Литература
- Кузьминов А. Генератор гармонических колебаний звукового диапазона на базе синтезатора частоты AD9837B, микроконтроллера EFM8SB10 и LCD Nokia-5110 с батарейным питанием // Современная электроника. 2023. № 6.
- Кузьминов А. Расширение возможностей генератора на DDS AD9837 по амплитуде выходного сигнала // Современная электроника. 2026. № 2.
- Кузьминов А. Новые усовершенствования аудиоусилителя на базе ОУ LM3886, включённого в мостовом режиме работы // Современная электроника. 2025. № 9.
© СТА-ПРЕСС, 2026
Если вам понравился материал, кликните значок — вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал —не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!