锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Python控制仪器 【1,控制直流电源】

时间:2022-11-24 15:30:00 0电源连接器

仪器连接

计算机与仪器连接有四种方式: USB、LAN、RS232 和 GPIB接口 ,仪器和计算机之间的远程通信可以通过这些接口建立,通常使用LAN口连接。

推荐使用keysight的IO Library该软件支持各种接口通信,可检测仪器与计算机连接是否成功,连接成功后可通过visa与仪器建立地址通信。

出于隐私保护,以下代码省去了仪器visa地址。测试时应自行添加。

导入库函数

Python首先需要导入控制仪器pyvisa有关控制命令可参考pyvisa官方网站和仪器用户手册 。推荐使用编辑器Pycharm

import pyvisa as visa import time rm = visa.ResourceManager() 

以下是对两种类型电源的控制

1. 普源(RIGOL)DP800系列电源

该系列电源有List无需导入功能time循环输出电压可直接设置为函数。

代码功能

起始电压0V ,终止电压28V,电流200mA,循环输出40组,时间间隔5s 。

# ----------------------------------------------------------- # rigol 电源控制 # ----------------------------------------------------------- DCrigol = rm.open_resource("visa地址") print(DCrigol.query("*IDN?"))   # /*查询电源ID检测远程通信是否正常*/ DCrigol.write('*RST;*CLS')  # 仪器复位 # 定时输出  扫描电压0-28V 电流200mA DCrigol.write(':DELAY:GROUP 40')  # /*输出组数:40*/ DCrigol
       
        .
        write
        (
        ':DELAY:CYCLE N,20'
        ) # 
        /*设置循环数:20*/ DCrigol
        .
        write
        (
        ':DELAY:ENDS LAST '
        ) # 
        /*设置终止状态:最终状态*/ DCrigol
        .
        write
        (
        ':TIME:TEMP:SEL SINE'
        ) # 
        /*选择模板:Sine*/ DCrigol
        .
        write
        (
        ':TIME:TEMP:OBJ V, 200mA'
        ) # 
        /*选择编辑对象为电压,并将电流设置为 200A*/ DCrigol
        .
        write
        (
        ':TIME:TEMP:MAXV 28.000'
        ) # 
        /*设置最大值:28V*/ DCrigol
        .
        write
        (
        ':TIME:TEMP:MINV 0.000'
        ) #
        /*设置最小值:0V*/ DCrigol
        .
        write
        (
        ':TIME:TEMP:POINT 20'
        ) # 
        /*设置总点数:20*/ DCrigol
        .
        write
        (
        ':TIME:TEMP:INTE 5'
        ) # 
        /*设置时间间隔:5s*/ DCrigol
        .
        write
        (
        ':TIME:TEMP:INVE ON '
        ) # 
        /*打开反相*/ DCrigol
        .
        write
        (
        ':TIME:TEMP:CONST '
        ) # 
        /*构建定时参数*/ DCrigol
        .
        write
        (
        ':MEM:STOR RTF,1 '
        ) # 
        /*将已编辑的定时参数保存在内部存储器中*/ DCrigol
        .
        write
        (
        ':OUTP CH1,ON '
        ) # 
        /*打开 CH1 的输出*/ DCrigol
        .
        write
        (
        ':TIME ON'
        ) # 
        /*打开定时输出*/ 
       

2. 艾德克斯(IT6500系列)电源

首先发送一个简单的电压电流指令:

# DCIT6500.write(':APPL 2,0.1' ) # 输出电压电流
# DCIT6500.write(':OUTPut ON')

电源配有蜂鸣器,每次按键会哔哔哔哔一直响,怪烦的~~ 通过代码可以使蜂鸣器关闭。

该电源无List功能 , 且目前本人水平有限只能堆砌代码写进电压值,具体思路为:先发送一个电压值VOLT1,延时3S再发送VOLT2,依次类推~

理想方案是自定义封装一个有起始、终止、步长的循环函数再调用,老爷们期待后续更新~

代码功能

起始电压0V,终止电压5V,步进0.5V,电流500mA ,时间间隔3s。


# -----------------------------------------------------------
#  IT6500电源控制
# -----------------------------------------------------------
DCIT6500 = rm.open_resource("USB0::0xFFFF::0x6500::800530020737420002::0::INSTR")
print(DCIT6500.query("*IDN?"))
DCIT6500.write('*RST;*CLS')
DCIT6500.write('SYSTem:ERRor?')  # 读取电源的错误代码及错误讯息。
DCIT6500.write('*TST?')  # 自检,成功为0,失败则为1.
DCIT6500.write(':SYSTem:REMote')  # 远程控制
DCIT6500.write(':SYSTem:BEEPer 0')   # 关闭或打开蜂鸣器 0关闭
# 循环电压输出
DCIT6500.write(':VOLTage 0;:PROTect 30;')  # 过压过流保护
DCIT6500.write(':CURRent 500mA;:PROTect 5')
time.sleep(3)
DCIT6500.write(':VOLTage 1;:PROTect 30;')  # 过压过流保护
DCIT6500.write(':CURRent 500mA;:PROTect 5')
time.sleep(3)
DCIT6500.write(':VOLTage 1.5;:PROTect 30;')  # 过压过流保护
DCIT6500.write(':CURRent 500mA;:PROTect 5')
time.sleep(3)
DCIT6500.write(':VOLTage 2.5;:PROTect 30;')  # 过压过流保护
DCIT6500.write(':CURRent 500mA;:PROTect 5')
time.sleep(3)
DCIT6500.write(':VOLTage 3.5;:PROTect 30;')  # 过压过流保护
DCIT6500.write(':CURRent 500mA;:PROTect 5')
time.sleep(3)
.
.
.
DCIT6500.write(':OUTPut ON')

以上代码亲测有效,欢迎交流、转载、点赞~

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章