diff options
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 -------------') + |