You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pymeasure程控Keithley 2450时apply_current无法正常施加电流

Keithley 2450 程控无法输出设定电流问题修复

核心问题点

  • 测量模式配置逻辑错误:Keithley 2450 同一时间仅能激活一个主测量功能,你在电流源配置完成、输出使能后连续调用keithley.measure_resistance()、keithley.measure_voltage(),会直接覆盖之前的电流源配置,将设备切换到单独测电阻/单独测电压的模式,源输出自然会被切断,无法输出设定的5mA电流。
  • 异常捕获逻辑失效:使用裸except会吞掉配置阶段所有真实报错(比如参数超范围、指令执行失败、输出锁存报错),统一抛出连接错误,完全无法定位实际故障点。
  • 缺少安全收尾逻辑:程序运行结束后不会自动将电流置0、关闭输出,存在烧坏待测器件的风险。
  • 测量参数配置缺失:电阻测量未提前指定二线/四线接线模式,读数会出现偏差甚至无法返回有效值。
  • 计时逻辑存在误差:循环判断用int(tempsreel)做截断,会丢失采集窗口最后1秒内的有效数据。

修正后可运行代码

from pymeasure.instruments.keithley import Keithley2450
import time
import openpyxl
import pyvisa

# 采集参数配置
T_ACQUISITION = 10
TARGET_CURRENT = 5e-3
CURRENT_RANGE = 10e-3
COMPLIANCE_VOLTAGE = 10
NPLC = 1  # 测量积分周期,越大读数越稳、速度越慢

rm = pyvisa.ResourceManager()
print("已识别设备列表:", rm.list_resources())

wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(["时间(s)", "电压(V)", "电阻(Ω)"])

keithley = None
data = []

try:
    keithley = Keithley2450('USB0::0x05E6::0x2450::04490659::0::INSTR')
    keithley.reset()  # 先复位设备到默认状态,清除之前的配置残留
    
    # 配置电流源模式
    keithley.apply_current()
    keithley.source_current_range = CURRENT_RANGE
    keithley.compliance_voltage = COMPLIANCE_VOLTAGE
    keithley.source_current = 0
    
    # 配置测量参数:不要调用单独的measure_*切模式,直接配置并行测量功能
    keithley.write(":SENS:FUNC:ON 'VOLT','RES'")  # 同时开启电压、电阻测量
    # 电阻测量模式:二线测用"RES",四线测用"FRES",根据实际接线修改
    keithley.write(":SENS:RES:MODE RES")
    keithley.voltage_nplc = NPLC
    keithley.resistance_nplc = NPLC
    
    keithley.enable_source()
    time.sleep(0.2)  # 等待输出电路稳定
    keithley.ramp_to_current(TARGET_CURRENT, steps=10, pause=0.05)  # 缓升电流避免冲击待测件
    time.sleep(0.3)

    # 开始定时采集
    start_time = time.time()
    while True:
        now = time.time()
        elapsed = now - start_time
        if elapsed > T_ACQUISITION:
            break
        # 同步读取测量值
        volt = keithley.voltage
        res = keithley.resistance
        data.append([elapsed, volt, res])
        print(f"采集时间: {elapsed:.2f}s, 电压: {volt:.4f}V, 电阻: {res:.2f}Ω")
        # 控制采集间隔,可按需调整
        time.sleep(0.1)

except Exception as e:
    print(f"程序运行出错: {str(e)}")
finally:
    # 安全收尾:不管程序正常/异常退出,都将电流降到0、关闭输出
    if keithley is not None:
        keithley.ramp_to_current(0, steps=5, pause=0.05)
        keithley.disable_source()
        keithley.shutdown()
    # 保存采集数据
    for row in data:
        sheet.append(row)
    wb.save('Data_sourcemetre.xlsx')
    print('数据已保存到Data_sourcemetre.xlsx')

调试注意事项

  • 如果用四线法测低阻,把代码里的:SENS:RES:MODE RES改成:SENS:RES:MODE FRES即可,同时确保设备端接线符合四线制要求。
  • NPLC参数可按需调整:追求高速采集就设到0.1甚至更小,追求高精度读数就设到5或10。
  • 如果仍有异常,可暂时跳过pymeasure的封装方法,直接用keithley.write()/keithley.ask()发送原生SCPI指令调试,可直接读取设备返回的具体报错码定位问题。

内容的提问来源于stack exchange,提问作者Fake47

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:57:14