This page was generated from docs/examples/Parameters/Scaled_Parameter.ipynb. Interactive online version: .
ScaledParameter¶
Sometimes the values that we set/get on the computer are not the physical value that reach/originate from the sample. The ScaledParameter can be used to convert quantities with a simple linear relationship without offset.
[1]:
from qcodes.parameters import ManualParameter, ScaledParameter
Logging hadn't been started.
Activating auto-logging. Current session state plus future input saved.
Filename : /home/runner/.qcodes/logs/command_history.log
Mode : append
Output logging : True
Raw input log : False
Timestamping : True
State : active
Qcodes Logfile : /home/runner/.qcodes/logs/241203-19508-qcodes.log
[2]:
dac0 = ManualParameter("dac0", unit="V")
dac1 = ManualParameter("dac1", unit="V")
amplitude = ManualParameter("amplitude", initial_value=3.14, unit="V")
Resistive voltage divider¶
The simplest case is a resistive divider, where the set voltage is divided by a fixed amount.
[3]:
vd = ScaledParameter(dac0, division=10)
[4]:
vd(10)
[5]:
print("Vd =", vd(), vd.unit, ", real setted value =", dac0(), dac0.unit)
Vd = 10.0 V , real setted value = 100 V
Voltage multiplier¶
If the voltage is amplified, we can specify a gain
value instead of division
.
[6]:
vb = ScaledParameter(dac1, gain=30, name="Vb")
[7]:
vb(5)
[8]:
print("Vb =", vd(), vb.unit, ", Original_value =", dac1(), dac1.unit)
Vb = 10.0 V , Original_value = 0.16666666666666666 V
Transimpedance amplifier¶
The ScaledParameter can be used also for quantities that are read, like a current read by a transimpedance amplifier, digitized by a multimeter. We can also specify a different unit from the wrapped parameter. The semantic of gain/division is inverted compared to the previous cases, since it is a value that we read.
[9]:
Id = ScaledParameter(amplitude, division=1e6, name="Id", unit="A")
[10]:
print("Id =", Id(), Id.unit, ", Read_value =", amplitude(), amplitude.unit)
Id = 3.14e-06 A , Read_value = 3.14 V
The gain can be manually changed at any time
[11]:
Id.division = 1e8
print("Id =", Id(), Id.unit, ", Read_value =", amplitude(), amplitude.unit)
Id = 3.14e-08 A , Read_value = 3.14 V
The gain/division can be itself a Qcodes paramter, for example if is a gain set by a remote instrument
[12]:
remote_gain = ManualParameter("remote_gain", initial_value=1e6, unit="V/A")
[13]:
Id.division = remote_gain
print("Id =", Id(), Id.unit, ", Read_value =", amplitude(), amplitude.unit)
Id = 3.14e-06 A , Read_value = 3.14 V
[14]:
remote_gain(1e8)
print("Id =", Id(), Id.unit, ", Read_value =", amplitude(), amplitude.unit)
Id = 3.14e-08 A , Read_value = 3.14 V