aboutsummaryrefslogtreecommitdiff
path: root/qolab
diff options
context:
space:
mode:
authorEugeniy E. Mikhailov <evgmik@gmail.com>2022-03-09 12:38:46 -0500
committerEugeniy E. Mikhailov <evgmik@gmail.com>2022-03-09 12:38:46 -0500
commit994d29b403129c5687980aa9b596114a7a7c0edc (patch)
tree44f90172e57fa40842d0cdb797f296a2d718f7b3 /qolab
parente84ef9e06f25a6da04f54f52e9dfaee1229d5405 (diff)
downloadqolab-994d29b403129c5687980aa9b596114a7a7c0edc.tar.gz
qolab-994d29b403129c5687980aa9b596114a7a7c0edc.zip
draft of Keysight Power Supply control
Diffstat (limited to 'qolab')
-rw-r--r--qolab/hardware/power_supply/__init__.py26
-rw-r--r--qolab/hardware/power_supply/keysight_e3612a.py51
2 files changed, 77 insertions, 0 deletions
diff --git a/qolab/hardware/power_supply/__init__.py b/qolab/hardware/power_supply/__init__.py
new file mode 100644
index 0000000..b1083cf
--- /dev/null
+++ b/qolab/hardware/power_supply/__init__.py
@@ -0,0 +1,26 @@
+from qolab.hardware.scpi import SCPIinstr
+from qolab.hardware.basic import BasicInstrument
+
+class PowerSupply(BasicInstrument):
+ # Minimal set of methods to be implemented by a Power Supply
+ def __init__(self, *args, **kwds):
+ BasicInstrument.__init__(self, *args, **kwds)
+ self.config['Device type']='PowerSupply'
+ self.config['Device model'] = 'Generic Power Supply generator Without Hardware interface'
+ self.config['FnamePrefix'] = 'power_supply'
+ self.deviceProperties = { }
+
+class PowerSupplySCPI(SCPIinstr, PowerSupply):
+ """
+ Do not instantiate directly, use
+ rm = pyvisa.ResourceManager()
+ PowerSupplySCPI(rm.open_resource('TCPIP::192.168.0.2::INSTR'))
+ or
+ PowerSupplySCPI(rm.open_resource('USB0::10893::4354::MY61001869::0::INSTR'))
+ """
+ def __init__(self, resource, *args, **kwds):
+ SCPIinstr.__init__(self, resource)
+ PowerSupply.__init__(self, *args, **kwds)
+ self.config['DeviceId'] = str.strip(self.idn)
+
+from .keysight_e3612a import KeysightE3612A
diff --git a/qolab/hardware/power_supply/keysight_e3612a.py b/qolab/hardware/power_supply/keysight_e3612a.py
new file mode 100644
index 0000000..5c5bab0
--- /dev/null
+++ b/qolab/hardware/power_supply/keysight_e3612a.py
@@ -0,0 +1,51 @@
+from qolab.hardware.basic import BasicInstrument
+from qolab.hardware.power_supply import PowerSupplySCPI
+import re
+import numpy as np
+
+class KeysightE3612A(PowerSupplySCPI):
+ """ Keysight E3612A power supply """
+ def __init__(self, resource, *args, **kwds):
+ super().__init__(resource, *args, **kwds)
+ # self.resource.read_termination='\n'
+ self.config['Device model'] = 'Keysight E3612A'
+ self.numberOfChannels = 1
+ # self.channelProperties = {'Vlimit', 'Ilimit', 'Vout', 'Iout' }
+ self.channelProperties = {'Vout', }
+
+ def chanOn(self, chNum):
+ self.write(f'OUTP ON,(@{chNum})')
+
+ def chanOff(self, chNum):
+ self.write(f'OUTP OFF,(@{chNum})')
+
+ @BasicInstrument.tsdb_append
+ def getChanState(self, chNum):
+ qstr = f'OUTP? (@{chNum})'
+ rstr = self.query(qstr)
+ return( bool(float(rstr)) )
+
+ @BasicInstrument.tsdb_append
+ def getChanVout(self, chNum):
+ qstr = f'MEAS:VOLT? (@{chNum})'
+ rstr = self.query(qstr)
+ return( float(rstr) )
+
+ @BasicInstrument.tsdb_append
+ def getChanIout(self, chNum):
+ qstr = f'MEAS:CURR? (@{chNum})'
+ rstr = self.query(qstr)
+ return( float(rstr) )
+
+
+if __name__ == '__main__':
+ import pyvisa
+ print("testing")
+ rm = pyvisa.ResourceManager()
+ print(rm.list_resources())
+ instr=rm.open_resource('USB0::10893::4354::MY61001869::0::INSTR')
+ ps = KeysightE3612A(instr)
+ print('------ Header start -------------')
+ print(str.join('\n', ps.getHeader()))
+ print('------ Header ends -------------')
+