-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlab_equipment.py
138 lines (111 loc) · 3.92 KB
/
lab_equipment.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# -*- coding: utf-8 -*-
import pyvisa as visa
import numpy as np
import time
# E-Load
class BK8600:
# Initialize to the bay's BK8600 address through USB
def __init__(self, resource_id='USB0::0xFFFF::0x8800::602197010707510034::0::INSTR'):
rm = visa.ResourceManager()
self.inst = rm.open_resource(resource_id)
print("Connected to %s\n" % self.inst.query("*IDN?"))
self.inst.write("*RST")
# To Set E-Load in Amps
def set_current(self, current_setpoint_A):
self.inst.write("CURR:LEV %s" % current_setpoint_A)
self.inst.query("*OPC?")
self.inst.write("INPut ON")
def toggle_eload(self, state):
if state:
self.inst.write("INPut ON")
else:
self.inst.write("INPut OFF")
def measure_voltage(self):
return float(self.inst.query("MEAS:VOLT:DC?"))
def measure_current(self):
return float(self.inst.query("MEAS:CURR:DC?"))
class DMM_34410A:
def __init__(self, resource_id = 'USB0::0x0957::0x0607::MY47018348::0::INSTR'):
rm = visa.ResourceManager()
self.inst = rm.open_resource(resource_id)
print("Connected to %s\n" % self.inst.query("*IDN?"))
self.inst.write("*RST")
def measure_voltage(self):
return float(self.inst.query("MEASure:VOLTage?"))
def measure_current(self):
return float(self.inst.query("MEASure:CURRent?"))
class E3631A:
def __init__(self, resource_id = 'ASRL15::INSTR', reset_on_connect=True):
rm = visa.ResourceManager()
self.inst = rm.open_resource(resource_id, query_delay=0.5)
self.inst.baud_rate = 9600
# print("Connected to %s\n" % self.inst.query("*IDN?"))
self.inst.write("SYSTem:REMote")
time.sleep(0.1)
if reset_on_connect:
self.inst.write("*RST")
def measure_voltage(self, output="P25V"):
time.sleep(0.75)
self.inst.write(":MEASure:VOLTage:DC? %s" % output)
time.sleep(0.3)
self.inst.write("*OPC")
return float(self.inst.read())
def measure_current(self, output="P25V"):
time.sleep(0.75)
self.inst.write(":MEASure:CURRent:DC? %s" % output)
time.sleep(0.3)
self.inst.write("*OPC")
return float(self.inst.read())
#return self.inst.query(":MEASure:VOLTage:DC? P25V")
def set_output(self, output = "P25V", voltage = 0, current = 0):
query = "APPL %s, %s, %s" % (output, voltage, current)
self.inst.write(("APPL %s, %s, %s") % (output, voltage, current))
def output_on(self):
self.inst.write("OUTP ON")
def output_off(self):
self.inst.write("OUTP OFF")
def close(self):
self.inst.write("SYSTem:LOCal")
class N8740A:
def __init__(self, resource_id = ''):
rm = visa.ResourceManager()
self.inst = rm.open_resource(resource_id)
print("Connected to %s\n" % self.inst.query("*IDN?"))
self.inst.write("*RST")
def measure_voltage(self):
return float(self.inst.query(""))
def measure_current(self):
return float(self.inst.query("MEASure:CURRent:DC?"))
def set_output(self, voltage = 0, current = 0):
if (voltage > 150) or (voltage < 0):
print "Voltage Set Point Out of Range\n"
return False
# set current limitß
self.inst.write("SOURce:CURRent:IMM %s" % (current))
#self.inst.write("SOURce:CURRent:TRIG %s" % (current))
# set current protection
self.inst.write("SOURce:CURRent:PROT:STATe ON")
state = str(self.inst.query("SOURce:CURRent:PROT:STATe?"))
if state == 'ON':
# set voltage level
self.inst.write("SOURce:VOLTage:IMM %s" % (voltage))
voltage_level = self.inst.query("SOURce:VOLTage:IMM?")
#self.inst.write("SOURce:VOLTage:TRIG %s" % (voltage))
#self.inst.write("SOURce:VOLTage:TRIG?")
if __name__ == "__main__":
psu = E3631A()
psu.set_output(output="P25V", voltage = 12, current=0.1)
psu.set_output(output="N25V", voltage = -12, current=0.1)
#psu.set_output(output="P6V", voltage=1, current=0.1)
psu.output_on()
#print psu.measure_voltage()
#print psu.measure_current()
#psu.close()
#print psu.measure_voltage()
#eload = BK8600()
#eload.set_current(0.1)
#eload.toggle_eload(True)
#print eload.measure_voltage()
#print eload.measure_current()
#dmm = DMM_34410A()
#print dmm.measure_voltage()