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]
-
Abstract base class which implements the properties and methods which all Agilent 4156C channels have in common.
- 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.
- 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,SweepVoltageSMUTwo 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.
- 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:
DeviceImplements 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.
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:
LCRMeterLCR 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.
- 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.
- class Agilent4284A(channels: List[LCRChannel] | None = None, resource_name: str = '')[source]
Bases:
DeviceImplements 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
LCRChannelinstance.resource_name – The VISA string identifier of the device.
- Raises:
TypeError – If a channel is not an Agilent4284A
LCRChannel.ValueError – If too many channels or duplicate channels are provided.
- property channels: List[LCRChannel]
A list of implemented
Channelinstances.