资讯中心

联系我们

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

如何通过SCPI指令设置双向直流电源序列输出参数的分辨率?

2026-01-16 10:02:19  点击:

  要通过SCPI指令设置双向直流电源序列输出参数的分辨率,需结合设备支持的分辨率控制机制(如电压/电流分辨率、量程选择或数字滤波设置)。以下是具体方法和示例:

  一、核心思路

  分辨率的本质:分辨率指电源输出参数(电压/电流)的最小可调步长,通常由设备硬件和量程决定。例如,10V量程下分辨率可能为1mV,而100V量程下可能为10mV。

  控制方式:

  直接设置分辨率:部分设备支持通过指令直接指定分辨率(如VOLT:RES或CURR:RES)。

  间接控制分辨率:通过选择量程(VOLT:RANG或CURR:RANG)或启用数字滤波(FILT:DIG)优化分辨率。

  二、具体指令与示例

  1. 直接设置分辨率(若设备支持)

  指令格式:

  plaintext

  SOURce:VOLTage:RESolution; 设置电压分辨率(单位:V)

  SOURce:CURRent:RESolution; 设置电流分辨率(单位:A)

  示例:

  python

  ser.write(b'SOUR:VOLT:RES 0.001n') # 设置电压分辨率为1mV

  ser.write(b'SOUR:CURR:RES 0.0001n') # 设置电流分辨率为0.1mA

  2. 通过量程选择间接控制分辨率

  指令格式:

  plaintext

  SOURce:VOLTage:RANGe; 设置电压量程(自动匹配分辨率)

  SOURce:CURRent:RANGe; 设置电流量程(自动匹配分辨率)

  示例:

  python

  ser.write(b'SOUR:VOLT:RANG 10n') # 选择10V量程(高分辨率模式)

  ser.write(b'SOUR:CURR:RANG 1n') # 选择1A量程(高分辨率模式)

  3. 启用数字滤波优化分辨率

  指令格式:

  plaintext

  SENSe:VOLTage:FILTer:DIGital; 启用/禁用电压数字滤波

  SENSe:CURRent:FILTer:DIGital; 启用/禁用电流数字滤波

  示例:

  python

  ser.write(b'SENS:VOLT:FILT:DIG 1n') # 启用电压数字滤波(降低噪声,提高有效分辨率)

  ser.write(b'SENS:CURR:FILT:DIG 1n') # 启用电流数字滤波

  三、验证分辨率设置

  查询当前分辨率(若设备支持):

  plaintext

  SOURce:VOLTage:RESolution? ; 查询电压分辨率

  SOURce:CURRent:RESolution? ; 查询电流分辨率

  示例:

  python

  ser.write(b'SOUR:VOLT:RES?n')

  resolution = float(ser.readline().decode().strip())

  print(f"Current voltage resolution: {resolution} V")

  四、注意事项

  设备差异:不同厂商的指令可能不同(如Keysight用SOUR:VOLT:RES,ITECH可能用VOLT:RES),需参考具体手册。

  量程优先:若设备不支持直接设置分辨率,优先选择最小量程以获得最高分辨率。

  分辨率与精度:分辨率高不代表精度高,需结合设备校准和噪声水平综合评估。

  序列模式:在序列编程模式下(如PROG:ADV或PROG:LIST),分辨率设置可能需在序列配置阶段完成。

  五、完整示例(Python + 串口)

  python

  import serial

  import time

  ser = serial.Serial('COM3', 9600. timeout=1) # 根据实际端口修改

  def set_resolution():

  # 设置电压分辨率为1mV,电流量程为1A(自动匹配高分辨率)

  ser.write(b'SOUR:VOLT:RES 0.001n')

  ser.write(b'SOUR:CURR:RANG 1n')

  ser.write(b'SENS:VOLT:FILT:DIG 1n') # 启用电压滤波

  # 验证设置

  ser.write(b'SOUR:VOLT:RES?n')

  volt_res = float(ser.readline().decode().strip())

  print(f"Voltage resolution set to: {volt_res} V")

  ser.write(b'SOUR:CURR:RANG?n')

  curr_rang = float(ser.readline().decode().strip())

  print(f"Current range set to: {curr_rang} A")

  set_resolution()

  ser.close()