diff options
author | Eugeniy E. Mikhailov <evgmik@gmail.com> | 2022-03-09 12:38:46 -0500 |
---|---|---|
committer | Eugeniy E. Mikhailov <evgmik@gmail.com> | 2022-03-09 12:38:46 -0500 |
commit | 994d29b403129c5687980aa9b596114a7a7c0edc (patch) | |
tree | 44f90172e57fa40842d0cdb797f296a2d718f7b3 /qolab/hardware | |
parent | e84ef9e06f25a6da04f54f52e9dfaee1229d5405 (diff) | |
download | qolab-994d29b403129c5687980aa9b596114a7a7c0edc.tar.gz qolab-994d29b403129c5687980aa9b596114a7a7c0edc.zip |
draft of Keysight Power Supply control
Diffstat (limited to 'qolab/hardware')
-rw-r--r-- | qolab/hardware/power_supply/__init__.py | 26 | ||||
-rw-r--r-- | qolab/hardware/power_supply/keysight_e3612a.py | 51 |
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 -------------') + |