atomiq.components.electronics.currentsource module#

class atomiq.components.electronics.currentsource.CurrentSource(min_current=- inf, max_current=inf, default_ramp_steps=30, *args, **kwargs)#

Bases: Component, Parametrizable

Current Source

This abstract class represents any device that can output a defined, controllable current.

Parameters:
  • min_current (TFloat) -- The minimum current the device can output [A]

  • max_current (TFloat) -- The maximum current the device can output [A]

  • default_ramp_steps (TInt32) -- The default number of steps that this device should use if the current is ramped. This value is only used if no ramp_steps are given in the ramp_current() method.

A Parametrizable is an entity that can be controlled by one or more continuous parameter(s)

kernel_invariants = {'default_ramp_steps', 'max_current', 'min_current'}#
set_current(current)#

Set the current delivered by the current source

Parameters:

current (TFloat) -- Current in A

ramp_current(duration, current_start, current_end, ramp_timestep=- 1.0, ramp_steps=- 1)#

Ramp current over a given duration.

This method advances the timeline by duration

Parameters:
  • duration (TFloat) -- ramp duration [s]

  • current_start (TFloat) -- initial current [V]

  • current_end (TFloat) -- end current [V]

  • ramp_timestep (TFloat) --

  • ramp_steps (TInt32) --

class atomiq.components.electronics.currentsource.HBridgedCurrentSource(current_source, switch_fwd, switch_rev, *args, **kwargs)#

Bases: CurrentSource, Switchable

Combination of an H-bridge and a current source

Combining an H-bridge with a unipolar current source allows to create a bipolar current source. This class bundles these two comoponents an exposes them as a bipolar current source.

This class uses two switches to control the state of the H-bridge, switch_fwd and switch_rev. It assumes that your H-brigde does the following depending on their state:

H-Bridge States#

switch_fwd

switch_rev

Current Flow

False

False

Off

True

False

Forward

False

True

Reverse

True

True

Invalid

Parameters:
  • current_source (CurrentSource) -- The current source connected to the H-bridge

  • switch_fwd (Switchable) -- Switch to enable current flow in the forward direction

  • switch_rev (Switchable) -- Switch to enable current flow in the reverse direction

A Parametrizable is an entity that can be controlled by one or more continuous parameter(s)

kernel_invariants = {'current_source', 'switch_fwd', 'switch_rev'}#
off()#
on()#
ramp_current(duration, current_start, current_end, ramp_timestep=- 1.0, ramp_steps=- 1)#

Ramp current over a given duration.

This method advances the timeline by duration

Parameters:
  • duration (TFloat) -- ramp duration [s]

  • current_start (TFloat) -- initial current [V]

  • current_end (TFloat) -- end current [V]

  • ramp_timestep (TFloat) --

  • ramp_steps (TInt32) --

set_current(current)#

Set the current delivered by the current source

Parameters:

current (TFloat) -- Current in A

class atomiq.components.electronics.currentsource.RPCCurrentSource(rpc_currentsource, *args, **kwargs)#

Bases: CurrentSource

A current source controlled via RPC calls

Parameters:

rpc_currentsource (Component) -- The ARTIQ rpc object representing the current source. This object needs to provide a function named set_current(current_in_A) to set the current.

A Parametrizable is an entity that can be controlled by one or more continuous parameter(s)

kernel_invariants = {'currentsource'}#
ramp_current(duration, current_start, current_end, ramp_timestep=- 1.0, ramp_steps=- 1)#

Ramp current over a given duration.

This method advances the timeline by duration

Parameters:
  • duration (TFloat) -- ramp duration [s]

  • current_start (TFloat) -- initial current [V]

  • current_end (TFloat) -- end current [V]

  • ramp_timestep (TFloat) --

  • ramp_steps (TInt32) --

set_current(current)#

Set the current delivered by the current source

Parameters:

current (TFloat) -- Current in A

class atomiq.components.electronics.currentsource.RPCCurrentSourceChannel(rpc_currentsource, channel, *args, **kwargs)#

Bases: CurrentSource

One channel of a multi-channel currentsource controlled via RPC

Parameters:
  • rpc_currentsource (Component) -- The ARTIQ rpc object representing the multi channel current source. This object needs to provide a function named set_current(current_in_A, channel) to set the current.

  • channel (TInt32) -- channel of the multi-channel current source to operate on

A Parametrizable is an entity that can be controlled by one or more continuous parameter(s)

kernel_invariants = {'channel', 'currentsource'}#
ramp_current(duration, current_start, current_end, ramp_timestep=- 1.0, ramp_steps=- 1)#

Ramp current over a given duration.

This method advances the timeline by duration

Parameters:
  • duration (TFloat) -- ramp duration [s]

  • current_start (TFloat) -- initial current [V]

  • current_end (TFloat) -- end current [V]

  • ramp_timestep (TFloat) --

  • ramp_steps (TInt32) --

set_current(current)#

Set the current delivered by the current source

Parameters:

current (TFloat) -- Current in A

class atomiq.components.electronics.currentsource.VoltageControlledCurrentSource(voltage_source, calibration, *args, **kwargs)#

Bases: CurrentSource

A current source controlled by an analog voltage

A typical usecase for this class are voltage-controlled power supplies that drive the current through a coil.

Parameters:
  • voltage_source (VoltageSource) -- Voltage source that controls the current source

  • calibration (Calibration) -- Calibration U = f(I) to give the control voltage U for a desired current I

A Parametrizable is an entity that can be controlled by one or more continuous parameter(s)

kernel_invariants = {'calibration', 'voltage_source'}#
ramp_current(duration, current_start, current_end, ramp_timestep=- 1.0, ramp_steps=- 1)#

Ramp current over a given duration.

This method advances the timeline by duration

Parameters:
  • duration (TFloat) -- ramp duration [s]

  • current_start (TFloat) -- initial current [V]

  • current_end (TFloat) -- end current [V]

  • ramp_timestep (TFloat) --

  • ramp_steps (TInt32) --

set_current(current)#

Set the current delivered by the current source

Parameters:

current (TFloat) -- Current in A