Usage Examples¶
Simple Measurement¶
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)
Magnetotransport Measurement¶
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()
Differential Conductance¶
In this example we’re showing how to use the Keithley K6221
currentsource and K2182
nanovoltmeter combo to perform a differential
conductance measurement.
"""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[:]