同轴电缆中电压信号相位差与延迟的关系
引言
相位差的概念
相位差,顾名思义,就是两个波之间相位差的值。

为简化概念,特指正弦波,假设有两个电压信号

则这者的相位差为

如果u1和u2的频率相同,则两者的相位差为初始相位之差。

相位差和延时的关系
在u1和u2的频率相同的情况下,其周期也是一致的,设为T,则有

变换得到

由上式看到,在恒定延时情况下,相位差Δφ正比于信号频率f。
同轴电缆中电压信号分析
假设电压信号在同轴电缆中传播速度为v,u1信号线长度为l1,u2信号线长度为l2,则两者传播的时间差为

为了对这个式子进行验证,特搭建测试环境如下

信号起始频率10Mhz,终止频率800MHz,步进2MHz
在l1 = l2 = 0.5m,测试结果如下

相位差约等于0°。
在l1 = 0.5m,l2 = 1.0m,测试结果如下

由图中可以看到,相位与频率成线性关系,斜率为2πΔt。
在192MHz和582MHz之间产生了一个360°,也就是2π的相移,算得


与实际上的电缆长度差值Δl 0.5m有一定误差。实际上可以对采集到的数据进行线性回归操作,以得到更准确的斜率。
相位图示来源:https://baike.baidu.com/item/%E7%9B%B8%E4%BD%8D%E5%B7%AE/4671188?fr=aladdin
GPIB控制代码
% TDS784D 和 CMU200 组合VNA
% 使用之前请在TDS784D示波器上设置好如下测量关系
% Measurement1 : CH1-CH2 相位
% Measurement2 : CH1 幅度
% Measurement3 : CH2 幅度
% CH1 10mV/Div
% CH2 10mV/Div
clc;clear all;close all;
%%
inslist = instrfind();
delete(inslist);
vTDS784D = visa('agilent','GPIB0::1::INSTR');
vTDS784D.InputBufferSize = 4196*200;
fopen(vTDS784D);
fprintf(vTDS784D,'*IDN?');
idn = fscanf(vTDS784D)
vCMU200 = visa('agilent','GPIB0::20::1::INSTR');
fopen(vCMU200);
fprintf(vCMU200,'*IDN?');
idn = fscanf(vCMU200)
%%
% SET CMU200
% 1.选择信号发生器模式
string = sprintf('INITiate:RFGenerator');
fprintf(vCMU200,string);
% 2.设置输出端口
string = sprintf('OUTPUT RF2');
fprintf(vCMU200,string);
% 3.设置信号发生器电平
level = -20; %dBm
string = sprintf('SOURce:RFGenerator:LEVEL %ddBm',level);
fprintf(vCMU200,string);
%%
% SET TDS784D
% 设置阻抗 50 Ohm
string = sprintf('CH1:IMPedance FIFty');
fprintf(vTDS784D,string); %CH1
string = sprintf('CH2:IMPedance FIFty');
fprintf(vTDS784D,string); %CH2
%%
% 起始频率
FREQ_START = 10; %MHz
% 终止频率
FREQ_STOP = 800; %MHz
% 步进频率
FREQ_STEP = 2; %MHz
% 分配空间
freq_list = FREQ_START : FREQ_STEP : FREQ_STOP;
N = length(freq_list);
amp_list = zeros(1,N);
pha_list = zeros(1,N);
% 平均次数
MEAN_NUM = 9;
% 测量稳定时间
MEAS_DELAY = 0.25; %Second
% 扫频
for index = 1 : 1 : N
% 设置输出频率
string = sprintf('SOURce:RFGenerator:FREQuency %dMHz',freq_list(1,index));
fprintf(vCMU200,string);
% 设置时基
tBase = 2*1/freq_list(1,index)*1E-6; %Seconds
string = sprintf('HORizontal:SECdiv %d',tBase)
fprintf(vTDS784D,string);
pause(0.8);
% 测量CH1 幅度,单位V,调用Measurement1 结果
string = sprintf('MEASU:MEAS2:VAL?');
sum = zeros(1,MEAN_NUM);
for ii = 1 : 1 : MEAN_NUM
fprintf(vTDS784D,string);
sum(1,ii) = fscanf(vTDS784D,'%f');
pause(MEAS_DELAY);
end
amp_list(1,index) = median(sum);
% 测量CH1-CH2 相位,单位 °,调用Measurement1 结果
string = sprintf('MEASU:MEAS1:VAL?');
sum = zeros(1,MEAN_NUM);
for ii = 1 : 1 : MEAN_NUM
fprintf(vTDS784D,string);
sum(1,ii) = fscanf(vTDS784D,'%f');
pause(MEAS_DELAY);
end
pha_list(1,index) = median(sum);
end
%%
% 制图
subplot(211);
plot(freq_list,amp_list);
subplot(212);
plot(freq_list,pha_list);
ylim([-200 200]);
%%
fclose(vTDS784D);
fclose(vCMU200);

浙公网安备 33010602011771号