Измерение TDH

Искажения сигнала при его усилении могут быть оценены путём анализа спектра выходного сигнала. Для оценки искажений по спектру усиленного сигнала нужен (помимо генератора сигнала) цифровой осциллограф с возможностью записи оцифрованного сигнала в файл. Для проведения расчётов нужна программа, которая умеет делать дискретное преобразование Фурье. Все приведённые здесь расчёты сделаны в программе FreeMat. Основное внимание в тексте уделено процессу числовой обработки спектра.

Для получения исходных данных для вычисления спектра сигнала нужно записать оцифрованный сигнал с АЦП осциллографа в файл. Разные программы, которые работают с осциллографами, обеспечивают разные возможности по записи сигналов.

Две из опробованных мною программ – штатная программа осциллографа, и другая, свободная (open-source) – обеспечивают запись последовательностей с АЦП длинной 130048, и 8192 сэмплов, соответственно. Пояснять как делается запись сигнала в программах, думаю, нет особой надобности, эта простая операция, поясню как производится само измерение сигнала, для записи.

Первое, что нужно сделать – собрать измерительную схему: генератор + усилитель + один канал осциллографа подключен на вход усилителя (для наблюдения – что там входит на вход усилителя), другой – на выход. Выставляем нужную частоту входного сигнала (синус), регулятором громкости усилителя выставляем нужный уровень выходного сигнала, записываем данные в файл. Запоминаем (или записываем) частоту дискретизации АЦП осциллографа. Для вычисления коэффициента искажений частота нам не нужна, нужны только магнитуды (размах) гармонических составляющих с выходного сигнала. Частота нам понадобится, если мы захотим посмотреть спектры сигналов в графическом виде.

Запускаем FreeMat. Допустим, у нас есть файл оцифровки выходного сигнала. Загрузка данных будет выглядеть так:

–> s2=csvread(‘1khz-sin-1mhz-2.csv’); % выходной сигнал

Используя имеющийся комплект функций (приложен к статье) мы можем сразу же вычислить коэффициент гармоник выходного сигнала (КГИ):

–> [kh,v2]=spectraTHDf(s2,20) % считаем 20 гармоник, включая основную частоту

% основная частота = 1kHz, 20-ю гармониками перекрываем% весь звуковой частотный диапазон

kh = 0,0407 % ~ 4 %
v2 = 1,0e+04 *

здесь:
kh – коэффициент гармоник выходного сигнала
v2 – магнитуды гармоник для s2

Columns 1 to 11

3,5096
0,1063
0,0577
0,0426
0,0313
0,0296
0,0216
0,0179
0,0159
0,0165

0,0112

Columns 12 to 20

0,0112
0,0090
0,0096
0,0094
0,0089
0,0085
0,0080
0,0072

0,0017

КНИ может быть получен из величины kh (THD) посредством простой формулы, приведённой в Википедии. График спектра выходного сигнала может быть получен следующим образом:

–> [f,t]=spectra(s2,1e6); % частота дискретизации = 1 МГц
–> plot(t(1:2500),log10(f(1:2500))) % берём первые 25 кГц

Алгоритм вычисления коэффициента гармоник использует БПФ для вычисления спектра. В полученном спектре процедура находит базовую частоту (по максимальной магнитуде), а также указанное количество гармонических частот, по локальным максимумам магнитуд. Магнитуды гармоник возводятся в квадрат, суммируются, затем из полученной суммы извлекается квадратный корень, значение которого делится на магнитуду первой гармоники – полученное значение и будет величиной THD.

Описание пакета функций обработки сигналов:

function [m,mi] = find_max(S,i1,i2)
Поиск максимального значение S(i) в диапазоне индексов от i1 до i2
Возвращает найденное максимальное значение m, и его индекс mi

function v = max_harms(S,n)
Поиск максимумов магнитуд гармоник в векторе S, количеством не более n.
Возвращает вектор магнитуд гармоник.

function [t,v] = THDf(F,n)
Вычисление величины THD по частотному спектру F, изпользуя не более n магнитуд гармоник
Возвращает величину коэффициента и вектор магнитуд гармоник.

function [t,v] = spectraTHDf(S,N)
Вычисление величины THD по частотному спектру сигнала S, используя не более N магнитуд гармоник
Возвращает величину коэффициента и вектор магнитуд гармоник.

function [P,frq] = spectra(S,Sfreq)
Вычисляет спектр P сигнала S и вектор частот, соответствующих спектру.

Автор: Андрей Гусев

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *