Agilent

Agilent 4156C

Implements the Agilent 4156C Precision Semiconductor Parameter Analyzer.

Requires the PyVISA package: https://pypi.org/project/PyVISA/

class Agilent4156CChannel(identifier: str | None = None, settings: Dict[str, Tuple[int | float | bool] | int | float | bool | str] | None = None)[source]

Bases: Channel, ABC

Abstract base class which implements the properties and methods which all Agilent 4156C channels have in common.

property identifier_list: list[str]
wait_for_completion() None[source]

Sends an ASCII query to check if the operation on the device is finished. Waits for the response with an increased timeout.

set_property(name: str, value: Any | None = None) None[source]

Sets a property/device-setting to the provided value.

Parameters:
  • name – The name of the property/device-setting to be set.

  • value – The value to which the property/device-setting should be set.

get_property(name: str) Any[source]

Retrieves the current value of a property/device-setting.

Parameters:

name – The name of the property/device-setting to get.

Returns:

The value of the property/device-setting.

get_key_property(name: str, key: str) Any[source]

Retrieves the value of a property which is further specified by the key argument.

disable() None[source]

Disables the channel.

class SweepVoltageSMUChannel(force_smu: str = 'SMU1', com_smu: str = 'SMU2', s_compliance: float = 0.05, s_int_time: str = 'MEDIUM', s_delay: float = 0.0, s_hold_time: float = 0.0)[source]

Bases: Agilent4156CChannel, SweepVoltageSMU

Two source monitor units of the Agilent 4156C configured to work as one Sweep Voltage SMU channel. For more details and specifications see the user manual of the Agilent 4156C.

Parameters:
  • force_smu – String identifier of the SMU channel which is used as voltage source: ‘SMU1’, ‘SMU2’, ‘SMU3’ or ‘SMU4’.

  • com_smu – String identifier of the SMU channel which is used as common connection: ‘SMU1’, ‘SMU2’, ‘SMU3’ or ‘SMU4’.

  • s_compliance – Float value for the current compliance in A, i.e., the maximum allowed current. Determines the voltage output range: maximum voltage is 20, 40, 100 V for 0.1, 0.05, 0.02 A compliance, respectively. The minimum value is 0.1 pA.

  • s_int_time – String value for the integration time which can be one of ‘SHORT’, ‘MEDIUM’, ‘LONG’.

  • s_delay – Float value for the time in s between setting a voltage step and running a current measurement.

  • s_hold_time – Float value for the time in s before the sweep is started.

Raises:
  • ValueError – If the identifier is not available or if a setting value is not valid.

  • TypeError – If a setting type is not supported.

enable() None[source]

Enables the channel. Must be executed before any channel method can be run.

sweep_voltage_and_measure(start_voltage: float, end_voltage: float, voltage_step: float, hysteresis: bool) list[tuple[float, float]][source]

Sweeps over the specified voltage range and measures the current for each voltage step.

Parameters:
  • start_voltage – Begin of the measurement range in V.

  • end_voltage – End of the measurement range in V.

  • voltage_step – Voltage change for each datapoint in V. Must be larger than 0.

  • hysteresis – Flags if the voltage range should be measured a second time in reverse order directly after the initial measurement.

Returns:

Measurement results: [(voltage1 (V), current1 (A)), (voltage2 (V), current2 (A)), …]

class Agilent4156C(channels: List[TChannel] | None = None, resource_name: str = '')[source]

Bases: Device

Implements the Agilent 4156C Precision Semiconductor Parameter Analyzer as a Device class which is a container for the channels and the device connection. For more details and specifications see the user manual of the Agilent 4156C.

Parameters:
  • channels – List of channels which are subclasses of the Agilent4156CChannel. The device consists of 4xSMU, 2xVSU, and 2xVMU channels.

  • resource_name – The VISA string identifier of the device.

Raises:
  • TypeError – If a channel is not a subclass of the Agilent4156CChannel class.

  • ValueError – If duplicate channels are provided.

property channels: List[TChannel]

