This examples shows a simple measurement script, using a Stanford Research Systems LockIn amplifier and is discussed in more detail in the Quickstart section.
#!/usr/bin/env python import time from slave.srs import SR830 from slave.transport import Visa lockin = SR830(Visa('GPIB::08')) lockin.frequency = 22.08 lockin.amplitude = 5.0 lockin.reserve = 'high' for i in range(60): print lockin.x time.sleep(1)
In this example, we assume a sample with standard four terminal wiring is placed inside a Quantum Desing PPMS. We’re using our own Lock-In amplifier to measure the resistance as a function of temperature.
"""This example shows a measurement routine for a custom magnetotransport setup in the [P]hysical [P]roperties [M]easurement [S]ystem PPMS Model 6000. """ import datetime import visa from slave.quantum_design import PPMS from slave.sr830 import SR830 from slave.transport import Visa # pyvisa wrapper from slave.misc import Measurement # Connect to the lockin amplifier and the ppms lockin = SR830(Visa('GPIB::10')) ppms = PPMS(Visa('GPIB::15')) try: # Configure the lockin amplifier lockin.frequency = 22.08 # Use a detection frequency of 22.08 Hz lockin.amplitude = 5.0 # and an amplitude of 5 V. lockin.reserve = 'low' lockin.time_constant = 3 # Set the ppms temperature to 10 K, cooling with a rate of 20 K per min. ppms.set_temperature(10, 20, wait_for_stability=True) # Now sweep slowly to avoid temperature instabilities. ppms.set_temperature(1.2, 0.5, wait_for_stability=True) # Set a magnetic field of 1 T at a rate of 150 mT per second and set the magnet # in persistent mode. # # Note: The PPMS uses Oersted instead of Tesla. 1 Oe = 0.1 mT. ppms.set_field(10000, 150, mode='persistent', wait_for_stability=True) # Set the appropriate gain. (We're assuming the measured voltage decreases # with increasing temperature. lockin.auto_gain() # Define the measurement parameters parameters = [ lambda: datetime.datetime.now(), # Get timestamp lambda: lockin.x, lambda: lockin.y, lambda: ppms.temperature, ] # Finally start the measurement, using the Measurement helper class as a # context manager (This automatically closes the measurement file). with Measurement('1.2K-300K_1T.dat', measure=parameters) as measurement: ppms.scan_temperature(measurement, 300, 0.5) except Exception, e: # Catch possible errors and print a message. print 'An error occured:', e finally: # Finally put the ppms in standby mode. ppms.shutdown()
"""This example shows a differential conductance measurement. In this example we're showing how to use the Keithley :class:`~.K6221` currentsource and :class:`~.K2182` nanovoltmeter combo to perform a differential conductance measurement. """ # To use the ethernet connection instead of the GPIB interface import Socket # instead of Visa from slave.transport import Visa # We don't need to import the nanovoltmeter driver, the K6221 does this for us. from slave.keithley import K6221 current_source = K6221(Visa('GPIB::22')) # Note: The nanovoltmeter has to be connected to the K6221 with the serial and # trigger link cable. nanovolt_meter = current_source.system.communicate.serial.k2182 # Now configure the nanovoltmeter. nanovolt_meter.sense.auto_range = True nanovolt_meter.sense.nplc = 1 # Then configure the current source current_source.reset() current_source.source.differential_conductance.start = 0 # start at 0 A current_source.source.differential_conductance.step = 1e-6 # 10 uA steps current_source.source.differential_conductance.stop = 50e-6 # stop at 50 uA current_source.source.differential_conductance.delta = 20e-6 # 20 uA delta current_source.source.differential_conductance.delay = 1e-3 # 1 ms delay current_source.source.differential_conductance.compliance_abort = True current_source.trace.points = 6 current_source.source.differential_conductance.arm() current_source.initiate() # Finally we read back the measurements data = current_source.trace.data[:]