atomiq.components.electronics.voltagesource =========================================== .. py:module:: atomiq.components.electronics.voltagesource Classes ------- .. autoapisummary:: atomiq.components.electronics.voltagesource.VoltageSource atomiq.components.electronics.voltagesource.DAC atomiq.components.electronics.voltagesource.DACChannel Module Contents --------------- .. py:class:: VoltageSource(min_voltage = float('-inf'), max_voltage = float('inf'), default_ramp_steps = 30, *args, **kwargs) Bases: :py:obj:`atomiq.components.primitives.Component`, :py:obj:`atomiq.components.primitives.Parametrizable` Voltage Source This abstract class represents any device that can output a defined, controllable voltage. :param min_voltage: The minimum voltage the device can output [V] :param max_voltage: The maximum voltage the device can output [V] :param default_ramp_steps: The default number of steps that this device should use if the voltage is ramped. This value is only used if no `ramp_steps` are given in the :func:`ramp_voltage` method. .. py:attribute:: kernel_invariants .. py:attribute:: min_voltage .. py:attribute:: max_voltage .. py:attribute:: default_ramp_steps :value: 30 .. py:method:: set_voltage(voltage) Set the voltage delivered by the voltage source :param voltage: Voltage in V .. py:method:: _set_voltage(voltage) :abstractmethod: .. py:method:: _ramp_voltage(duration, voltage_start, voltage_end, ramp_timestep = 0.0002) This method implements a stupid ramp on an abstract level. This will most likely work but be slow. If your hardware has native support for ramping, please override this function when you inherit from VoltageSource .. py:method:: ramp_voltage(duration, voltage_start, voltage_end, ramp_timestep = float('nan'), ramp_steps = -1) Ramp voltage over a given duration. This method advances the timeline by `duration` :param duration: ramp duration [s] :param voltage_start: initial voltage [V] :param voltage_end: end voltage [V] .. py:class:: DAC(num_chan, *args, **kwargs) Bases: :py:obj:`atomiq.components.primitives.Component`, :py:obj:`atomiq.components.primitives.Parametrizable` A DAC with multiple channels :param num_chan: Number of channels the DAC has .. py:attribute:: kernel_invariants .. py:attribute:: num_chan .. py:method:: set_channel_voltage(channel, voltage) .. py:method:: update() :abstractmethod: .. py:class:: DACChannel(dac_device, channel, *args, **kwargs) Bases: :py:obj:`VoltageSource` Voltage Source This abstract class represents any device that can output a defined, controllable voltage. :param min_voltage: The minimum voltage the device can output [V] :param max_voltage: The maximum voltage the device can output [V] :param default_ramp_steps: The default number of steps that this device should use if the voltage is ramped. This value is only used if no `ramp_steps` are given in the :func:`ramp_voltage` method. .. py:attribute:: kernel_invariants .. py:attribute:: dac_device .. py:attribute:: channel .. py:method:: _set_voltage(voltage, update_dac = True)