资讯中心

联系我们

深圳市维立信电子科技有限公司
地址:深圳市福田区红荔路第一世界广场A座8D-E
咨询电话:0755-83766766
E-mail:info@welissom.com

如何通过实验测量双向直流电源输出电压序列的抖动频谱分布?

2026-01-08 11:45:41  点击:

要通过实验测量双向直流电源输出电压序列的抖动频谱分布,需结合高精度数据采集、频域转换频谱分析技术。以下是分步骤的详细方案,涵盖硬件配置、SCPI指令控制、数据处理及结果验证:


一、实验准备

1. 硬件配置

  • 双向直流电源:支持SCPI指令控制,具备高精度电压输出和快速响应能力(如Keysight N6700系列、Chroma 62000P系列)。
  • 数据采集设备
    • 内置ADC的电源:若电源自带高采样率ADC(如1MS/s以上),可直接通过SCPI读取内部缓冲区数据。
    • 外部示波器/数据采集卡:若电源采样率不足,需连接示波器(如R&S RTO1000)或高速数据采集卡(如NI PXIe-6368),通过SCPI或编程接口获取数据。
  • 触发同步设备:确保电源输出与数据采集同步(如外部触发信号或共享时钟)。
  • 负载:根据测试需求选择电阻、电子负载或动态负载(模拟实际应用场景)。

2. 软件工具

  • SCPI控制工具:Python(PyVISA)、LabVIEW、MATLAB或厂商提供的上位机软件。
  • 频谱分析工具:Python(NumPy/SciPy)、MATLAB或专用软件(如R&S VSA)。

二、实验步骤

步骤1:配置电源输出参数

通过SCPI指令设置电源输出电压、电流限制及动态特性(如上升/下降时间),以模拟实际工况。

scpiSOUR:VOLT 48.0       ; 设置输出电压为48VSOUR:CURR:MAX 10.0   ; 设置电流限制为10A
SOUR:VOLT:TRAN:RIS 10u ; 设置电压上升时间为10μs(模拟动态负载)
SOUR:VOLT:TRAN:FALL 10u ; 设置电压下降时间为10μs

步骤2:配置数据采集参数

根据抖动频率范围选择采样率和采样点数,确保满足奈奎斯特定理(采样率 ≥ 2×最高关注频率)。

方案A:使用电源内置ADC(若支持)
scpiSENS:VOLT:DC:NPLC 0.01      ; 设置积分时间为0.01NPLC(提高采样率)TRAC:POIN 100000            ; 设置采样点数为100,000
TRIG:SOUR IMM               ; 立即触发采样
INIT:IMM                     ; 初始化并开始采样
*OPC?                        ; 查询操作完成(等待返回"1")
方案B:使用外部示波器/数据采集卡
  • 通过SCPI控制示波器(以R&S RTO为例):
    scpiACQ:MODE RTIM             ; 设置实时采样模式ACQ:SRAT 5MS              ; 设置采样率为5MS/s(示例值)
    ACQ:POIN 100000           ; 设置采样点数为100,000
    TRIG:A:SOUR EXT            ; 设置外部触发(与电源同步)
    TRIG:A:SLOP POS            ; 设置上升沿触发
    INIT:IMM                   ; 启动采集
    *OPC?                      ; 等待采集完成
    TRAC:DATA? TRAC1          ; 读取Trace1数据
  • 通过Python控制数据采集卡(以NI PXIe-6368为例):
    pythonimport nidaqmxfrom nidaqmx.constants import AcquisitionType, Edgewith nidaqmx.Task() as task:    task.ai_channels.add_ai_voltage_chan("Dev1/ai0")  # 添加通道    task.timing.cfg_samp_clk_timing(        rate=5e6,  # 采样率5MS/s        samps_per_chan=100000,  # 采样点数        sample_mode=AcquisitionType.FINITE    )    task.triggers.start_trigger.cfg_dig_edge_start_trig(        trigger_source="Dev1/PFI0",  # 外部触发引脚        trigger_edge=Edge.RISING    )    data = task.read(number_of_samples_per_channel=100000)

步骤3:读取电压序列数据

  • 电源内置ADC
    pythonimport pyvisarm = pyvisa.ResourceManager()device = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")data_str = device.query("TRAC:DATA?")voltage_list = [float(x) for x in data_str.strip('"').split(',')]
  • 外部设备:直接保存示波器或数据采集卡的数据为CSV文件,再用Python读取:
    pythonimport pandas as pddata = pd.read_csv("voltage_data.csv", header=None)voltage_list = data[0].tolist()

