# devices.keysight:KeysightB2961


Keysight B2961 DC (and low frequency AC) power supply.


Usage

``` python
devices.keysight:KeysightB2961(
    interface,
    **kwargs,
)
```


Typically connected via TCPIP:::5025::SOCKET


## Methods

| Name | Description |
|----|----|
| [__init__()](#__init__) | Initialize the KeysightB2961 device. |
| [configure()](#configure) | Configure to source current/voltage and sense voltage/current. |
| [configure_sine()](#configure_sine) | Configure for generation of a sine wave. |
| [getMeas()](#getMeas) | Perform a self triggered measurement and return the values. |
| [getReading()](#getReading) | Fetch measured data after a trigger was sent. |
| [getSense()](#getSense) | Get the current sense value. |
| [getSource()](#getSource) | Get the current source value. |
| [output()](#output) | Turn output on or off. |
| [run_wave()](#run_wave) | Start the waveform output. |
| [setAcquisitionTriggerMode()](#setAcquisitionTriggerMode) | Set up the SMU for triggered acquisition of the measurement system. |
| [setSource()](#setSource) | Set the output value of the source. |
| [triggerReading()](#triggerReading) | Send a trigger to trigger a reading when trigger is set to BUS. |
| [visualize_trace()](#visualize_trace) | Configure the device for trace visualization. |

------------------------------------------------------------------------


### \_\_init\_\_()


Initialize the KeysightB2961 device.


Usage

``` python
__init__(
    interface,
    **kwargs,
)
```


#### Parameters


`interface: str`  
Communication interface identifier.

`**kwargs: dict`  
Additional parameters for the VisaDevice.


------------------------------------------------------------------------


### configure()


Configure to source current/voltage and sense voltage/current.


Usage

``` python
configure(
    sourceMode=None,
    senseMode=None,
    fourWire=None,
    sourceAutoRange=None,
    sourceRange=None,
    senseLimit=None,
    output=None,
    delayAuto=None,
    delay=None,
    nplc=None,
    reset=False,
)
```


#### Parameters


`sourceMode: str = None`  
"VOLT" or "CURR", physical parameter to source.

`senseMode: str = None`  
"VOLT" or "CURR", parameter to measure.

`fourWire: bool = None`  
Four wire measurement; None uses the current configuration.

`sourceAutoRange: bool = None`  
Autodetect the source range.

`sourceRange: float = None`  
Largest expected source current; the device picks the next inclusive range.

`senseLimit: float = None`  
Source compliance level.

`output: bool = None`  
Turn the output on if True.

`delayAuto: bool = None`  
Automatically choose the delay for stabilizing the output.

`delay: float = None`  
Delay in seconds for stabilizing the output before doing an internal measurement. Does not affect other devices.

`nplc: float = None`  
Number of power line cycles to average (4e-4 to 100).

`reset: bool = ``False`  
If True, reset the device. Default is False.


#### Examples

``` python
>>> device.configure(fourWire=True, senseAutoRange=True,
...                  sourceRange=0.001, output=True)
```

The output will initially be turned off during configuration. This will configure the device to be in 4W sense mode, detect the sense range automatically. The range is chosen to include 1mA and the output is turned on.

------------------------------------------------------------------------


### configure_sine()


Configure for generation of a sine wave.


Usage

``` python
configure_sine(
    amp,
    freq,
    offset=0,
    count="INF",
    onlysetamp=False,
)
```


Use configure first to set up the sourceMode. Use run_wave after this command to actually start the output.

Note: this function also sets up the phase marker output (mapped to EXT1) which can be used as a sync signal for a lockin.


#### Parameters


`amp: float`  
Amplitude of the sine wave.

`freq: float`  
Frequency of the sine wave.

`offset: float = ``0`  
Vertical offset of the sine wave. Default is 0.

`count: str = ``"INF"`  
Number of sine waves to output. Default is "INF".

`onlysetamp: bool = ``False`  
Flag to only set a new amplitude and leave the rest unchanged, which keeps the output on. Default is False.


------------------------------------------------------------------------


### getMeas()


Perform a self triggered measurement and return the values.


Usage

``` python
getMeas()
```


#### Returns


`list`  
List of measurement values.


------------------------------------------------------------------------


### getReading()


Fetch measured data after a trigger was sent.


Usage

``` python
getReading()
```


#### Returns


`list`  
List of measured values.


------------------------------------------------------------------------


### getSense()


Get the current sense value.


Usage

``` python
getSense()
```


#### Returns


`float`  
The sense value.


------------------------------------------------------------------------


### getSource()


Get the current source value.


Usage

``` python
getSource()
```


#### Returns


`float`  
The source value.


------------------------------------------------------------------------


### output()


Turn output on or off.


Usage

``` python
output(state=False)
```


#### Parameters


`state: bool = ``False`  
Turn output on if state is True, off when state is False, otherwise do nothing. Default is False.


------------------------------------------------------------------------


### run_wave()


Start the waveform output.


Usage

``` python
run_wave()
```


Initializes the waveform generation and turns on the output.


------------------------------------------------------------------------


### setAcquisitionTriggerMode()


Set up the SMU for triggered acquisition of the measurement system.


Usage

``` python
setAcquisitionTriggerMode(
    mode="BUS",
    count=None,
)
```


Note: the source still has another independent trigger system which is not changed by this function!


#### Parameters


`mode: str = ``"BUS"`  
Trigger mode: AINT (=Automatic), BUS (for use with triggerReading), TIMER (for time trace recording). Default is "BUS".

`count: int or str = None`  
Amount of triggers (typically 1 for BUS), allowed are: None, integer, or "inf".


------------------------------------------------------------------------


### setSource()


Set the output value of the source.


Usage

``` python
setSource(value)
```


This happens immediately without changing the source output status.


#### Parameters


`value: float`  
The output value to set.


------------------------------------------------------------------------


### triggerReading()


Send a trigger to trigger a reading when trigger is set to BUS.


Usage

``` python
triggerReading()
```


------------------------------------------------------------------------


### visualize_trace()


Configure the device for trace visualization.


Usage

``` python
visualize_trace(
    dt=0.001,
    points=1000,
)
```


#### Parameters


`dt: float = ``0.001`  
Time interval between measurements in seconds. Default is 1e-3.

`points: int = ``1000`  
Number of points to acquire. Default is 1000.