A list of implemented Channel instances.

_establish_connection() GPIBInstrument[source]

Opens the device connection and returns the resource.

Agilent 4284A

Implements the Agilent 4284A Precision LCR Meter.

Requires the PyVISA package: https://pypi.org/project/PyVISA/

class LCRChannel(s_trigger_delay: float = 0.1, s_integration_time: str = 'MEDIUM', s_averaging_rate: int = 1, s_automatic_level_control: bool = False)[source]

Bases: LCRMeter

LCR meter channel of the Agilent 4284A device which can measure the inductance (L), capacitance (C), and resistance (R) of an electronic component. For more details and specifications see the user manual of the Agilent 4284A.

Parameters:
  • s_trigger_delay – Setting for the delay of the trigger execution after the command was sent. The value must be between 0 and 60 s with ms resolution.

  • s_integration_time – Sets the time required to perform an A/D conversion. The value can be one of ‘SHORT’, ‘MEDIUM’, ‘LONG’.

  • s_averaging_rate – Sets the number of individual measurements which are averaged to yield the final result. Can be one of 1, 2, 4, 8, 16, 32, 64, 128, 256.

  • s_automatic_level_control – Flags if the ALC should be used which regulates the actual test level to the desired level.

Raises:
  • TypeError – If the type of setting values is incorrect.

  • ValueError – If setting values are out of bounds.

wait_for_completion() None[source]

Sends an ASCII query to check if the operation on the device is finished. Waits for the response with an increased timeout.

set_property(name: str, value: Any | None = None) None[source]

Sets a property/device-setting to the provided value.

Parameters:
  • name – The name of the property/device-setting to be set.

  • value – The value to which the property/device-setting should be set.

get_property(name: str) Any[source]

Retrieves the current value of a property/device-setting.

Parameters:

name – The name of the property/device-setting to get.

Returns:

The value of the property/device-setting.

enable() None[source]

Enables the channel. Must be executed before any channel method can be run.

disable() None[source]

Disables the channel.

source_voltage(voltage: float) None[source]

Resets the bias current and sets the bias voltage to the defined value.

Parameters:

voltage – Output voltage of the DC power source in V. Must be in [-40, 40].

Raises:

ValueError – If voltage is out of bounds.

source_current(current: float) None[source]

Resets the bias voltage and sets the bias current to the defined value.

Parameters:

current – Output current of the DC power source in A. Must be in [-0.1, 0.1].

Raises:

ValueError – If current is out of bounds.

set_oscillator_frequency(frequency: float) None[source]

Sets the AC frequency of the oscillator to the defined value.

Parameters:

frequency – Oscillator frequency in Hz. Must be in [20, 1000000].

Raises:

ValueError – If frequency is out of bounds.

set_oscillator_voltage(voltage: float) None[source]

Resets the AC current and sets the AC voltage of the oscillator to the defined value.

Parameters:

voltage – Oscillator voltage level in V. Must be in [0, 40].

Raises:

ValueError – If voltage is out of bounds.

set_oscillator_current(current: float) None[source]

Resets the AC voltage and sets the AC current of the oscillator to the defined value.

Parameters:

current – Oscillator current level in A. Must be in [0, 0.2].

Raises:

ValueError – If current is out of bounds.

measure_impedance() Tuple[float, float][source]

Performs an impedance measurement and returns the magnitude and phase angle of the complex impedance vector.

Returns:

Measurement result as tuple: (magnitude (1), phase (deg))

class Agilent4284A(channels: List[LCRChannel] | None = None, resource_name: str = '')[source]

Bases: Device

Implements the Agilent 4284A Precision LCR Meter as a Device class which is a container for the channels and the device connection. For more details and specifications see the user manual of the Agilent 4284A.

Parameters:
  • channels – A list with a single Agilent4284A LCRChannel instance.

  • resource_name – The VISA string identifier of the device.

Raises:
property channels: List[LCRChannel]

A list of implemented Channel instances.

_establish_connection() Resource[source]

Opens the device connection and returns the resource.