步骤4:计算频谱分布

对电压序列进行快速傅里叶变换(FFT),提取频域成分。

pythonimport numpy as npimport matplotlib.pyplot as plt# 参数设置sampling_rate = 5e6  # 采样率(Hz)n = len(voltage_list)fft_result = np.fft.fft(voltage_list)frequencies = np.fft.fftfreq(n, d=1/sampling_rate)# 取正频率部分positive_freq = frequencies[:n//2]positive_amp = np.abs(fft_result[:n//2]) / n  # 归一化幅值# 绘制频谱图plt.figure(figsize=(12, 6))plt.plot(positive_freq, 20*np.log10(positive_amp))  # 转换为dB单位plt.title("Voltage Jitter Spectrum")plt.xlabel("Frequency (Hz)")plt.ylabel("Amplitude (dB)")plt.grid(True)plt.xlim(0, 1e6)  # 限制频率范围(示例:0~1MHz)plt.show()

步骤5:分析关键指标

  • 基频与谐波:识别电源开关频率(如100kHz)及其谐波(200kHz、300kHz等)。
  • 噪声底:观察低频段(如<1kHz)的噪声水平,评估电源稳定性。
  • 峰值频率:找出幅值最高的频率成分,判断是否为设计预期(如开关噪声或干扰)。

三、优化与验证

1. 提高频谱分辨率

  • 增加采样点数:延长采集时间(如从100,000点增加到1,000,000点)。
  • 加窗函数:减少频谱泄漏(如汉宁窗):
    pythonwindow = np.hanning(n)fft_result = np.fft.fft(voltage_list * window)

2. 验证实验结果

  • 重复性测试:多次采集数据,确认频谱分布一致性。
  • 对比标准源:使用函数发生器生成已知频率的电压信号,验证分析逻辑正确性。
  • 隔离干扰:屏蔽实验环境,排除外部电磁干扰(如Wi-Fi、手机信号)。

3. 关联抖动与时域特性

  • 绘制时域波形:观察抖动是否与电源动态响应(如负载阶跃)相关。
    pythonplt.figure(figsize=(12, 4))plt.plot(voltage_list[:1000])  # 绘制前1000个点plt.title("Time Domain Voltage Sequence")plt.xlabel("Sample Index")plt.ylabel("Voltage (V)")plt.show()

四、完整Python示例

pythonimport numpy as npimport matplotlib.pyplot as pltimport pyvisa# 1. 连接设备并采集数据rm = pyvisa.ResourceManager()device = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")device.write("SENS:VOLT:DC:NPLC 0.01")device.write("TRAC:POIN 100000")device.write("TRIG:SOUR IMM")device.write("INIT:IMM")device.query("*OPC?")data_str = device.query("TRAC:DATA?")voltage_list = [float(x) for x in data_str.strip('"').split(',')]# 2. 频谱分析sampling_rate = 5e6  # 假设采样率为5MS/sn = len(voltage_list)fft_result = np.fft.fft(voltage_list)frequencies = np.fft.fftfreq(n, d=1/sampling_rate)positive_freq = frequencies[:n//2]positive_amp = np.abs(fft_result[:n//2]) / n# 3. 绘制结果plt.figure(figsize=(12, 8))plt.subplot(2, 1, 1)plt.plot(voltage_list[:1000])plt.title("Time Domain Voltage Sequence")plt.xlabel("Sample Index")plt.ylabel("Voltage (V)")plt.subplot(2, 1, 2)plt.plot(positive_freq, 20*np.log10(positive_amp))plt.title("Voltage Jitter Spectrum")plt.xlabel("Frequency (Hz)")plt.ylabel("Amplitude (dB)")plt.grid(True)plt.xlim(0, 1e6)plt.tight_layout()plt.show()# 4. 关闭连接device.close()

五、注意事项

  1. 采样率选择:根据电源开关频率(如100kHz)选择至少2倍的采样率(如500kHz以上)。
  2. 数据长度:确保采样时间覆盖多个开关周期(如1ms数据对应10个100kHz周期)。
  3. 接地与屏蔽:减少共模噪声干扰,使用同轴电缆或差分探头。
  4. 电源稳定性:在恒压/恒流模式下分别测试,对比结果差异。

通过上述方法,可准确测量双向直流电源输出电压的抖动频谱分布,为电源设计优化和性能评估提供关键数据。