同軸電纜中電壓信號相位差與延遲的關系


引言

相位差的概念

相位差,顧名思義,就是兩個波之間相位差的值。

 

為簡化概念,特指正弦波,假設有兩個電壓信號

則這者的相位差為

如果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);

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM