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