Module dopes.equipment_control.dmm
Classes
class dmm (address, rm=None, timeout=10000.0)
-
Expand source code
class dmm(equipment.equipment): """Class to control digital multimeter""" model="DMM7510, DMM6500 or K2000" company="Keithley" url="https://www.tek.com/en/products/keithley/benchtop-digital-multimeter" def initialize(self, mode, autozero=True, nplc=1,timeout=10e3,digits=6,continuous_trigger=False,disp_enable=True,k2000=False): """ Function to initialize the K2400 SMU with the desired settings args: \n\t- mode (string) : measurement mode of the multimeter ("current", "voltage", "resistance" or "4 wires") \n\t- autozero (boolean) : if true, enable autozero of the SMU \n\t- nplc (scalar) : set NPLC to set the integration time for the measurement. For a NPLC of 1, the integration period would be 1/50 (for 50Hz line power) which is 20 msec \n\t- digits (int) : display resolution in number of bits \n\t- continuous_trigger (boolean) : if true, the display of the equipment does not freeze after a measurement. When disabled, the instrument operates at a higher speed \n\t- disp_enable (boolean) : if true, enable the front panel display circuitry. When disabled, the instrument operates at a higher speed \n\t- k2000 (boolean) : if true send instruction formatted for k2000 multimeter, otherwise send instruction for more recent multimeter such as DMM6500 and DMM7510 """ self.continuous_trigger=continuous_trigger self.k2000=k2000 self.pyvisa_resource.write("*RST") # self.set_connection_parameter_dic({"write_termination":'\r\n',"read_termination":'\r\n',"send_end":True}) mode_name={"voltage":"VOLT", "current":"CURR", "resistance":"RES", "4wires":"FRES", "4 wires":"FRES"} self.pyvisa_resource.write(":SENS:FUNC '%s'"%mode_name[mode]) self.pyvisa_resource.write(":SENS:%s:RANG:AUTO ON"%mode_name[mode]) # set automatic range if k2000: self.pyvisa_resource.write(":SENS:%s:DIG %d"%(mode_name[mode],digits)) if disp_enable: self.pyvisa_resource.write(":DISP:ENAB ON") # This command is used to enable and disable the front panel display circuitry. When disabled, the instrument operates at a higher speed. else: self.pyvisa_resource.write(":DISP:ENAB OFF") if continuous_trigger: self.pyvisa_resource.write("INIT:CONT ON") # able continuous triggering else: self.pyvisa_resource.write("INIT:CONT OFF") else: if disp_enable: self.pyvisa_resource.write(":DISP:LIGHT:STAT ON100") # This command is used to enable and disable the front panel display circuitry. When disabled, the instrument operates at a higher speed. else: self.pyvisa_resource.write(":DISP:LIGHT:STAT OFF") self.pyvisa_resource.write(":DISP:%s:DIG %d"%(mode_name[mode],digits)) self.pyvisa_resource.write(":SENS:%s:NPLC %d"%(mode_name[mode],nplc)) # set NPLC. For a PLC of 1, the integration period would be 1/50 (for 50Hz line power) which is 20 msec if autozero: self.pyvisa_resource.write(":%s:AZER ON"%mode_name[mode]) # enable auto-zero else: self.pyvisa_resource.write(":%s:AZER OFF"%mode_name[mode]) if continuous_trigger: self.pyvisa_resource.write("TRIG:CONT REST") # able continuous triggering else: self.pyvisa_resource.write("TRIG:CONT OFF") def read_single(self): """ Function to read a single measurement data. The output is turn off at the end of the measurement only if continuous_trigger and output_state have been initialized as false and off return: \n\t- data (float) : float with the value of the measurement """ if self.k2000: if self.continuous_trigger: data=self.pyvisa_resource.query("FETCH?") else: data=self.pyvisa_resource.query("READ?") else: if self.continuous_trigger: self.pyvisa_resource.write("TRIG:CONT OFF") time.sleep(0.1) data=float(self.pyvisa_resource.query("MEAS?")) self.pyvisa_resource.write("TRIG:CONT REST") else: data=float(self.pyvisa_resource.query("MEAS?")) return data
Class to control digital multimeter
Function called when an instance of the class is created
args:
-
address (string) : the address of the equipment to be connected
-
rm (pyvisa object) : the pyvisa resource manager used to set the communication with the equipment
-
timeout (scalar) : the timeout set for the communication with the equipment
Ancestors
Class variables
var company
var model
var url
Methods
def initialize(self,
mode,
autozero=True,
nplc=1,
timeout=10000.0,
digits=6,
continuous_trigger=False,
disp_enable=True,
k2000=False)-
Expand source code
def initialize(self, mode, autozero=True, nplc=1,timeout=10e3,digits=6,continuous_trigger=False,disp_enable=True,k2000=False): """ Function to initialize the K2400 SMU with the desired settings args: \n\t- mode (string) : measurement mode of the multimeter ("current", "voltage", "resistance" or "4 wires") \n\t- autozero (boolean) : if true, enable autozero of the SMU \n\t- nplc (scalar) : set NPLC to set the integration time for the measurement. For a NPLC of 1, the integration period would be 1/50 (for 50Hz line power) which is 20 msec \n\t- digits (int) : display resolution in number of bits \n\t- continuous_trigger (boolean) : if true, the display of the equipment does not freeze after a measurement. When disabled, the instrument operates at a higher speed \n\t- disp_enable (boolean) : if true, enable the front panel display circuitry. When disabled, the instrument operates at a higher speed \n\t- k2000 (boolean) : if true send instruction formatted for k2000 multimeter, otherwise send instruction for more recent multimeter such as DMM6500 and DMM7510 """ self.continuous_trigger=continuous_trigger self.k2000=k2000 self.pyvisa_resource.write("*RST") # self.set_connection_parameter_dic({"write_termination":'\r\n',"read_termination":'\r\n',"send_end":True}) mode_name={"voltage":"VOLT", "current":"CURR", "resistance":"RES", "4wires":"FRES", "4 wires":"FRES"} self.pyvisa_resource.write(":SENS:FUNC '%s'"%mode_name[mode]) self.pyvisa_resource.write(":SENS:%s:RANG:AUTO ON"%mode_name[mode]) # set automatic range if k2000: self.pyvisa_resource.write(":SENS:%s:DIG %d"%(mode_name[mode],digits)) if disp_enable: self.pyvisa_resource.write(":DISP:ENAB ON") # This command is used to enable and disable the front panel display circuitry. When disabled, the instrument operates at a higher speed. else: self.pyvisa_resource.write(":DISP:ENAB OFF") if continuous_trigger: self.pyvisa_resource.write("INIT:CONT ON") # able continuous triggering else: self.pyvisa_resource.write("INIT:CONT OFF") else: if disp_enable: self.pyvisa_resource.write(":DISP:LIGHT:STAT ON100") # This command is used to enable and disable the front panel display circuitry. When disabled, the instrument operates at a higher speed. else: self.pyvisa_resource.write(":DISP:LIGHT:STAT OFF") self.pyvisa_resource.write(":DISP:%s:DIG %d"%(mode_name[mode],digits)) self.pyvisa_resource.write(":SENS:%s:NPLC %d"%(mode_name[mode],nplc)) # set NPLC. For a PLC of 1, the integration period would be 1/50 (for 50Hz line power) which is 20 msec if autozero: self.pyvisa_resource.write(":%s:AZER ON"%mode_name[mode]) # enable auto-zero else: self.pyvisa_resource.write(":%s:AZER OFF"%mode_name[mode]) if continuous_trigger: self.pyvisa_resource.write("TRIG:CONT REST") # able continuous triggering else: self.pyvisa_resource.write("TRIG:CONT OFF")
Function to initialize the K2400 SMU with the desired settings
args:
-
mode (string) : measurement mode of the multimeter ("current", "voltage", "resistance" or "4 wires")
-
autozero (boolean) : if true, enable autozero of the SMU
-
nplc (scalar) : set NPLC to set the integration time for the measurement. For a NPLC of 1, the integration period would be 1/50 (for 50Hz line power) which is 20 msec
-
digits (int) : display resolution in number of bits
-
continuous_trigger (boolean) : if true, the display of the equipment does not freeze after a measurement. When disabled, the instrument operates at a higher speed
-
disp_enable (boolean) : if true, enable the front panel display circuitry. When disabled, the instrument operates at a higher speed
-
k2000 (boolean) : if true send instruction formatted for k2000 multimeter, otherwise send instruction for more recent multimeter such as DMM6500 and DMM7510
-
def read_single(self)
-
Expand source code
def read_single(self): """ Function to read a single measurement data. The output is turn off at the end of the measurement only if continuous_trigger and output_state have been initialized as false and off return: \n\t- data (float) : float with the value of the measurement """ if self.k2000: if self.continuous_trigger: data=self.pyvisa_resource.query("FETCH?") else: data=self.pyvisa_resource.query("READ?") else: if self.continuous_trigger: self.pyvisa_resource.write("TRIG:CONT OFF") time.sleep(0.1) data=float(self.pyvisa_resource.query("MEAS?")) self.pyvisa_resource.write("TRIG:CONT REST") else: data=float(self.pyvisa_resource.query("MEAS?")) return data
Function to read a single measurement data. The output is turn off at the end of the measurement only if continuous_trigger and output_state have been initialized as false and off
return:
- data (float) : float with the value of the measurement
Inherited members
-