from lab_control.function_generator import FunctionGenerator from lab_control.oscilloscope import Oscilloscope from lab_control.measurement import Measurement class FrequencyResponseMeasurement(Measurement): def __init__(self): self.minFrequency = 20e0 self.maxFrequency = 16e3 self.steps = 50 self.functionGeneratorChannel = 1 self.oscilloscopeChannel = 1 self.measurementDone = False self.data = None def measure(self, osc: Oscilloscope, fg: FunctionGenerator) -> None: frequencyRange = self.maxFrequency - self.minFrequency self.data = [] for i in range(0, self.steps): frequency = self.minFrequency + i * frequencyRange / (self.steps - 1) fg.setFrequency(self.functionGeneratorChannel, frequency) response = osc.measureAmplitude(self.oscilloscopeChannel) self.data.append((frequency, response)) self.measurementDone = True