summaryrefslogtreecommitdiffstats
path: root/lab_control
diff options
context:
space:
mode:
authorEddy Pedroni <eddy@0xf7.com>2022-06-05 11:34:50 +0200
committerEddy Pedroni <eddy@0xf7.com>2022-06-05 11:34:50 +0200
commit1393405ed5e8796a37224344c51cdcd4427f9b4b (patch)
tree9a9b2f1aaf5eeb699f57e2ee050d88c60e032edf /lab_control
parent586478f487ad03f0774f8f50bc40c6c029b6176d (diff)
Minor improvement to automatic vertical scaling
Diffstat (limited to 'lab_control')
-rw-r--r--lab_control/frequency_response.py2
-rw-r--r--lab_control/oscilloscope.py3
-rw-r--r--lab_control/sds1000xe.py3
-rw-r--r--lab_control/test/frequency_response_test.py6
-rw-r--r--lab_control/test/mock_lab.py3
5 files changed, 13 insertions, 4 deletions
diff --git a/lab_control/frequency_response.py b/lab_control/frequency_response.py
index 9f6c79e..84259d4 100644
--- a/lab_control/frequency_response.py
+++ b/lab_control/frequency_response.py
@@ -25,7 +25,7 @@ class FrequencyResponseMeasurement(Measurement):
fg.setAmplitude(self.functionGeneratorChannel, self.inputAmplitude)
fg.setFunction(self.functionGeneratorChannel, FunctionGenerator.SINE)
fg.setOn(self.functionGeneratorChannel)
- osc.setVoltsPerDivision(self.oscilloscopeChannel, self.inputAmplitude / 6)
+ osc.setVoltsPerDivision(self.oscilloscopeChannel, self.inputAmplitude / (osc.getDivisionsDisplayed() - 2))
for f in frequencies:
fg.setFrequency(self.functionGeneratorChannel, f)
diff --git a/lab_control/oscilloscope.py b/lab_control/oscilloscope.py
index 04bd338..8b0c0ec 100644
--- a/lab_control/oscilloscope.py
+++ b/lab_control/oscilloscope.py
@@ -19,4 +19,7 @@ class Oscilloscope:
def setVoltsPerDivision(self, channel: int, volts: float) -> None:
""" Sets the vertical scale of specific channel. """
+
+ def getDivisionsDisplayed(self) -> int:
+ """ Returns the number of vertical divisions on the device display. """
diff --git a/lab_control/sds1000xe.py b/lab_control/sds1000xe.py
index 7f6d552..61fa86d 100644
--- a/lab_control/sds1000xe.py
+++ b/lab_control/sds1000xe.py
@@ -58,3 +58,6 @@ class SDS1000XE(Oscilloscope):
query = f"C{channel}:VDIV {volts:.2E}V\r\n"
self._socket.sendall(query.encode())
# no response expected
+
+ def getDivisionsDisplayed(self) -> int:
+ return 8
diff --git a/lab_control/test/frequency_response_test.py b/lab_control/test/frequency_response_test.py
index 61fd021..d694887 100644
--- a/lab_control/test/frequency_response_test.py
+++ b/lab_control/test/frequency_response_test.py
@@ -49,19 +49,19 @@ def test_frequencyResponseRamp(uut, mockLab):
expectedData = prepareRampResponse(uut, mockLab)
- assert not uut.measurementDone
- assert uut.data is None
assert fg.amplitude is None
assert fg.function is None
assert not fg.on
assert osc.voltsPerDiv is None
+ assert not uut.measurementDone
+ assert uut.data is None
uut.measure(mockLab, mockLab)
assert fg.amplitude == uut.inputAmplitude
assert fg.function == FunctionGenerator.SINE
assert fg.on
- assert osc.voltsPerDiv == uut.inputAmplitude / 6
+ assert osc.voltsPerDiv == uut.inputAmplitude / (mockLab.getDivisionsDisplayed() - 2)
assert uut.measurementDone
assert uut.data == expectedData
diff --git a/lab_control/test/mock_lab.py b/lab_control/test/mock_lab.py
index 75ba1bf..1016b92 100644
--- a/lab_control/test/mock_lab.py
+++ b/lab_control/test/mock_lab.py
@@ -55,6 +55,9 @@ class MockLab(FunctionGenerator, Oscilloscope):
def setVoltsPerDivision(self, channel: int, volts: float) -> None:
self.oscChannels[channel - 1].voltsPerDiv = volts
+ def getDivisionsDisplayed(self) -> int:
+ return 12
+
def setTestFunction(self, channel: int, f: Callable[[float], float]) -> None:
self.oscChannels[channel - 1].testFunction = f